DE112019000627T5 - Speicherstrukturbasiertes Coherency Directory Cache - Google Patents

Speicherstrukturbasiertes Coherency Directory Cache Download PDF

Info

Publication number
DE112019000627T5
DE112019000627T5 DE112019000627.4T DE112019000627T DE112019000627T5 DE 112019000627 T5 DE112019000627 T5 DE 112019000627T5 DE 112019000627 T DE112019000627 T DE 112019000627T DE 112019000627 T5 DE112019000627 T5 DE 112019000627T5
Authority
DE
Germany
Prior art keywords
entry
cache lines
status
cache
tcam
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
DE112019000627.4T
Other languages
English (en)
Inventor
Frank R. Dropps
Thomas McGee
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.)
Hewlett Packard Enterprise Development LP
Original Assignee
Hewlett Packard Enterprise Development LP
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Hewlett Packard Enterprise Development LP filed Critical Hewlett Packard Enterprise Development LP
Publication of DE112019000627T5 publication Critical patent/DE112019000627T5/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/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0806Multiuser, multiprocessor or multiprocessing cache systems
    • G06F12/0815Cache consistency protocols
    • G06F12/0817Cache consistency protocols using directory methods
    • G06F12/0828Cache consistency protocols using directory methods with concurrent directory accessing, i.e. handling multiple concurrent coherency transactions
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/90Details of database functions independent of the retrieved data types
    • G06F16/903Querying
    • G06F16/90335Query processing
    • G06F16/90339Query processing by using parallel associative memories or content-addressable memories
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0806Multiuser, multiprocessor or multiprocessing cache systems
    • G06F12/0811Multiuser, multiprocessor or multiprocessing cache systems with multilevel cache hierarchies
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0806Multiuser, multiprocessor or multiprocessing cache systems
    • G06F12/0815Cache consistency protocols
    • G06F12/0817Cache consistency protocols using directory methods
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/12Replacement control
    • G06F12/121Replacement control using replacement algorithms
    • G06F12/123Replacement control using replacement algorithms with age lists, e.g. queue, most recently used [MRU] list or least recently used [LRU] list
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/12Replacement control
    • G06F12/121Replacement control using replacement algorithms
    • G06F12/128Replacement control using replacement algorithms adapted to multidimensional cache systems, e.g. set-associative, multicache, multiset or multilevel
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/28Using a specific disk cache architecture
    • G06F2212/283Plural cache memories
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/62Details of cache specific to multiprocessor cache arrangements
    • G06F2212/621Coherency control relating to peripheral accessing, e.g. from DMA or I/O device

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Databases & Information Systems (AREA)
  • Computational Linguistics (AREA)
  • Data Mining & Analysis (AREA)
  • Memory System Of A Hierarchy Structure (AREA)

Abstract

In einigen Beispielen kann ein Hardware-Sequenzer in Bezug auf eine auf Speicherstruktur basierende Coherency Directory Cache-Implementierung Hardware einschließen, um für einen Coherency Directory Cache, der Informationen in Bezug auf mehrere Cache-Zeilen einschließt, angrenzende Cache-Zeilen zu identifizieren. Ein Status, der jeder der angrenzenden Cache-Zeilen zugeordnet ist, kann bestimmt werden. Basierend auf einer Bestimmung, dass der einer der angrenzenden Cache-Zeilen zugeordnete Status mit dem Status identisch ist, der den verbleibenden aktiven angrenzenden Cache-Zeilen zugeordnet ist, können die angrenzenden Cache-Zeilen gruppiert werden. Der Hardware-Sequenzer kann für den Coherency Directory Cache einen Eintrag in einer Speicherstruktur verwenden, um die gruppierten Cache-Zeilen zu identifizieren. Daten, die dem Eintrag in der Speicherstruktur zugeordnet sind, können mehr als zwei mögliche Speicherzustände einschließen.

Description

  • HINTERGRUND
  • Im Hinblick auf die Cache-Kohärenz kann die verzeichnisbasierte Kohärenz für Non-Uniform Memory Access (NUMA) und andere solche Speicherzugriffstypen implementiert werden. In dieser Hinsicht kann ein Coherency Directory Eintragsinformationen einschließen, um den Status und den Besitz jedes Speicherblocks zu verfolgen, der von Prozessoren in einem geteilten Multiprozessor-Speichersystem geteilt werden kann. Ein Coherency Directory Cache kann als eine Komponente beschrieben werden, die eine Teilmenge der Coherency Directory-Einträge speichert, was einen schnelleren Zugriff und eine erhöhte Datenbandbreite ermöglicht. Für eine verzeichnisbasierte Kohärenz kann der Coherency Directory Cache von einer Knotensteuerung verwendet werden, um die Kommunikation zwischen verschiedenen Knoten eines Computersystems oder verschiedenen Computersystemen zu verwalten. In dieser Hinsicht kann der Coherency Directory Cache den Status jedes Cache-Blocks (oder jeder Cache-Zeile) für das Computersystem oder die verschiedenen Computersysteme verfolgen. Beispielsweise kann der Coherency Directory Cache verfolgen, welche der Knoten des Computersystems oder verschiedener Computersysteme einen Cache-Block teilen.
  • Figurenliste
  • Merkmale der vorliegenden Offenbarung sind beispielhaft veranschaulicht und nicht in der folgenden Figur/den folgenden Figuren beschränkt, in denen gleiche Bezugszeichen gleiche Elemente bezeichnen, in denen:
    • 1 ein beispielhaftes Layout einer speicherstrukturbasierten Coherency Directory Cache Implementierungsvorrichtung und der zugehörigen Komponenten veranschaulicht;
    • 2 einen Prozessablauf einer Prozessstatus-Maschine der speicherstrukturbasierten Coherency Directory Cache Implementierungsvorrichtung von 1 veranschaulicht;
    • 3 einen Scrubber-Flow einer Background Scrubbingstatus-Maschine veranschaulicht, um den Betrieb der speicherstrukturbasierten Coherency Directory Cache Implementierungsvorrichtung von 1 zu veranschaulichen;
    • 4 ein beispielhaftes Blockdiagramm für die speicherstrukturbasierte Coherency Directory Cache Implementierung veranschaulicht;
    • 5 ein beispielhaftes Flussdiagramm eines Verfahrens für die speicherstrukturbasierte Coherency Directory Cache Implementierung veranschaulicht; und
    • 6 ein weiteres beispielhaftes Blockdiagramm für die speicherstrukturbasierte Coherency Directory Cache Implementierung veranschaulicht.
  • AUSFÜHRLICHE BESCHREIBUNG
  • Zur Vereinfachung und Veranschaulichung wird die vorliegende Offenbarung in erster Linie durch Bezugnahme auf die Beispiele beschrieben. In der folgenden Beschreibung werden zahlreiche spezifische Details dargelegt, um ein gründliches Verständnis der vorliegenden Offenbarung zu ermöglichen. Es ist jedoch leicht ersichtlich, dass die vorliegende Offenbarung ohne Einschränkung auf diese spezifischen Details ausgeführt werden kann. In anderen Fällen wurden einige Verfahren und Strukturen nicht im Detail beschrieben, um die vorliegende Offenbarung nicht unnötig zu verschleiern.
  • In der gesamten vorliegenden Offenbarung sollen die Begriffe „ein“ und „ein“ (aus dem englischen „a“ und „an“) zumindest eines der bestimmten Elemente bezeichnen. Wie vorliegend verwendet, bedeutet der Begriff „schließt ein“ einschließen, jedoch ohne darauf beschränkt zu sein, der Begriff „einschließlich“ bedeutet einschließlich, jedoch ohne darauf beschränkt zu sein. Der Begriff „basierend auf“ bedeutet wenigstens teilweise basierend auf.
  • Speicherstrukturbasierte Coherency Directory Cache Implementierungsvorrichtungen, Verfahren zum Betreiben speicherstrukturbasierter Coherency Directory Caches und nicht-vorübergehende computerlesbare Medien, auf denen maschinenlesbare Anweisungen gespeichert sind um einen speicherstrukturbasierten Coherency Directory Cache bereitzustellen, werden vorliegend offenbart. Die hier offenbarten Vorrichtungen, Verfahren und nicht-vorübergehenden computerlesbaren Medien stellen die Verwendung eines ternären inhaltsadressierbaren Speichers (TCAM) zur Implementierung eines Coherency Directory Cache bereit.
  • Ein Coherency Directory Cache kann Informationen in Bezug auf mehrere Speicherblöcke einschließen. Die Größe dieser Speicherblöcke kann zur Erleichterung der Implementierung so definiert werden, dass sie der System-Cache-Zeile für ein Computersystem entspricht. Diese Speicherblöcke mit Cache-Zeilengröße zur besseren Übersichtlichkeit können als Cache-Zeilen bezeichnet werden. Die Cache-Zeileninformationen können einen Prozessor (oder eine andere Vorrichtung) identifizieren, bei dem die Cache-Zeile im Computersystem (oder in verschiedenen Computersystemen) gespeichert ist. Das Coherency Directory und der Coherency Directory Cache können einen Kohärenzstatus und Besitzinformationen einschließen, die jeder der Systemspeicher-Cache-Zeilen zugeordnet sind. Wenn die Anzahl der Cache-Zeilen zunimmt, kann die Größe des Coherency Directories und ebenso des Coherency Directory Cache in ähnlicher Weise zunehmen. Aus Leistungsgründen kann die Vergrößerung des Coherency Directory Cache zu einer entsprechenden Zunahme der Nutzung eines dem Coherency Directory Cache zugeordneten Chipbereichs und zu einer ähnlichen Zunahme des mit dem Coherency Directory Cache verbundenen Stromverbrauchs führen. In dieser Hinsicht ist es technisch schwierig, den Coherency Directory Cache mit reduzierter Nutzung des dem Coherency Directory Cache zugeordneten Chipbereichs und reduziertem Stromverbrauch im Zusammenhang mit dem Coherency Directory Cache zu implementieren.
  • Um zumindest die oben genannten technischen Herausforderungen anzusprechen, sorgen die vorliegend offenbarten Vorrichtungen, Verfahren und nicht-vorübergehenden computerlesbaren Medien für die Reduzierung der Auswirkung der Chipgröße auf die erhöhte Verzeichnisgröße und/oder Verringerung der Systemstromauslastung durch Verwendung eines Coherency Directory Cache, der Coherency Directory Informationen für eine Teilmenge der System-Cache-Zeilen enthält. Zusätzlich oder in anderen Beispielen können der zusätzliche Chipbereich und die zusätzliche Leistung verwendet werden, um einen größeren Coherency Directory Cache bereitzustellen, um somit die Systemleistung zu erhöhen. In dieser Hinsicht kann der Coherency Directory Cache durch Verwendung eines TCAM implementiert werden. Eine Eigenschaft des TCAM schließt die Möglichkeit ein, „Don't care“ (oder „Wildcard“) -Bits (z. B. „X“) auszuwählen. Die „Don't care“-Bits können verwendet werden, um Informationen darzustellen, die sich auf mehrere angrenzende Cache-Zeilen mit demselben TCAM-Eintrag beziehen. In dieser Hinsicht können die angrenzenden Cache-Zeilen gemäß identischen Besitz- und Statusinformationen gruppiert werden.
  • Beispielsweise können für die speicherstrukturbasierte Coherency Directory Cache Implementierung angrenzende Cachezeilen für einen Coherency Directory Cache identifiziert werden, der Informationen im Zusammenhang mit mehreren Cache-Zeilen einschließt. Ein Status und ein Besitz, die jeder der angrenzenden Cache-Zeilen zugeordnet sind, können bestimmt werden. Basierend auf einer Bestimmung, dass der Status und der Besitz, die einer der angrenzenden Cache-Zeilen zugeordnet sind, jeweils mit dem Status und dem Besitz identisch sind, die den verbleibenden aktiven angrenzenden Cache-Zeilen zugeordnet sind, können die angrenzenden Cache-Zeilen gruppiert werden. Ferner kann ein einzelner Eintrag in einem TCAM für den Coherency Directory Cache verwendet werden, um die Informationen zu identifizieren, die sich auf die gruppierten Cache-Zeilen beziehen.
  • Für die vorliegend offenbarten Vorrichtungen, Verfahren und nicht-vorübergehenden computerlesbaren Medien können die vorliegend offenbarten Elemente (z. B. Komponenten) der Vorrichtungen, Verfahren und nicht-vorübergehenden computerlesbaren Medien eine beliebige Kombination von Hardware und Programmierung sein, um die Funktionen der jeweiligen Elemente zu implementieren. In einigen vorliegend beschriebenen Beispielen können die Kombinationen von Hardware und Programmierung auf verschiedene Arten implementiert werden. Beispielsweise kann die Programmierung für die Elemente prozessorausführbare Anweisungen sein, die auf einem nicht-vorübergehenden maschinenlesbaren Speichermedium gespeichert sind, und die Hardware für die Elemente kann eine Verarbeitungsressource einschließen, um diese Anweisungen auszuführen. In diesen Beispielen kann eine Rechenvorrichtung, die solche Elemente implementiert, das maschinenlesbare Speichermedium, das die Anweisungen speichert, und die Verarbeitungsressource zum Ausführen der Anweisungen einschließen, oder das maschinenlesbare Speichermedium kann separat gespeichert werden und für die Rechenvorrichtung und die Verarbeitungsressource zugänglich sein. In einigen Beispielen können einige oder alle Elemente in Hardware-Schaltungen implementiert sein.
  • 1 veranschaulicht ein beispielhaftes Layout einer speicherstrukturbasierten Coherency Directory Cache Implementierungsvorrichtung (im Folgenden auch als „Vorrichtung 100“ bezeichnet).
  • Unter Bezugnahme auf 1 kann die Vorrichtung 100 einen Multiplexer 102 einschließen, um Anforderungen zu empfangen, wie beispielsweise eine Prozessor-Snoop-Anforderung oder eine Knotensteuerungsanfrage. Eine Prozessor-Snoop-Anforderung kann als eine Operation beschrieben werden, die von einem lokalen Prozessor initiiert wird, um den Status und den Besitz eines Speicherblocks oder einer Cache-Zeile abzufragen. Eine Knotensteuerungsanforderung kann als eine Operation beschrieben werden, die von einem Fernprozessor oder einer Fernknotensteuerung initiiert wird, die an eine lokale Knotensteuerung einschließlich der Vorrichtung 100 gesendet wurde. Die Anforderungen können an ein Coherency Directory Tag 104 gerichtet werden, um zu bestimmen, ob Statusinformationen in Bezug auf einen bestimmten Speicherblock (d. h. eine Cache-Zeile) vorhanden sind. Das Coherency Directory Tag 104 kann Informationen einschließen, die sich auf mehrere Speicherblöcke beziehen. Das heißt, das Coherency Directory Tag 104 kann eine Sammlung von oberen Adressen einschließen, die den Systemspeicherblöcken oder Cache-Zeilen entsprechen, in denen die Status- und Besitzinformationen im Coherency Directory Cache zwischengespeichert sind. Beispielsweise können die oberen Adressen die obere Adresse A, die obere Adresse B, ..., die obere Adresse N usw. einschließen. Jeder oberen Adresse kann eine entsprechende Zeilennummer (z. B. die Zeilennummer 1, 2, ..., N) jedem Eintrag zugeordnet sein. Jede obere Adresse kann 0-N „Don't care“ -Bits je nach Standort sein. Wie vorliegend offenbart, kann die Größe dieser Speicherblöcke zur Erleichterung der Implementierung so definiert sein, dass sie mit System-Cache-Zeilen für ein Computersystem (oder für verschiedene Computersysteme) identisch ist. Diese Speicherblöcke mit Cache-Zeilengröße zur besseren Übersichtlichkeit können als Cache-Zeilen bezeichnet werden.
  • Der Besitz kann dahingehend als Identifikation beschrieben sein, welcher Knoten oder Prozessor den verfolgten Systemspeicherblock oder die Cache-Zeile besitzt. In einem geteilten Status kann der Besitz die Knoten oder Prozessoren einschließen, die den Systemspeicherblock oder die Cache-Zeile teilen.
  • Die Anforderungen können durch einen TCAM 106 verarbeitet werden. Für den TCAM 106 kann jeder Cache-Eintrag einen TCAM-Eintrag einschließen, um eine obere Adresse zu Vergleichszwecken mit den Anforderungen zu enthalten. Diese obere Adresse kann als Tag bezeichnet werden. In Bezug auf die obere Adresse kann ein Prozessorsystem eine Byte- oder Wortadresse einschließen, welche die Definition der Datenbits ermöglicht, auf die zugegriffen wird. Wenn mehrere Bytes oder Wörter zu größeren Blöcken wie Cache-Zeilen zusammengefasst werden, können die oberen Adressbits verwendet werden, um jeden Block oder jede Cache-Zeile des Systemspeichers eindeutig zu lokalisieren, und die unteren Adressbits können verwendet werden, um jedes Byte oder Wort innerhalb des Systemspeicherblocks oder der Cache-Zeile eindeutig zu lokalisieren.
  • Ein Tag kann als verknüpfter Deskriptor beschrieben sein, der verwendet wird, um die obere Adresse zu identifizieren. Ein Directory-Tag kann als verknüpfter Deskriptor beschrieben werden, der in einem Directoryabschnitt eines CacheSpeichers verwendet wird. Das Coherency Directory Tag 104 kann alle Tags für den Coherency Directory Cache einschließen und kann als verknüpfter Deskriptor beschrieben werden, der in einem Directoryabschnitt eines Coherency Directory Cachespeichers verwendet wird. Das Coherency Directory Tag 104 kann die oberen Adressbits einschließen, die den Block des Systemspeichers definieren, der verfolgt wird.
  • Die Directory Tags können den Teil der Coherency Directory Cache Adresse darstellen, die eindeutig die Directory Einträge identifiziert. Die Directory Tags können verwendet werden, um das Vorhandensein einer Directory Cache-Zeile innerhalb des Coherency Directory Tags 104 zu erfassen, und wenn dies der Fall ist, kann der übereinstimmende Eintrag identifizieren, wo sich die zwischengespeicherten Informationen im Directory Statusspeicher befinden. Ein Coherency Directory Cache-Eintrag kann den Coherency Status und den Besitz einer einzelnen System-Cache-Speicherzeile darstellen.
  • Beim Übereinstimmungscodierer 108 kann eine Anforderung durch den TCAM 106 verarbeitet werden, um eine binäre Darstellung der zugehörigen Zeile (z. B. Adresse) des Coherency Directory Tags 104 zu ermitteln. Für den TCAM 106 kann jede Zeile oder jeder Eintrag des TCAM 106 eine Übereinstimmungszeile einschließen, die aktiviert wird, wenn dieser Eintrag mit dem eingegebenen Suchwert übereinstimmt. Wenn der TCAM 106 beispielsweise 1024 Einträge aufweist, gibt er 1024 Übereinstimmungszeilen aus. Diese 1024 Übereinstimmungszeilen können in einen Binärwert codiert werden, der beispielsweise zum Adressieren des Speichers verwendet werden kann, in dem die Status- und Besitzinformationen gespeichert sind. Wenn beispielsweise die Übereinstimmungsleitung 255 aktiv ist, wäre die codierte Ausgabe vom Übereinstimmungscodierer 108 0FF16.
  • Ein Statusinformations 110 Block kann die aktuelle Darstellung des Status und den Besitz des Speicherblocks (d. h. der Cache-Zeile) für die Anforderung einschließen, die von dem TCAM 106 verarbeitet wird. Zum Beispiel kann die Statusinformation 110 eine „gültige“-Spalte einschließen, die einen Satz gültiger Bits (z. B. 1111, 0000, 0011, 0010) einschließt, eine „Status Info“ Spalte, die Informationen wie freigegeben, ungültig oder exklusiv einschließt, und eine Spalte „Freigabevektor/Besitz“, die Informationen für einen freigegebenen Status und den Besitz für den exklusiven Status einschließt. Gemäß einem Beispiel können die Zeilen der Statusinformationen 110 den Zeilen des Coherency Directory Tags 104 entsprechen. Alternativ kann eine einzelne Zeile des Coherency Directory Tags 104 mehreren Zeilen der Statusinformation 110 entsprechen. In Bezug auf den Coherency Directory Tag 104 und die Statusinformationen 110 können diese vier Cache-Zeilen unter der Annahme, dass die obere Adresse A vier gültige Cache-Zeilen abdeckt, dieselben Statusinformationen einschließen und den gleichen Vektor/Besitz teilen. Die Länge der gültigen Bits kann einer Anzahl von Decodierungen der „Don`t care“ -Bits entsprechen. Die Coherency Directory Cache-Ausgabeinformationen, die sich auf den Speicherblockstatus und die Besitzinformationen beziehen, können auch einen Directory Cache-Trefferindikatorstatus (z. B. einen Coherency Directory Tag 104-Treffer) oder einen Directory Cache-Fehltrefferindikatorstatus einschließen, der auf die vom Multiplexer 102 empfangenen Anforderungen reagiert. Der Besitz kann eine Angabe eines Knotens (oder von Knoten) eines Computersystems oder verschiedener Computersysteme einschließen, die sich den Speicherblock teilen. In dieser Hinsicht können die tatsächlich gespeicherten Informationen von der Implementierung und dem verwendeten Kohärenzprotokoll abhängen. Wenn das verwendete Protokoll beispielsweise einen geteilten Status einschließt, können die Besitzinformationen eine Liste von Knoten oder Prozessoren einschließen, die einen Block teilen. Der Status und der Besitz können aus der Statusinformation 110 Speicherung basierend auf der zugeordneten übereinstimmenden Zeile von dem TCAM 106 abgerufen werden, wie er durch den Übereinstimmungscodierer 108 in eine Speicheradresse codiert ist.
  • Die Directory-Treffer- oder Directory-Fehltreffer-Informationen können für eine Richtlinie zum Ersetzen des Coherency Directory Cache-Eintrags verwendet werden. Beispielsweise kann die Ersetzungsrichtlinie die zuletzt verwendete (LRU) Verfolgungsschaltung 112 verwenden. Die zuletzt verwendete Verfolgungsschaltung 112 kann einen zuletzt verwendeten Cache-Eintrag entfernen, wenn der zugeordnete Cache voll ist und ein neuer Eintrag hinzugefügt werden soll. In dieser Hinsicht kann der TCAM 106 entsprechend aktualisiert werden, wenn ein Eintrag entfernt wird. Wenn der TCAM 106 voll ist, kann der vollständige Coherency Directory Cache als voll betrachtet werden. Die LRU-Verfolgungsschaltung 112 kann Treffer-/Fehltrefferinformationen direkt vom Übereinstimmungscodierer 108 empfangen. Die Treffer-/Fehltrefferinformationen können jedoch auch von der Prozessstatus-Maschine 114 empfangen werden. Wenn ein Cache-Treffer erkannt wird, kann die LRU-Verfolgungsschaltung 112 eine zugeordnete Liste aktualisieren, um den übereinstimmenden Eintrag an die zuletzt verwendete Position in der Liste zu verschieben.
  • Tag-Daten, die einem Eintrag in dem TCAM 106 zugeordnet sind, können die möglichen Speicherzustände „0“, „1“ oder „X“ einschließen, wobei der Speicherstatus „X“ „0“ oder „1“ darstellen und als „Don't care“ Speicherstatus gekennzeichnet werden kann. Die niedrigstwertige Ziffer im TCAM 106 einer Cache-Zeilenadresse kann die Adresse der Cache-Zeile innerhalb einer Gruppe von Cache-Zeilen definieren. Die niedrigstwertigen Ziffern können durch den „X“ Speicherstatus dargestellt werden. Somit kann ein Coherency Directory Cache-Eintrag den Status mehrerer (z. B. 2, 4, 8, 16 usw.) System-Cache-Speicherzeilen darstellen. Diese Speicherblöcke oder System-Cache-Zeilen können nach Potenzen von 2 sowie Nicht-Potenzen von 2 gruppiert werden. Für Nicht-Potenzen von 2 kann ein Vergleich der Adresse in Bezug auf einen Bereich durchgeführt werden. Wenn die Adresse beispielsweise zwischen A und C liegt, können die Speicherblöcke oder System-Cache-Zeilen gruppiert werden. Somit kann jeder TCAM-Eintrag eine beliebige Anzahl von System-Cache-Speicherzeilen darstellen. Diese mehreren Cache-Zeilen können basierend auf einer Bestimmung, dass die mehreren Cache-Zeilen angrenzend sind, und ferner basierend auf einer Bestimmung, dass die mehreren Cache-Zeilen denselben Status und Besitz einschließen, gruppiert werden, um einen TCAM-Eintrag zu teilen. In dieser Hinsicht können die angrenzenden Cache-Zeilen Cache-Zeilen einschließen, die innerhalb der Grenzen einer definierten Gruppe liegen. Somit können angrenzende Cache-Zeilen Cache-Zeilen einschließen, die sich in unmittelbarer Nähe befinden oder einer Gruppenadressierungsspezifikation entsprechen.
  • Eine Verfahrensstatus-Maschine 114 kann, basierend auf den Anforderungen, wie beispielsweise der Prozessor-Snoop-Anforderung und/oder der Knotensteuerungsanforderung, Status- und Besitzinformationen für zugeordnete Cache-Zeilen analysieren, um Cache-Zeilen zu identifizieren, die in Bezug auf den TCAM 106 konsolidiert werden können.
  • Eine Hintergrund Scrubbingstatus-Maschine 116 kann auch Status- und Besitzinformationen analysieren, welche angrenzenden Cache-Zeilen zugeordnet sind, um Cache-Zeilen zu identifizieren, die in Bezug auf den TCAM 106 konsolidiert werden können. In Bezug auf die Konsolidierung von Cache-Zeilen kann die Prozessstatus-Maschine 114 die Konsolidierungsfunktion ausführen, wenn ein neuer Eintrag hinzugefügt wird, und die Hintergrund Scrubbingstatus-Maschine 116 kann die Konsolidierungsfunktion als Hintergrundoperation ausführen, wenn der Coherency Directory Cache nicht damit beschäftigt ist, andere Anforderungen zu verarbeiten. In Bezug auf die Hintergrundoperation, die von der Hintergrund Scrubbingstatus-Maschine 116 ausgeführt wird, können sich die Status- und Besitzinformationen im Laufe der Zeit ändern. Wenn Informationen in Bezug auf einen bestimmten Block ursprünglich geschrieben wurden und nicht gruppiert werden konnten, weil die Status- oder Besitzinformationen nicht mit den Informationen anderer Blöcke übereinstimmten, die sich in der kombinierten Gruppe befinden würden, können diese Informationen für den angegebenen Block mit einem separaten Coherency Directory Cache-Eintrag übereinstimmen. Wenn sich zu einem späteren Zeitpunkt einige Informationen zu Status- oder Besitzänderungen ändern, kann die Gruppierung jetzt möglicherweise erfolgen. Somit kann die Hintergrund Scrubbingstatus-Maschine 116 arbeiten, wenn die Anforderungen wie die Prozessor-Snoop-Anforderung und/oder die Knotensteuerungsanforderung nicht verarbeitet werden. In dieser Hinsicht kann die Hintergrund Scrubbingstatus-Maschine 116 übereinstimmende Einträge finden und die TCAM-Einträge neu schreiben, um die Gruppierung von Speicherblöcken durchzuführen, die durch einen einzelnen Eintrag dargestellt werden sollen, wie vorliegend offenbart.
  • Die Funktionalität der Prozessstatus-Maschine 114 und der Hintergrund Scrubbingstatus-Maschine 116 bezüglich der Gruppierung der angrenzenden Cache-Zeilen, die einen identischen Status und Besitz einschließen, können jeweils von einem Hardware-Sequenzer 118 und einem Hardware-Sequenzer 120 oder anderen Schaltungen durchgeführt werden, die in der Prozessstatus-Maschine 114 und der Hintergrund Scrubbingstatus-Maschine 116 eingeschlossen sind. Bestimmte Funktionen, die sowohl vom Hardware-Sequenzer 118 als auch vom Hardware-Sequenzer 120 ausgeführt werden, werden nachstehend beschrieben.
  • Gemäß den Beispielen, kann der Hardware-Sequenzer 118 und der Hardware-Sequenzer 120 Hardware einschließen, um angrenzende Cache-Zeilen für den Coherency Directory Tag 104 zu identifizieren, die Informationen einschließen, die sich auf mehrere Cache-Zeilen beziehen. In einem Beispiel können der Hardware-Sequenzer 118 und der Hardware-Sequenzer 120 Hardwarestatus-Maschinen oder Teil einer größeren Statusmaschine sein. Alternativ kann die Vorrichtung 100 einen Prozessor (z. B. den Prozessor 604 von 6) einschließen, um einige oder alle der Schritte (die vom Prozessor als Anweisungen implementiert werden können) des Hardware-Sequenzers 118 und des Hardware-Sequenzers 120 zu implementieren.
  • Für die Durchführung der Vorrichtung 100 einschließlich des Hardware-Sequenzers 118 und des Hardware-Sequenzers 120, können der Hardware-Sequenzer 118 und der Hardware-Sequenzer 120 ferner Hardware einschließen, um einen Status und einen Besitz zu bestimmen, die jeder der angrenzenden Cache-Zeilen zugeordnet sind.
  • Basierend auf einer Bestimmung, dass der Status und der Besitz, der einer der angrenzenden Cache-Zeilen zugeordnet ist, jeweils identisch mit dem Status und dem Besitz sind, der den verbleibenden aktiven Cache-Zeilen zugeordnet ist, können der Hardware-Sequenzer 118 und der Hardware-Sequenzer 120 ferner Hardware (oder vom Prozessor implementierte Anweisungen) einschließen, um die angrenzenden Cache-Zeilen zu gruppieren. Das Gruppieren der angrenzenden Cache-Zeilen kann gegebenenfalls das Setzen eines „Don't care“ -Bits, um die hinzuzufügende Cache-Zeile einzuschließen, und das Setzen des entsprechenden gültigen Bits des Gültigkeitsfelds einschließen. In dieser Hinsicht kann ein auf Gleichheit basierender Vergleich verwendet werden, um zu bestimmen, ob die beiden Informationen in Bezug auf den Status und den Besitz identisch sind. Die verbleibenden aktiven Cache-Zeilen können als die Cache-Zeilen beschrieben werden, die derzeit in dieser Gruppe im Coherency Directory Cache dargestellt sind (z. B. können die verbleibenden aktiven Cache-Zeilen die gültigen Bits einschließen, die in den Statusinformationen gesetzt sind).
  • Der Hardware-Sequenzer 118 und der Hardware-Sequenzer 120 können ferner Hardware einschließen (oder durch den Prozessor implementierte Anweisungen), um für den Coherency Directory Tag 104 einen Eintrag in eine Speicherstruktur zum Identifizieren der Informationen (z. B. der Adressbits) zu verwenden, die sich auf die gruppierten Cache-Zeilen beziehen. In dieser Hinsicht können Daten, die dem „Don't care“ Eintrag in der Speicherstruktur zugeordnet sind, mehr als zwei mögliche Speicherstatus einschließen. Gemäß Beispielen kann der Eintrag eine Adresse einschließen, die den Eintrag in der Speicherstruktur eindeutig identifiziert. Zum Beispiel kann der Eintrag eine Adresse ohne „Don't care“ -Bits einschließen. Gemäß Beispielen kann der Eintrag einen einzelnen Eintrag in der Speicherstruktur einschließen, um die Informationen zu identifizieren, die sich auf die gruppierten Cache-Zeilen beziehen. Beispielsweise kann der Eintrag eine Adresse mit einer oder mehreren der niedrigstwertigen Ziffern als „Don't care“ -Bits einschließen. Gemäß Beispielen kann eine Anzahl der gruppierten Cache-Zeilen gleich vier angrenzenden Cache-Zeilen sein. Beispielsweise kann der Eintrag eine Adresse mit den zwei niedrigstwertigen Ziffern als „Don't care“ -Bits einschließen.
  • Gemäß Beispielen kann die Speicherstruktur den TCAM 106 einschließen, wie in 1 gezeigt. Für den TCAM 106 können der Hardware-Sequenzer 118 und der Hardware-Sequenzer 120 ferner Hardware (oder vom Prozessor implementierte Anweisungen) einschließen, um eine angegebene Anzahl niedrigerer Bits der Adresse als „X“ -Bits zu schreiben. In dieser Hinsicht können die dem Eintrag im TCAM 106 zugeordneten Daten die möglichen Speicherstatus von „0“, „1“ oder „X“ einschließen, wobei der „X“ Speicherzustand (z. B. der „Don't care“ Speicherzustand) „0“oder „1“ darstellen kann. Beispielsweise können die unteren zwei Bits der oberen Adresse (Tag) innerhalb des TCAM als „Don't care“ programmiert werden, wenn ein Eintrag in das Coherency Directory Tag 104 geschrieben ist. Dieses Beispiel veranschaulicht die Konfiguration, wenn ein einzelner Coherency Cache-Eintrag eine Gruppe von bis zu vier System-Cache-Zeilen abdeckt. Die Statusinformationen können ein gültiges 4-Bit-Feld einschließen. Die Implementierung mit dem gültigen 4-Bit-Feld kann eine Implementierung darstellen, bei der die beiden niedrigstwertigen oberen Adressbits möglicherweise „Don't care“ sein dürfen. In dieser Hinsicht würde sich in Bezug auf andere Implementierungen eine Anzahl von Bits im Gültigkeitsfeld ändern. Bei einer Implementierung mit bis zu 3 „Don't care“ -Bits wäre das gültige Feld beispielsweise 8 Bit lang, da es 2^3=8 (oder im Allgemeinen 2^n, wobei n die Anzahl von „Don't care“ -Bits darstellt) eindeutige Decodierungen der drei unteren Adressbits gibt. In Bezug auf die Statusinformationen, die ein gültiges 4-Bit-Feld einschließen, kann jedes dieser 4 Bits einer Decodierung der unteren zwei Bits der oberen Adresse entsprechen, was eine Zuordnung jedes Bits zu einer der vier Cache-Zeilen innerhalb der vier Cache-Zeilengruppen ermöglicht. Diese 4 Bits können als gültige Bits für jede der vier Systemspeicher-Cache-Zeilen betrachtet werden. Jeder TCAM-Eintrag kann nun die Status- und Besitzinformationen für einen beliebigen Bereich von Null (kein gültiger Eintrag) bis zu vier Cache-Zeilen des Systemspeichers darstellen. Ferner können der Hardware-Sequenzer 118 und der Hardware-Sequenzer 120 ferner Hardware (oder vom Prozessor implementierte Anweisungen) einschließen, um basierend auf den geschriebenen unteren Bits die Coherency Directory Cache-Verfolgung als gültig für jede Cache-Zeile der gruppierten Cache-Zeilen zu kennzeichnen. Die Coherency Directory Cache-Verfolgung kann als der Coherency Directory Cache beschrieben werden, der den Status überwacht, ob das Bit aktiv oder inaktiv ist.
  • Der Hardware-Sequenzer 118 und der Hardware-Sequenzer 120 können ferner Hardware (oder vom Prozessor implementierte Anweisungen) einschließen, um den Eintrag zu verwenden, um Null-Cache-Zeilen zu kennzeichnen, nicht einen gültigen Eintrag, der den Cache-Zeilen zugeordnet ist, oder eine angegebene Anzahl angrenzender Cache-Zeilen, wobei die angegebene Anzahl größer als eins ist.
  • Eine Suche in dem TCAM 106 kann durchgeführt werden, um zu bestimmen, ob ein neuer Eintrag hinzugefügt werden soll. Die Durchsuchung des TCAM 106 kann unter Verwendung der oberen Adressbits der Cache-Zeile durchgeführt werden, die der empfangenen Anforderung entspricht. Wenn ein TCAM-Fehltreffer vorliegt, wird der Tag möglicherweise in einen nicht verwendeten Eintrag geschrieben. In dieser Hinsicht kann der Hardware-Sequenzer 118 ferner Hardware (oder vom Prozessor implementierte Anweisungen) einschließen, um den Eintrag als neuen Eintrag zu kennzeichnen und zu bestimmen, ob die Coherency Directory Cache-Speicherstruktur einen vorherigen Eintrag einschließt, welcher mit derselben Gruppe wie der neue Eintrag übereinstimmt. In dieser Hinsicht kann basierend auf der Bestimmung, dass die Coherency Directory Cache-Speicherstruktur nicht den vorherigen Eintrag einschließt, welcher mit derselben Gruppe wie der neue Eintrag übereinstimmt, der neue Eintrag zu einem nicht verwendeten Eintragsort der Coherency Directory Cache-Speicherstruktur hinzugefügt werden.
  • Wenn ein neuer Eintrag hinzugefügt werden soll, kann eine Durchsuchung des TCAM 106 durchgeführt werden. Wenn alle Cache-Einträge verwendet werden, kann ein zuletzt verwendeter Eintrag entfernt und der neue Tag in diesen TCAM-Eintrag geschrieben werden. In dieser Hinsicht kann der Hardware-Sequenzer 118 ferner Hardware (oder vom Prozessor implementierte Anweisungen) einschließen, um den Eintrag als neuen Eintrag zu kennzeichnen und zu bestimmen, ob die Speicherstruktur einen vorherigen Eintrag einschließt, welcher mit derselben Gruppe wie der neue Eintrag übereinstimmt. Basierend auf einer Bestimmung, dass die Speicherstruktur nicht den vorherigen Eintrag einschließt, der dem neuen Eintrag entspricht, kann der Hardware-Sequenzer 118 ferner Hardware (oder vom Prozessor implementierte Anweisungen) einschließen, um zu bestimmen, ob alle Eintragspositionen in der Speicherstruktur verwendet werden. Basierend auf einer Bestimmung, dass alle Eintragspositionen in der Speicherstruktur verwendet werden, kann der Hardware-Sequenzer 118 ferner Hardware (oder vom Prozessor implementierte Anweisungen) einschließen, um einen zuletzt verwendeten Eintrag der Speicherstruktur zu entfernen. Ferner kann der neue Eintrag an einer Eintragsposition hinzugefügt werden, die dem am wenigsten zuletzt verwendeten Eintrag der Speicherstruktur entspricht.
  • Wenn es während dem Durchsuchen des TCAM eine Übereinstimmung zwischen den neuen oberen Adressbits und einem Tag-Eintrag in dem TCAM gibt, kann das oben besprochene 4-Bit-Feld untersucht werden. Wenn das entsprechende Bit im 4-Bit-Feld, wie durch eine Decodierung der unteren beiden Bits der oberen Adresse ausgewählt, gesetzt ist, kann ein Cache-Treffer angezeigt werden und die Verarbeitung kann fortgesetzt werden. In dieser Hinsicht kann der Hardware-Sequenzer 118, wenn kein Cache-Treffer bestimmt ist, ferner Hardware (oder vom Prozessor implementierte Anweisungen) einschließen, um den Eintrag als neuen Eintrag zu kennzeichnen und bestimmen, ob die Speicherstruktur einen vorherigen Eintrag einschließt, welcher mit dem neuen Eintrag übereinstimmt. Basierend auf einer Bestimmung, dass die Speicherstruktur den vorherigen Eintrag einschließt, welcher mit dem neuen Eintrag übereinstimmt, kann der Hardware-Sequenzer 118 ferner Hardware (oder vom Prozessor implementierte Anweisungen) einschließen, um für den vorherigen Eintrag zu bestimmen, ob ein angegebenes Bit, das mit dem neuen Eintrag übereinstimmt, gesetzt ist. Basierend auf einer Bestimmung, dass das angegebene Bit gesetzt ist, kann der Hardware-Sequenzer 118 ferner Hardware (oder vom Prozessor implementierte Anweisungen) einschließen, um den neuen Eintrag als Cache-Treffer zu kennzeichnen.
  • Wenn das entsprechende Bit in dem oben besprochenen 4-Bit-Feld nicht gesetzt ist, dann kann ein Vergleich des Status und der Besitzinformationen vorgenommen werden. Wenn die Status- und Besitzinformationen für die neue Systemspeicher-Cache-Zeile und den zwischengespeicherten Wert der Status- und Besitzinformationen identisch sind, kann das entsprechende Bit im 4-Bit-Feld gesetzt werden, um diese neue Systemspeicher-Cache-Zeile zum Coherency Directory Tag 104 hinzuzufügen. Das Status- und Besitzfeld kann für alle Cache-Zeilen gelten, die mit dem Adressfeld übereinstimmen und die ein entsprechendes gültiges Bit im 4-Bit-Gültigkeitsfeld aufweisen. Wenn also der Status und der Besitz der zu bewertenden Cache-Zeile mit dem Status und dem Besitzfeld übereinstimmen, kann das entsprechende Bit des Gültigkeitsfeldes gesetzt werden. In Bezug auf die Status- und Besitzinformationen kann der Hardware-Sequenzer 118 basierend auf einer Bestimmung, dass das angegebene Bit nicht gesetzt ist, ferner Hardware (oder vom Prozessor implementierte Anweisungen) einschließen, um zu bestimmen, ob ein Status und ein Besitz, die dem neuen Eintrag zugeordnet sind, jeweils identisch mit dem Status und dem Besitz sind, die dem vorherigen Eintrag zugeordnet sind. Basierend auf einer Bestimmung, dass der Status und der Besitz, die dem neuen Eintrag zugeordnet sind, jeweils mit dem Status und dem Besitz, der dem vorherigen Eintrag zugeordnet ist, identisch sind, kann der Hardware-Sequenzer 118 ferner Hardware (oder vom Prozessor implementierte Anweisungen) einschließen, um das angegebene Bit zu setzen, um den neuen Eintrag zur Vorrichtung 100 hinzuzufügen. In diesem Zusammenhang kann sich das Setzen des angegebenen Bits auf das gültige Bit beziehen, welches dem spezifischen Systemspeicherblock oder der Cache-Zeile zugeordnet ist.
  • Wenn das entsprechende Bit in dem oben besprochenen 4-Bit-Feld nicht gesetzt ist, dann kann ein Vergleich des Status und der Besitzinformationen vorgenommen werden. Wenn die Status- und Besitzinformationen, wie sie aus den Statusinformationen 110 gelesen werden, nicht mit den Status- und Besitzinformationen übereinstimmen, die dem neuen Tag zugeordnet sind, kann dieses neue Tag dem TCAM 106 hinzugefügt werden. In dieser Hinsicht kann der Hardware-Sequenzer 118 basierend auf der Bestimmung, dass der Status und der Besitz, die dem neuen Eintrag zugeordnet sind, jeweils nicht mit dem Status und dem Besitz identisch sind, die dem vorherigen Eintrag zugeordnet sind, ferner Hardware (oder vom Prozessor implementierte Anweisungen) einschließen, um den neuen Eintrag zum Coherency Directory Tag 104 als einen anderen Eintrag als den vorherigen Eintrag hinzuzufügen.
  • Der Hardware-Sequenzer 118 kann ferner Hardware (oder vom Prozessor implementierte Anweisungen) einschließen, um zu bestimmen, ob sich der Status oder der Besitz, die der einen der angrenzenden Cache-Zeilen zugeordnet sind, geändert haben. Basierend auf einer Bestimmung, dass sich der Status oder der Besitz, die einer der angrenzenden Cache-Zeilen zugeordnet sind, geändert haben, kann der Hardware-Sequenzer 118 ferner Hardware (oder vom Prozessor implementierte Anweisungen) einschließen, um die eine der angrenzenden Cache-Zeilen zu kennzeichnen, für die sich der Status oder der Besitz als neuer Eintrag geändert hat. Der Hardware-Sequenzer 118 kann ferner Hardware (oder vom Prozessor implementierte Anweisungen) einschließen, um zu bestimmen, ob der TCAM 106 einen anderen Eintrag einschließt, der dem neuen Eintrag entspricht, beispielsweise indem er den TCAM 106 nach einem übereinstimmenden Eintrag durchsucht. Basierend auf einer Bestimmung, dass der TCAM 106 keinen anderen Eintrag einschließt, der dem neuen Eintrag entspricht, kann der Hardware-Sequenzer 118 ferner Hardware (oder vom Prozessor implementierte Anweisungen) einschließen, um den neuen Eintrag an einem nicht verwendeten Eintragsort des TCAM 106 hinzuzufügen.
  • Der aktuelle TCAM-Eintrag, der gerade übereinstimmte, muss möglicherweise ebenfalls aktualisiert werden, um die „Don't care“ Programmierung von einem oder mehreren der unteren Tag-Bits zu löschen. Diese Aktualisierung ist möglicherweise erforderlich, damit dieser Eintrag nicht übereinstimmt, wenn das aktuelle Tag das nächste Mal zum Durchsuchen des TCAM 106 verwendet wird.
  • Basierend auf einer Bestimmung, dass der TCAM 106 nicht einschließt, dass der andere Eintrag mit dem neuen Eintrag übereinstimmt, kann der Hardware-Sequenzer 118 ferner Hardware einschließen (oder Prozessor implementierte Anweisungen), um zu bestimmen, ob alle Eintragspositionen im TCAM 106 verwendet werden. Basierend auf einer Bestimmung, dass alle Eintragspositionen in dem TCAM 106 verwendet werden, kann der Hardware-Sequenzer 118 ferner Hardware (oder vom Prozessor implementierte Anweisungen) einschließen, um einen am wenigsten zuletzt verwendeten Eintrag des TCAM 106 zu entfernen. Der Hardware-Sequenzer 118 kann ferner Hardware (oder vom Prozessor implementierte Anweisungen) einschließen, um den neuen Eintrag an einem Eintragsort hinzuzufügen, der dem am wenigsten zuletzt verwendeten Eintrag des TCAM 106 entspricht.
  • Basierend auf einer Bestimmung, dass sich der Status oder der Besitz, welcher einer der angrenzenden Cache-Zeilen zugeordnet wurde, geändert hat, kann der Hardware-Sequenzer 118 ferner Hardware einschließen (oder vom Prozessor implementierte Anweisungen) um eine Programmierung zu löschen, die der einen der angrenzenden Cache-Zeilen zugeordnet ist, für die sich der Status oder der Besitz geändert hat, um die eine der angrenzenden Cache-Zeilen, für die sich der Status oder der Besitz geändert hat, aus den gruppierten Cache-Zeilen zu entfernen.
  • Gemäß einem Beispiel unter der Annahme, dass der Coherency Directory Tag 104 einen Eintrag für 10X, ein Gültigkeitsfeld 0011, und ein Status/Besitz SO einschließt und eine Snoop-Anforderung für die Cache-Zeilenadresse 110 empfangen wird, die den Status/den Besitz SO aufweist, dann kann der Eintrag für 10X auf die Adresse 1XX aktualisiert werden, das Gültigkeitsfeld kann auf 0111 gesetzt werden und SO kann als Antwort auf den Snoop zurückgegeben werden.
  • Ein Teil der Informationen in der Prozessor-Snoop-Anforderung und der Knotensteuerungsanforderung kann verwendet werden, um zu bestimmen, wie die Auswahl auf den Multiplexer 102 anzusteuern ist. Wenn es eine Prozessor-Snoop-Anforderung und keine Knotensteuerungsanforderung gibt, kann die Prozessstatus-Maschine 114 die Auswahlleitung zum Multiplexer 102 ansteuern, um die Prozessor-Snoop-Anforderung auszuwählen.
  • Die Prozessstatus-Maschine 114 kann den Multiplexer 102 in der beispielhaften Ausführung von 1 steuern. Die Prozessstatus-Maschine 114 kann einen Teil der Verstärkungsinformationen empfangen, die sich auf eine andere Anforderung beziehen, die ausgewählt ist.
  • In Bezug auf Informationen, die von dem Übereinstimmungscodierer 108 an die Prozessstatus-Maschine 114 und die LRU-Verfolgungsschaltung 112 gesendet werden, können sowohl die Prozessstatus-Maschine 114 und die LRU-Verfolgungsschaltung 112 den Übereinstimmungs-/Nichtübereinstimmungsindikator und die TCAM-Zeilenadresse des übereinstimmenden Eintrags vom Übereinstimmungscodierer 108 empfangen.
  • Die Directory-Status-Ausgabe in 1 kann die Status- und Besitzinformationen für eine Übereinstimmungsanforderung einschließen. Die Directory-Status-Ausgabe kann an andere Schaltungen innerhalb der Knotensteuerung oder an die für die Prozessoranwendung spezifische integrierte Schaltung (ASIC) gesendet werden, wo sich die Vorrichtung 100 befindet. Die anderen Schaltungen können die Schaltung einschließen, welche die anfängliche Anforderung an den Coherency Directory Cache gesendet hat.
  • Die in 1 gezeigte Cache-Treffer/Fehltreffer-Status-Ausgabe kann eine Anzeige darüber darstellen, ob die Anforderung mit einem Eintrag innerhalb des Coherency Directory Cache übereinstimmte oder nicht. Die Ausgabe der Cache-Treffer/Fehltreffer-Status-Ausgabe kann an andere Schaltungen innerhalb der Knotensteuerung oder des Prozessor-ASIC gesendet werden, in denen sich die Vorrichtung 100 befindet. Die anderen Schaltungen können die Schaltung einschließen, welche die anfängliche Anforderung an den Coherency Directory Cache gesendet hat.
  • 2 veranschaulicht einen Prozessablauf, um den Betrieb der Vorrichtung 100 zu veranschaulichen. Der Prozessablauf kann von der Prozessstatus-Maschine 114 ausgeführt werden. Verschiedene Operationen der Prozessstatus-Maschine 114 können von dem Hardware-Sequenzer 118 ausgeführt werden.
  • Unter Bezugnahme auf 2 kann bei Block 200 der Prozessablauf mit Bezug auf den Betrieb der Prozessstatus-Maschine 114 starten.
  • Bei Block 202 kann die Prozessstatus-Maschine 114 bestimmen, ob eine Anforderung (z. B. eine Prozessor-Snoop-Anforderung, eine Knotensteuerungsanforderung, etc.) empfangen wurde.
  • Basierend auf einer Bestimmung bei Block 202, dass die Anforderung (z. B. die Prozessor-Snoop-Anforderung, die Knotensteuerungsanforderung, etc.) empfangen wurde, kann die Prozessstatus-Maschine 114 bei Block 204 den TCAM 106 auslösen, um den Coherency Directory Tag 104 zu durchsuchen. In dieser Hinsicht kann die Adresse, die der Cache-Zeile zugeordnet ist, die in der empfangenen Anforderung eingeschlossen ist, verwendet werden, um nach einem übereinstimmenden Tag-Wert zu suchen. Wie vorliegend offenbart, kann für das TCAM 106 implementierte Coherency Directory Tag 104 jeder Cache-Eintrag einen TCAM-Eintrag einschließen, um die obere Adresse für einen Vergleich zu enthalten. Diese obere Adresse kann als Tag bezeichnet werden. Die Directory Tags können den Teil der Verzeichnisadresse darstellen, der die Verzeichnis-Tags eindeutig identifiziert. Die Tags können verwendet werden, um das Vorhandensein einer Directory Cache-Zeile in der Vorrichtung 100 zu erfassen, und wenn dies der Fall ist, kann der übereinstimmende Eintrag identifizieren, wo sich in dem Speicher der Verzeichnisstatusinformationen 110 die zwischengespeicherten Informationen befinden.
  • Bei Block 206 kann die Prozessstatus-Maschine 114 bestimmen, ob eine Übereinstimmung in der TCAM 106 in Bezug auf die Anforderung erfaßt wird. Unter der Annahme, dass eine Anforderung für die Adresse 1110 in Bezug auf TCAM-Einträge für die Adresse 1111, die Adresse 111 X und die Adresse 11 XX empfangen wird (z. B. mit bis zu zwei „Don't care“ -Bits mit niedrigstwertigen Ziffern), können Übereinstimmungen wie folgt bestimmt werden. Das 0-Bit der empfangenen Adresse stimmt nicht mit dem entsprechenden 1-Bit der TCAM-Adresse 1111 überein, und daher wäre ein Fehltreffer das Ergebnis. Umgekehrt wird das 0-Bit der empfangenen Adresse nicht mit den entsprechenden X-Bits der TCAM-Adressen 111X und 11XX verglichen, was zu einer Übereinstimmung führt.
  • Basierend auf einer Bestimmung bei Block 206, dass eine Übereinstimmung festgestellt wird, kann bei Block 208 die Prozessstatus-Maschine 114 die TCAM Zeilenadresse erhalten, welche der Übereinstimmung bei Block 206 zugeordnet ist.
  • Bei Block 210 kann eine Bestimmung gemacht werden, ob die Anforderung bei Block 202 eine Statusänderungsanforderung ist. Basierend auf einer Bestimmung bei Block 210, dass die Anforderung bei Block 202 eine Statusänderungsanforderung ist, kann die Prozessstatus-Maschine 114 zu Block 212 fortfahren. Bei Block 212 kann die Prozessstatus-Maschine 114 gespeicherte Statusinformationen untersuchen, um zu bestimmen, ob mehrere gültige Bits gesetzt sind.
  • Basierend auf einer Bestimmung bei Block 212, dass mehrere gültige Bits nicht gesetzt sind, kann die Statusinformation bei Block 214 aktualisiert werden.
  • Basierend auf einer Bestimmung bei Block 212, dass mehrere gültige Bits gesetzt sind, kann die Prozessstatus-Maschine 114 bei Block 216 neue „Don't care“ -Bits für den aktuellen TCAM-Eintrag berechnen und aktualisieren. Beispielsweise kann für einen einzelnen TCAM-Eintrag, der vier Speicherblöcke darstellt, das höchstwertige „Don't care“ -Bit gelöscht und von „Don't care“ zu einer Übereinstimmung mit eins (oder null) geändert werden.
  • Bei Block 218 kann die Prozessstatus-Maschine 114 Statusinformationen aktualisieren und gültige Bits anpassen. Zum Beispiel können für die Übereinstimmung mit eins, wie oben erläutert, für zugeordnete Statusinformationen gültige Bits, die alle 1111 sind in 1100 geändert werden.
  • Bei Block 220 kann die Prozessstatus-Maschine 114 einen neuen TCAM-Eintrag hinzufügen, welcher der Statusänderungsanforderung zugeordnet ist. In dieser Hinsicht kann die Prozessstatus-Maschine 114 den Eintrag in den TCAM und die zugehörigen Statusinformationen schreiben, die mit der Adresse übereinstimmen, die der Statusänderungsanforderung zugeordnet ist.
  • Basierend auf einer Bestimmung bei Block 210, dass die Anforderung bei Block 202 keine Statusänderungsanforderung ist, kann die Prozessstatus-Maschine 114 zu Block 222 fortfahren. Bei Block 222 kann die Prozessstatus-Maschine 114 die zuletzt verwendete Verfolgungsschaltung 112 in Bezug auf die Übereinstimmung aktualisieren, um die TCAM-Zeilenadresse an den Anfang einer Liste von TCAM-Zeilenadressen zu verschieben, um die Verwendung der TCAM-Zeilenadresse als die am meisten kürzlich verwendete TCAM-Zeilenadresse anzuzeigen.
  • Bei Block 224 kann die Prozessstatus-Maschine 114 die Statusinformationen in Bezug auf die Übereinstimmung von den Statusinformationen 110 erhalten. Die Statusinformationen 110 können als ein Speicher oder Speicherelement beschrieben werden, das geschrieben und gelesen werden kann. In der beispielhaften Implementierung von 1 können die Statusinformationen 110 in einem Static Random Access Memory (SRAM) oder einem anderen Speichertyp gespeichert sein.
  • Bei Block 226 kann die Prozessstatus-Maschine 114 gültige Speicherblock-Bits dekodieren. Die gültigen Bits des Systemspeicherblocks oder der Cache-Zeile können sich innerhalb des Statusinformationsspeichers 110 befinden. In dieser Hinsicht kann, wenn die TCAM-Zeilenadresse einen Eintrag darstellt, der mehr als eine Cache-Zeile darstellt, die Prozessstatus-Maschine 114 die zugeordneten blockgültigen Bits decodieren, um das gültige Bit zu identifizieren, das dem Systemspeicherblock zugeordnet ist. Wenn gemäß einem Beispiel die TCAM-Zeilenadresse von sieben einen Eintrag darstellt, der mehr als eine Cache-Zeile darstellt, kann die Prozessstatus-Maschine 114 die zugeordneten gültigen Block-Bits der Binärdatei 1101 decodieren, um das dem Systemspeicherblock zugeordnete gültige Bit von 1 zu identifizieren.
  • Bei Block 228 kann die Prozessstatus-Maschine 114 bestimmen, ob der aktuelle Block gültig ist. Beispielsweise kann die Prozessstatus-Maschine 114 bestimmen, ob das zugeordnete gültige Block-Bit aktiv oder inaktiv ist (d. h. wo aktiv/inaktiv verwendet werden kann, um den Status eines gültigen Bits zu beschreiben, ohne zu definieren, ob der Status „1“ oder „0“ gültig oder ungültig darstellt). In dieser Hinsicht kann eine Implementierung definieren, ob 1 gültig oder ungültig ist. Andere Implementierungen können jedoch eine entgegengesetzte Zuordnung definieren.
  • Basierend auf einer Bestimmung bei Block 228, dass der aktuelle Block gültig ist, kann die Prozessstatus-Maschine 114 bei Block 230 den Cache Treffer-/Fehltrefferstatus ausgeben. Der Cache Treffer-/Fehltreffer-Status kann an den Knotensteuerungs-/Prozessor-Anforderer und andere Teile des ASIC ausgegeben werden, die den Anforderer einschließen können.
  • Bei Block 232 wird die Prozessstatus-Maschine 114 die Verzeichnisstatusinformationen in Reaktion auf die bei Block 202 empfangene Anforderung ausgegeben.
  • Basierend auf einer Bestimmung bei Block 228, dass der aktuelle Block nicht gültig ist, kann die Prozessstatus-Maschine 114 bei Block 234 bestimmen, ob ein aktueller Status der verarbeiteten Statusanforderung einem gespeicherten Status entspricht. Der aktuelle Status kann aus einer Suche in dem Coherency Directory ermittelt werden. Der gespeicherte Status kann in den in den Statusinformationen 110 gespeicherten Informationen beschrieben sein. Der gespeicherte Status kann die Status- und Besitzinformationen der Cache-Zeile(n) einschließen, die im Coherency Directory Cache enthalten sind. In dieser Hinsicht kann die Prozessstatus-Maschine 114 bestimmen, ob der Status zwischen dem Block, welcher der empfangenen Anforderung bei Block 202 zugeordnet ist, und dem gespeicherten Status identisch ist. Die gespeicherten Statusinformationen können Informationen darstellen, die sich auf den aktuellen Coherency Cache-Eintrag beziehen. Diese Bestätigung kann zusätzliche Informationen (z. B. durch Lesen des aktuellen Status) aus dem vollständigen Coherency Directory verwenden.
  • Basierend auf einer Bestimmung bei Block 234, dass der aktuelle Status gleich dem gespeicherten Status bei Block 236 ist, kann die Prozessstatus-Maschine 114 das gültige Block-Bit aktualisieren, welches dem neuen Speicherblock zugeordnet ist. In dieser Hinsicht kann das gültige Bit für den neuen Block gesetzt werden.
  • Basierend auf einer Bestimmung bei Block 234, dass der aktuelle Status nicht mit dem gespeicherten Status identisch ist, kann bei Block 238 die Prozessstatus-Maschine 114 den übereinstimmenden TCAM-Eintrag aktualisieren, um „Don't care“ zu entfernen. In dieser Hinsicht kann der „Don't care“ TCAM-Eintrag entfernt werden, da der TCAM-Eintrag nicht freigegeben werden kann, da jetzt einzelne TCAM-Einträge benötigt werden. In dieser Hinsicht kann das „Don't care“ -Bit innerhalb des TCAM-Eintrags geändert oder entfernt werden, um jetzt eine genauere Übereinstimmung mit jeder neuen eingehenden Anforderung zu verwenden. Wenn der Status oder Besitz einer der vier System Cache-Zeilen, wie oben erläutert, eine Aktualisierung der Status- oder Besitzinformationen erfordert und andere Cache-Zeilen, die einen TCAM-Eintrag teilen, nicht aktualisiert werden, kann der neue Tag wie oben beschrieben zum TCAM 106 hinzugefügt werden. Der aktuelle TCAM-Eintrag, der gerade übereinstimmte, muss möglicherweise auch aktualisiert werden, um die „Don't care“ Programmierung eines oder mehrerer der unteren Tag-Bits zu löschen. Diese Aktualisierung ist möglicherweise erforderlich, damit dieser Eintrag das nächste Mal nicht übereinstimmt, wenn das aktuelle Tag zum Durchsuchen des TCAM 106 verwendet wird, da die Status- und Besitzinformationen nicht mehr identisch sind und sie möglicherweise keinen TCAM-Eintrag mehr teilen. Unter der Annahme, dass der TCAM den Eintrag 00XX einschließt und gültige Bits für 0000, 0001 und 0010 und ein ungültiges Bit für 0011 vorhanden sind, wird gemäß einem Beispiel eine Anforderung für 0011 empfangen und 0011 hat einen anderen Status/Besitz als der Rest (z. B. 0000, 0001 und 0010), bei den Blöcken 238 und 240 kann der TCAM-Eintrag in 000X geändert werden, und ein neuer Eintrag für 0011 kann hinzugefügt werden. In Bezug auf 0010 können zwei neue Einträge hinzugefügt werden (z. B. einer für 0010 und einer für 0011).
  • Bei Block 240 kann die Prozessstatus-Maschine 114 ein TCAM-Tag für den neuen TCAM-Eintrag bestimmen und die Statusinformationen entsprechend aktualisieren. In Bezug auf Block 240 kann Block 240 keine „Don't cares“ verwenden, da die Statusinformationen, welche der neuen Anforderung zugeordnet sind, nicht mit den im Coherency Directory Cache gespeicherten Status- oder Besitzinformationen übereinstimmen. Das heißt, der TCAM-Eintrag muss möglicherweise genauer sein und kann keine Gruppe von Systemspeicherblöcken oder Cache-Zeilen darstellen.
  • Basierend auf einer Bestimmung bei Block 206, dass eine Übereinstimmung nicht festgestellt wird, kann die Prozessstatus-Maschine 114 bei Block 242, einen TCAM-Tag mit „Don't cares“ bestimmen, welche der Gruppe von Speicherblöcken zugeordnet ist, die durch die Adresse des anfordernden Blocks dargestellt werden. Für Block 242 ermöglicht dieser Pfad in Bezug auf den Pfad von Block 206 zu Block 242, dass ein TCAM-Eintrag eine Gruppe von Systemspeicherblöcken oder Cache-Zeilen darstellt, da dies die erste Anforderung innerhalb der Gruppe von Systemspeicherblöcken oder Cache-Zeilen ist und da sie die erste im Cache ist, ist ein Vergleich mit irgendwelchen gespeicherten Status- oder Besitzinformationen, die in den Statusinformationen 110 gespeichert sein können, nicht erforderlich.
  • Bei Block 244 kann die Prozessstatus-Maschine 114 den TCAM-Eintrag unter Verwendung der zuletzt verwendeten Verfolgungsschaltung 112 auswählen. Das heißt, die Prozessstatus-Maschine 114 kann die Zeile/Position für den neuen TCAM-Eintrag und einen TCAM-Eintrag zur Löschung auswählen. Für die beispielhafte Implementierung von 1 können die nicht verwendeten Einträge auch die zuletzt verwendeten Einträge darstellen.
  • Bei Block 246 kann die Prozessstatus-Maschine 114 bestimmen, ob der ausgewählte TCAM-Eintrag von Block 244 aktiv ist. Das TCAM kann den Status „Nie übereinstimmen“ einschließen, um einen Eintrag als ungültig zu identifizieren. Ein TCAM-Eintrag kann von aktiv zu inaktiv wechseln, wenn ein TCAM-Eintrag möglicherweise nicht verwendet wurde, eine Hintergrund-Scrubbing-Operation, wie sie vorliegend in Bezug auf 3 offenbart ist, mehrere kombinierte TCAM-Einträge zu einem einzigen Eintrag kombiniert hat oder der TCAM-Eintrag entfernt ist.
  • Basierend auf einer Bestimmung bei Block 246, dass der ausgewählte TCAM-Eintrag aus Block 244 aktiv ist, kann die Prozessstatus-Maschine 114 bei Block 248 Statusinformationen in das Coherency Directory schreiben, in dem der Cache ausgeführt ist. Ferner kann bei Block 250 die Prozessstatus-Maschine 114 Statusinformationen aktualisieren.
  • Basierend auf einer Bestimmung bei Block 246, dass der ausgewählte TCAM-Eintrag von Block 244 nicht aktiv ist, kann die Prozessstatus-Maschine 114 bei Block 250 den Statusinformationeneintrag aktualisieren, der dem TCAM-Eintrag zugeordnet ist, z. B. durch Schreiben des neuen TCAM-Eintrags an die Position des vorherigen TCAM-Eintrags.
  • Bei Block 252 kann die Prozessstatus-Maschine 114 den TCAM 106 mit dem Tag aktualisieren, wie bei Block 242 bestimmt.
  • Bei Block 254 kann die Prozessstatus-Maschine 114 einen Cache-Fehltreffer in den ursprünglichen Anforderungsschaltkreis oder andere Teile der Knotensteuerung oder des Prozessors anfordern, welcher den Coherency Directory Cache einschließt.
  • In Bezug auf 2 kann ein neuer TCAM-Eintrag erfolgen, wenn eine empfangene Cache-Zeilenanforderung die aktuellen „Don't care“ -Bits modifizieren wird, um das neue Paar von Systemspeicherblöcken abzudecken, aber die gültigen Bits können für den Speicherblock markiert sein, zu dem die Cache-Zeilenanforderung gehört.
  • 3 veranschaulicht einen Scrubber-Flow, um den Betrieb der Vorrichtung 100 zu veranschaulichen. Der Scrubber Flow kann von der Hintergrund Scrubbingstatus-Maschine 116 ausgeführt sein. Verschiedene Operationen der Hintergrund Scrubbingstatus-Maschine 116 können von dem Hardware-Sequenzer 120 ausgeführt sein. Die Operationen, die von der Hintergrund Scrubbingstatus-Maschine 116 ausgeführt werden, können ausgeführt werden, wenn eine Eintrags-Statusinformation aktualisiert wird, aber diese Operation kann zusätzliche TCAM-Such- und Schreiboperationen verwenden, und die Prozessstatus-Maschine 114 kann damit beschäftigt sein, die nächste Anforderung zu verarbeiten und kann unfähig sein, diese Operationen auszuführen. Somit kann die Hintergrund Scrubbingstatus-Maschine 116 ausgeführt werden, ohne die Operationen der Prozessstatus-Maschine 114 zu stören.
  • Bezugnehmend auf 3 kann bei Block 300 der Scrubber Flow in Bezug auf den Betrieb der Scrubbingstatus-Maschine 116 beginnen.
  • Bei Block 302 kann die Scrubbingstatus-Maschine 116 einen Zählwert auf Null setzen. Der Zählwert kann auf Null gesetzt werden, um den gesamten Inhalt des TCAM 106 effektiv zu analysieren.
  • Bei Block 304 kann die Scrubbingstatus-Maschine 116 bestimmen, ob eine Anforderung (z. B. eine Prozessor-Snoop-Anforderung, eine Knotensteuerungs-Anforderung, etc.) empfangen wurde.
  • Basierend auf einer Bestimmung bei Block 304, dass eine Anforderung (z. B. eine Prozessor-Snoop-Anforderung, eine Knotensteuerungs-Anforderung, etc.) empfangen wurde, kann die Verarbeitung zu Block 304zurückkehren, bis die Anforderung von der Prozessstatus-Maschine 114 verarbeitet wird.
  • Basierend auf einer Bestimmung bei Block 304, dass eine Anforderung (z. B. eine Prozessor-Snoop-Anforderung, eine Knotensteuerungs-Anforderung, etc.) bei Block 306 nicht empfangen wurde, kann die Scrubbingstatus-Maschine 116 einen TCAM-Eintrag lesen, der durch die Zählung an Block 302 ausgewählt wurde. Die Anzahl kann als Zeilennummer für den zu analysierenden TCAM-Eintrag verwendet werden, wobei die Zeilennummer die Adresse des TCAM-Eintrags darstellen kann.
  • Bei Block 308 kann die Scrubbingstatus-Maschine 116 eine aktuelle Statusinformation für den bei Block 306 gelesenen TCAM-Eintrag lesen.
  • Bei Block 310 kann die Scrubbingstatus-Maschine 116 bestimmen, ob ein zugeordneter Eintrag (z. B. von Block 306) vollständig expandiert ist, so dass alle möglichen Speicherblöcke durch einen einzelnen Eintrag dargestellt sind oder er nicht verwendet ist. Wenn der TCAM-Eintrag gelesen wird, können die unteren Bits des Tags untersucht werden. Wenn der Status der unteren Tag-Bits mit den Werten übereinstimmt, die allen möglichen „Don't cares“ zugeordnet sind, wird der zugehörige Eintrag vollständig expandiert. Die Statusinformation 110 kann auch gelesen werden, um die gültigen Bits zu untersuchen.
  • Basierend auf einer Bestimmung bei Block 310, dass der zugehörige Eintrag verwendet wird und nicht vollständig expandiert ist, kann die Scrubbingstatus-Maschine 116 bei Block 312, den TCAM nach angrenzenden Speicherblöcken durchsuchen. In dem offenbarten Beispiel kann der TCAM 106 ein Bit-Feld einschließen, das der Suchoperation zugeordnet ist und ein globales „Don't care“ bei der Suche ermöglicht. Die unteren Bits der Suche können auf „Don't care“ gesetzt werden und eine Durchsuchung des TCAM kann durchgeführt werden. In dieser Hinsicht kann der Hardware-Sequenzer 120 ferner Hardware (oder vom Prozessor implementierte Anweisungen) einschließen, um für den Coherency Directory Tag 104, der Informationen zu mehreren Cache-Zeilen einschließt, angrenzende Cache-Zeilen zu identifizieren. In dieser Hinsicht kann der TCAM eine globale „Don't care“ -Bitmaske einschließen, die das Ausschließen von Bits in einer Suchoperation ermöglicht. In diesem Beispiel kann die globale „Don't care“ -Bitmaske auf die unteren Adressbits des Coherency Directory Tags 104 angewendet werden.
  • Bei Block 314 kann die Scrubbingstatus-Maschine 116 bestimmen, ob eine TCAM-Übereinstimmung erfasst wird. Die Scrubbingstatus-Maschine 166 kann ferner einen Status und einen Besitz bestimmen, die jeder der erfassten angrenzenden Cache-Zeilen zugeordnet sind.
  • Basierend auf einer Bestimmung bei Block 314, dass bei Block 316 eine Übereinstimmung erfasst wird, kann die Scrubbingstatus-Maschine 116 neue Statusinformationen erhalten, die einem neu übereinstimmenden Eintrag zugeordnet sind. In dieser Hinsicht kann der auf dem Zählwert basierende Eintrag von der Suche oder Berücksichtigung ausgeschlossen werden, um eine Übereinstimmung mit dem falschen Eintrag zu verhindern. Ferner können TCAM-Einträge durchsucht und berücksichtigt werden, deren Zeilenadresse größer als der Zählwert ist.
  • Bei Block 318 kann die Scrubbingstatus-Maschine 116 bestimmen, ob die neue Statusinformation mit den aktuellen Statusinformationen identisch ist, die dem gelesenen TCAM-Eintrag zugeordnet wurde, der auf dem Zählwert basiert.
  • Basierend auf einer Bestimmung bei Block 318, dass die neuen Statusinformationen mit den aktuellen Statusinformationen identisch sind, kann bei Block 320 die Scrubbingstatus-Maschine 116 die gelesenen Statusinformationen aktualisieren.
  • Bei Block 322 kann die Scrubbingstatus-Maschine 116 den TCAM-Eintrag aktualisieren, der basierend auf dem Zählwert gelesen wurde, um ein „Don't care“ -Bit einzuschließen. Der TCAM-Eintrag kann neu geschrieben werden, wobei einige der unteren Tag-Bits auf einen „Don't care“ -Wert gesetzt sind. Auf diese Weise kann dieser TCAM-Eintrag mehrere Systemspeicherblöcke oder Cache-Zeilen darstellen.
  • Bei Block 324 kann die Scrubbingstatus-Maschine 116 den übereinstimmenden TCAM Eintrag ungültig machen, der durch das Durchsuchen des TCAM erhalten wurde.
  • Bei Block 326 kann die Scrubbingstatus-Maschine 116 die am wenigsten kürzlich verwendete Verfolgungsschaltung 112 aktualisieren.
  • Bei Block 328 kann die Scrubbingstatus-Maschine 116 den Zählwert um eins inkrementieren.
  • Bei Block 330 kann die Scrubbingstatus-Maschine 116 bestimmen, ob die Anzahl größer als eine Anzahl ist, die einem maximalen TCAM-Eintrag zugeordnet ist.
  • Basierend auf einer Bestimmung bei Block 330, dass die Anzahl nicht größer als ein maximaler TCAM-Eintrag ist, kann die weitere Verarbeitung zu Block 304 zurückkehren.
  • Basierend auf einer Bestimmung bei Block 330, daß die Anzahl größer als ein maximaler TCAM-Eintrag ist, kann die Scrubbingstatus-Maschine 116 bei Block 332 vor dem Neustart eine Zeitverzögerung implementieren. Die Zeitverzögerung kann weggelassen werden. Es kann jedoch eine verringerte Notwendigkeit bestehen, die Einträge der Coherency Directory Cache Vorrichtung 100 erneut zu scrubben, bis die Einträge aktualisiert wurden. Die Zeitverzögerung kann ein Zeitfenster ermöglichen, in dem Aktualisierungen aufgetreten sind. In dieser Hinsicht kann nach jeder Eintragsaktualisierung eine Operation vom Scrub-Typ ausgeführt werden. Aus Leistungsgründen kann die Operation vom Scrub-Typ jedoch im Hintergrund ausgeführt werden, damit Anforderungen mit einer höheren Priorität als Scrubbing-Operationen verarbeitet werden können.
  • 4-6 veranschaulichen jeweils ein beispielhaftes Blockdiagramm 400, ein beispielhaftes Flussdiagramm eines Verfahrens 500 und ein weiteres beispielhaftes Blockdiagramm 600 für die speicherstrukturbasierte Coherency Directory Cache-Implementierung. Das Blockdiagramm 400, das Verfahren 500 und das Blockdiagramm 600 können beispielhaft und nicht einschränkend in der oben beschriebenen Vorrichtung 100 unter Bezugnahme auf 1 implementiert sein. Das Blockdiagramm 400, das Verfahren 500 und das Blockdiagramm 600 können in anderen Vorrichtungen ausgeführt werden. Zusätzlich zum Zeigen des Blockdiagramms 400 zeigt 4 die Hardware der Vorrichtung 100, welche die Schritte des Blockdiagramms 400 ausführen kann. Die Hardware kann den Hardware-Sequenzer 118 (und den Hardware-Sequenzer 120) einschließlich Hardware einschließen, um die Schritte des Blockdiagramms 400 auszuführen. Alternativ kann die Hardware einen Prozessor (nicht gezeigt) und einen Speicher (nicht gezeigt) einschließen, wie beispielsweise ein nicht-vorübergehendes computerlesbares Medium, das maschinenlesbare Anweisungen speichert, die, wenn sie vom Prozessor ausgeführt werden, den Prozessor veranlassen, die Schritte des Blockdiagramms 400 auszuführen. Der Speicher kann ein nicht-vorübergehendes computerlesbares Medium darstellen. 5 kann ein Verfahren zur speicherstrukturbasierten Coherency Directory Cache-Implementierung und die Schritte des Verfahrens darstellen. 6 kann ein nicht-vorübergehendes computerlesbares Medium 602 darstellen, auf dem maschinenlesbare Anweisungen gespeichert sind, um eine speicherstrukturbasierte Coherency Directory Cache-Implementierung bereitzustellen. Wenn die maschinenlesbaren Anweisungen ausgeführt werden, veranlassen sie einen Prozessor 604, die Schritte des Blockdiagramms 600 auszuführen, das auch in 6 gezeigt ist.
  • Der Prozessor (nicht dargestellt) von 4 und/oder der Prozessor 604 von 6 kann einen einzelnen oder mehrere Prozessoren oder andere Hardware-Verarbeitungsschaltungen einschließen, um die hier beschriebenen Verfahren, Funktionen und anderen Prozesse auszuführen. Diese Verfahren, Funktionen und anderen Prozesse können als maschinenlesbare Anweisungen ausgeführt sein, die auf einem computerlesbaren Medium gespeichert sind, das nicht-vorübergehend sein kann (z. B. das nicht-vorübergehende computerlesbare Medium 602 von 6), wie beispielsweise Hardwarespeichervorrichtungen (z. B. RAM (Direktzugriffsspeicher), ROM (Nur-Lese-Speicher), EPROM (löschbares, programmierbares ROM), EEPROM (elektrisch löschbares, programmierbares ROM), Festplatten und Flash-Speicher). Der Speicher (nicht gezeigt) von 4 kann einen RAM einschließen, in dem sich die maschinenlesbaren Anweisungen und Daten für einen Prozessor zur Laufzeit befinden können.
  • Unter Bezugnahme auf 1-4, und insbesondere auf das in 4 gezeigte Blockdiagramm 400, die Hardware-Sequenzer 118 (und die Hardware-Sequenzer 120) können Hardware (z. B. bei 402) für ein Coherency Directory-Tag 104 einschließen, das Informationen einschließt, die sich auf mehrere Cache-Zeilen beziehen, um angrenzende Cache-Zeilen zu identifizieren.
  • Der Hardware-Sequenzer 118 (und der Hardware-Sequenzer 120) kann Hardware (z. B. bei 404) einschließen, um einen Status zu bestimmen, welcher jeder der angrenzenden Cache-Zeilen zugeordnet ist.
  • Basierend auf einer Bestimmung, dass der Status, welcher einer der angrenzenden Cache-Zeilen zugeordnet ist, identisch zu dem Status ist, der den verbleibenden aktiven angrenzenden Cache-Zeilen zugeordnet ist, kann der Hardware-Sequenzer 118 (und der Hardware-Sequenzer 120) Hardware einschließen, um die angrenzenden Cache-Zeilen zu gruppieren (z. B. bei 406).
  • Der Hardware-Sequenzer 118 (und der Hardware-Sequenzer 120) kann Hardware dafür einschließen, (beispielsweise bei 408), für den Coherency Directory Cache, einen Eintrag in einer Speicherstruktur zum Identifizieren der Informationen zu verwenden, die sich auf die gruppierten Cache-Zeilen beziehen. In dieser Hinsicht können Daten, die dem Eintrag in der Speicherstruktur zugeordnet sind, mehr als zwei mögliche Speicherzustände einschließen.
  • Unter Bezugnahme auf 1-3 und 5, und insbesondere 5, kann das Verfahren für das Verfahren 500 bei Block 502 das Identifizieren von angrenzenden Cache-Zeilen für einen Coherency Directory-Tag 104 einschließen, der Informationen einschließt, die sich auf mehrere Cache-Zeilen beziehen.
  • Bei Block 504 kann das Verfahren das Bestimmen eines Status einschließen, der jeder der angrenzenden Cache-Zeilen zugeordnet ist.
  • Basierend auf einer Bestimmung, dass der Status, der einer der angrenzenden Cache-Zeilen zugeordnet ist, mit dem Status identisch ist, der den verbleibenden aktiven angrenzenden Cache-Zeilen zugeordnet ist, kann das Verfahren bei Block 506 das Gruppieren der angrenzenden Cache-Zeilen einschließen.
  • Bei Block 508 kann das Verfahren das Verwenden eines einzelnen Eintrags für das Coherency Directory Tag 104 in einem TCAM 106 einschließen, um die Informationen zu identifizieren, die sich auf die gruppierten Cache-Zeilen beziehen.
  • Unter Bezugnahme auf 1-3 und 6 und insbesondere 6, für das Blockdiagramm 600, kann das nicht-vorübergehende computerlesbare Medium 602 Anweisungen 606 einschließen, um, nach Empfang einer Anforderung (z. B. wie vorliegend in Bezug auf die 1 und 2 offenbart) oder nach Abschluss einer zuvor empfangenen Anforderung (z. B. wie vorliegend in Bezug auf 1 und 3 offenbart), die sich auf ein Coherency Directory-Tag 104 beziehen, das Informationen einschließt, die sich auf mehrere Cache-Zeilen beziehen, eine Gruppe einer angegebenen Anzahl angrenzender Cache-Zeilen zu identifizieren.
  • Der Prozessor 604 kann die Anweisungen 608 abrufen, dekodieren und ausführen, um einen Status und einen Besitz zu bestimmen, der jeder der angrenzenden Cache-Zeilen zugeordnet ist.
  • Basierend auf einer Bestimmung, dass der Status und der Besitz, die einer der angrenzenden Cache-Zeilen zugeordnet sind, jeweils identisch mit dem Status und dem Besitz sind, der verbleibenden aktiven angrenzenden Cache-Zeilen zugeordnet ist, kann der Prozessor 604 die Anweisungen 610 abrufen, decodieren und ausführen, um für das Kohärenzverzeichnis-Tag 104 einen Eintrag in einer Speicherstruktur zu verwenden, um die Informationen zu identifizieren, die sich auf die Gruppe der angegebenen Anzahl angrenzender Cache-Zeilen beziehen. Daten, die dem Eintrag in der Speicherstruktur zugeordnet sind, können mehr als zwei mögliche Speicherzustände einschließen.
  • Was vorliegend beschrieben und veranschaulicht wurde, ist ein Beispiel zusammen mit einigen seiner Variationen. Die hier verwendeten Begriffe, Beschreibungen und Figuren sind nur zur Veranschaulichung aufgeführt und sollen keine Einschränkungen darstellen. Innerhalb des Geistes und des Umfangs des Gegenstandes, der durch die folgenden Ansprüche und ihre Äquivalente definiert werden soll, sind viele Variationen möglich, in denen alle Begriffe die Bedeutung ihres weitestgefasstesten angemessenen Sinns haben sollen, es sei denn, etwas anderes ist angegeben.

Claims (20)

  1. Eine Vorrichtung, umfassend: einen Hardware-Sequenzer, einschließend Hardware zum: Identifizieren angrenzender Cache-Zeilen für einen Coherency Directory Cache, der Informationen zu mehreren Cache-Zeilen einschließt; Bestimmen eines Status, der jeder der angrenzenden Cache-Zeilen zugeordnet ist; Gruppieren der angrenzenden Cache-Zeilen, basierend auf einer Bestimmung, dass der einer der angrenzenden Cache-Zeilen zugeordnete Status mit dem Status identisch ist, der den verbleibenden aktiven angrenzenden Cache-Zeilen zugeordnet ist; und Verwenden eines Eintrags in einer Speicherstruktur für den Coherency Directory Cache, um die Informationen zu identifizieren, die sich auf die gruppierten Cache-Zeilen beziehen, wobei Daten, die dem Eintrag in der Speicherstruktur zugeordnet sind, mehr als zwei mögliche Speicherstatus einschließen.
  2. Vorrichtung nach Anspruch 1, wobei die Speicherstruktur einen ternären inhaltsadressierbaren Speicher einschließt (TCAM).
  3. Vorrichtung nach Anspruch 1, wobei der Eintrag eine Adresse umfasst, die eindeutig den Eintrag in der Speicherstruktur identifiziert.
  4. Vorrichtung nach Anspruch 3, wobei die Hardware ferner den Hardware-Sequenzer veranlassen soll: eine angegebene Anzahl niedrigerer Bits der Adresse als „X“-Bits zu schreiben, wobei die dem Eintrag in der Speicherstruktur zugeordneten Daten die möglichen Speicherzustände „0“, „1“ oder „X“ einschließen und wobei der „X“-Speicherzustand für „0“ oder „1“ steht; und basierend auf den geschriebenen unteren Bits die Coherency Directory Cache-Verfolgung als gültig für jede Cache-Zeile der gruppierten Cache-Zeilen zu kennzeichnen.
  5. Vorrichtung nach Anspruch 1, wobei der Eintrag einen einzelnen Eintrag in der Speicherstruktur umfasst, um die Informationen bezogen auf die gruppierten Cache-Zeilen zu identifizieren.
  6. Vorrichtung nach Anspruch 1, wobei eine Anzahl der gruppierten Cache-Zeilen zu vier angrenzenden Cache-Zeilen gleich ist.
  7. Vorrichtung nach Anspruch 1, wobei die Hardware ferner den Hardware-Sequenzer dazu veranlassen soll: den Eintrag zu verwenden, um Folgendes zu kennzeichnen: N ull-Cache-Zei len, keinen gültigen Eintrag, der den Cache-Zeilen zugeordnet ist oder eine angegebene Anzahl der angrenzenden Cache-Zeilen, wobei die angegebene Anzahl größer als eins ist.
  8. Vorrichtung nach Anspruch 1, wobei die Hardware ferner den Hardware-Sequenzer dazu veranlassen soll: den Eintrag als neuen Eintrag zu kennzeichnen; zu bestimmen, ob die Speicherstruktur einen vorherigen Eintrag einschließt, der dem neuen Eintrag entspricht; und den neuen Eintrag an einer nicht verwendeten Eintragsposition der Speicherstruktur hinzuzufügen, basierend auf der Bestimmung, dass die Speicherstruktur nicht den vorherigen Eintrag einschließt, der dem neuen Eintrag entspricht.
  9. Vorrichtung nach Anspruch 1, wobei die Hardware ferner die Hardware-Sequenzer dazu veranlassen soll: den Eintrag als neuen Eintrag zu kennzeichnen; zu bestimmen, ob die Speicherstruktur einen vorherigen Eintrag einschließt, der dem neuen Eintrag entspricht; basierend auf einer Bestimmung, dass die Speicherstruktur nicht den vorherigen Eintrag einschließt, der dem neuen Eintrag entspricht, zu bestimmen, ob alle Eintragspositionen in der Speicherstruktur verwendet werden; basierend auf einer Bestimmung, dass alle Eintragspositionen in der Speicherstruktur verwendet werden, einen zuletzt verwendeten Eintrag der Speicherstruktur zu entfernen; und den neuen Eintrag an einer Eintragsposition, die dem am wenigsten zuletzt verwendeten Eintrag der Speicherstruktur entspricht, hinzuzufügen.
  10. Vorrichtung nach Anspruch 1, wobei die Hardware ferner den Hardware-Sequenzer dazu veranlassen soll: den Eintrag als neuen Eintrag zu kennzeichnen; zu bestimmen, ob die Speicherstruktur einen vorherigen Eintrag einschließt, der dem neuen Eintrag entspricht; basierend auf einer Bestimmung, dass die Speicherstruktur den vorherigen Eintrag einschließt, der dem neuen Eintrag entspricht, für den vorherigen Eintrag zu bestimmen, ob ein angegebenes Bit, das dem neuen Eintrag entspricht, gesetzt ist; basierend auf der Bestimmung, dass das angegebene Bit gesetzt ist, den neuen Eintrag als einen Cache-Treffer zu kennzeichnen.
  11. Vorrichtung nach Anspruch 10, wobei die Hardware ferner den Hardware-Sequenzer dazu veranlassen soll: basierend auf der Feststellung, dass das angegebene Bit nicht gesetzt ist, zu bestimmen, ob ein dem neuen Eintrag zugeordneter Status mit dem dem vorherigen Eintrag zugeordneten Status identisch ist; basierend auf der Bestimmung, dass der dem neuen Eintrag zugeordnete Status mit dem dem vorherigen Eintrag zugeordneten Status identisch ist, die angegebenen Bits zu setzen, um den neuen Eintrag zum Coherency Directory Cache hinzuzufügen.
  12. Vorrichtung nach Anspruch 11, wobei die Hardware ferner den Hardware-Sequenzer dazu veranlassen soll: basierend auf der Bestimmung, dass der dem neuen Eintrag zugeordnete Status nicht mit dem dem vorherigen Eintrag zugeordneten Status identisch ist, den neuen Eintrag als anderen Eintrag als den vorherigen Eintrag zum Coherency Directory Cache hinzuzufügen.
  13. Computerimplementiertes Verfahren, umfassend: Identifizieren angrenzender Cache-Zeilen für einen Coherency Directory Cache, der Informationen in Bezug auf mehrere Cache-Zeilen einschließt; Bestimmen eines Status, der jeder der angrenzenden Cache-Zeilen zugeordnet ist; basierend auf einer Bestimmung, dass der einer der angrenzenden Cache-Zeilen zugeordnete Status identisch ist mit dem Status, der den verbleibenden aktiven angrenzenden Cache-Zeilen zugeordnet ist, Gruppieren der angrenzenden Cache-Zeilen; und Verwenden eines einzelnen Eintrags in einem ternären inhaltsadressierbaren Speicher (TCAM) für den Coherency Directory Cache, um die Informationen zu identifizieren, die sich auf die gruppierten Cache-Zeilen beziehen.
  14. Verfahren nach Anspruch 13, ferner umfassend: Bestimmen, ob sich der mit einer der angrenzenden Cache-Zeilen verknüpfte Status geändert hat; basierend auf einer Bestimmung, dass sich der mit einer der angrenzenden Cache-Zeilen verknüpfte Status geändert hat, Kennzeichnen derjenigen der angrenzenden Cache-Zeilen, für die sich der Status geändert hat, als neuen Eintrag; Bestimmen, ob der TCAM einen anderen Eintrag einschließt, der dem neuen Eintrag entspricht; und basierend auf der Bestimmung, dass das TCAM keinen anderen Eintrag einschließt, der dem neuen Eintrag entspricht, Hinzufügen des neuen Eintrags zu einem nicht verwendeten Eintragsort des TCAM.
  15. Verfahren nach Anspruch 13, ferner umfassend: Bestimmen, ob sich der mit einer der angrenzenden Cache-Zeilen verknüpfte Status geändert hat; basierend auf einer Bestimmung, dass sich der mit einer der angrenzenden Cache-Zeilen verknüpfte Status geändert hat, Kennzeichnen derjenigen der angrenzenden Cache-Zeilen, für die sich der Status geändert hat, als neuen Eintrag; Bestimmen, ob der TCAM einen anderen Eintrag einschließt, der dem neuen Eintrag entspricht; basierend auf einer Bestimmung, dass der TCAM nicht den anderen Eintrag einschließt, der dem neuen Eintrag entspricht, Bestimmen, ob alle Eintragspositionen im TCAM verwendet werden; basierend auf einer Bestimmung, dass alle Eintragspositionen im TCAM verwendet werden, Entfernen eines zuletzt verwendeten Eintrags des TCAM; und Hinzufügen des neuen Eintrags an einem Eintragsort, der dem am wenigsten zuletzt verwendeten Eintrag des TCAM entspricht.
  16. Verfahren nach Anspruch 13, ferner umfassend: Bestimmen, ob sich der mit einer der angrenzenden Cache-Zeilen verknüpfte Status geändert hat; und basierend auf einer Bestimmung, dass sich der Status, welcher der einen der angrenzenden Cache-Zeilen zugeordnet ist, geändert hat, und Löschen einer Programmierung, die der einen der angrenzenden Cache-Zeilen zugeordnet ist, für die sich der Status geändert hat, um diejenige der angrenzenden Cache-Zeilen zu entfernen, für die sich der Status gegenüber den gruppierten Cache-Zeilen geändert hat.
  17. Nicht-vorübergehendes computerlesbares Medium, auf dem maschinenlesbare Anweisungen gespeichert sind, wobei die maschinenlesbaren Anweisungen bei ihrer Ausführung einen Prozessor dazu veranlassen: eine Gruppe einer angegebenen Anzahl angrenzender Cache-Zeilen beim Empfang einer Anforderung oder beim Abschluss einer zuvor empfangenen Anforderung in Bezug auf einen Coherency Directory Cache zu identifizieren, der Informationen in Bezug auf mehrere Cache-Zeilen einschließt; einen Status und einen Besitz zu bestimmen, die jeder der angrenzenden Cache-Zeilen zugeordnet sind; und basierend auf der Bestimmung, dass der Status und der Besitz, die einer der angrenzenden Cache-Zeilen zugeordnet sind, jeweils mit dem Status und dem Besitz, die den verbleibenden aktiven angrenzenden Cache-Zeilen zugeordnet sind, identisch sind, einen Eintrag in einer Speicherstruktur für den Coherency Directory Cache zu verwenden, um die Informationen zu identifizieren, die sich auf die Gruppe der angegebenen Anzahl angrenzender Cache-Zeilen beziehen, wobei Daten, die dem Eintrag in der Speicherstruktur zugeordnet sind, mehr als zwei mögliche Speicherzustände einschließen.
  18. Nicht-vorübergehend computerlesbares Medium nach Anspruch 17, wobei die angegebene Anzahl von angrenzenden Cache-Zeilen zu vier angrenzenden Cache-Zeilen gleich ist.
  19. Nicht-vorübergehendes computerlesbares Medium nach Anspruch 17, wobei die Speicherstruktur einen ternären inhaltsadressierbaren Speicher (TCAM) einschließt.
  20. Nicht-vorübergehendes computerlesbares Medium nach Anspruch 17, wobei der Eintrag eine Adresse umfasst, die den Eintrag in der Speicherstruktur eindeutig identifiziert, und wobei die maschinenlesbaren Anweisungen bei Ausführung den Prozessor ferner dazu veranlassen: eine angegebene Anzahl niedrigerer Bits der Adresse als „X“-Bits zu schreiben, wobei die dem Eintrag in der Speicherstruktur zugeordneten Daten die möglichen Speicherzustände „0“, „1“ oder „X“ einschließen und wobei der „X“-Speicherzustand für „0“ oder „1“ steht; und basierend auf den geschriebenen unteren Bits Kennzeichnen der Coherency Directory Cache-Verfolgung als gültig für jede Cache-Zeile der Gruppe der angegebenen Anzahl angrenzender Cache-Zeilen.
DE112019000627.4T 2018-01-31 2019-01-30 Speicherstrukturbasiertes Coherency Directory Cache Withdrawn DE112019000627T5 (de)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US15/885,530 2018-01-31
US15/885,530 US20190236011A1 (en) 2018-01-31 2018-01-31 Memory structure based coherency directory cache
PCT/US2019/015785 WO2019152479A1 (en) 2018-01-31 2019-01-30 Memory structure based coherency directory cache

Publications (1)

Publication Number Publication Date
DE112019000627T5 true DE112019000627T5 (de) 2020-10-29

Family

ID=67391448

Family Applications (1)

Application Number Title Priority Date Filing Date
DE112019000627.4T Withdrawn DE112019000627T5 (de) 2018-01-31 2019-01-30 Speicherstrukturbasiertes Coherency Directory Cache

Country Status (4)

Country Link
US (1) US20190236011A1 (de)
CN (1) CN111406253A (de)
DE (1) DE112019000627T5 (de)
WO (1) WO2019152479A1 (de)

Families Citing this family (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10534687B2 (en) * 2017-06-30 2020-01-14 Intel Corporation Method and system for cache agent trace and capture
CN110059026B (zh) * 2018-01-19 2021-06-29 华为技术有限公司 一种目录处理方法、装置及存储系统
US11188480B1 (en) * 2020-05-12 2021-11-30 Hewlett Packard Enterprise Development Lp System and method for cache directory TCAM error detection and correction
US20230099256A1 (en) * 2021-09-29 2023-03-30 Advanced Micro Devices, Inc. Storing an indication of a specific data pattern in spare directory entries

Family Cites Families (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20040181626A1 (en) * 2003-03-13 2004-09-16 Pickett James K. Partial linearly tagged cache memory system
US7039756B2 (en) * 2003-04-28 2006-05-02 Lsi Logic Corporation Method for use of ternary CAM to implement software programmable cache policies
US8108619B2 (en) * 2008-02-01 2012-01-31 International Business Machines Corporation Cache management for partial cache line operations
US9009401B2 (en) * 2012-07-27 2015-04-14 International Business Machines Corporation Multi-updatable least recently used mechanism
US9292444B2 (en) * 2013-09-26 2016-03-22 International Business Machines Corporation Multi-granular cache management in multi-processor computing environments

Also Published As

Publication number Publication date
US20190236011A1 (en) 2019-08-01
CN111406253A (zh) 2020-07-10
WO2019152479A1 (en) 2019-08-08

Similar Documents

Publication Publication Date Title
DE112019000627T5 (de) Speicherstrukturbasiertes Coherency Directory Cache
DE2226382C3 (de) Datenverarbeitungsanlage mit mehreren Prozessoren und diesen zugeordneten Pufferspeichern
DE60320026T2 (de) Verbessertes speichermanagement für echtzeit-anwendungen
DE69130086T2 (de) Mehrstufeneinschluss in mehrstufigen Cache-Speicherhierarchien
DE19961499A1 (de) Caching von Objekten in Platten-gestützten Datenbanken
DE69225622T2 (de) Adressenübersetzungspufferspeicher mit per Eingabe veränderlicher Seitengrösse
DE3751645T2 (de) Anteilige Nutzung von Kopie-beim-Schreiben-Segmenten in einer Datenverarbeitungsanlage mit virtuellen Maschinen und virtuellem Speicher
DE10262164B4 (de) Computersystem mit einer hierarchischen Cacheanordnung
DE69030945T2 (de) Zweistufiger Adressübersetzungspufferspeicher mit partiellen Adressen zur Geschwindigkeitserhöhung
DE69721590T2 (de) Ein bereichsbasiertes seiten-table-walk-bit verwendendes verfahren sowie vorrichtung
DE69629140T2 (de) Cachefähigkeitsattribut für virtuelle Adressen in Cachespeichern mit sowohl virtuellen als auch physikalischem Index
DE69130580T2 (de) Cache-Speicheranordnung
DE3151745C2 (de)
DE102012208141B4 (de) Ausgleich nachlassender Funktionsfähigkeit
DE2154106A1 (de) Arbeitsspeicherwerk
DE60001170T2 (de) Betriebsystemsseitenplazierung zum maximieren der cachedatenwiederverwendung
DE3805107A1 (de) Verfahren und vorrichtung zur steuerung virtueller adressraeume eines virtuellen speichers
DE102007048507A1 (de) Cache-Speichersystem und Verfahren zum Bereitstellen eines Transaktionsspeichers
DE102007052853A1 (de) Zeilentauschschema zur Verringerung von Rückinvalidierungen in einem Snoopfilter
DE10219623A1 (de) System und Verfahren zur Speicherentscheidung unter Verwendung von mehreren Warteschlangen
DE102010053282A1 (de) Modifizierter B+ Baum zum Speichern von Nand-Speicher Umleitungszuordnungen
DE112010004972T5 (de) Domänenbasiertes Cache-Kohärenzprotokoll
DE69130626T2 (de) Verfahren zur Verwaltung einer Cache-Speicheranordnung
DE3046912C2 (de) Schaltungsanordnung zum selektiven Löschen von Cachespeichern in einer Multiprozessor-Datenverarbeitungsanlage
DE112018002032T5 (de) Gemeinsames nutzen von virtuellen und realen übersetzungen in einem virtuellen cache

Legal Events

Date Code Title Description
R082 Change of representative

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

R081 Change of applicant/patentee

Owner name: HEWLETT PACKARD ENTERPRISE DEVELOPMENT LP, SPR, US

Free format text: FORMER OWNER: HEWLETT PACKARD ENTERPRISE DEVELOPMENT LP, HOUSTON, TEX., US

R119 Application deemed withdrawn, or ip right lapsed, due to non-payment of renewal fee