DE102016225545A1 - Profilierungs-cache-ersatz - Google Patents

Profilierungs-cache-ersatz Download PDF

Info

Publication number
DE102016225545A1
DE102016225545A1 DE102016225545.2A DE102016225545A DE102016225545A1 DE 102016225545 A1 DE102016225545 A1 DE 102016225545A1 DE 102016225545 A DE102016225545 A DE 102016225545A DE 102016225545 A1 DE102016225545 A1 DE 102016225545A1
Authority
DE
Germany
Prior art keywords
page
pages
cache
memory
main memory
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.)
Withdrawn
Application number
DE102016225545.2A
Other languages
English (en)
Inventor
Chih-Chung Chang
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.)
Google LLC
Original Assignee
Google LLC
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 Google LLC filed Critical Google LLC
Publication of DE102016225545A1 publication Critical patent/DE102016225545A1/de
Withdrawn legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/0223User address space allocation, e.g. contiguous or non contiguous base addressing
    • G06F12/0284Multiple user address space allocation, e.g. using different base addresses
    • 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
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0804Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches with main memory updating
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0844Multiple simultaneous or quasi-simultaneous cache accessing
    • G06F12/0855Overlapped cache accessing, e.g. pipeline
    • G06F12/0859Overlapped cache accessing, e.g. pipeline with reload from main memory
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0866Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches for peripheral storage systems, e.g. disk cache
    • G06F12/0868Data transfer between cache memory and other subsystems, e.g. storage devices or host systems
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0893Caches characterised by their organisation or structure
    • G06F12/0897Caches characterised by their organisation or structure with two or more cache hierarchy levels
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/12Replacement control
    • G06F12/121Replacement control using replacement algorithms
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/12Replacement control
    • G06F12/121Replacement control using replacement algorithms
    • G06F12/122Replacement control using replacement algorithms of the least frequently used [LFU] type, e.g. with individual count value
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/12Replacement control
    • G06F12/121Replacement control using replacement algorithms
    • G06F12/123Replacement control using replacement algorithms with age lists, e.g. queue, most recently used [MRU] list or least recently used [LRU] list
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/0604Improving or facilitating administration, e.g. storage management
    • G06F3/0605Improving or facilitating administration, e.g. storage management by facilitating the interaction with a user or administrator
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/061Improving I/O performance
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0638Organizing or formatting or addressing of data
    • G06F3/064Management of blocks
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0646Horizontal data movement in storage systems, i.e. moving data in between storage devices or systems
    • G06F3/0647Migration mechanisms
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0662Virtualisation aspects
    • G06F3/0665Virtualisation aspects at area level, e.g. provisioning of virtual or logical volumes
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0668Interfaces specially adapted for storage systems adopting a particular infrastructure
    • G06F3/0671In-line storage system
    • G06F3/0673Single storage device
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • 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
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/10Providing a specific technical effect
    • G06F2212/1016Performance improvement
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/10Providing a specific technical effect
    • G06F2212/1016Performance improvement
    • G06F2212/1021Hit rate improvement
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/15Use in a specific computing environment
    • G06F2212/152Virtualized environment, e.g. logically partitioned system
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/25Using a specific main memory architecture
    • G06F2212/251Local memory within processor subsystem
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/25Using a specific main memory architecture
    • G06F2212/253Centralized memory
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/60Details of cache memory
    • G06F2212/601Reconfiguration of cache memory

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Human Computer Interaction (AREA)
  • Memory System Of A Hierarchy Structure (AREA)

Abstract

Dieses Dokument beschreibt die Profilierung für die Cache-Ersetzung. Die Profilierung der Cache-Ersetzung ist eine Technik zum Verwalten der Datenmigration zwischen einem Hauptspeicher und einem Cache-Speicher, um die Gesamtsystemleistung zu verbessern. Im Gegensatz zu herkömmlichen Cache-Ersatztechniken verwendet die Cache-Ersetzungsprofilierung einen Profiler, um Zähler zu speichern, die Speicheranforderungen für den Zugriff auf nicht nur die Seiten, die im Cache-Speicher gepflegt werden zu zählen, sondern auch die Seiten, die im Hauptspeicher gepflegt werden. Basierend auf den vom Profiler gesammelten Informationen (z. B. über Speicherzugriffsanforderungen) bewegt ein Mover Seiten zwischen dem Haupt- und dem Cache-Speicher. So kann beispielsweise der Mover stark angeforderte Seiten des Hauptspeichers, wie beispielsweise eine am häufigsten angeforderte Seite des Hauptspeichers, mit wenig angeforderten Seiten des Cache-Speichers austauschen, wie beispielsweise einer am wenigsten angeforderten Seite des Caches. Der Mover kann dies beispielsweise tun, wenn die Zähler angeben, dass die Anzahl an Seitenzugriffsanforderungen für stark angeforderte Seiten des Hauptspeichers größer ist als die Anzahl an Seitenzugriffsanforderungen für wenig angeforderte Seiten des Cache-Speichers. Um die Operationen von Speicherbenutzern (z. B. Clientanwendungen) nicht zu behindern, führt der Mover den Seitenaustausch im Hintergrund aus. Um dies zu erreichen, ist der Mover darauf beschränkt, Seiten in vorbestimmten Zeitintervallen, wie z. B. einmal jede Mikrosekunde (μs), zu tauschen.

Description

  • HINTERGRUND
  • In der Computersprache ist ein Cache ein Speicherblock, der für die temporäre Speicherung von häufig zugreifenden Daten verwendet wird, und ermöglicht, dass zukünftige Anforderungen für zwischengespeicherte Daten schneller gepflegt werden als Anforderungen für nicht zwischengespeicherte Daten. Wenn angeforderte Daten im Cache enthalten sind (ein als „Cache-Hit“ bezeichnetes Szenario), kann die Anforderung durch einfaches Lesen des Cache bedient werden, was vergleichsweise schneller ist als der Zugriff auf die Daten aus dem Hauptspeicher. Wenn umgekehrt die angeforderten Daten nicht im Cache enthalten sind (ein Szenario, das als „Cache-Miss“ bezeichnet wird), werden die Daten neu berechnet oder in herkömmlichen Techniken von ihrem ursprünglichen Speicherort in den Cache gefüllt, was langsamer ist als das einfache Lesen der Daten aus dem Cache. Die Gesamtsystemleistung wird somit hinsichtlich der Geschwindigkeit verbessert, wenn ein größerer Teil der Datenanforderungen aus dem Cache-Speicher bedient wird.
  • Da der Cache-Speicher typischerweise kleiner als der Hauptspeicher ist, müssen zuvor in den Cache gefüllte Daten durch die in letzter Zeit verwendeten Daten ersetzt werden. Dazu werden Cache-Ersetzungsalgorithmen verwendet. Herkömmliche Cache-Ersetzungsalgorithmen beinhalten die am wenigsten verwendeten (LRU-)Algorithmen, die zuletzt verwendeten (MRU-)Algorithmen, die am wenigsten häufig verwendeten (LFU-)Algorithmen, zufällige Ersetzungsalgorithmen und so weiter. Vereinfacht gesagt sind Cache-Ersetzungsalgorithmen ein Satz von Optimierungsanweisungen, die ein Computerprogramm oder eine hardwareverwaltete Struktur zum Verwalten des Cache-Speichers implementiert. Insbesondere wählen Cache-Ersetzungsalgorithmen, welche Informationen in dem Cache-Speicher auszulesen sind, um Platz für Informationen aus dem Hauptspeicher zu schaffen.
  • Viele der herkömmlichen Cache-Ersetzungsalgorithmen unterhalten keine Information über Datenblöcke, die sich derzeit nicht im Cache-Speicher befinden. Als Ergebnis, wenn eine Größe eines arbeitenden Datensatzes eine Größe des Cache-Speichers überschreitet, kann folglich ein exzessiver Füll- und Räumungsverkehr erzeugt werden. Dieser exzessive Füllen- und Zwangsräumungsverkehr kann eine Bedingung verursachen, die als „Trashing“ bekannt ist, in dem eine Anzahl an Cache-Fehlern drastisch ansteigt und die Zeit, die die Cache-Füllung und Räumung als Ergebnis der Fehlschläge ausführt, kann die Zeit überschreiten, die für die Ausführung der ursprünglich angeforderten Rechenoperationen für den arbeitenden Datensatz ausgegeben wird. Dementsprechend weisen herkömmliche Cache-Ersetzungsalgorithmen Nachteile auf, die in der Lage sind, Berechnungsoperationen zu behindern.
  • ZUSAMMENFASSUNG
  • Dieses Dokument beschreibt die Profilierung für die Cache-Ersetzung. Die Profilierung der Cache-Ersetzung ist eine Technik zum Verwalten der Datenmigration zwischen einem Hauptspeicher und einem Cache-Speicher, um die Gesamtsystemleistung zu verbessern. Sowohl der Cache- als auch der Hauptspeicher sind so konfiguriert, dass er Seiten von Daten speichert – wobei der Cache-Speicher kleiner als der Hauptspeicher ist und somit weniger Seiten beibehalten kann als der Hauptspeicher. Im Vergleich zum Hauptspeicher weist der Cache-Speicher jedoch mindestens eine niedrigere Latenzzeit, höhere Bandbreite oder eine geringere Leistungsaufnahme auf. Folglich verbessert sich die Systemleistung, wenn ein größerer Teil von Datenzugriffsanforderungen aus dem Cache-Speicher bedient werden kann. Um den Teil der Datenzugriffsanforderungen zu erhöhen, die von dem Cache-Speicher bedient werden, speichert das Profil der Cache-Ersetzung Caches von am meisten angeforderten Seiten im Cache-Speicher und migriert (oder verlässt) weniger angeforderte Seiten im Hauptspeicher.
  • Im Gegensatz zu herkömmlichen Cache-Ersatztechniken verwendet die Cache-Ersetzungsprofilierung einen Profiler, um Zähler zu speichern, die Speicheranforderungen für den Zugriff auf nicht nur die Seiten, die im Cache-Speicher gepflegt werden zu zählen, sondern auch die Seiten, die im Hauptspeicher gepflegt werden. Basierend auf den vom Profiler gesammelten Informationen (z. B. über Speicherzugriffsanforderungen) bewegt ein Mover Seiten zwischen dem Haupt- und dem Cache-Speicher. So kann beispielsweise der Mover stark angeforderte Seiten des Hauptspeichers, wie beispielsweise eine am häufigsten angeforderte Seite des Hauptspeichers, mit wenig angeforderten Seiten des Cache-Speichers austauschen, wie beispielsweise einer am wenigsten angeforderten Seite des Cache. Der Mover kann dies beispielsweise tun, wenn die Zähler angeben, dass die Anzahl an Seitenzugriffsanforderungen für stark angeforderte Seiten des Hauptspeichers größer ist als die Anzahl an Seitenzugriffsanforderungen für wenig angeforderte Seiten des Cache-Speichers.
  • Um die Operationen von Speicherbenutzern (z. B. Clientanwendungen) nicht zu behindern, werden die durch die Speicherbenutzer gestellten Anfragen nicht für einen Cache-Miss gesperrt, und der Mover führt den Seitenaustausch im Hintergrund aus. In Bezug auf das blockierungsfreie Verhalten wird, wenn eine Seitenzugriffsanforderung zu einem Cache-Miss führt, die angeforderte Seite nicht sofort in den Cache-Speicher geladen, sodass die Anforderung aus dem Cache-Speicher bedient werden kann. Stattdessen wird die Anforderung direkt aus dem Hauptspeicher bedient. Hinsichtlich des Seitenaustausches, der im Hintergrund durchgeführt wird, wird Priorität für Wartungsanforderungen gegeben, die von Speicherbenutzern über den Seitenaustausch durchgeführt werden, der durch den Mover ausgeführt wird. Um dies zu erreichen, ist der Mover darauf beschränkt, Seiten in vorbestimmten Zeitintervallen, wie z. B. einmal jede Mikrosekunde (μs), zu tauschen. Bei dem vorgegebenen Zeitintervall bestimmt der Mover, ob die Anzahl an Seitenzugriffsanforderungen für stark angeforderte Seiten des Hauptspeichers die Anzahl an Seitenzugriffsanforderungen für eine wenig angeforderte Seite des Cache-Speichers übersteigt. Wenn dies der Fall ist, tauscht der Mover die stark angeforderte Seite des Hauptspeichers mit der wenig angeforderten Seite des Cache-Speichers. Auf diese Weise optimiert das Cache-Ersetzungsprofil die Seiten, mit denen der Cache-Speicher gefüllt ist, und zwar ohne Interferenzen mit Operationen von Speicherbenutzern, wobei das Ergebnis eine verbesserte Systemleistung ist.
  • Diese Zusammenfassung wird bereitgestellt, um vereinfachte Konzepte hinsichtlich der Techniken einzuführen,, die in der ausführlichen Beschreibung nachfolgend weiter beschrieben werden. Diese Zusammenfassung dient weder der Identifizierung von Schlüsselmerkmalen oder wesentlichen Merkmalen des beanspruchten Gegenstandes, noch ist sie zur Verwendung beim Festlegen des Schutzumfangs des beanspruchten Gegenstandes beabsichtigt.
  • KURZBESCHREIBUNG DER ZEICHNUNGEN
  • Ausführungsformen von Techniken und Vorrichtungen zum Profilieren der Cache-Ersetzung werden unter Bezugnahme auf die folgenden Zeichnungen beschrieben. Es werden in allen Zeichnungen die gleichen Nummern verwendet, um sich auf gleiche Merkmale und Komponenten zu beziehen:
  • 1 veranschaulicht eine exemplarische Umgebung, in der die Techniken implementiert werden können.
  • 2 veranschaulicht ein Diagramm, das exemplarische Seitenzählerwerte für Haupt- und Cache-Speicher zu einem ersten Zeitpunkt zeigt.
  • 3 veranschaulicht ein Diagramm, das exemplarische Seitenzählerwerte für Haupt- und Cache-Speicher zu einem zweiten Zeitpunkt nach dem ersten Mal zeigt.
  • 4 veranschaulicht eine exemplarische Speicher-Profilierungsrechenvorrichtung von 1.
  • 5 veranschaulicht ein Verfahren zum Ersetzen von Seiten im Cache-Speicher gemäß einem Profilierungsalgorithmus.
  • 6 veranschaulicht ein Verfahren zum Zählen von Seitenzugriffen zur Profilerstellung von Cache-Ersetzungen unter Verwendung von Leerzeichen-Zählern.
  • 7 veranschaulicht ein Verfahren zum Zählen von Seitenzugriffen zur Profilerstellung von Cache-Ersetzungen unter Verwendung von weniger als einem Zähler pro Seite des Speichers.
  • 8 veranschaulicht ein exemplarisches Computersystem, das oder in den Techniken implementiert werden können, die die Verwendung von Cache-Ersetzungsprofilen ermöglichen.
  • AUSFÜHRLICHE BESCHREIBUNG
  • Überblick
  • Dieses Dokument beschreibt Techniken und Geräte, welche die Profilierung der Cache-Ersetzung ermöglichen. Durch Verwendung dieser Techniken und Geräte wird die Datenmigration zwischen einem Hauptspeicher und einem Cache-Speicher auf eine Weise verwaltet, die die Systemleistung gegenüber herkömmlichen Cache-Ersetzungsverfahren verbessert, wie zum Beispiel am wenigsten verwendete (LRU) Algorithmen, die zuletzt verwendeten (MRU) Algorithmen, am wenigsten häufig verwendete (LFU) Algorithmen, zufällige Ersetzungsalgorithmen und so weiter. Die verbesserte Leistung resultiert zumindest teilweise aus der Reduzierung einer Menge von „Trashing“, um die im Vergleich zu herkömmlichen Techniken in Verbindung mit der Migration von Daten zwischen dem Haupt- und dem Cache-Speicher auftritt, zu verringern. Der Begriff „Trashing“ bezieht sich auf einen Zustand, der durch übermäßigen Füll- und Räumungsverkehr verursacht wird, der erzeugt werden kann, wenn eine Größe eines Arbeitssatzes von Daten die Größe des Cache-Speichers übersteigt. Trashing kann zu einer dramatischen Zunahme in einer Anzahl an Cache-Fehlern führen, die dazu führen, dass das System mehr Zeit verbringt, die Cache-Füllung und -Räumung für die resultierenden Fehlstellen auszuführen, als die ursprünglich angeforderten Rechenoperationen für den arbeitenden Datensatz auszuführen. Durch die Anwendung des Profilersatz-Cache-Austauschs können Daten im Cache und in den Hauptspeichern auf eine Weise verwaltet werden, die das Trashing reduziert und die Gesamtsystemleistung verbessert.
  • So kann beispielsweise ein Speicherbenutzer, wie eine Clientanwendung, einen Zugriff auf eine bestimmte im Speicher geladene Seite anfordern. In diesem Beispiel wird angenommen, dass die Client-Anwendung den Zugriff auf die bestimmte Seite aus dem Speicher als Teil eines Initialisierungsprozesses anfordert. Während des Initialisierungsvorgangs kann die Clientanwendung den Zugriff auf die bestimmte Seite viele Male verlangen. Um die Anforderungen der Clientanwendung am effizientesten zu bedienen, kann die bestimmte Seite in den Cache-Speicher geladen werden, z. B. so, dass Anforderungen für die bestimmte Seite schneller bedient werden können, als wenn sie aus dem Hauptspeicher bedient wird. Nach Abschluss des Initialisierungsprozesses muss die Client-Anwendung unter Umständen nicht auf die jeweilige Seite zugreifen oder auf sie relativ zu anderen Seiten zugreifen. Während des normalen Betriebs kann die Clientanwendung stattdessen einen Zugriff auf andere Seiten mehr anfordern, sodass die Anforderungen, auf die anderen Seiten zuzugreifen, schließlich die Anforderungen für die bestimmte Seite übersteigen, da der Initialisierungsprozess abgeschlossen ist und die bestimmte Seite nicht mehr angefordert wird.
  • Die Effizienz des normalen Betriebs der Clientanwendung kann somit verbessert werden, indem die Anforderungen für die anderen Seiten aus dem Cache-Speicher bedient werden, z. B. weil der Cache-Speicher, obwohl er kleiner als der Hauptspeicher ist, eine niedrigere Latenzzeit, eine höhere Bandbreite oder einen geringeren Leistungsverbrauch aufweist als der Hauptspeicher. Mit anderen Worten, die Effizienz kann verbessert werden, indem eine der anderen Seiten mit der jeweiligen Seite vertauscht wird. Wie hier verwendet, bezieht sich „austauschen“ auf eine Aktion oder eine Reihe von Aktionen, die es ermöglicht, dass Daten, die der einen Seite entsprechen, in den Cache-Speicher gefüllt werden und die Daten, die der bestimmten Seite entsprechen, aus dem Cache-Speicher ausgegeben werden. Bei einigen Szenarien werden die Daten, die der einen anderen Seite entsprechen, einfach mit den Daten, die der jeweiligen Seite entsprechen, ausgetauscht, sodass die Daten der einen anderen Seite an die Stelle der Daten der bestimmten Seite im Cache-Speicher treten und die Daten der speziellen Seite an die Stelle der Daten der einen anderen Seite im Hauptspeicher treten. Bei derartigen wenn eine Seite im Cache gespeichert wird, befinden sich ihre Daten nur im Cache-Speicher und nicht im Hauptspeicher.
  • In anderen Szenarien sind jedoch zumindest einige Daten für jede Seite in dem Speicher im Hauptspeicher vorhanden, unabhängig davon, ob eine Seite, die den Daten entspricht, zwischengespeichert wird oder nicht. In diesen Szenarien, wenn eine Seite im Cache gespeichert ist, stellen eine Seite im Cache-Speicher und eine Seite im Hauptspeicher zusammen die gültigen Daten der Seite bereit. In einigen Fällen können jedoch einige der Seiten im Cache-Speicher keine gültigen Daten enthalten, da diese Seiten nicht gefüllt sind. Einige der Seiten im Hauptspeicher können auch keine gültigen Daten enthalten, beispielsweise wenn eine Gesamtheit der Daten dieser Seiten im Cache-Speicher modifiziert wurde. Unter diesen Szenarien ist das Austauschen der Daten der einzelnen Seite mit den Daten, die der anderen Seite entsprechen, nicht einfach ein Austausch von Daten wie im ersten beschriebenen Szenario. Stattdessen beinhaltet das Tauschen (Swapping), dass die Daten, die der jeweiligen Seite entsprechen, aus dem Cache-Speicher auf eine entsprechende Seite im Hauptspeicher übertragen werden. Auf der jeweiligen Seite werden die Abschnitte der Daten, die im Cache-Speicher modifiziert wurden, auf die jeweilige Seite im Hauptspeicher kopiert – wobei das Kopieren auf die modifizierten Blöcke beschränkt ist, da die jeweilige Seite immer noch die gleichen Daten für die unmodifizierten Blöcke beibehält. Nach der Räumung wird die Seite des Cache-Speichers, von dem die Daten geräumt wurden, mit den Daten der einen anderen Seite aus dem Hauptspeicher gefüllt. Die jeweilige Seite (z. B. die Seite, in die die geräumten Daten platziert werden) und die andere Seite (z. B. die Hauptspeicherdaten, die verwendet wurden, um die verfügbare Cache-Speicherseite zu füllen) entsprechen jedoch nicht denselben Seiten.
  • Unabhängig von der Art und Weise, in der die Haupt- und Cache-Speicher konfiguriert sind, und somit die Art und Weise, in der ihre Seiten ausgetauscht werden, können nach dem Swapping die Anforderungen für die eine andere Seite aus dem Cache-Speicher bedient werden. Um zu bestimmen, wann und welche Seiten zwischen Haupt- und Cache-Speichern ausgetauscht werden, greift der Profilerstellungs-Cache-Ersatz auf die im Haupt- und im Cache-Speicher gehaltenen Seiten der Daten zu. Insbesondere werden Zugriffe auf die Seiten im „adressierbaren Speicher“ mit Zähler verfolgt. Der Begriff „adressierbarer Speicher“ bezieht sich auf die Speicherbereiche, die von den Speicherbenutzern erkannt werden. In dem vorstehend beschriebenen ersten Szenario entspricht die Größe des adressierbaren Speichers einer Größe des Hauptspeichers plus der Größe des Cache-Speichers. In den anderen Szenarien entspricht die Größe des adressierbaren Speichers jedoch nur der Größe des Hauptspeichers. Somit wird eine Anzahl an Zählern beibehalten, die einer Anzahl an Seiten in dem Hauptspeicher entspricht. Um dies zu tun, kann ein Profiler Zähler für jede der Seiten im adressierbaren Speicher halten und wenn der Zugriff auf eine dieser Seiten angefordert wird, erhöhen Sie den Zähler für die Seite. In den vorstehend erläuterten Speicherkonfigurations- und Swapping-Szenarien wird ein Zähler für jede Seite im adressierbaren Speicher aufrechterhalten, z. B. wird ein Zähler für jede Seite im Hauptspeicher beibehalten, da die zwischengespeicherten Seiten auch durch Daten in dem Hauptspeicher dargestellt werden.
  • Zurückkehrend zur Erläuterung der Clientanwendung, die während der Initialisierung den Zugriff auf die jeweilige Seite oftmals anfordert, fordert sie nach der Initialisierung keinen Zugriff an oder fordert den Zugriff auf die bestimmte Seite nicht mehr an und fordert beim normalen Betrieb einen Zugriff auf andere Seiten an. Die Zähler, die vom Profiler an einem Punkt gepflegt werden, können anzeigen, dass der Zugriff auf mindestens eine der anderen Seiten mehr als der Zugriff auf die jeweilige Seite angefordert wurde. Sobald dies der Fall ist, kann ein Mover, der konfiguriert ist, um Seiten vom Hauptspeicher zum Cache-Speicher zu verschieben und umgekehrt, eine der anderen Seiten tauschen, die mehr als die bestimmte Seite mit der bestimmten Seite angefordert wird. Insbesondere kann der Mover die mehr angeforderte Seite aus dem Hauptspeicher in den Cache-Speicher bewegen und kann die bestimmte Seite aus dem Cache-Speicher in den Hauptspeicher verschieben. Damit der Betrieb der Clientanwendung nicht unterbrochen wird, werden Anfragen, die von der Clientanwendung vorgenommen werden, nicht blockiert, und der Vorgang des Austauschs von Seiten, um die im Cache-Speicher gepflegten Daten zu optimieren, wird im Hintergrund ausgeführt. Insbesondere wenn eine Seitenzugriffsanforderung zu einem Cachefehler führt, wird die angeforderte Seite nicht sofort in den Cache-Speicher geladen, sodass die Anforderung aus dem Cache-Speicher bedient werden kann. Stattdessen wird die Anforderung direkt aus dem Hauptspeicher bedient. Ferner ist der Mover darauf beschränkt, Seiten in vorbestimmten Zeitintervallen, wie z. B. einmal jede Mikrosekunde (μs), zu tauschen. Als Ergebnis konkurriert der Mover nicht zu anderen Zeiten mit der Client-Anwendung für den Zugriff auf den Haupt- oder den Cache-Speicher. Unter Verwendung derartiger Techniken kann eine Unterbrechung von Rechenoperationen vermieden und ein Trashing reduziert werden, wodurch die Gesamtleistung des Systems verbessert wird.
  • Dies ist nur ein einfaches Beispiel für die Art und Weise, wie ein Profilerstellungs-Cache-Austausch durchgeführt werden kann, weitere Beispiele und Details sind nachfolgend angegeben. Dieses Dokument wendet sich nun einer exemplarischen Umgebung zu, die auf Diagramme verweist, die Seitenzählerwerte zeigen, nach denen Vorrichtungen und Verfahren und ein exemplarisches Computersystem beschrieben werden.
  • Exemplarische Umgebung
  • 1 ist eine Darstellung einer exemplarischen Umgebung 100, in der ein Ersetzen des Profilierungs-Cache verwendet werden kann. Die Umgebung 100 veranschaulicht eine Speicherprofil-Berechnungsvorrichtung 102 mit dem profilierten Speicher 104. In dem besonderen Beispiel von 1 ist die Speicher-Profilierungs-Rechenvorrichtung 102 als ein Smartphone konfiguriert, jedoch werden andere Konfigurationen in Betracht gezogen. Andere Konfigurationen der Speicher-Profilierungs-Rechenvorrichtung 102, die in der Lage sind, den Speicher zu optimieren, indem ein Profil-Cache-Austausch verwendet wird, sind in späteren Figuren dargestellt.
  • Die Umgebung 100 veranschaulicht auch Komponenten des profilierten Speichers 104. Der profilierte Speicher 104 beinhaltet einen Cache-Speicher 106 und einen Hauptspeicher 108. Der Cache-Speicher 106 und der Hauptspeicher 108 sind in der Lage, Daten für den Zugriff durch Speicherbenutzer, beispielsweise durch ein Betriebssystem, Client-Anwendungen und so weiter, zu speichern. Der Cache-Speicher 106 und der Hauptspeicher 108 sind beispielsweise in der Lage, Seiten von Daten zu speichern. Wie hierin verwendet, bezieht sich der Begriff „Seiten“ auf gleich große Blöcke von Daten, z. B. 4-Kilobyte (KB) Datenblöcke. Bezogen auf den Hauptspeicher 108 ist der Cache-Speicher 106 kleiner – er hat weniger Speicherplatz und ist somit in der Lage, weniger Seiten von Daten zu speichern als der Hauptspeicher 108. Obwohl er kleiner als der Hauptspeicher 108 ist, weist der Cache-Speicher zumindest eine niedrigere Latenzzeit, eine höhere Bandbreite oder einen geringeren Stromverbrauch auf als der Hauptspeicher 108. Aufgrund dieser Eigenschaften des Cache-Speichers 106 führt die Wartung eines größeren Teils von Datenzugriffsanforderungen mit zwischengespeicherten Daten anstelle von nicht-zwischengespeicherten Daten zu einer effizienteren Anfragewartung in Bezug auf Geschwindigkeit, Leistung oder ein beliebiges anderes Maß an Systemwirkungsgrad für die Speicherprofil-Berechnungsvorrichtung 102.
  • Der profilierte Speicher 104 beinhaltet auch einen Mapper 110, einen Profiler 112 und einen Mover 114. Der Mapper 110, der Profiler 112 und der Mover 114 stellen eine Funktionalität dar, um die Leistung des profilierten Speichers 104 durch Zwischenspeichern stark angeforderter Seiten und Verlassen von weniger angeforderten Seiten in dem Hauptspeicher 108 zu optimieren. Der Mapper 110 wird für jeden Speicherzugriff verwendet. Der Mapper 110 ordnet eine Eingangsadresse einer Adresse im Cache-Speicher 106 z. B. einem Cache-Treffer) oder einer Adresse im Hauptspeicher 108 (z. B. einem Cache-Miss) zu. Im Gegensatz zu herkömmlichen Verfahren wird, wenn eine Seitenzugriffsanforderung zu einem Cachefehler führt, wird die angeforderte Seite nicht sofort in den Cache-Speicher 106 geladen, sodass die Anforderung aus dem Cache-Speicher 106 bedient werden kann. Stattdessen wird die Anforderung direkt aus dem Hauptspeicher 108 bedient, z. B. wird die angeforderte Seite einem Speicherbenutzer bereitgestellt, der den Zugriff auf die Seite direkt aus dem Hauptspeicher 108 verlangt.
  • Der Profiler 112 stellt die Funktionalität dar, um Informationen über Speicherzugriffe zu sammeln. Der Profiler 112 verfolgt beispielsweise Nummern von Seitenzugriffen, wie beispielsweise eine Anzahl an Anforderungen, um auf die Seiten in dem profilierten Speicher 104 zuzugreifen. Obwohl die Techniken hierin unter Verwendung des Beispiels beschrieben werden, kann der Profiler 112 den Speicherzugriff auf unterschiedliche Weise verfolgen, ohne vom Geist oder Umfang der hierin beschriebenen Technik abzuweichen. Wenn die Größen der Anforderungen nicht über jede Anforderung gleich sind, wie beispielsweise, wenn einige Anforderungen für 64 B und andere Anforderungen für 128 B sind, kann der Profiler 112 Bytes anstelle der Anzahl an Anforderungen zählen. Alternativ kann der Profiler 112 größere Anforderungen behandeln, um auf Seiten im Speicher als Mehrfachanforderungen zuzugreifen. In anderen Beispielen kann der Speicherzugriff verfolgt werden, ohne jede Anfrage zu zählen, um auf eine Seite zuzugreifen. Stattdessen können Leseanforderungen für eine Seite verfolgt werden, aber Schreibanforderungen werden nicht verfolgt. Ebenso können Schreibanforderungen für eine Seite verfolgt werden, während Leseanforderungen nicht verfolgt werden.
  • Unabhängig von der Einheit, die verwendet wird, um den Speicherzugriff auf Seiten zu verfolgen, kann der Profiler 112 einen Zähler für jede Seite im Cache-Speicher 106 und jede Seite im Hauptspeicher 108 aufrechterhalten. Wenn der Zugriff auf eine Seite angefordert wird, kann der Profiler 112 den Zähler für diese Seite inkrementieren, wodurch die Seitenzugriffe verfolgt werden. Bei einer oder mehreren Implementierungen behält der Profiler 112 jedoch weniger Zähler als einen pro Seite des Speichers. Auf diese Weise kann der Profiler 112 eine Menge an Speicher verringern, die verwendet wird, um Tracking-Informationen zu speichern, die Seitenzugriffe des profilierten Speichers 104 beschreiben. Einzelheiten der Art und Weise, in der der Profiler 112 weniger als einen Zähler für jede Seite des Speichers verwendet, werden nachfolgen erläutert.
  • Der Mover 114 stellt eine Funktionalität zum Verschieben von Seiten zwischen dem Cache-Speicher 106 und dem Hauptspeicher 108 dar. Der Mover 114 ist beispielsweise in der Lage, stark angeforderte Seiten des Hauptspeichers 108 mit wenig angeforderten Seiten des Cache-Speichers 106 zu tauschen. Wie hierin verwendet, bezieht sich der Begriff „hoch“ der angeforderten Seite oder Seiten auf Seiten, die mehr als andere in dem betrachteten Teil des Speichers angefordert werden und einer am häufigsten angeforderten Seite in dem betrachteten Abschnitt entsprechen können, Teil, und so weiter. So kann beispielsweise eine stark angeforderte Seite in dem Hauptspeicher 108 eine Seite sein, für die die Anzahl an Anforderungen in den oberen zehn Prozent unter den Seiten in dem Hauptspeicher 108 liegt, oder sie kann die am meisten angeforderte Seite in dem Hauptspeicher 108 sein. Wie hierin verwendet, bezieht sich der Begriff „wenig“ der angeforderten Seite oder Seiten auf Seiten, die weniger als andere in dem betrachteten Teil des Speichers angefordert werden und kann einer am wenigsten angeforderten Seite in dem betrachteten Abschnitt, einer untersten zehn Prozent angeforderten Seite in dem Abschnitt und so weiter entsprechen. So kann beispielsweise eine wenig angeforderte Seite in dem Cache-Speicher 106 eine Seite sein, für die die Anzahl an Anfragen in den unteren zehn Prozent unter den Seiten in dem Cache-Speicher 106 liegt, oder sie kann die am wenigsten angeforderte Seite im Cache-Speicher sein. Es sollte jedoch angemerkt werden, dass „hoch“ und „wenig“ in Verbindung mit dem Speicherteil, der den Seiten entspricht, verwendet werden. Somit kann eine stark angeforderte Seite im Hauptspeicher 108 eine geringere Anzahl an Zugriffsanforderungen aufweisen als eine wenig angeforderte Seite im Cache-Speicher 108 oder kann eine ähnliche Anzahl an Anforderungen aufweisen. Jedoch weist eine stark angeforderte Seite im Hauptspeicher 108 eine größere Anzahl an Zugriffsanforderungen auf als eine wenig angeforderte Seite im Hauptspeicher 108. Zusätzlich hat eine stark angeforderte Seite in dem profilierten Speicher 104 (z. B. unter den Seiten in dem Hauptspeicher 108 und dem Cache-Speicher 106) eine größere Anzahl an Zugriffsanforderungen als wenig angeforderte Seiten in dem profilierten Speicher 104.
  • In jedem Fall kann der Mover 114 stark angeforderter Seiten des Hauptspeichers 108 mit wenig angeforderten Seiten des Cachespeichers 106 in Reaktion auf eine Bestimmung tauschen, dass die stark angeforderten Seiten des Hauptspeichers 108 für einen Zugriff mehr als die wenig angeforderten Seiten des Cache-Speichers 106 angefordert werden. Zusätzlich zum Verschieben von Seiten zwischen dem Cache-Speicher 106 und dem Hauptspeicher 108 stellt der Mover 114 auch eine Funktionalität dar, um festzustellen, ob auf Seiten im Hauptspeicher 108 mehr zugegriffen wird als auf die Seiten im Cache-Speicher 106. Der Mover 114 kann dies tun, indem er die von dem Profiler 112 gesammelten Informationen, z. B. die Zähler, überprüft. Sobald der Mover 114 Seiten verschiebt (z. B. eine Seite im Cache-Speicher 106 mit einer Seite im Hauptspeicher 108 tauscht), aktualisiert der Mover 114 von der Abbildungseinrichtung 110 verwendete Adresseninformation, sodass zukünftige Speicherzugriffsanforderungen auf die richtige Adresse im Cache-Speicher 106 oder im Hauptspeicher 108 abgebildet werden. Es sollte angemerkt werden, dass der Mover 114 Seiten auf eine Feststellung, dass die stark angeforderten Seiten des Hauptspeichers 108 nicht für einen Zugriff mehr angefordert werden als die wenig angeforderten Seiten des Cache-Speichers 106, nicht tauscht.
  • Für den Kontext betrachten wir die 2 und 3, die Diagramme von exemplarischen Seitenzählerwerten für Haupt- und Cache-Speicher darstellen. Das Diagramm 200 von 2 zeigt die exemplarischen Seitenzählerwerte für den Haupt- und den Cache-Speicher zu einem ersten Zeitpunkt und das Diagramm 300 von 3 zeigt die exemplarischen Seitenzählerwerte für den Haupt- und den Cache-Speicher zu einem zweiten Zeitpunkt nach dem ersten Zeitpunkt. Wie weiter unten ausführlicher erörtert wird, überprüft der Mover 114 die Information über angeforderte Seitenzugriffe. Der Mover 114 leitet auch einen Seitenaustausch in einem vorbestimmten Zeitintervall ein, z. B. einmal jede Mikrosekunde (μs). Unter Bezugnahme auf das vorbestimmte Zeitintervall kann das erste Mal, das dem Diagramm 200 entspricht, vor dem Auftreten eines bestimmten derartigen vorbestimmten Zeitintervalls sein, während das dem Diagramm 300 entsprechende zweite Mal nach dem Auftreten des bestimmten vorbestimmten Zeitintervalls erfolgt.
  • Das Diagramm 200 beinhaltet eine erste Achse 202, die Zählerwerten entspricht, die die Anzahl an Seitenzugriffen angeben. Eine zweite Achse 204 des Diagramms 200 stellt die im Speicher gepflegten Seiten dar. Das Diagramm 200 beinhaltet auch eine Trennlinie 206. Die links neben der Trennlinie 206 dargestellten Balken stellen Zählerwerte von Seiten im Cache-Speicher 106 zum ersten Zeitpunkt dar, während die rechts neben der Trennlinie dargestellten Balken Zählerwerte von Seiten im Hauptspeicher 108 zum ersten Zeitpunkt darstellen. In dem speziellen Beispiel, das in den 2 und 3 veranschaulicht ist, ist der Cache-Speicher 106 128 Megabyte (128 MB), der Hauptspeicher 108 ist 4 Gigabyte (4 GB) und jede Seite der Daten ist 4 Kilobyte (4 KB). Somit stellen die Balken links von der Trennlinie 206 128 MB im Wert von 4-KB-Seiten dar, während die Balken rechts von der Trennlinie 206 4 GB im Wert von 4-KB-Seiten (1 Million Seiten) darstellen. Es sollte klar sein, dass dies lediglich exemplarische Größen sind und dass Größen des Cache-Speichers 106, des Hauptspeichers 108 und der darin gehaltenen Seiten von den Größen variieren können, die in dem Beispiel verwendet werden, ohne vom Geist oder Umfang der hierin beschriebenen Techniken abzuweichen.
  • Zum besseren Verständnis der erläuterten Konzepte wurden die 2 und 3 so dargestellt, dass sie das vorstehend beschriebene Szenario darstellen, in dem Daten, die den Seiten im Hauptspeicher 108 entsprechen, einfach mit den Daten, die Seiten im Cache-Speicher 106 entsprechen, ausgetauscht, sodass, wenn eine Seite zwischengespeichert wird, sich die Daten im Cache-Speicher 106 befinden, jedoch nicht im Hauptspeicher 108. In diesen Szenarien erkennen Speicherbenutzer adressierbaren Speicher als die Kombination von 4 GB und 128 MB (z. B. eine Kombination des Hauptspeichers 108 und des Cache-Speichers 106). Wenn der Cache-Speicher 106 jedoch bei der Implementierung im Verhältnis zum Hauptspeicher 108 (128 MB gegenüber 4 GB) klein ist, können der Hauptspeicher 108 und der Cache-Speicher 106 gemäß den anderen vorstehend beschriebenen Speicherkonfigurations- und Tauschszenarien konfiguriert werden.
  • In den vorstehend beschriebenen anderen Speicherkonfigurations- und Tauschszenarien stellen eine Seite im Cache-Speicher 106 und eine Seite im Hauptspeicher 108 zusammen die gültigen Daten einer zwischengespeicherten Seite bereit. In diesen anderen Szenarios können, wenn Seiten im Cache gespeichert sind, zumindest einige Daten, die den zwischengespeicherten Seiten entsprechen, im Cache-Speicher 106 sein, und zumindest einige Daten, die den zwischengespeicherten Seiten entsprechen, können sich auch im Hauptspeicher 108 befinden. In einigen Fällen können jedoch einige der Seiten im Cache-Speicher 106 keine gültigen Daten enthalten, da diese Seiten nicht gefüllt sind. Einige der Seiten im Hauptspeicher 108 können auch keine gültigen Daten enthalten, beispielsweise wenn eine Gesamtheit der Daten dieser Seiten im Cache-Speicher 106 modifiziert wurde. In Übereinstimmung mit diesen anderen Konfigurations- und Tauschszenarien und dem Beispiel, bei dem der Hauptspeicher 108 4 GB und der Cache-Speicher 128 MB beträgt, erkennt der Speicherbenutzer den adressierbaren Speicher lediglich als 4 GB (z. B. nur den Hauptspeicher 108). Beim Füllen einer 4-KB-Seite von Daten aus dem Hauptspeicher 108 in den Cache-Speicher 106 kann der Mover 114 nicht jeden Teil der 4 KB-Daten der Seite in den Cache-Speicher 106 füllen. So kann beispielsweise der Mover 114 stattdessen 1 KB der Daten der Seite in den Cache-Speicher 106 füllen. Der Mover kann die 1 KB von Daten füllen, die sich in der Nähe einer Anforderungsadresse befinden, beispielsweise wenn es eine gewisse Unsicherheit darüber gibt, ob die anderen 3 KB auch verwendet werden. Wenn erwartet wird, dass die meisten Anforderungen an eine Seite Schreibanforderungen sein werden, kann der Mover 114 die Daten der Seite nicht füllen, die in den Cache-Speicher 106 überschrieben werden. Stattdessen kann der Mover 114 in die Cache-Speicherinformation 106 füllen, um anzuzeigen, wo jeder 64-Byte-Abschnitt der Seite zu finden ist.
  • Zurück zu dem dargestellten Beispiel der 2 und 3 sind die Balken, die die Seiten darstellen, von links nach rechts in absteigender Zählerwertreihenfolge und auch innerhalb der Grenzen des Cache-Speichers 106 und des Hauptspeichers 108 angeordnet. Somit entspricht der Balken 208, der die Anzahl an Seitenzugriffen der am meisten zugegriffenen Seite in dem Cache-Speicher 106 darstellt, einem größeren Zählerwert als der Balken 210, der die Anzahl an Seitenzugriffen für die Seite mit dem zweitgrößten Zugriff dem Cache-Speicher 106 darstellt. Ähnlich entspricht der Balken 212, der die Anzahl an Seitenzugriffen der Seite mit dem zweitniedrigsten Zugriff in dem Hauptspeicher 108 darstellt, einem größeren Zählerwert als der Balken 214, der die Anzahl an Seitenzugriffen der Seitenzugriffe der am wenigsten aufgerufenen Seite im Hauptspeicher 108 darstellt.
  • Von besonderer Bedeutung sind Takte 216, 218, die eine am wenigsten angeforderte Seite im Cache-Speicher 106 und eine stark angeforderte Seite im Hauptspeicher 108 zum ersten Zeitpunkt darstellen. In dem dargestellten Beispiel ist der Balken 216 kleiner als der Balken 218 und stellt somit dar, dass der Zugriff auf die am wenigsten angeforderte Seite im Cache-Speicher 106 zum ersten Zeitpunkt weniger als der Zugriff auf die am häufigsten angeforderte Seite in dem Hauptspeicher 108 angefordert worden ist.
  • Das Diagramm 300 ist ähnlich dem Diagramm 200, es beinhaltet Achsen, die Zählerwerte und im Speicher gehaltene Seiten darstellen, die Trennlinie zwischen den Seiten, die im Cache-Speicher 106 und dem Hauptspeicher 108 gespeichert sind, und so weiter. Das Diagramm 300 unterscheidet sich jedoch von dem Diagramm 200 in einer bemerkenswerten Hinsicht. Im Diagramm 300 werden die Balken 216, 218 vertauscht, was einen Austausch der entsprechenden Seiten zwischen dem Cache-Speicher 106 und dem Hauptspeicher 108 darstellt. Mit anderen Worten veranschaulicht das Diagramm 300 ein Szenario, in dem die durch den Balken 216 dargestellte Seite in den Hauptspeicher 108 (z. B. durch den Mover 114) bewegt wird und die durch den Balken 218 dargestellte Seite in den Cache-Speicher 106 (z. B. durch den Mover 114). Wie vorstehend erwähnt, entspricht das Diagramm 200 einem ersten Zeitpunkt, und das Diagramm 300 entspricht einem zweiten Zeitpunkt, der dem ersten Zeitpunkt folgt. Zum Zwecke der Klarheit kann in den 2 und 3 angenommen werden, dass Anforderungen, der Zugriff auf die durch die dargestellten Balken veranschaulichten Seiten nicht zwischen dem ersten und dem zweiten Zeitpunkt erfolgt. Mit anderen Worten, die Zählerwerte für die in den Diagrammen 200, 300 dargestellten Seiten sind in beiden Fällen die gleichen. Zwischen dem ersten und dem zweiten Zeitpunkt wird jedoch angenommen, dass eine Bewegungsperiode, die Zeitdauer, während der der Mover 114 Seiten zwischen dem Cache-Speicher 106 und dem Hauptspeicher 108 tauscht, aufgetreten ist. Somit können der erste Zeitpunkt und der zweite Zeitpunkt Zeitscheiben unmittelbar vor und unmittelbar nach der Bewegungszeit darstellen. Zwischen dem ersten und dem zweiten Zeitpunkt werden daher die Profilierungs-Cache-Ersatztechniken durch den Mover 114 angewendet, um die zwischengespeicherten Seiten für die Speicherprofilierungs-Rechenvorrichtung 102 zu optimieren.
  • Im Hinblick auf die exemplarische Speicher-Profilierungs-Rechenvorrichtung 102 von 1, ist eine ausführliche Darstellung in 4 gezeigt. Die Speicher-Profilierungs-Rechenvorrichtung 102 kann eine oder eine Kombination verschiedener Vorrichtungen sein, hierin mit sechs Beispielen dargestellt: einem Smartphone 102-1, einer Computeruhr 102-2, einer Digitalkamera 102-3, einem Laptop 102-4, einem Tablet-Computer 102-5 und einem Desktop-Computer 102-6, obwohl andere Computervorrichtungen und -systeme, wie ein Netbook, eine Spielekonsole oder eine Set-Top-Box, ebenfalls verwendet werden können. Wie vorstehend erwähnt, arbeiten in einigen Ausführungsformen die Techniken zumindest zum Teil über eine entfernte Rechenvorrichtung. Die entfernte Rechenvorrichtung kann beispielsweise als Server konfiguriert sein. In diesen Fällen können einige Berechnungen lokal verzögert werden, z. B. durch Kommunizieren von Daten, die das Rechnen über eine Kommunikationsvorrichtung mit begrenzten Rechenoperationen ermöglichen oder auch die die Daten kommunizieren, die das Rechnen direkt von den Speicherprofilierungs-Rechenvorrichtungen 102 zu dem Server ermöglichen.
  • Die Speicher-Profilierungs-Rechenvorrichtung 102 beinhaltet oder kann mit einer Anzeige 402 (fünf sind in 4 dargestellt), einem Sendeempfänger 404, einem oder mehreren Prozessoren 406 und computerlesbaren Speichermedien 408 (CRM 408) kommunizieren. Der Sendeempfänger 404 ist zum Senden und Empfangen von Daten direkt oder über ein Kommunikationsnetzwerk, wie beispielsweise Clientanwendungsdaten von den Geräten 102 über ein lokales, ein Weitverkehrs-, ein persönliches, ein Mobilfunk- oder ein Nahbereichsnetzwerk.
  • Bei einer oder mehreren Implementierungen sind der Cache-Speicher 106, der Hauptspeicher 108, der Profiler 112, der Mapper 110 und der Mover 114 auf dem CRM 408 ausgebildet. Der Cache-Speicher 106 beinhaltet zwischengespeicherte Seiten 410 und der Hauptspeicher beinhaltet Hauptspeicher geladene Seiten 412 (MM-geladene Seiten 412). Der Profiler 112 beinhaltet Speicherzugriffsinformationen 414, die von dem Profiler 112 über Speicherzugriffe gesammelt werden. Die Speicherzugriffsinformation 414 beinhaltet beispielsweise Zähler, die Nummern von Anforderungen zum Zugriff auf die zwischengespeicherten Seiten 410 und die MM-geladenen Seiten 412 angeben. Das CRM 408 beinhaltet auch eine Eingangsadressenzuordnung 416, die Eingangsadressen (wie jene, die von einem Speicherbenutzer bereitgestellt werden, um auf Informationsseiten im Cache- oder Hauptspeicher zuzugreifen) zu einer Adresse einer der gecachten Seiten 410 im Cache-Speicher 106 (einem Cache-Treffer) oder einer der MM-geladenen Seiten 412 im Hauptspeicher 108 (ein Cache-Miss).
  • Wie vorstehend erläutert, wird der Mapper 110 für jeden Speicherzugriff verwendet und stellt eine Funktionalität dar, um eine Eingangsadresse auf eine Adresse in dem Cache-Speicher 106 oder dem Hauptspeicher 108 darzustellen. Wenn der Mapper 110 eine Eingabeadresse (z. B. zum Anfordern eines Zugriffs auf eine Datenseite aus dem Speicher) empfängt, kann sich der Mapper 110 auf die Eingabeadressendarstellung 416 beziehen und eine entsprechende Adresse des Cache-Speichers 106 oder des Hauptspeichers 108 zurückgeben.
  • Der Profiler 112 wird auch bei jedem Speicherzugriff verwendet. Insbesondere verfolgt der Profiler die Anzahl der Zugriffe auf die zwischengespeicherten Seiten 410 und die MM-geladenen Seiten 412. Bei einer oder mehreren Implementierungen hält der Profiler 112 als Teil der Speicherzugriffsinformation 414 jeweilige Zähler für jede der zwischengespeicherten Seiten 410 und jede der MM-geladenen Seiten 412 aufrecht. Wenn in diesem Szenario auf eine der zwischengespeicherten Seiten 410 oder eine der MM-geladenen Seiten 412 zugegriffen wird, erhöht der Profiler 112 den jeweiligen Zähler, um den Zugriff anzuzeigen. Bei einigen Implementierungen kann jedoch das Beibehalten eines inkrementellen Zählers für jede der zwischengespeicherten Seiten 410 und jeder der MM-geladenen Seiten 412 zu viel Speicherplatz verbrauchen. Wenn der Profiler 112 8-Bit-Zähler verwendet, beträgt der Hauptspeicher 4 GB, und jede der MM-geladenen Seiten 412 ist beispielsweise 4 KB, dann wird 1 MB Speicher einfach verwendet, um die Zähler für eine Million Seiten zu speichern – was bei einigen Implementierungen nicht geeignet sein kann, z. B. wenn die Speicherzugriffsinformationen 414 im statischen Speicher mit wahlfreiem Zugriff (SRAM) gespeichert sind. Dementsprechend kann der Profiler 112 die Speicherzugriffsinformationen 414 in einer Weise verfolgen und beibehalten, die weniger Speicher verwenden. Der Profiler 112 kann beispielsweise Zähler implementieren, die die Gesamtzählerablage durch dynamische Expansion eines Bereichs der Zähler reduzieren oder dass es weniger Zähler als einen für jede Seite des Speichers gibt.
  • Im Hinblick auf die Reduzierung der Gesamtzählerspeicherung durch dynamische Expansion kann der Profiler 112 in einer oder mehreren Standardimplementierungen 8-Bit-Zähler verwenden und in einer oder mehreren anderen Implementierungen dynamisch expandierende Zähler verwenden. Um Zähler zu implementieren, für die der Bereich dynamisch expandiert, können Gleitkommadarstellungen verwendet werden. Allgemein gesagt haben die Zugriffszählungen der Seiten in dem Cache-Speicher 106 und dem Hauptspeicher 108 einen hohen dynamischen Bereich, z. B. kann auf stark anforderbare Seiten, auf die wesentlich mehr als auf Seiten mit wenig Zugriff zugegriffen werden, und die Anzahl an Zugriffen auf stark anforderbare Seiten während des Systembetriebs nimmt weiter zu.
  • Bei einer oder mehreren Implementierungen, einschließlich Implementierungen, bei denen dynamisch expandierende Zähler verwendet werden, können die Daten im Speicher in Sätze unterteilt werden. Mit anderen Worten können die zwischengespeicherten Seiten 410 und die MM-geladenen Seiten 412 in Sätze von Seiten unterteilt werden, sodass jeder Satz einige der zwischengespeicherten Seiten 410 und einige der MM-geladenen Seiten 412 beinhaltet. In dem fortlaufenden Beispiel, in dem der Cache-Speicher 106 128 MB beträgt, ist der Hauptspeicher 108 4 GB und jede Seite 4 KB, zum Beispiel können die Seiten in Sätze unterteilt werden, sodass jeder Satz 512 der MM-geladenen Seiten 412 und 16 der zwischengespeicherten Seiten 410 beinhaltet. Wenn die Daten im Speicher in Sätze unterteilt sind, kann der Mover 114 die zwischengespeicherten Seiten 410 in einem Satz mit den MM-geladenen Seiten 412, die sich ebenfalls in dem Satz befinden, tauschen. Folglich kann bei der Überprüfung von Zählern der Mover 114 in diesem Beispiel 512 Zähler überprüfen, um die am meisten und am wenigsten angeforderten Seiten zu bestimmen. Der Mover 114 tauscht jedoch die zwischengespeicherten Seiten 410 in dem Satz nicht mit den MM-geladenen Seiten 412 aus anderen Sätzen.
  • Bei dynamisch expandierenden Zählerimplementierungen kann der Profiler 112 einen gemeinsamen Maßstab S für jeden Satz von Seiten und einen N-Bit-Zähler C für jede Seite in einem Satz beibehalten. So kann beispielsweise der Profiler die gemeinsame Skala S für einen Satz von Seiten mit 6 Bits implementieren. Allgemein gesprochen kann der Profiler 112 einen gemeinsamen Maßstab verwenden, wenn Seiten in Sätze unterteilt werden, da Zählerwerte innerhalb eines Satzes verglichen werden, z. B. weil nur die Seiten im Cache-Speicher 106 und der Hauptspeicher 108 desselben Satzes getauscht sind. Mit dem gemeinsamen Maßstab S und dem N-Bit-Zähler C kann der Profiler 112 Zähler so halten, dass ihre Werte gleich C × 2S sind. Im Gegensatz zu Standardimplementierungen des Profilersatz-Cache-Austausches, bei dem der Profiler 112 den Zählerwert für jeden Zugriff einer Seite um 1 erhöht, erhöht der Profiler 112 bei Implementierungen, bei denen dynamisch expandierende Zähler verwendet werden, den Seitenzähler C mit einer Wahrscheinlichkeit von
    Figure DE102016225545A1_0002
    Dies ermöglicht dem Profiler 112, S Zufallsbits zu erzeugen und dann den Zähler nur dann zu erhöhen, wenn jedes der S Bits Null ist. Wenn der Zähler C einer Seite überläuft (z. B. wenn die vorherigen N-Bits nicht ausreichen, um Seitenzugriffe darzustellen), kann der Profiler 112 den gemeinsamen Maßstab S für die um eine eingestellte Seite erhöhen und jeden der Zählerwerte für die bestimmte Seite dividieren, wobei die jeweilige Seite sowohl den Überlauf als auch die anderen Seiten des Satzes um zwei verursacht.
  • Betrachten wir ein Szenario, in dem dieses Schema für dynamisch expandierende Zähler eingesetzt wird. Der Profiler 112 kann jeden Zählerwert auf eine Vielzahl unterschiedlicher Arten speichern. So kann der Profiler 112 einen Zählerwert gleich C speichern, wobei C einfach eine binäre Ganzzahl ist. Der Profiler 112 kann auch einen Zählerwert speichern der gleich C × 2S ist, wobei C einfach eine binäre Ganzzahl ist. Der Profiler 112 kann auch einen dynamischen Bereich einzelner Zähler mit einer einfachen Gleitkommadarstellung für C erhöhen. Der von dem Profiler 112 gespeicherte Zählerwert kann immer noch gleich C × 2S sein, jedoch kann der Profiler 112 C kodieren als: C = K × 2E
  • Hierbei steht der Begriff K für eine Bedeutung, die Teil einer Gleitkommazahl ist, die aus ihren signifikanten Ziffern besteht und der Begriff E den Exponenten der Basis darstellt (2 ist die Basis). Angesichts dessen ist der endgültige Zählerwert: K × 2E+S
  • Wenn in diesem Szenario angenommen wird, dass der Profiler 112 eine 4-Bit-Bedeutung und K (sodass er im Bereich von 0–15 liegen kann) und 3 Bits für den Exponenten (sodass er im Bereich von 0–7 liegen kann) verwendet, kann ein 7-Bit-Zähler C Seitenzugriffswerte darstellen in einem Bereich von [0,15 × 27].
  • Betrachten wir ein alternatives Szenario für die Verwendung von dynamisch expandierenden Zählern. In diesem alternativen Szenario kodiert der Profiler 112 einen individuellen Zähler C auf eine unterschiedliche Weise. Insbesondere hängt die Codierung von einer Anzahl an Bits ab, die für die Signifikanz und K, die hierin als nK dargestellt ist, und eine Anzahl an Bits, die für den Exponenten E, der hierin als nE dargestellt ist, zugeteilt sind. Wenn der Exponent E gleich Null ist, dann kodiert der Profiler 112 einfach den Wert des Zählers C so, dass er gleich der Bedeutung K ist, sodass C = Kist. Wenn der Exponent E größer ist als Null, kodiert der Profiler 112 den Wert des Zählers C wie folgt: C = (K + 2nK)2E-1
  • Wenn in diesem alternativen Szenario davon ausgegangen wird, dass die Anzahl der für die Bedeutung und nK zugeteilten Bits 4 Bits beträgt und die für den Exponenten nE zugeteilte Bitzahl 3 Bits beträgt, kann ein Zähler Werte in einem Bereich Speichern von [0,1984]. Wie vorstehend erwähnt, kann zusätzlich zur Reduzierung einer Größe (in Form der Anzahl an Bits) einzelner Zähler auch eine Anzahl an Zählern auch bei einigen speichersensitiven Implementierungen verringert werden, z. B. von einem Zähler pro Seite des Speichers auf weniger als einen Zähler pro Seite des Speichers.
  • Hinsichtlich der Verwendung von weniger als einem Zähler pro Seite des Speichers basiert dies auf einer Beobachtung, dass es unwahrscheinlich ist, dass Arbeitssätze von Daten, die von Speicherbenutzern (z. B. Clientanwendungen) in Verbindung mit gemeinsamen Arbeitslasten verwendet werden, eine Größe des Hauptspeichers 108 übersteigen. Weiterhin beinhaltet der Profilerstellungs-Cache-Austausch das Zwischenspeichern der stark angeforderten Seiten des Hauptspeichers 108 in den Cache-Speicher 106, und nicht nur das Zwischenspeichern von Seiten in den Cache-Speicher 106, nur, weil ein Zugriff auf diese Seiten angefordert wird, sind die Anzahl an Zugriffen auf selten angeforderte Seiten in dem Hauptspeicher 108 für die hierin beschriebenen Techniken weitgehend irrelevant. Dementsprechend kann der Profiler 112 Zähler für die Seiten beibehalten, auf die häufiger zugegriffen wird.
  • Um die Anzahl der Zähler zu reduzieren, die verwendet werden, um die Seiten in dem Cache-Speicher 106 und dem Hauptspeicher 108 zu verfolgen, können Tags verwendet werden, um eine Seite zu identifizieren, der jeder der Zähler zugeordnet ist. Wenn der Zugriff auf eine Seite angefordert wird, die einem Zähler zugeordnet ist, aktualisiert der Profiler 112 den Zähler auf eine der vorstehend beschriebenen Arten, um den Zugriff anzuzeigen. Wenn der Zugriff auf eine Seite angefordert wird, die nicht einem Zähler zugeordnet ist (z. B. eine Seite, für die Zugriffe derzeit nicht durch einen Zähler verfolgt werden), kann jedoch einer der Zähler, der bereits verwendet wird, um Zugriffe auf eine andere Seite zu verfolgen, mit der anderen Seite getrennt werden und mit der angeforderten, aber zuvor nicht zugeordneten Seite verknüpft werden.
  • Einige herkömmliche Techniken, um Zähler mit verfolgten Seiten zu trennen und sie mit angeforderten, aber zuvor nicht zugeordneten Seiten zu verknüpfen, können ein Trashing verursachen. Bei einer oder mehreren Implementierungen beinhaltet das Profil-Cache-Ersetzen das Anwenden einer oder mehrerer modifizierter Zählmarkierungstechniken, um Zähler mit verfolgten Seiten zu trennen und sie mit angeforderten, aber zuvor nicht zugeordneten Seiten zu verknüpfen. Diese modifizierten Zählmarkierungstechniken können das Trashing im Vergleich zu herkömmlichen Techniken reduzieren.
  • Der Profiler 112 wendet die modifizierten Zählmarkierungstechniken an, indem eine Anzahl an Zählern N als Teil der Speicherzugriffsinformation 414 beibehalten wird. Jeder Zähler umfasst ein Datenpaar, das ein Seiten-Tag darstellt, das eine Seite identifiziert, welcher der Zähler zugeordnet ist und einen Zählwert, welcher der Seite zugeordnet ist, z. B. in der Form {Seite, Zähler}. Wenn der Zugriff auf eine bestimmte Seite X angefordert wird, prüft der Profiler 112, ob es einen Zähler {X, C} gibt, der der bestimmten Seite X zugeordnet ist. Wenn es einen Zähler gibt, der der bestimmten Seite X zugeordnet ist, z. B. {X, C}, dann erhöht der Profiler 112 den Zählerstand C um eins. Wenn kein Zähler der jeweiligen Seite X zugeordnet ist, findet der Profiler 112 einen Zähler {Y, C} für eine Seite Y mit einem kleinsten Zählwert C. Der Profiler 112 ersetzt dann den Wert des Zählers, sodass er der jeweiligen Seite X zugeordnet ist und einen Zugriff der jeweiligen Seite X anzeigt, e.g. wenn der Profiler das Wertepaar von {Y, C} auf {X, 1}einstellt. Dies unterscheidet sich von herkömmlichen Techniken, die eine vorherige Zählung erben. Mit anderen Worten, anstatt C durch 1 zu ersetzen, wie es die modifizierten Zähler-Tagging-Techniken tun, ersetzen herkömmliche Techniken C mit C + 1. Durch das Zählen von Seitenzugriffen mit den modifizierten Zähler-Tagging-Techniken entspricht eine Anzahl an Zählern N mit den größten Zählungen den Top-n Seiten.
  • Unabhängig davon, wie die Zähler implementiert sind, stellt der Mover 114 eine Funktionalität dar, um die in den Speicherzugriffsinformationen 414 beibehaltenen Zähler zu prüfen, um zu bestimmen, ob Seiten zwischen dem Hauptspeicher 108 und dem Cache-Speicher 106 getauscht werden sollen. Wie vorstehend erwähnt, führt der Mover 114 diese Überprüfungen aus, um die Bestimmungen einzuleiten, Seiten in einem vorbestimmten Zeitintervall, beispielsweise jede Mikrosekunde (1 μs), zu tauschen. Obwohl sich die hierin erläuterten Beispiele auf das Zeitintervall beziehen, das vorbestimmt ist und 1 μs entspricht, kann das Zeitintervall unterschiedlich sein, ohne vom Geist oder Umfang der hierin beschriebenen Techniken abzuweichen. So kann beispielsweise das vorbestimmte Intervall auch zufällig basierend auf einer Anzahl an Zugriffen bestimmt werden, wie nachfolgend ausführlicher erörtert wird (z. B. eine Gesamtzahl von Zugriffen, die für Seiten aus dem profilierten Speicher 104 angefordert werden) und so weiter.
  • In dem vorbestimmten Zeitintervall (jede Mikrosekunde) kann der Mover 114 die Bestimmungen gemäß den hierin beschriebenen Techniken durchführen. Anstatt eine absolute Zeit (z. B. das vorbestimmte Zeitintervall) zu verwenden, kann der Mover 114 abwechselnd die Bestimmungen vornehmen, auf die jeder N Speicherzugriff pro Satz von Seiten zugreift. Auf diese Weise können die hierin beschriebenen Techniken einen Prozentsatz der verwendeten Hintergrundbandbreite anstelle eines Absolutwerts der verwendeten Hintergrundbandbreite steuern.
  • Unabhängig von der Frequenz während der Bewegungsperiode ist der Mover 114 konfiguriert, um zu ermitteln, ob stark angeforderte Seiten des Hauptspeichers 108 mehr als wenig angeforderte Seiten im Cache-Speicher 106 angefordert werden. Die stark angeforderten Seiten des Hauptspeichers 108 werden in Bezug auf die MM-geladenen Seiten 412 stark angefordert, und die wenig angeforderten Seiten in dem Cache-Speicher 106 werden relativ zu den zwischengespeicherten Seiten 410 wenig angefordert. Die Anzahl an Anforderungen für die stark angeforderten Hauptspeicherseiten kann im Wesentlichen ähnlich der Anzahl an Anforderungen für die wenig angeforderten Cache-Speicherseiten sein.
  • Wenn die stark angeforderten Seiten im Hauptspeicher 108 mehr als die wenig angeforderten Seiten im Cache-Speicher 106 angefordert werden, tauscht der Mover 114 die stark angeforderten Seiten des Hauptspeichers 108 mit den wenig angeforderten Seiten des Cache-Speichers 106. Zu diesem Zweck vertreibt der Mover 114 die wenig angeforderten Seiten aus dem Cache-Speicher 106 und füllt die stark angeforderten Seiten des Hauptspeichers in den Cache-Speicher 106. Da der Betrieb des Movers 114 mit Bedarfsanforderungen von Speicherbenutzern (z. B. Clientanwendungen) konkurriert, beschränkt die Leistungsfähigkeit das Bestimmen und Tauschen von Operationen des Movers 114, um die Auswirkung des Movers 114 zur Bewegungsperiode auf die Speicherbenutzer zu verringern – wodurch die Latenz des Speicherzugriffs für die Speicherprofilierungs-Rechenvorrichtung 102 reduziert wird. Der Mover 114 arbeitet somit im Hintergrund, während Speicherbenutzer auf Seiten von Daten aus dem Cache-Speicher 106 und dem Hauptspeicher 108 zugreifen.
  • Zusätzlich zum Beschränken des Betriebs des Movers 114 auf den Hintergrund haben Seitenzugriffsanforderungen, die von Speicherbenutzern vorgenommen werden, Priorität gegenüber Seitenzugriffsanforderungen, die zum Zweck des Optimierens des Speichers vorgenommen werden, z. B. ein Seitentausch, der durch den Mover 114 angefordert wird. Die erforderlichen Anforderungen für den Zugriff auf Seiten von Daten aus dem Cache-Speicher 106 und dem Hauptspeicher 108, können im Allgemeinen in zwei Arten-Demandanfragen und Hintergrundanforderungen unterteilt werden. Der Begriff „Anforderungsanfrage“ bezieht sich auf eine Anforderung, die von einem Speicherbenutzer, wie beispielsweise einer Clientanwendung, für eine Datenseite aus dem Cache-Speicher 106 oder dem Hauptspeicher 108 erfolgt. Der Begriff „Hintergrundanforderung“ bezieht sich auf eine durch die Bedarfsanforderung indirekt ausgelöste Füll- oder Räumungsanforderung, wie beispielsweise die vom Mover 114 in Verbindung mit dem Tauschen von Seiten zwischen dem Hauptspeicher 108 und dem Cache-Speicher 106 durchgeführten Aufhebungs- und Räumungswünsche.
  • Die hierin beschriebenen Techniken haben Priorität, um die Nachfrageanforderungen über die Erfüllung der Hintergrundanforderungen in ein paar Weisen zu erfüllen. Erstens können die Techniken eine begrenzte Anzahl anstehender Hintergrundanforderungen zulassen, beispielsweise indem die anstehenden Anforderungen in einer Warteschlange gehalten werden, die konfiguriert ist, die begrenzte Anzahl anstehender Hintergrundanforderungen zu halten. Wenn die Warteschlange voll ist, wenn eine Hintergrundanforderung erfolgt, wird die Anforderung einfach fallen gelassen, z. B. wird die Anforderung nicht zur Warteschlange hinzugefügt. Tatsächlich werden andere Hintergrundanforderungen nicht zu der Warteschlange hinzugefügt, bis mindestens eine der anhängigen Hintergrundanforderungen in der Vollwarteschlange bedient wird.
  • Die zweite Art, in der die hierin beschriebenen Techniken Priorität zur Erfüllung der Bedarfsanforderungen über die Erfüllung der Hintergrundanforderungen haben, beinhaltet eine Implementierung, bei der eine dynamische Direktzugriffsspeicher(DRAM-)Anforderungswarteschlange verwendet wird und bei der die Hintergrundanforderungen eine begrenzte Menge (z. B. die Hälfte) der DRAM-Anforderungswarteschlange füllen dürfen. Wenn zum Beispiel ein Füllstand der DRAM-Anforderungswarteschlange mehr als die Hälfte des maximalen Füllstandes der Warteschlange beträgt, dann beschränken die hierin beschriebenen Techniken eingehende Anforderungen auf Demandanforderungen. Hier können Hintergrundanforderungen gestoppt werden, wenn der Füllstand der DRAM-Anforderungswarteschlange mehr als die Hälfte des maximalen Füllstands der Warteschlange beträgt. Eine Hintergrundanforderung, die durch den Mover 114 eingeleitet wird, wird beispielsweise fallengelassen, wenn zu viele vom Mover angeforderte Hintergrundanforderungen anstehen. Nichtsdestoweniger werden die Hintergrundanforderungen, die durch den Mover 114 eingeleitet werden, nicht fallengelassen, sondern in DRAM-Anforderungen zerlegt und an die DRAM-Anforderungswarteschlange gesendet. Wenn die DRAM-Anforderungswarteschlange einen bestimmten Schwellenwert überschreitet (z. B. die Hälfte des maximalen Füllstandes der Warteschlange), was anzeigt, dass die DRAM-Anforderungswarteschlange zu beschäftigt ist, um gegenwärtig eingehende DRAM-Anforderungen zu behandeln, werden keine weiteren Hintergrundanforderungen an die DRAM-Anforderungswarteschlange gesendet. Stattdessen werden die Hintergrund-DRAM-Anforderungen gehalten, bis der DRAM-Anforderungswarteschlangenlevel niedriger ist als der Schwellenwert. Sobald die DRAM-Anforderungswarteschlange wieder in der Lage ist, Hintergrund-DRAM-Anforderungen zu behandeln, werden die gehaltenen Anforderungen an die DRAM-Anforderungswarteschlange gesendet.
  • Während des Betriebs kann sich die Arbeitsbelastung, die Speicherbenutzer dem profilierten Speicher 104 auferlegen, im Laufe der Zeit ändern. In Verbindung mit wechselnden Arbeitsbelastungen können sich auch die stark angeforderten Seiten ändern. Mit anderen Worten, Seiten, die im Hauptspeicher 108 zwischengespeichert und stark angeforderte werden, während eine Clientanwendung arbeitet, können nicht dieselben sein wie die Seiten, die im Hauptspeicher 108 zwischengespeichert und stark angeforderte werden, während eine andere Clientanwendung arbeitet. Um sicherzustellen, dass der Cachespeicher 106 mit Seiten gefüllt ist, die den aktuellen Operationen der Speicherprofilierungs-Berechnungsvorrichtung 102 entsprechen, kann der Profiler 112 Werte der Seitenzähler abwerten. Durch automatisches Abwerten von Zählerwerten bei einem beliebigen Zerfallsintervall können Seiten, auf die einmal stark zugegriffen wurde, aus dem Cache-Speicher 106 vertrieben werden, wenn ihre Verwendung schwindet.
  • Bei einer oder mehreren Implementierungen kann der Profiler 112 einfach jeden der Zählerwerte eines Satzes in der Hälfte im Abklingintervall teilen. Betrachten wir ein Beispiel, bei dem das Abklingzeitintervall einer vorbestimmten Schwelle für eine Gesamtzahl von Zugriffen entspricht, die für die Seiten in einem Satz angefordert werden, z. B. 214 Zugriffe. Wenn in diesem Beispiel die Gesamtzahl der Zugriffe für Seiten in einem Satz Zugriffe 214 übersteigt, teilt der Profiler 112 die Zählerwerte des Satzes durch zwei. Mit Bezug auf Implementierungen, die die gemeinsame Skala S verwenden, zerfällt der Profiler 112 die Zähler, indem er den gemeinsamen Maßstab S eines Satzes um eins verringert, wenn der gemeinsame Maßstab S des Satzes größer als Null ist. Wenn der gemeinsame Maßstab des Satzes S bereits Null ist, teilt der Profiler 112 jeden Zähler des Satzes durch zwei. In noch anderen Implementierungen entspricht das Abklingzeitintervall einer vorbestimmten absoluten Zeit und nicht der vordefinierten Anzahl an Zugriffen. Es ist anzumerken, dass die Zähler in einer Weise zerfallen können, die nicht durch zwei geteilt werden, ohne vom Geist oder Umfang der hierin beschriebenen Techniken abzuweichen. So können beispielsweise die Zähler anstatt durch zwei geteilt werden, mit einem Faktor wie zwei Drittel ( 2 / 3) multipliziert werden.
  • Mit weiterem Bezug auf weitere Szenarien, die sich während des Betriebs der Speicher-Profilierungs-Rechenvorrichtung 102 ergeben, können in manchen Fällen Zähler für die wenig angeforderten Seiten des Cache-Speichers 106 und die stark angeforderten Seiten des Hauptspeichers 108 können dieselben oder sehr ähnliche Werte aufweisen. Unter Bezugnahme auf einen Satz von Seiten können die zwischengespeicherten Seiten des Satzes, die wenig angefragt werden (verglichen mit anderen im Cache befindlichen Seiten) und den stark angeforderten Seiten des Hauptspeichers 108 des Satzes, dieselben oder sehr ähnliche Werte haben. Schwierigkeiten können auftreten, wenn der Mover 114 bestimmen soll, welche Seiten zwischengespeichert werden sollen, wenn zwischengespeicherte Seiten ähnliche Zählerwerte für Seiten haben, die Kandidaten für die Zwischenspeicherung sind. Betrachten wir ein Beispiel, bei dem auf eine erste Seite eines Satzes etwas mehr zugegriffen wird als auf andere Seiten des Satzes. Als Ergebnis der Zugriffe kann der Mover 114 die erste Seite zwischenspeichern. Berücksichtigen wir aber auch, dass später auf eine zweite Seite des Satzes etwas mehr zugegriffen wird als auf die erste Seite. Als Ergebnis der nachfolgenden Zugriffe ersetzt der Mover 114 die erste Seite durch die zweite Seite, wodurch die erste Seite aus dem Cache-Speicher 106 entfernt wird. In einem Satz von Seiten, der zyklisch referenziert wird, können leicht weitere Zugriffe der ersten Seite erneut bewirken, dass der Mover 114 die zweite Seite im Cache-Speicher ersetzt, und so weiter. Dieses Szenario kann zu Trashing für diese Seiten führen und kann besonders problematisch sein, wenn abklingende Zähler verwendet werden und das Abklingintervall kurz ist.
  • Um ein derartiges Trashing zu verhindern, kann der Mover 114 eine Eintrittsbarriere hinzufügen, bevor bestimmt wird, die stark angeforderten Seiten des Hauptspeichers 108 mit den wenig angeforderten Seiten des Cache-Speichers 106 auszutauschen. Auf diese Weise werden stattdessen die stark angeforderten Seiten des Hauptspeichers 108 mit den wenig angeforderten Seiten des Cache-Speichers 106 getauscht, sobald eine Anzahl an angeforderten Zugriffen der stark angeforderten Hauptspeicherseiten größer ist als die Anzahl der angeforderten Zugriffe auf die wenig angeforderten zwischengespeicherten Seiten, kann der Mover 114 stattdessen bestimmen, dass Seiten ausgetauscht werden, wenn die Anzahl der angeforderten Zugriffe der stark angeforderten Hauptspeicherseiten größer ist als die Anzahl an Zugriffen auf die wenig angeforderten zwischengespeicherten Seiten und die Eintrittsbarriere. So kann beispielsweise der Mover 114 bestimmen, um Seiten zu tauschen, wenn die folgenden Bedingungen erfüllt sind: Zugriffszähler(hohe MM – Seite) > (Zugriffszähler(niedrige MM – Seite) + Δ
  • In diesem Ausdruck stellt Δ die Eintrittsbarriere dar und kann einer vorgegebenen ganzen Zahl entsprechen, beispielsweise einer ganzen Zahl, die Ressourcenkosten (z. B. Zeit, Leistung usw.) ausgleicht, um die Seiten tauschen.
  • Der Profilersetzungs-Cache-Austausch kann auf andere Weise implementiert werden, ohne vom Geist oder Umfang der hierin beschriebenen Techniken abzuweichen. Ein Beispiel für eine alternative Implementierung besteht darin, Zeitmultiplexzähler zu verwenden. Anstatt den Zähler nur für die Seiten beizubehalten, auf die am meisten zugegriffen wird, kann der Profiler 112 Zähler für jede der Seiten beibehalten. Zu jedem gegebenen Zeitpunkt kann der Profiler 112 jedoch Zugriff auf eine begrenzte Anzahl der Zähler aufweisen. Betrachten wir ein Szenario, in dem ein sechzehntel der Zähler im SRAM beibehalten wird und die anderen fünfzehn Sechzehntel im DRAM beibehalten werden. Wenn der Zugriff auf eine Seite, für die der Zähler im SRAM ist, angefragt wird, erhöht der Profiler 112 einfach den Zähler. Wenn der Zugriff auf eine Seite, für die der Zähler im DRAM ist, angefragt wird, ignoriert der Profiler 112 jedoch die Anforderung. Periodisch bündeln diese Zeitmultiplexzählertechniken die Zähler im SRAM zurück in den DRAM und laden ein weiteres Sechzehntel der Zähler von dem DRAM in den SRAM. Es wird angenommen, dass auf diese Weise über einen gewissen Zeitraum jeweils ein Zähler ungefähr ein Sechzehntel des tatsächlichen Zugriffszählwertes aufweisen wird. Der Mover 114 kann so konfiguriert werden, dass er die Zähler sowohl im DRAM als auch im SRAM überprüft. Ein anderes Beispiel einer alternativen Ausführungsform besteht darin, die Zähler in einer Seitentabellen-Datenstruktur zu bündeln. Somit kann der Profiler 112 anstelle die getrennten Zähler beizubehalten, die Zähler in einer Seitentabellen-Datenstruktur bündeln. Auf diese Weise kann die Verwaltung der Zähler dem gleichen Fluss folgen wie die Seitentabelle und ein Übersetzungsnachschlagepuffer (TLB). In noch einem weiteren Beispiel einer alternativen Ausführungsform kann die Zählerverzögerung implementiert werden, indem die gemeinsame Skala S allmählich verringert wird, was zu einem Bruchteil S führt. Anstatt jeden Zählerwert im vorbestimmten Abklingungsintervall zu vernachlässigen, können die dargestellten Zählerwerte allmählich abgebaut werden, indem die gemeinsame Skala S allmählich verringert wird. Diese und andere Fähigkeiten sowie die Art und Weise, in der die Einheiten von den 1 und 4 wirken und zusammenwirken, werden nachfolgend ausführlicher dargelegt. Diese Einheiten werden weiter unterteilt, kombiniert, und so weiter. Die Umgebung 100 von 1 und den ausführlichen Darstellungen von 4 veranschaulichen einige von vielen möglichen Umgebungen, die in der Lage sind, die beschriebenen Techniken einzusetzen.
  • Exemplarische Verfahren
  • 57 stellen Verfahren dar, mit denen der Profilerstellungs-Cache-Austausch ermöglicht oder verwendet werden kann. Diese Verfahren werden als Sätze von Blöcken gezeigt, die die durchgeführten Operationen angeben, sind jedoch nicht notwendigerweise auf die Reihenfolge oder die Kombinationen beschränkt, die gezeigt sind, um die Operationen durch die jeweiligen Blöcke auszuführen. In Teilen der folgenden Erläuterung kann Bezug genommen werden auf die Umgebung 100 von 1 und die von 4, auf die nur exemplarisch verwiesen wird. Die Techniken sind nicht auf die Leistung von einer Einheit oder von mehreren Einheiten begrenzt, die bei einer Vorrichtung arbeiten.
  • 5 zeigt das Verfahren 500, das die Art und Weise beschreibt, wie Seiten im Cache-Speicher nach einem Profilierungsalgorithmus zu ersetzen sind, der verwendet wird, um die Datenmigration zwischen dem Cache-Speicher und einem Hauptspeicher zu verwalten.
  • Bei 502 werden Zähler, die in Verbindung mit Seiten der in den Haupt- und Cache-Speichern gespeicherten Daten beibehalten werden, aktualisiert. Die Zähler sind so konfiguriert, um eine Anzahl an Anforderungen anzuzeigen, um auf die Seiten zuzugreifen, die in den Haupt- und Cache-Speichern verwaltet werden. So hält der Profiler 112 beispielsweise Zähler in der Speicherzugriffsinformation 414. Diese Zähler zeigen eine Anzahl an Anforderungen, um auf die zwischengespeicherten Seiten 410 und die MM-geladenen Seiten 412 zuzugreifen. In Reaktion auf Anforderungen zum Zugriff auf eine der zwischengespeicherten Seiten 410 oder einer der MM-geladenen Seiten 412, erhöht der Profiler 112 beispielsweise entsprechende Zähler in den Speicherzugriffsinformationen 414.
  • Um die Speicherzugriffe von Speicherbenutzern, wie beispielsweise Clientanwendungen, nicht zu stören, wird eine Profilerstellungs-Ersetzungsvorgang im Hintergrund von Wartungsanforderungen durchgeführt, die durch den Speicher für die im Cache-Speicher 106 und dem Hauptspeicher 108 gehaltenen Seiten durchgeführt werden. Dabei kann die Durchführung der Verfahrensschritte 504 und 506 auf ein vorgegebenes Zeitintervall wie etwa jede Mikrosekunde (μs) beschränkt werden. Bei 504 wird eine Bestimmung in dem vorgegebenen Zeitintervall durchführt, ob die Anzahl an Seitenzugriffsanforderungen für stark angeforderte Seite des Hauptspeichers größer als die Anzahl an Seitenzugriffsanforderungen für eine wenig angeforderte Seite des Cache-Speichers gemäß den Zählern ist. Die stark angeforderte Seite des Hauptspeichers werden in Bezug auf die im Hauptspeicher geladenen Seiten stark angefordert und die wenig angeforderte Seite des Cache-Speichers wird relativ zu den im Cache-Speicher geladenen Seiten wenig angefordert. Die Anzahl an Anforderungen für die stark angeforderte Hauptspeicherseite kann jedoch im Wesentlichen ähnlich der Anzahl an Anforderungen für die wenig angeforderte Cache-Speicherseite sein.
  • Der Mover 114 überprüft beispielsweise die Zähler, die vom Profiler 112 in der Speicherzugriffsinformation 414 gehalten werden. Für jede Mikrosekunde bestimmt beispielsweise der Mover 114 eine wenig angeforderte zwischengespeicherte Seite 410 (z. B. die weniger als andere Seiten im Cache-Speicher 106 angefordert wird) und eine stark angeforderte MM-geladene Seite 412 (z. B. die mehr als andere Seiten im Hauptspeicher 108 angefordert wird) entsprechend den Zählern. Der Mover 114 vergleicht die jeweiligen Zählerwerte, um zu bestimmen, ob die stark angeforderte Seite des Hauptspeichers 108 mehr als die wenig angeforderte Seite des Cache-Speichers 106 angefordert wird.
  • Als Reaktion auf eine Bestimmung, dass eine Anzahl an Seitenzugriffsanforderungen für die stark angeforderte Hauptspeicherseite größer ist als die Anzahl an Seitenzugriffsanforderungen für die wenig angeforderte Cache-Speicherseite bei 506, werden die stark angeforderte Hauptspeicherseite und die wenig angeforderte Cache-Speicherseite getauscht. Der Mover 114 bestimmt beispielsweise bei Schritt 504, ob die stark angeforderte Seite des Hauptspeichers 108 mehr als die wenig angeforderte Seite des Cache-Speichers 106 angefordert wird. Als Reaktion auf eine Bestimmung, tauscht der Mover 114 die stark angeforderte Seite des Hauptspeichers 108 mit der wenig angeforderten Seite des Cache-Speichers 106. Mit anderen Worten, verlagert der Mover 114 die wenig angeforderte Cache-Speicherseite aus dem Cache-Speicher 106 und lädt diese Seite in den Hauptspeicher 108. Der Mover 114 speichert auch die stark angeforderte Hauptspeicherseite.
  • 6 zeigt das Verfahren 600, das die Art und Weise beschreibt, in der Seitenzugriffe zum Berechnen des Cache-Ersetzens unter Verwendung von Leerzeichen-Zählern gezählt werden.
  • Bei 602 werden gemeinsame Skalen für Sätze von Seiten im Speicher gepflegt. So werden beispielsweise die in dem profilierten Speicher 104 gespeicherten Daten in Sätze von Seiten unterteilt, sodass jeder Satz eine Vielzahl von Seiten aus dem Cache-Speicher 106 und eine Vielzahl von Seiten aus dem Hauptspeicher 108 beinhaltet. Insbesondere können die Seiten in Sätze unterteilt werden, wie vorstehend ausführlicher beschrieben wurde. Für jeden Satz von Daten verwaltet der Profiler 112 eine gemeinsame Skala S, die für die Seiten des Satzes eine Basiszählung oder eine Basisanzahl von Zugriffen anzeigt. Bei einer oder mehreren Implementierungen verwaltet der Profiler 112 gemeinsame 4-Bit-Skalen für jeden Satz von Seiten. Es ist anzumerken, dass unterschiedlich große gemeinsame Skalen (in Form der Anzahl an Bits) verwendet werden können, ohne vom Geist oder Umfang der hierin beschriebenen Techniken abzuweichen.
  • Bei 604 wird für jede der Seiten in einem Satz ein Zähler beibehalten und zeigt eine Anzahl an Seitenzugriffen relativ zu anderen Seiten in dem Satz. Der Profiler hält beispielsweise 112 einen N-Bit-Zähler für jede Seite in einem Satz, wie vorstehend ausführlicher beschrieben wurde. Der N-Bit-Zähler für eine Seite, zusammen mit dem gemeinsamen Maßstab S des Satzes dieser Seite, gibt die Anzahl der Zugriffe für die Seite an. Als Antwort auf eine Anfrage auf eine Seite zuzugreifen, wird bei 606 ein entsprechender Zähler und ein gemeinsamer Maßstab entsprechend dem Zugriff aktualisiert. Der Profiler 112 aktualisiert beispielsweise als Antwort auf eine Anfrage zum Zugreifen auf eine Seite einen N-Bit-Zähler, der mit der angeforderten Seite verknüpft ist, und aktualisiert auch den gemeinsamen Maßstab S, der dem Satz der angeforderten Seite zugeordnet ist. Der Profiler 112 aktualisiert N-Bit-Zähler und gemeinsame Skalen S, wie vorstehend ausführlicher beschrieben wurde. Es versteht sich, dass die hierin beschriebenen Techniken das Verfahren 600 in einer oder mehreren speichersensitiven Implementierungen verwenden können, z. B. wenn die Speicherzugriffsinformationen 414 im SRAM gespeichert sind.
  • 7 zeigt das Verfahren 700, das die Art und Weise beschreibt, in der Seitenzugriffe zum Berechnen des Cache-Ersetzens mit weniger als einem Zähler pro Seite des Speichers gezählt werden. Wie das Verfahren 600 kann auch das Verfahren 700 für eine oder mehrere speichersensitive Implementierungen verwendet werden.
  • Bei 702 ist die Anzahl der Zähler n den vorstehend aufgerufenen n Seiten im Speicher zugeordnet. Der Profiler 112 ordnet beispielsweise die n Zähler den vorstehend aufgerufenen n Seiten im profilierten Speicher 104 zu. Insbesondere sind Zähler den Seiten des profilierten Speichers 104 zugeordnet die zwischengespeichert werden, wobei restliche Zähler übrigbleiben, um den nächsten hoch zugegriffenen Seiten im Hauptspeicher 108 zugeordnet zu werden.
  • Bei 704 wird eine Anforderung empfangen, um auf eine im Speicher verwaltete Seite zuzugreifen. So wird beispielsweise eine Anforderung empfangen, um auf eine in dem profilierten Speicher 104 verwaltete Seite von Daten, auf eine der zwischengespeicherten Seiten 410 oder eine der MM-geladenen Seiten 412 zuzugreifen. Bei 706 wird eine Bestimmung durchgeführt, ob die angeforderte Seite einem der Zähler zugeordnet ist, z. B. ob einer der Zähler ein Attribut aufweist, das die angeforderte Seite identifiziert. Der Profiler 112 bestimmt beispielsweise, ob die angeforderte Seite einem der Zähler zugeordnet ist, die als Teil der Speicherzugriffsinformation 414 verwaltet werden.
  • Wenn bestimmt wird, dass die angeforderte Seite einem der Zähler zugeordnet ist (z. B. „ja“ bei 706), dann wird bei 708 der zu der angeforderten Seite zugeordnete Zähler aktualisiert. Der Profiler 112 erhöht beispielsweise einen Zählerwert C für einen der angeforderten Seite zugeordneten Zähler von C bis C + 1. Wenn bestimmt wird, dass die angeforderte Seite keinem der Zähler zugeordnet ist (z. B. „nein“ bei 706), dann wird bei 710 die am wenigsten zugegriffene Seite bestimmt, die einem Zähler zugeordnet ist. So bestimmt der Profiler 112 beispielsweise eine Seite mit dem geringsten Zugriff, die einem Zähler zugeordnet ist, in demselben Satz von Seiten wie die angeforderte Seite. Alternativ bestimmt der Profiler 112 einfach die am wenigsten zugegriffene Seite der Seiten, die den Zählern zugeordnet sind. Der Profiler 112 kann die Seite mit dem geringsten Zugriff bestimmen, indem die Zählerwerte der Zähler überprüft werden.
  • Bei 712 ist der Zähler der Seite mit dem geringsten Zugriff der angeforderten Seite zugeordnet. Der Profiler 112 unterteilt beispielsweise die Seite mit dem geringsten Zugriff auf den Zähler und ordnet dann den Zähler der angeforderten Seite zu, z. B. durch Ändern der Kennung des Zählers, um die angeforderte Seite zu identifizieren. Bei 714 wird ein Zählerwert des Zählers so eingestellt, dass er die Zugriffsanforderung wiedergibt. Der Profiler 112 stellt beispielsweise einen Zählerwert C (der eine Anzahl an Zugriffen der vorher dem Zähler zugeordneten Seite anzeigt) durch Einstellen des Zählerwerts auf Eins ein. Einstellen des Zählwertes auf einen im Gegensatz zu einigen herkömmlichen Techniken, die das Einstellen des Zählwertes C auf C + 1 beinhalten. Auf diese Weise kann das Verfahren 700 das Trashing reduzieren.
  • Die vorhergehende Erläuterung beschreibt Verfahren zum Profiling-Cache-Austausch. Aspekte dieser Verfahren können in Hardware (z. B. feste Logikschaltungen), Firmware, Software, manuelle Verarbeitung oder eine beliebige Kombination davon, implementiert werden. Diese Techniken können auf einer oder mehreren der in den 1, 4 und 8 gezeigten Entitäten ausgeführt sein (das Computersystem 800 ist in 8 nachfolgend beschrieben), welche weiter unterteilt, kombiniert und so weiter sein können. Somit veranschaulichen diese Figuren einige der vielen möglichen Systeme oder Vorrichtungen, die in der Lage sind, die beschriebenen Techniken einzusetzen. Die Entitäten dieser Figuren stellen allgemein Software, Firmware, Hardware, ganze Geräte oder Netzwerke oder eine Kombination davon dar.
  • Exemplarisches Computersystem
  • 8 veranschaulicht verschiedene Komponenten eines exemplarischen Computersystems 800, das als ein beliebiger von Client-, Server- und/oder Computervorrichtung, implementiert werden können, wie unter Bezugnahme auf die vorhergehenden 17 beschrieben, um einen Profilerstellungs-Cache-Austausch durchzuführen. Bei Ausführungsformen kann das Computersystem 800 als eine oder einer Kombination von einer verdrahteten und/oder drahtlosen tragbaren Vorrichtung, System-On-Chip (SoC) und/oder als eine andere Vorrichtungsart oder Teil davon implementiert sein. Das Computersystem 800 kann auch mit einem Benutzer (z. B. einer Person) und/oder einer Entität verbunden sein, der bzw. die, die Vorrichtung derart betreibt, dass eine Vorrichtung logische Vorrichtungen beschreibt, die Benutzer, Software, Firmware und/oder eine Kombination von Vorrichtungen beinhalten.
  • Das Computersystem 800 beinhaltet Kommunikationsvorrichtungen 802, die verdrahtete und/oder drahtlose Kommunikation von Vorrichtungsdaten 804 ermöglichen (z. B. empfangene Daten, Daten, die empfangen werden, Daten, die für die Übertragung eingeplant sind, Datenpakete von Daten usw.). Die Vorrichtungsdaten 804 oder anderer Vorrichtungsinhalt können Konfigurationseinstellungen der Vorrichtung, Medieninhalt, der in der Vorrichtung gespeichert ist, und/oder mit einem Benutzer der Vorrichtung verbundene Informationen beinhalten. Der auf dem Computersystem 800 gespeicherte Medieninhalt kann jegliche Art von Audio-, Video- und/oder Bilddaten beinhalten, einschließlich komplexer oder ausführlicher Ergebnisse von Profilierungs-Cache-Ersatz-Handlungen. Das Computersystem 800 umfasst eine oder mehrere Dateneingaben 806 über die jeder Typ von Daten, Medieninhalt und/oder Eingaben wie menschliche Äußerungen, vom Benutzer wählbare Eingaben (explizit oder implizit), Nachrichten, Musik, Fernsehmedieninhalt, aufgezeichneter Videoinhalt und jeder andere Typ von einer beliebigen Inhalts- und/oder Datenquelle empfangenen Audio-, Video- und/oder Bilddaten empfangen werden kann.
  • Das Computersystem 800 beinhaltet zudem Kommunikationsschnittstellen 808, die als eine beliebige oder mehrere einer seriellen und/oder parallelen Schnittstelle, einer drahtlosen Schnittstelle, eines beliebigen Typs einer Netzwerkschnittstelle, eines Modems und als jede andere Art von Kommunikationsschnittstelle implementiert sein kann. Die Kommunikationsschnittstelle 808 stellt eine Verbindung und/oder Kommunikationslinks zwischen dem Computersystem 800 und einem Kommunikationsnetz bereit, mittels dem andere elektronische, Computer- und Kommunikationsvorrichtungen Daten mit dem Computersystem 800 kommunizieren.
  • Das Computersystem 800 beinhaltet einen oder mehrere Prozessoren 810 (z. B. beliebige von Mikroprozessoren, Steuerungen und dergleichen), die verschiedenen computerausführbaren Anweisungen verarbeiten, um den Betrieb des Computersystems 800 zu steuern und um Techniken für oder in denen Profiling Cache-Ersatz verkörpert werden kann. Alternativ oder außerdem kann das Computersystem 800 mit einer beliebigen oder einer Kombination von Hardware, Firmware oder fester Logikschaltung implementiert sein, die in Verbindung mit Verarbeitungs- und Steuerschaltungen, die generell bei 812 identifiziert sind, implementiert ist. Obwohl dies nicht gezeigt ist, kann das Computersystem 800 einen Systembus oder ein Datenübertragungssystem beinhalten, das die verschiedenen Komponenten innerhalb der Vorrichtung koppelt. Ein Systembus kann eine beliebige oder eine Kombination von unterschiedlichen Busstrukturen, wie beispielsweise einen Speicherbus oder Speicher-Controller, einen Peripheriebus, einen universellen seriellen Bus und/oder einen Prozessor- oder lokalen Bus beinhalten, der beliebige aus einer Vielzahl von Busarchitekturen verwendet.
  • Das Computersystem 800 beinhaltet zudem computerlesbare Medien 814, wie eine oder mehrere Speichervorrichtungen neben dem profilierten Speicher 104, die permanenten und/oder nichtflüchtigen Datenspeicher ermöglichen (d. h. im Gegensatz zu reiner Signalübertragung), wobei Beispiele dafür Random Access Memory (RAM), nichtflüchtiger Speicher (z. B. eines oder mehrere von einem Read Only Memory (ROM), Flash-Speicher, EPROM, EEPROM usw.) und eine Festplatten-Speichergerät beinhalten. Ein Festplatten-Speichergerät kann als jeder Typ von magnetischer oder optischer Speichervorrichtung wie ein Festplattenlaufwerk, eine beschreibbare und/oder überschreibbare Compact Disc (CD), jeder Typ einer Digital Versatile Disc (DVD) und dergleichen implementiert werden. Das Computersystem 800 kann zudem eine Massenspeichermedienvorrichtung 816 beinhalten. In diesem Beispiel beinhaltet das computerlesbare Medium 814 auch einen profilierten Speicher 104.
  • Das computerlesbare Medium 814 stellt Datenspeichermechanismen bereit, um Vorrichtungsdaten 804 zu speichern sowie verschiedene Geräteanwendungen 818 und beliebige andere Arten von Informationen und/oder Daten, die mit operativen Aspekten des Computersystems 800 verbunden sind. Ein Betriebssystem 820 kann beispielsweise als eine Computeranwendung mit computerlesbaren Medien 814 aufrechterhalten und auf den Prozessoren 810 ausgeführt werden. Die Geräteanwendungen 818 können einen Vorrichtungsmanager, wie beispielsweise einen beliebigen von einer Steuerungsanwendung, Softwareanwendung, Signalverarbeitung und Steuermodul, Code, der einer bestimmten Vorrichtung eigen ist, eine Hardwareabstraktionsschicht für eine bestimmte Vorrichtung, und so weiter beinhalten.
  • Die Geräteanwendungen 818 beinhalten auch alle Systemkomponenten, Motoren oder Manager, um die Techniken zu implementieren.
  • Schlussfolgerung
  • Obwohl Ausführungsformen von Techniken unter Verwendung von Vorrichtungen, die eine Profilerstellung der Cache-Ersetzung ermöglichen, sprachspezifisch für Merkmale und/oder Verfahren beschrieben wurden, die für Merkmale und/oder Verfahren spezifisch ist, versteht es sich, dass der Gegenstand der beigefügten Ansprüche nicht notwendigerweise auf die beschriebenen spezifischen Merkmale oder Verfahren beschränkt ist. Vielmehr werden die spezifischen Merkmale und Verfahren als exemplarische Implementierungen dieser Techniken offenbart.

Claims (20)

  1. Verfahren zum Verwalten der Datenmigration zwischen einem Hauptspeicher und einem Cache-Speicher, wobei das Verfahren Folgendes umfasst: das Aufrechterhalten von Zählern, die Seiten der in den Haupt- und Cache-Speichern gespeicherten Daten zugeordnet sind, wobei die Zähler Anzahlen von Anforderungen zum Zugriff auf die Seiten angeben; und in einem vorbestimmten Zeitintervall: das Bestimmen, ob die Anzahl an Seitenzugriffsanforderungen für eine stark angeforderte Seite des Hauptspeichers größer als die Anzahl an Seitenzugriffsanforderungen für eine wenig angeforderte Seite des Cache-Speichers gemäß den Zählern ist; und das Tauschen, in Reaktion darauf, dass die Anzahl an Seitenzugriffsanforderungen für die stark angeforderte Seite des Hauptspeichers größer ist als die Anzahl an Seitenzugriffsanforderungen für die wenig angeforderte Seite des Cache-Speichers, der stark angeforderten Seite des Hauptspeichers mit der wenig angeforderten Seite des Cache-Speichers.
  2. Verfahren nach Anspruch 1, wobei die wenig angeforderte Seite des Cache-Speichers einer am wenigsten angeforderten Seite des Cache-Speichers entspricht und die stark angeforderte Seite des Hauptspeichers einer am meisten angeforderten Seite des Hauptspeichers entspricht.
  3. Verfahren nach Anspruch 1, wobei das Beibehalten ein Erhöhen eines Zählers, der einer gegebenen Seite zugeordnet ist, in Reaktion auf eine Anforderung zum Zugreifen auf die gegebene Seite beinhaltet.
  4. Verfahren nach Anspruch 1, wobei das Bestimmen und das Austauschen im Hintergrund von Wartungsanforderungen durchgeführt werden, die von Speicherbenutzern vorgenommen werden, um auf die Seiten zuzugreifen, die in den Haupt- und Cache-Speichern verwaltet werden.
  5. Verfahren nach Anspruch 1, ferner umfassend: das Empfangen einer Anforderung, auf zumindest eine der Seiten zuzugreifen, die in dem Hauptspeicher verwaltet sind; und das Warten der Anforderung für die mindestens eine angeforderte Seite aus dem Hauptspeicher, ohne zuerst die mindestens eine angeforderte Seite in den Cache-Speicher zu füllen.
  6. Verfahren nach Anspruch 1, wobei die im Speicher verwalteten Seiten von Daten in Sätze von Seiten unterteilt sind, wobei jeder Satz von Seiten eine Vielzahl von Seiten aus dem Cache-Speicher und eine Vielzahl von Seiten in dem Hauptspeicher beinhaltet.
  7. Verfahren nach Anspruch 6, wobei Seiten des Hauptspeichers nicht mit Seiten des Cache-Speichers in verschiedenen Sätzen getauscht werden.
  8. Verfahren nach Anspruch 6, wobei das Bestimmen festlegt, ob die Anzahl an Seitenzugriffsanforderungen für eine stark angeforderte Seite des Hauptspeichers in einem gegebenen Satz größer ist als die Anzahl an Seitenzugriffsanforderungen für wenig angeforderte Seiten des Cache-Speichers in dem gegebenen Satz.
  9. Verfahren nach Anspruch 8, wobei in Reaktion auf eine Bestimmung, dass die Anzahl an Seitenzugriffsanforderungen für die stark angeforderte Hauptspeicherseite größer ist als die Anzahl an Seitenzugriffsanforderungen für die wenig angeforderte Seite des Cache-Speichers in dem gegebenen Satz, der Austausch die stark angeforderte Seite des Hauptspeichers mit der wenig angeforderten Seite des Cache-Speichers in dem gegebenen Satz tauscht.
  10. Verfahren nach Anspruch 1, wobei das vorbestimmte Zeitintervall alle 1 Mikrosekunde (1 μs) ist.
  11. System, umfassend: Haupt- und Cache-Speicher, die dazu konfiguriert sind, Seiten von Daten aufrechtzuerhalten, wobei der Cache-Speicher so konfiguriert ist, dass er weniger Seiten als der Hauptspeicher aufrechterhält und mindestens eine niedrigere Latenzzeit, höhere Bandbreite oder geringere Leistungsnutzung als der Hauptspeicher aufweist; einen Profiler, der dazu konfiguriert ist, Zähler in Zuordnung zu den im Haupt- und Cache-Speicher verwalteten Seiten aufrechtzuerhalten, wobei die Zähler so konfiguriert sind, um die Anzahl der Zugriffe auf die Seiten anzuzeigen; und einen Mover der konfiguriert ist, um: zu bestimmen, ob eine Anzahl an Seitenzugriffsanforderungen für eine stark angeforderte Seite im Hauptspeicher größer als eine Anzahl an Seitenzugriffsanforderungen für eine wenig angeforderte Seite im Cache-Speicher gemäß den Zählern ist; und reagierend auf eine Bestimmung, dass die Anzahl an Seitenzugriffsanforderungen für die stark angeforderte Seite im Hauptspeicher größer als die Anzahl an Seitenzugriffsanforderungen für die wenig angeforderte Seite in dem Cache-Speicher ist, die stark angeforderte Seite des Hauptspeichers mit der wenig angeforderten Seite des Cache-Speichers zu tauschen.
  12. System nach Anspruch 11, wobei der Profiler ferner konfiguriert ist, um einen jeweiligen Zähler für jede der Seiten in dem Hauptspeicher aufrechtzuerhalten.
  13. System nach Anspruch 11, wobei der Profiler ferner konfiguriert ist, um weniger Zähler als einen Zähler pro Seite von in dem Hauptspeicher verwalteten Daten aufrechtzuerhalten.
  14. System nach Anspruch 11, wobei der Mover ferner konfiguriert ist, um eine Teilmenge der Zähler in dem vorbestimmten Zeitintervall als Teil der vorbestimmten Bestimmung zu überprüfen.
  15. System nach Anspruch 11, wobei der Mover ferner konfiguriert ist, um eine Teilmenge der Zähler in dem vorbestimmten Zeitintervall als Teil der vorbestimmten Bestimmung zu überprüfen.
  16. System nach Anspruch 11, ferner umfassend einen Mapper der konfiguriert ist, um eine Eingangsadresse, die einer Speicherzugriffsanforderung zugeordnet ist, einer entsprechenden Seite in dem Hauptspeicher oder dem Cache-Speicher zuzuordnen, der wirksam ist, um die Speicherzugriffsanforderung zu bedienen.
  17. System nach Anspruch 11, wobei die Seiten jeweils 4 Kilobyte (4 KB) der Daten entsprechen.
  18. Ein oder mehrere computerlesbare Speichermedien, umfassend: Haupt- und Cache-Speicher, die konfiguriert sind, um Seiten von Daten aufrechtzuerhalten, wobei der Cache-Speicher so konfiguriert ist, dass er weniger Seiten als der Hauptspeicher aufrechterhält und mindestens eine niedrigere Latenzzeit, höhere Bandbreite oder geringere Leistungsnutzung als der Hauptspeicher aufweist; wobei die im Cache verwalteten Seiten gemäß einer Profilierungs-Cache-Ersatztechnik in den Cache gefüllt werden, wobei: Zähler in Zuordnung zu den im Haupt- und Cache-Speicher verwalteten Seiten aufrechterhalten werden, um die Anzahl der Zugriffe zum Zugreifen auf die Seiten anzuzeigen; eine Bestimmung in einem vorgegebenen Zeitintervall durchgeführt wird, ob die Anzahl an Seitenzugriffsanforderungen für stark angeforderte Seite des Hauptspeichers größer als die Anzahl an Seitenzugriffsanforderungen für eine wenig angeforderte Seite des Cache-Speichers gemäß den Zählern ist; und die stark angeforderte Seite des Hauptspeichers mit der wenig angeforderten Seite des Cache-Speichers in Reaktion auf eine Bestimmung ausgetauscht wird, dass die Anzahl an Seitenzugriffsanforderungen für die stark angeforderte Seite des Hauptspeichers größer ist als die Anzahl an Seitenzugriffsanforderungen für die wenig angeforderte Seite des Cache-Speichers.
  19. Ein oder mehrere computerlesbare Speichermedien nach Anspruch 18, wobei der Cache-Speicher eine Größe von mindestens 128 Megabyte (MB) aufweist.
  20. Ein oder mehrere computerlesbare Speichermedien nach Anspruch 18, wobei der Hauptspeicher eine Größe von mindestens 4 Gigabyte (GB) aufweist.
DE102016225545.2A 2016-02-10 2016-12-20 Profilierungs-cache-ersatz Withdrawn DE102016225545A1 (de)

Applications Claiming Priority (4)

Application Number Priority Date Filing Date Title
US201662293688P 2016-02-10 2016-02-10
US62/293,688 2016-02-10
US15/097,177 2016-04-12
US15/097,177 US10387329B2 (en) 2016-02-10 2016-04-12 Profiling cache replacement

Publications (1)

Publication Number Publication Date
DE102016225545A1 true DE102016225545A1 (de) 2017-08-10

Family

ID=57799876

Family Applications (2)

Application Number Title Priority Date Filing Date
DE202016107157.7U Active DE202016107157U1 (de) 2016-02-10 2016-12-20 Profilierungs-Cache-Ersatz
DE102016225545.2A Withdrawn DE102016225545A1 (de) 2016-02-10 2016-12-20 Profilierungs-cache-ersatz

Family Applications Before (1)

Application Number Title Priority Date Filing Date
DE202016107157.7U Active DE202016107157U1 (de) 2016-02-10 2016-12-20 Profilierungs-Cache-Ersatz

Country Status (9)

Country Link
US (1) US10387329B2 (de)
EP (1) EP3414665B1 (de)
JP (1) JP6613375B2 (de)
KR (1) KR102043886B1 (de)
CN (1) CN107066397B (de)
DE (2) DE202016107157U1 (de)
GB (1) GB2547306B (de)
TW (1) TWI684099B (de)
WO (1) WO2017139037A1 (de)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10387329B2 (en) 2016-02-10 2019-08-20 Google Llc Profiling cache replacement

Families Citing this family (15)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9826932B2 (en) 2016-04-19 2017-11-28 Google Llc Automated abdominojugular reflux testing
CN107992434A (zh) * 2017-11-24 2018-05-04 郑州云海信息技术有限公司 用于分布式分层存储系统的下刷方法、装置及存储介质
CN108089998A (zh) * 2017-12-13 2018-05-29 郑州云海信息技术有限公司 一种Linux分页替换方法及系统
CN108829344A (zh) * 2018-05-24 2018-11-16 北京百度网讯科技有限公司 数据存储方法、装置及存储介质
US11475014B2 (en) * 2018-12-20 2022-10-18 AVAST Software s.r.o. Updating a toplist for a continuous data stream
KR20200091199A (ko) * 2019-01-22 2020-07-30 에스케이하이닉스 주식회사 저장 장치, 저장 장치를 포함하는 컴퓨팅 시스템 및 그 동작 방법
US11106609B2 (en) 2019-02-28 2021-08-31 Micron Technology, Inc. Priority scheduling in queues to access cache data in a memory sub-system
US11288199B2 (en) 2019-02-28 2022-03-29 Micron Technology, Inc. Separate read-only cache and write-read cache in a memory sub-system
US10970222B2 (en) 2019-02-28 2021-04-06 Micron Technology, Inc. Eviction of a cache line based on a modification of a sector of the cache line
US10908821B2 (en) 2019-02-28 2021-02-02 Micron Technology, Inc. Use of outstanding command queues for separate read-only cache and write-read cache in a memory sub-system
US11526290B2 (en) * 2019-06-29 2022-12-13 Intel Corporation System and method to track physical address accesses by a CPU or device
US12093189B1 (en) * 2019-09-30 2024-09-17 Amazon Technologies, Inc. Memory-side page activity recorder
US11237981B1 (en) 2019-09-30 2022-02-01 Amazon Technologies, Inc. Memory scanner to accelerate page classification
US11899589B2 (en) 2021-06-22 2024-02-13 Samsung Electronics Co., Ltd. Systems, methods, and devices for bias mode management in memory systems
CN113489572B (zh) * 2021-08-23 2022-12-20 杭州安恒信息技术股份有限公司 一种请求发送方法、装置、设备及存储介质

Family Cites Families (26)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP3226525B2 (ja) 1988-10-07 2001-11-05 株式会社日立製作所 主記憶管理方法
US5247687A (en) 1990-08-31 1993-09-21 International Business Machines Corp. Method and apparatus for determining and using program paging characteristics to optimize system productive cpu time
US6134602A (en) 1997-09-24 2000-10-17 Microsoft Corporation Application programming interface enabling application programs to group code and data to control allocation of physical memory in a virtual memory system
US6457102B1 (en) * 1999-11-05 2002-09-24 Emc Corporation Cache using multiple LRU's
US6829679B2 (en) * 2001-11-09 2004-12-07 International Business Machines Corporation Different caching treatment of memory contents based on memory region
EP1505506A1 (de) 2003-08-05 2005-02-09 Sap Ag Verfahren zur Cachespeicherung
US20050108478A1 (en) 2003-11-13 2005-05-19 International Business Machines Corporation Dynamic frequent instruction line cache
JP2008090554A (ja) 2006-09-29 2008-04-17 Toshiba Corp 情報処理装置、制御装置およびメモリ管理方法
US8271729B2 (en) * 2009-09-18 2012-09-18 International Business Machines Corporation Read and write aware cache storing cache lines in a read-often portion and a write-often portion
JP5183650B2 (ja) * 2010-02-17 2013-04-17 株式会社日立製作所 計算機システム,計算機システムにおけるバックアップ方法及びプログラム
WO2011104741A1 (en) * 2010-02-23 2011-09-01 Hitachi, Ltd. Management system for storage system and method for managing storage system
US20120017039A1 (en) * 2010-07-16 2012-01-19 Plx Technology, Inc. Caching using virtual memory
US10169087B2 (en) * 2011-01-28 2019-01-01 International Business Machines Corporation Technique for preserving memory affinity in a non-uniform memory access data processing system
EP2677432A1 (de) 2011-02-16 2013-12-25 Fujitsu Limited Speicherverwaltungsprogramm, speicherverwaltungsverfahren, informationsverarbeitungsvorrichtung und computerlesbares aufzeichnungsmedium mit darauf aufgezeichnetem speicherverwaltungsprogramm
JP5376681B2 (ja) 2011-02-28 2013-12-25 エヌイーシーコンピュータテクノ株式会社 情報処理装置及びエラー訂正支援方法
US20130091331A1 (en) * 2011-10-11 2013-04-11 Iulian Moraru Methods, apparatus, and articles of manufacture to manage memory
US8832411B2 (en) * 2011-12-14 2014-09-09 Microsoft Corporation Working set swapping using a sequentially ordered swap file
WO2013112124A1 (en) * 2012-01-23 2013-08-01 Empire Technology Development Llc Managing addressable memory in heterogeneous multicore processors
US9116792B2 (en) * 2012-05-18 2015-08-25 Silicon Motion, Inc. Data storage device and method for flash block management
IN2015DN01544A (de) * 2012-10-12 2015-07-03 Hitachi Ltd
US9940286B2 (en) 2013-03-14 2018-04-10 Nvidia Corporation PCIE traffic tracking hardware in a unified virtual memory system
KR102094163B1 (ko) 2013-08-28 2020-03-27 삼성전자 주식회사 하이브리드 캐시 기반의 메모리 시스템에서 캐시를 관리하는 장치 및 방법과, 그 메모리 시스템
US9472248B2 (en) * 2014-03-28 2016-10-18 Intel Corporation Method and apparatus for implementing a heterogeneous memory subsystem
GB2527788A (en) * 2014-07-02 2016-01-06 Ibm Scheduling applications in a clustered computer system
US9727466B2 (en) * 2014-08-26 2017-08-08 Arm Limited Interconnect and method of managing a snoop filter for an interconnect
US10387329B2 (en) 2016-02-10 2019-08-20 Google Llc Profiling cache replacement

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10387329B2 (en) 2016-02-10 2019-08-20 Google Llc Profiling cache replacement

Also Published As

Publication number Publication date
GB201620880D0 (en) 2017-01-25
US10387329B2 (en) 2019-08-20
KR102043886B1 (ko) 2019-12-02
US20170228322A1 (en) 2017-08-10
CN107066397A (zh) 2017-08-18
TW201732603A (zh) 2017-09-16
DE202016107157U1 (de) 2017-06-06
CN107066397B (zh) 2020-12-04
KR20180056736A (ko) 2018-05-29
JP2018537770A (ja) 2018-12-20
EP3414665B1 (de) 2021-11-10
JP6613375B2 (ja) 2019-11-27
WO2017139037A1 (en) 2017-08-17
GB2547306B (en) 2019-10-09
EP3414665A1 (de) 2018-12-19
GB2547306A (en) 2017-08-16
TWI684099B (zh) 2020-02-01

Similar Documents

Publication Publication Date Title
DE102016225545A1 (de) Profilierungs-cache-ersatz
DE112011102487B4 (de) Zuordnen von logischen zu physischen Adressen in Halbleiterspeichereinheiten aufweisenden Speichersystemen
DE102009022151B4 (de) Verringern von Invalidierungstransaktionen aus einem Snoop-Filter
DE112016000726B4 (de) Transparente hardwareunterstützte speicherdekompression
DE102007052853B4 (de) Zeilentauschschema zur Verringerung von Rückinvalidierungen in einem Snoopfilter
DE69130086T2 (de) Mehrstufeneinschluss in mehrstufigen Cache-Speicherhierarchien
DE112012004798B4 (de) Anpassung der Auslagerungsgeschwindigkeit auf Grundlage von Anforderungen an Lese- und Schreib-Antwortzeiten
DE102019132371A1 (de) Zuordnungsverwaltung logisch zu physisch unter Verwendung von nichtflüchtigem Speicher
DE102007012058A1 (de) Synchronisieren von Neuheitsinformation in einer inklusiven Cache-Hierarchie
DE69025302T2 (de) Hochleistungsrasterpuffer- und -cachespeicheranordnung
DE112017002941T5 (de) Arbeitslastoptimierte Datendeduplizierung mittels Phantomfingerabdrücken
DE102013200032B4 (de) Herabstufen von partiellen Speicherspuren aus einem ersten Cachespeicher in einen zweiten Cachespeicher
DE102016013577B4 (de) Systeme und Verfahren zum adaptiven Partitionieren in verteilten Cache-Speichern
DE112005002268T5 (de) Verfahren und Vorrichtung für eine vorwärtslaufende Victim-Auswahl zum Verringern eines unerwünschten Ersatzverhaltens in inklusiven Caches
DE60001170T2 (de) Betriebsystemsseitenplazierung zum maximieren der cachedatenwiederverwendung
DE112013002355T5 (de) Steigern von Datenzwischenspeicherungsleistung
DE10006430B4 (de) Verfahren zur Aufrechterhaltung einer Kohärenz für ein Multi-Prozessor-System
DE112017003203T5 (de) Mehr-ebenen-systemspeicher mit near-memory-scrubbing basierend auf vorhergesagter far-memory-leerlaufzeit
DE10219621A1 (de) Schnelle Prioritätsbestimmungsschaltung mit rotierender Priorität
DE102019111219A1 (de) Bereitstellen von Toter-Block-Vorhersage zur Bestimmung, ob Daten in Cache-Vorrichtungen zwischenzuspeichern sind.
DE112012004796T5 (de) Periodische Auslagerung von Innen- und Aussendurchmessern von Platten zum Verbessern von Lesereaktionszeiten
DE102020122831A1 (de) Grafikoberflächenadressierung
DE102022108424A1 (de) Dynamischer vorabruf von daten aus dem speicher
DE102021206160A1 (de) Cache-speicher-system
DE102011055097A1 (de) Speichersystem und damit verbundenes Betriebsverfahren

Legal Events

Date Code Title Description
R012 Request for examination validly filed
R081 Change of applicant/patentee

Owner name: GOOGLE LLC (N.D.GES.D. STAATES DELAWARE), MOUN, US

Free format text: FORMER OWNER: GOOGLE INC., MOUNTAIN VIEW, CALIF., US

R082 Change of representative

Representative=s name: PROCK, THOMAS, DR., GB

Representative=s name: MAIKOWSKI & NINNEMANN PATENTANWAELTE PARTNERSC, DE

R082 Change of representative

Representative=s name: PROCK, THOMAS, DR., GB

R120 Application withdrawn or ip right abandoned