DE102007052853B4 - Zeilentauschschema zur Verringerung von Rückinvalidierungen in einem Snoopfilter - Google Patents

Zeilentauschschema zur Verringerung von Rückinvalidierungen in einem Snoopfilter Download PDF

Info

Publication number
DE102007052853B4
DE102007052853B4 DE102007052853.3A DE102007052853A DE102007052853B4 DE 102007052853 B4 DE102007052853 B4 DE 102007052853B4 DE 102007052853 A DE102007052853 A DE 102007052853A DE 102007052853 B4 DE102007052853 B4 DE 102007052853B4
Authority
DE
Germany
Prior art keywords
cache
affinity
data
cache entry
processor
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.)
Expired - Fee Related
Application number
DE102007052853.3A
Other languages
English (en)
Other versions
DE102007052853A1 (de
Inventor
Sundaram Chinthamani
Kai Cheng
Malcolm Mandiwalla
Bahaa Fahim
Keith Pflederer
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.)
Intel Corp
Original Assignee
Intel Corp
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Intel Corp filed Critical Intel Corp
Publication of DE102007052853A1 publication Critical patent/DE102007052853A1/de
Application granted granted Critical
Publication of DE102007052853B4 publication Critical patent/DE102007052853B4/de
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/14Handling requests for interconnection or transfer
    • G06F13/16Handling requests for interconnection or transfer for access to memory bus
    • 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/0822Copy directories
    • 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/0831Cache consistency protocols using a bus scheme, e.g. with bus monitoring or watching means
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • 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/082Associative directories

Landscapes

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

Abstract

Verfahren, welches das folgende umfaßt:
Empfangen an einem Snoop-Filter (609) einer Anforderung von Daten von einem Prozessor (601) aus mehreren Prozessoren (601, 603);
Ermitteln einer Cache-Eintragsposition zumindest teilweise basierend auf der Anforderung;
Speichern der Daten in einem Cache-Speicher (605), der sich auf den Prozessor (601) bezieht, an der Cache-Eintragsposition;
Speichern einer Kohärenzaufzeichnung, welche den Daten entspricht in einer Affinität(611A), die dem Cache-Speicher (605) entspricht; und
Ermitteln eines Auftretens eines Cache-Treffers an einer anderen Cache-Eintragsposition eines anderen Cache-Speichers (607), welcher einem anderen Prozessor (603) der mehreren Prozessoren (601, 603) entspricht, wobei das Speichern der Kohärenzaufzeichnung, welche den Daten in der Affinität (611A) entspricht, das Speichern der Daten in einer Affinität (611B), die dem Cache-Speicher entspricht, an einer Cache-Eintragsposition, die gemäß einer Weghinweis-Ersetzungsstrategie ausgewählt wird, umfasst und das Vertauschen der Kohärenzaufzeichnung in der Affinität (611A) an der Cache-Eintragsposition mit einer Kohärenzaufzeichnung in der Affinität (611B), die dem anderen Cache-Speicher entspricht, an der anderen Cache-Eintragsposition, wobei geräumte Daten temporär in einem Puffer gespeichert werden, bis eine Invalidierungsnachricht zu einem Ursprungsprozessor gesendet wird, um sicherzustellen, dass sich der anfordernde Prozessor (601) nicht auf Daten stützt, die nicht bereits invalidiert wurden.

Description

  • GEBIET
  • Ausführungsformen der vorliegenden Erfindung betreffen ein Zeilentauschschema zur Verringerung von Rückinvalidierungen in einem Snoopfilter.
  • ALLGEMEINER STAND DER TECHNIK
  • Die Verwendung mehrerer Prozessoren oder die Verwendung von Prozessoren mit mehreren Kernen ist als ein Verfahren zur Erhöhung der Rechenleistung neuer Computersysteme immer mehr üblich geworden. Mehrprozessor- und Mehrkernsysteme benutzen Systemressourcen wie den Systemspeicher und Speicherungsvorrichtungen gemeinsam. Mehrere Prozessoren oder Kerne greifen oft auf dieselben Daten in Speicher- oder Speicherungsvorrichtungen zu und versuchen, diese Daten zur selben Zeit zu verwenden. Um dies zu bewerkstelligen, verfolgen Mehrprozessor- und Mehrkernsysteme die Verwendung von Daten, um die Datenkohärenz aufrechtzuerhalten. Eine Facette der Aufrechterhaltung der Datenkohärenz in Multiprozessorsystemen ist es sicherzustellen, daß die Daten kohärent sind, die in jedem Prozessor cache-gespeichert sind. Zum Beispiel kann jeder Prozessor Daten in seinem Cache-Speicher verändern, bevor er sie in den Systemspeicher zurückschreibt. Wenn ein anderer Prozessor diese Daten vom Systemspeicher anfordert, bevor die veränderten Daten in den Systemspeicher zurückgeschrieben sind, ist die Datenkohärenz verloren.
  • Ein übliches Schema zur Aufrechterhaltung der Datenkohärenz in diesen Systemen ist es, einen Snoopfilter zu verwenden. Um die Datenkohärenz sicherzustellen, kann ein Prozessor oder Kern Kohärenzanforderungen, die häufig als Snoops bezeichnet werden, an andere Prozessoren senden, bevor auf Daten zugegriffen wird oder diese modifiziert werden. Der herkömmliche Snoopfilter bewahrt eine Cache-Speicherung von Datenanforderungen von jedem Prozessor oder Kern, um die Inhalte der Cache-Speicherung jedes Prozessors oder Kerns zu verfolgen. Jedesmal, wenn ein Prozessor Daten aus dem Speicher abruft, wird eine Kohärenzaufzeichnung, welche eine Markierungsadresse für diese Daten aufweist, in dem Snoopfilter gespeichert. Der Snoopfilter bemerkt jedoch keine Cache-Einträge, welche von einem Prozessor oder Kern entfernt worden sind, da es für einen Prozessor unpraktisch ist, alle Cache-Treffer-Speicherreferenzierungen an den Snoopfilter zu senden, um eine perfekte Übereinstimmung zwischen den Cache-Einträgen des Prozessors und den Einträgen des Snoopfilters zu bewahren. Zum Beispiel kann eine Zeile, die von einem Prozessor häufig referenziert wird, für den Snoopfilter als veraltet erscheinen, da die Aktivitäten der Zeile nicht außerhalb der inneren Cache-Hierarchie freiliegen. In einem anderen Szenario kann eine saubere (unmodifizierte) Zeile im Cache-Speicher des Prozessors durch eine andere Cache-Fehltreffer-Adresse ersetzt werden, ohne daß der Snoopfilter davon unterrichtet wird. Als ein Ergebnis ist es wahrscheinlich, daß der Snoopfilter viele überholte Dateneinträge aufweist, die von dem Prozessor nicht mehr benutzt werden. Ferner kann es sein, daß der Snoopfilter Cache-Einträge entfernen muß, die noch in Gebrauch sein können, um Platz für neue Einträge zu schaffen, wenn eine neue Anforderung von einem Prozessor oder Kern empfangen wird.
  • Die Cache-Einträge, die dafür ausgewählt werden, entfernt zu werden, können unter Anwendung eines Ersetzungsalgorithmus ausgewählt werden. Ein Ersetzungsalgorithmus des Snoopfilters wählt willkürlich einen Eintrag in dem Snoopfilter-Cache-Speicher aus, der entfernt werden soll, um Platz für den neuen Eintrag zu schaffen. Dies bewirkt, daß für den entfernten Eintrag eine Rückinvalidierungsmitteilung an den Prozessor oder Kern gesendet wird. Wenn der entfernte Eintrag jedoch von dem Prozessor oder Kern noch verwendet wird, muß der Prozessor oder Kern die entsprechenden Daten von dem Systemspeicher erneut anfordern. Hierdurch wird auf dem Bus zwischen dem Prozessor oder Kern und der Knotensteuerung zusätzlicher Verkehr erzeugt, wodurch die verfügbare Bandbreite für andere Datenübertragungen verringert wird.
  • Um die Auswirkungen dieses Verfahrens auf die Bandbreite des Busses und die Verwendung des Prozessors auf ein Mindestmaß zu beschränken, sind die Cache-Speicher der Snoopfilter typischerweise groß genug, um die zusammengesetzten Größen aller Cache-Speicher in den Prozessoren, die von dem Snoopfilter abgedeckt werden, mehrmals zu verfolgen. In der Praxis kann der Snoopfilter vier- oder achtmal größer sein als die Gesamtgröße der Cache-Speicher der Prozessoren oder Kerne in dem System. Diese großen Snoopfilter besetzen eine große Menge an Platz und vergrößern die Komplexität und demzufolge die Kosten der Knotensteuerungen. Demzufolge ist es gegenüber der Vergrößerung des Snoopfilters vorzuziehen, eine gute Ersetzungsstrategie zu wählen. Ebenso sind auch Verbesserungen bei der Ausgabe der Rückinvalidierungen wünschenswert.
  • Figurenliste
  • In den Figuren der begleitenden Zeichnungen, in welchen gleiche Bezugszeichen ähnliche Elemente kennzeichnen, werden Ausführungsformen der Erfindung beispielhaft und nicht beschränkend veranschaulicht. Es sollte angemerkt werden, daß verschiedene Bezugnahmen auf „eine“ Ausführungsform in dieser Offenbarung nicht notwendigerweise dieselbe Ausführungsform betreffen und solche Bezugnahmen „mindestens eine“ bedeuten.
    • 1 ist ein Diagramm einer Ausführungsform eines Systems, welches einen Weghinweis-Snoopfilter aufweist.
    • 2 ist ein Diagramm einer Ausführungsform eines Weghinweis-Snoopfilters.
    • 3A ist ein Diagramm einer Ausführungsform einer Affinität in einem Weghinweis-Snoopfilter.
    • 3B ist ein Diagramm einer Ausführungsform eines Cache-Eintrags in dem Weghinweis-Snoopfilter.
    • 4 ist ein Ablaufdiagramm einer Ausführungsform eines Verfahrens für die Cache-Verwaltung auf der Basis von Weghinweisen.
    • 5A ist ein Diagramm eines Beispiels für ein Cache-Verwaltungsverfahren.
    • 5B ist ein Diagramm eines Beispiels für ein Cache-Verwaltungsverfahren.
    • 5C ist ein Diagramm eines Beispiels für ein Cache-Verwaltungsverfahren.
    • 5D ist ein Diagramm eines Beispiels für ein Cache-Verwaltungsverfahren.
    • 6 ist ein Diagramm eines Beispiels für ein Cache-Verwaltungsverfahren gemäß einer anderen Ausführungsform.
    • 7 ist ein Ablaufdiagramm, welches ein Verfahren gemäß einer anderen Ausführungsform veranschaulicht, welche in 6 dargestellt ist.
    • 8A bis 8D sind Diagramme, die ein Zeilenanordnungsverfahren gemäß einer Ausführungsform veranschaulichen.
    • 9 ist ein Ablaufdiagramm, welches ein Verfahren gemäß einer anderen Ausführungsform der Erfindung veranschaulicht, welche in 6 dargestellt ist.
    • 10A bis 10D sind Diagramme, die ein Zeilenanordnungsverfahren gemäß einer anderen Ausführungsform veranschaulichen.
  • DETAILLIERTE BESCHREIBUNG
  • 1 ist ein Diagramm einer Ausführungsform eines Systems mit einem „Weghinweis“-Snoopfilter. Bei dem System 100 kann es sich um irgendeine Art eines Mehrprozessoren- oder Mehrkernsystems handeln, z.B. um einen Personal-Computer, einen Großcomputer, einen Handcomputer, ein elektronisches Verbrauchergerät (ein Mobiltelefon, ein Hand-Spielgerät, eine Set-top-Box oder ein ähnliches Gerät), eine Netzwerkvorrichtung, eine Steuereinheit für Autos/Flugzeuge oder ähnliche Vorrichtungen.
  • Das System 100 kann irgendeine Anzahl von Prozessoren 107, 111 aufweisen, die jeder mindestens einen Cache-Speicher 109, 113 aufweisen, der zu dem Prozessor 107, 111 gehört. In einer Ausführungsform kann das System 100 eine feste Anzahl von Prozessoren 107, 111 aufweisen. In einer anderen Ausführungsform kann das System 100 Einbauplätze oder Schnittstellen für irgendeine Anzahl von Prozessoren aufweisen. Die Anzahl der Prozessoren kann verändert werden, indem dem System Prozessoren hinzugefügt werden oder Prozessoren aus diesem entfernt werden.
  • In einer Ausführungsform kann es sich bei den Prozessoren 107, 111 um Prozessoren mit separaten Kernen und auf separaten Substraten und in separaten Gehäusen handeln. In einer anderen Ausführungsform können die Prozessoren mehrere Kerne auf einem einzigen Substrat und Chipgehäuse oder Kombinationen davon enthalten. Zur Vereinfachung der Beschreibung handelt es sich bei dem beschriebenen Beispielssystem um ein Mehrprozessor-Personal-Computer-System. Jeder Prozessor 107, 111 kann eine Gruppe von Cache-Speichern aufweisen. Wie hierin verwendet, kann mit „Gruppe“ irgendeine Anzahl von Elementen einschließlich Eins bezeichnet sein. Zum Beispiel kann ein Prozessor einen Stufe-1-Cache-Speicher ebenso wie einen Stufe-2-Cache-Speicher aufweisen. Der Cache-Speicher der höchsten Stufe kann als Cache-Speicher der letzten Stufe (Last Level Cache, LLC) bezeichnet werden.
  • Jeder Prozessor 107, 111 kann sich über einen Bus 115, 117 in Kommunikation mit einer Knotensteuerung 101 befinden. Bei der Knotensteuerung 101 kann es sich um eine Vorrichtung oder einen Chipsatz handeln, welche(r) die Datenbewegung zwischen den Prozessoren 107, 111 und dem Systemspeicher 105 ebenso wie anderen Vorrichtungen 119 in dem System 100 verwaltet. In einer Ausführungsform kann in dem System eine einzige Knotensteuerung 101 vorliegen. In einer anderen Ausführungsform können mehrere Knotensteuerungen vorliegen, oder die Knotensteuerung 101 kann in mehrere Komponenten unterteilt sein. Zum Beispiel weisen einige Personal-Computer zwei Knotensteuerungen auf, welche als Nordbrücke und Südbrücke bezeichnet werden.
  • In einer Ausführungsform kann die Knotensteuerung 101 mit jedem Prozessor 107, 111 über einen separaten Bus 115, 117 Daten austauschen. In anderen Ausführungsformen können die mehreren Prozessoren über einen einzigen Bus Daten austauschen oder können eine Untermenge der Busse gemeinsam benutzen. Die Busse 115, 117 zwischen den Prozessoren 107, 111 und der Knotensteuerung 101 können als Frontside-Busse (FSB) bezeichnet werden.
  • In einer Ausführungsform kann es sich bei dem Systemspeicher 105 um irgendeine Art einer dynamischen Direktzugriffsspeicher(DRAM)-Vorrichtung oder Gruppe von Speichervorrichtungen handeln. Zum Beispiel kann der Systemspeicher 105 einen Synchron-DRAM, einen Doppeldatenraten-DRAM, einen statischen Direktzugriffsspeicher (SRAM) und ähnliche Arten von Speichervorrichtungen umfassen. Der Systemspeicher 105 kann verwendet werden, um Daten und Programmbefehle zur Verwendung durch die Prozessoren 107, 111 zu speichern. In einer anderen Ausführungsform kann es sich bei dem Systemspeicher um eine statische Speichervorrichtung, eine Flash-Speichervorrichtung oder eine ähnliche Speichervorrichtung wie z.B. einen elektronisch löschbaren programmierbaren Nur-Lese-Speicher (EEPROM), einen Memory Stick oder eine ähnliche Vorrichtung handeln.
  • Bei den anderen Vorrichtungen 119, welche mit dem System 100 in Kommunikation stehen können, kann es sich um Netzwerkvorrichtungen und -karten, Grafikvorrichtungen, große Speichervorrichtungen wie Festplattenlaufwerke, entfernbare Speichervorrichtungen wie Compact-Disc(CD)- und Digital-Versatile-Disc(DVD)-Laufwerke und ähnliche Vorrichtungen handeln. Das Vorliegen dieser Vorrichtungen kann in Abhängigkeit von der Art der Vorrichtung, von welcher das System 100 ein Teil ist, variieren. Wenn es sich bei dem System zum Beispiel um eine Netzwerkvorrichtung handelt, dann können mehrere Netzwerkkarten oder Kommunikationsvorrichtungen vorliegen, aber es kann sein, daß Grafikvorrichtungen wie Grafikkarten und Monitore nicht vorliegen.
  • In einer Ausführungsform verwaltet das Mehrprozessorensystem 100 Datenkohärenz zwischen Prozessoren innerhalb der Knotensteuerung 101. Dies kann durch die Verwaltung der LLC-Daten für jeden der Prozessoren 107, 111 bewerkstelligt werden. Ein Snoopfilter 103 kann an der Verwaltung der Datenkohärenz zwischen den Prozessoren 107, 111 teilhaben. Der Snoopfilter 103 kann eine Darstellung des Cache-Kohärenzzustands der Daten, die in jedem der LLCs 109, 113 gespeichert sind, aufrechterhalten, wobei die Darstellung des Cache-Kohärenzzustands die Organisation der Daten in jedem der LLCs 109, 113 darstellt. Der Snoopfilter 103 kann Anforderungen von Daten von jedem Prozessor 107, 111 überwachen. Diese Datenanforderungen, z.B. Leseanforderungen, können gewünschte Cache-Zustandsinformationen ebenso wie Anforderungsinformationen enthalten. Bei den Anforderungsinformationen kann es sich zum Beispiel um einen Anforderungstyp, einen Weghinweis, einen Affinitätsindikator, eine Markierungsadresse und eine Satzadresse handeln. Der Snoopfilter kann die gewünschten Cache-Zustandsinformationen und Anforderungsinformationen benutzen, um eine Darstellung des Cache-Kohärenzzustands der Organisation jedes der Cache-Speicher 109, 113 aufrechtzuerhalten, die sich auf dem aktuellen Stand befindet.
  • 2 ist ein Diagramm einer Ausführungsform eines Snoopfilters 103. Der Snoopfilter 103 weist eine Cache-Zustands-Speicherstruktur 209 auf. In einer Ausführungsform handelt es sich bei der Cache-Zustands-Speicherstruktur um einen Cache-Speicher wie z.B. einen satzadressierten Cache-Speicher oder eine ähnliche Speicherstruktur, mit welcher Kohärenzaufzeichnungen gespeichert werden können. Die Cache-Zustands-Speicherstruktur 209 kann so organisiert werden, daß sie jeden der LLCs der Prozessoren in dem System repräsentiert. Die Cache-Zustands-Speicherstruktur 209 kann logisch in eine Gruppe von Affinitäten unterteilt werden. Es kann eine Affinität für jeden Prozessor in dem System geben. Bei einer Affinität kann es sich um eine Speichervorrichtung oder einen Abschnitt der Cache-Zustands-Speicherstruktur 209 handeln, welcher in derselben Organisationsweise organisiert ist wie der zugehörige LLC, welchen die Affinität repräsentiert.
  • 3A ist ein Diagramm einer Ausführungsform einer Affinität in der Cache-Zustands-Speicherstruktur 209 des Snoopfilters 103. Jede Affinität 211A bis 211D kann eine Gruppe von ,Sätzen‘ aufweisen. Ein Satz ist eine Art eines Positionsindikators, welcher aus einer Gruppe von , Wegen‘ zusammengesetzt ist. Ein Weg ist ein Speicherstellen- oder Positionsindikator einer Cache-Zeile in einem Satz. Jeder Satz kann irgendeine Anzahl von Wegen enthalten. In einer Ausführungsform kann jeder Satz acht Wege enthalten. Die Anzahl der Sätze und Wege in jeder Affinität kann basierend auf der entsprechenden Organisation der LLCs in dem Prozessor bestimmt werden. Das Indexierungsschema aus Affinitäten, Sätzen und Wegen ist eine beispielhafte Ausführungsform. Es kann auch irgendein anderes Indexierungs- und Organisationsschema verwendet werden, derart, daß die Snoopfilter-Datenstruktur 209 die Organisation jedes der LLCs nachbildet. Aus Gründen der Einfachheit werden Ausführungsformen der Affinitäts-, Satz- und Wegeorganisation beschrieben. Es können jedoch auch andere Ausführungsformen mit anderen Organisationsschemen benutzt werden.
  • 3B ist ein Diagramm einer Ausführungsform einer Kohärenzaufzeichnung in einem Weg 303 der Cache-Zustands-Speicherstruktur 209. In einer Ausführungsform kann jede Kohärenzaufzeichnung Informationen über den entsprechenden Cache-Eintrag in dem LLC speichern. Eine Kohärenzaufzeichnung 303 kann Markierungsadreßdaten 305, Cache-Zustandsdaten 307 und Busindikatordaten 309 aufweisen. Bei den Markierungsadreßdaten 305 kann es sich um Daten handeln, welche mit den Markierungsdaten in dem Cache-Speicher des entsprechenden LLC übereinstimmen. Zum Beispiel können die Markierungsadreßdaten 305 ein Abschnitt einer Adresse für eine Cache-Zeile sein. Die Cache-Zustandsdaten 307 können Daten sein, welche den Status der Cache-Zeile in dem LLC anzeigen, z.B., ob die Daten für den Prozessor exklusiv sind, gemeinsam benutzt werden, ungültig sind, modifiziert sind, oder ähnliche Statusinformationen. Die Busindikatordaten 309 können ein Satz von Bits sein, die verwendet werden, um den Bus anzuzeigen, über welchen der LLC, der die Daten enthält, mit der Knotensteuerung Daten austauscht. Die Busindikatordaten 309 können ein Bit entsprechend jeder in dem System verfügbaren Busleitung aufweisen oder können die Busleitung codieren, über welche die Prozessoren mit dem Knoten kommunizieren. Ein Cache-Eintrag kann in mehr als einem LLC vorliegen, so daß es sein kann, daß mehrere Busse benutzt werden müssen, um Zustandsdaten auszutauschen, die auf einen Cache-Eintrag in jedem der LLCs bezogen sind.
  • Zurückkehrend zur Beschreibung der 2, kann der Snoopfilter 103 über eine Schnittstelle 201, 203 für den entsprechenden Bus des Prozessors mit jedem Prozessor in Kommunikation stehen. In einem Beispiel kann der Snoopfilter 103 mit zwei Prozessoren in Kommunikation stehen, von welchen jeder einen separaten Bus aufweist. In diesem Beispiel weist der Snoopfilter 103 eine erste Schnittstelle 201 zum Datenaustausch mit dem ersten Prozessor über den ersten Bus und eine zweite Schnittstelle 203 zum Datenaustausch mit dem zweiten Prozessor über einen zweiten Bus auf.
  • Nach dem Empfang einer Anforderung von Daten von einem Prozessor über eine Busschnittstelle 201, 203 kann die Anforderung syntaktisch analysiert oder verarbeitet werden, um einen Affinitätsindikator ebenso wie einen ,Weghinweis' zu ermitteln. Bei der Anforderung kann es sich um eine Leseanforderung, eine Exklusivitätsanforderung oder eine ähnliche Datenanforderung handeln. In einer Ausführungsform kann die Anforderung eine Wegnummer enthalten, welche die Wegposition oder den Weghinweis anzeigt und in welcher die Daten, die angefordert werden, in dem LLC des anfordernden Prozessors gespeichert werden. In einer anderen Ausführungsform können andere Informationen bereitgestellt werden, z.B. der Kohärenzstatus des auszutauschenden Eintrags im LLC.
  • In einer Ausführungsform können die Anforderungsinformationen einer Kohärenzmaschine 207 bereitgestellt werden oder können auf die Cache-Zustands-Speicherstruktur 209 angewendet werden, um zu ermitteln, ob die Markierungsadresse, die den angeforderten Daten entspricht, in irgendeiner der Affinitäten 211A bis 211B und daher in irgendeinem der LLCs der Prozessoren in dem System vorliegt. Die Suchergebnisse können dann an die Kohärenzmaschine 207 zurückgesendet werden. In einer Ausführungsform kann die Suche durchgeführt werden, indem die angeforderten Markierungsdaten auf jede der Affinitäten angewendet werden und von allen übereinstimmenden Markierungen die Position in der Affinität ermittelt wird, wobei die Satzadressierungsmerkmale der Cache-Zustands-Speicherstruktur 209 verwendet werden. In einer anderen Ausführungsform können andere Suchtechniken angewendet werden.
  • Die Kohärenzmaschine analysiert die Suchergebnisse zusammen mit dem Weghinweis, den Markierungsadreßdaten, den Bus- oder Prozessor-Identifizierungsinformationen und der Satzpositionsanzeige. In einer Ausführungsform kann die Satzposition in der Anforderung spezifiziert sein, und es kann sich um eine feste Eins-zu-Eins-Zuordnung, eine einfache Binärdecodierung, einen Tabellenverweis oder eine spezielle Hash-Funktions-Decodierung handeln, um eine konsistente Eins-zu-Eins-Zuordnung bereitzustellen. Der Weg kann ausgeführt werden, indem ein Markierungsverweis verwendet wird (Vergleich des oberen Adreßfelds), oder, falls in dem Verweis nicht gefunden, können andere Auswahlschemen angewendet werden, z.B., aber nicht darauf beschränkt, pLRU (Pseudo-Least-Recently-Used, „Pseudo-Längste-Nichtverwendung“), vollständige oder teilweise Weghinweise oder Zufalls-Auswahlschemen.
  • Alternativ kann die Satzposition ermittelt werden, indem derselbe Algorithmus zur Auswahl eines Satzes angewendet wird, der auch von dem entsprechenden Prozessor und LLC zur Auswahl eines Satzes angewendet wird. Auf diese Weise müssen die Satzindikatorinformationen nicht ausdrücklich in den Anforderungsdaten enthalten sein. Es kann irgendein Satzauswahlalgorithmus angewendet werden, z.B. ein Zufalls-Auswahlalgorithmus, ein zyklischer Algorithmus oder ein ähnlicher Algorithmus. In einer anderen Ausführungsform sind die Satzindikatordaten oder ähnliche Daten in der Anforderung enthalten.
  • In einer Ausführungsform analysiert die Kohärenzmaschine 207 die eingegebenen Daten und ermittelt, wie die von dem Prozessor empfangene Anforderung weitergeleitet werden soll, wie die Snoopfilter-Datenstruktur 209 aktualisiert werden soll und ob Invalidierungsmitteilungen erzeugt werden sollen, die an den passenden LLC zu senden sind. Invalidierungsmitteilungen und Anforderungen, die an andere Prozessoren weitergeleitet werden sollen, werden dann an die passende Busschnittstelle 201, 203 gesendet. Anforderungen, die an einen Speicher weitergeleitet werden, um vollendet zu werden, werden an den die zentrale Datenverwaltung (Central Data Manager, CDM) 213 gesendet. Die zentrale Datenverwaltung 213 ist dafür verantwortlich, die Übertragung von Daten zwischen der Knotensteuerung und dem Systemspeicher sowie anderen Vorrichtungen zu verwalten.
  • 4 ist ein Diagramm einer Ausführungsform eines Verfahrens, welches durch den Snoopfilter durchgerührt wird, um die Datenkohärenz zu aufrechtzuerhalten. In einer Ausführungsform wird das Verfahren ausgelöst, daß eine Anforderung von einem Prozessor empfangen wird (Block 401). Bei der Anforderung kann es sich um eine Leseanforderung, eine Exklusivitätsanforderung oder eine ähnliche Anforderung von Daten handeln. Die Anforderung kann auf die Datenstruktur des Snoopfilters angewendet werden, um zu ermitteln, ob die angeforderten Daten vorliegen (Block 403). Bei dem Verfahren kann es sich um ein Verweisverfahren, ein Suchverfahren oder ein ähnliches Verfahren handeln.
  • Nach Erhalt der Ergebnisse des Verweisverfahrens kann die Anforderung zum richtigen Ziel weitergeleitet werden, um erfüllt zu werden (Block 405). In dem Fall, daß die angeforderten Daten in der Datenstruktur gefunden werden, wird dann die Anforderung an den Prozessor und Cache-Speicher weitergeleitet, welcher die Daten enthält. Der Prozessor oder Cache-Speicher, welcher die angeforderten Daten enthält, kann in den Ergebnissen des Verweisverfahrens angezeigt werden und auf Basis der Affinität ermittelt werden, in welcher eine Übereinstimmung mit der Anforderung gefunden wird. In dem Fall, daß die angeforderten Daten nicht gefunden werden, wird dann die Anforderung an den Systemspeicher weitergeleitet, um vollendet zu werden. In ähnlicher Weise wird dann, wenn die angeforderten Daten in der Datenstruktur gefunden werden, aber ihre Zustandsinformationen anzeigen, daß sie ungültig sind, die Anforderung im Systemspeicher vollendet.
  • Um die Daten, die an den Cache-Speicher des anfordernden Prozessors zurückzusenden sind, unterzubringen, wird die Darstellung des Cache-Speichers, die von dem Snoopfilter unterhalten wird, aktualisiert. Die Darstellung wird aktualisiert, indem Platz für den neuen Eintrag zugewiesen wird. Die Affinität für die Aktualisierung in Reaktion auf die Anforderung wird ermittelt, indem der Bus erkannt wird, auf welchem die Anforderung empfangen wurde. Die Anforderung kann auch syntaktisch analysiert oder verarbeitet werden, um den Weghinweis oder Positionshinweis zu ermitteln, der in der Anforderung enthalten ist. Die Speicherstelle zur Speicherung des neuen Eintrags in den Snoopfilter wird basierend auf dem Weghinweis, der von der Anforderung bereitgestellt wird, und unter Anwendung eines Satzauswahlalgorithmus, der mit dem Satzauswahlalgorithmus des anfordernden Prozessors übereinstimmt, ausgewählt. Auf diese Weise werden entsprechende Einträge für die angeforderten Daten in dem Cache-Speicher des anfordernden Prozessors und die Datenstruktur des Snoopfilters zugeordnet. Dieses Schema ermöglicht, daß die Datenstruktur kleiner ist als ein herkömmlicher Cache-Speicher, und verringert die Wahrscheinlichkeit, einen Cache-Eintrag zu verlieren, der von irgendeinem der Prozessoren in Gebrauch ist, und begrenzt die Verwendung von Bandbreite des Busses zwischen der Knotensteuerung, dem anfordernden Prozessor und jedem Prozessor, der eine Anforderung erfüllt, auf ein Mindestmaß.
  • Es wird eine Überprüfung durchgeführt, um zu ermitteln, ob der ausgewählte Platz in dem Cache-Speicher besetzt ist (Block 409). Wenn die Speicherstelle nicht besetzt ist, dann wird die Speicherstelle aktualisiert, um die Daten, die gespeichert werden, an dem entsprechenden Platz im Cache-Speicher des anfordernden Prozessors zu reflektieren (Block 413). Die Daten werden in dem Snoopfilter aktualisiert, wenn die Anforderung von dem Prozessor, wo die Anforderung vollendet wird, oder vom Speicher zurückkehrt, in Abhängigkeit von der Position der angeforderten Daten. Wenn der Speicherplatz besetzt ist, wird der Speicherplatz freigesetzt (Block 411). Die entfernten Daten können vorübergehend in einem Puffer gespeichert werden, bis eine Invalidierungsmitteilung an den verursachenden Prozessor gesendet wird, um in dem Fall, daß sie nicht bereits annulliert wurden, sicherzustellen, daß der anfordernde Prozessor nicht auf diese Daten vertraut (Block 415).
  • Wenn die Daten von einem anderen Prozessor abgerufen werden, kann der Eintrag für diesen Prozessor annulliert werden, indem eine Invalidierungsmitteilung an diesen Prozessor gesendet wird. Wenn zum Beispiel eine Exklusivitätsanforderung für Daten in dem Cache-Speicher eines anderen Prozessors empfangen wird, dann wird nach Empfang der Daten eine Invalidierungsmitteilung an diesen Prozessor gesendet.
  • 5A bis 5D sind Diagramme eines Beispiels für die Arbeitsweise des Ersetzungsalgorithmus des Snoopfilters. In diesem Beispiel stehen zwei Zentralprozessoreinheiten (CPUs) in Kommunikation mit dem Snoopfilter 509. Die beiden CPUs können zweikernig sein und weisen mehrere Cache-Speicher auf, einen für jeden Kern. Der Snoopfilter 509 weist eine Gruppe entsprechender Affinitäten 511A bis 511D auf. In diesem Beispiel entspricht die Affinität 511A dem Cache-Speicher 505 and die Affinität 511C entspricht dem Cache-Speicher 507. In 5A enthält der Cache-Speicher 505 ein Datenelement A, und der Cache-Speicher 507 enthält ein Datenelement C. Die Affinität 511A, welche dem Cache-Speicher 505 entspricht, enthält einen Indikator des Elements A in einer Position, welche der Position des Elements A im Cache-Speicher 505 entspricht, namentlich Satz 1, Weg 2. In ähnlicher Weise enthält der Cache-Speicher 507 das Element C in Satz 1, Weg 1. Die Affinität 511C enthält einen Indikator des Elements C entsprechend in Satz 1, Weg 1.
  • 5B ist ein Diagramm des Beispiels, welches die Einleitung einer Anforderung des Datenelements B durch den Prozessor 501 und einer Anforderung des Datenelements D durch den Prozessor 503 zeigt. Der Prozessor 501 wählt Satz 1, Weg 2 aus, in welchen das angeforderte Element zu speichern ist. Die Auswahl dieser Position im LLC 505 kann auf irgendeinem Algorithmus basieren, z.B. einem zyklischen Algorithmus, einem Algorithmus der längsten Nichtverwendung oder einem ähnlichen Ersetzungsalgorithmus oder Kombinationen davon. In gleicher Weise wählt der Prozessor 503 Satz 1, Weg 1 aus, um das angeforderte Element D zu speichern.
  • 5C ist ein Diagramm des Beispiels, welches den Zustand des Systems zeigt, nachdem die Anforderung erfüllt worden ist. In diesem Fall lagen die Datenelemente B und D in dem Snoopfilter 509 nicht vor und wurden im Systemspeicher vollendet, was zur Speicherung der Elemente B und D in den ausgewählten Positionen in den LLCs 505, 507 führte. Auch wurden die entsprechenden Einträge in den Affinitäten 511A, 511C aktualisiert, wobei die bereitgestellten Anforderungsdaten, welche die Weghinweise 2 bzw. 1 umfaßten, und die Kenntnis der Satzauswahlalgorithmen jedes Prozessors 501, 503 verwendet wurden. Die Datenelemente A und C, die entfernt wurden, werden vorübergehend im Rückinvalidierungspuffer 513 gespeichert.
  • 5D ist ein Diagramm des Beispiels, welches das Senden der Rückinvalidierungsmitteilungen an die Prozessoren 501, 503 und die LLCs 505, 507 zeigt. Die Rückinvalidierungsmitteilungen für die Datenelemente A und C können an jeden Prozessor 501, 503 gesendet werden, welchen der entfernte Snoopfiltereintrag referenziert, wie es von den Busindikatordaten 309 (3B) angezeigt wird. Diese Mitteilungen stellen die Datenkohärenz in dem Fall sicher, daß der Snoopfilter nicht vollständig die Cache-Leitungen in den Prozessoren 501, 503 verfolgt, der Weghinweis nicht richtig ermittelt wird, die Satzauswahlalgorithmen zwischen den Prozessoren 501, 503 und dem Snoopfilter 509 nicht übereinstimmen oder die Daten in den (nicht dargestellten) Cache-Speichern der niedrigeren Stufen in den Prozessoren 501, 503 cache-gespeichert sind.
  • Wieder Bezug nehmend auf FIG. 3A, kann in einer anderen Ausführungsform die Anzahl der Sätze in jeder Affinität zumindest teilweise basierend auf der entsprechenden Organisation der LLCs in dem Prozessor ermittelt werden, und die Anzahl der Wege in jedem Satz der Affinität kann eine reduzierte Gruppe der Wege in den entsprechenden LLCs der Prozessoren sein. In dieser Ausführungsform kann jeder Weg Daten über die entsprechende Cache-Eintragsposition in dem LLC speichern, wo der entsprechende Cache-Eintrag abgeleitet werden kann, wenn der angeforderte Cache-Eintrag nicht gefunden wird.
  • Bezug nehmend auf 6, kann der Prozessor 601 als ein Beispiel einen oder mehrere Cache-Speicher 605 umfassen, und der Prozessor 603 kann einen oder mehrere Cache-Speicher 607 umfassen (nur ein Cache-Speicher je Prozessor ist dargestellt). Der Snoopfilter 609 kann eine Gruppe von Affinitäten 611A bis 611B umfassen, welche jeweils einem Prozessor 601, 603 entsprechen. In diesem Beispiel entspricht die Affinität 611A dem Cache-Speicher 605 und die Affinität 611B entspricht dem Cache-Speicher 607. In diesem Beispiel umfaßt jeder Cache-Speicher 605, 607 M Sätze und N Wege. Ferner umfaßt jede entsprechende Affinität 611A, 611B M Sätze und N-X Wege (wobei X eine ganze Zahl größer als 0 ist), so daß es in jeder Affinität 611A, 611B weniger Wege je Satz gibt als in jedem entsprechenden Cache-Speicher 605, 607. In dem dargestellten Beispiel sei M=5, N=10, X=5, so daß jeder Cache-Speicher 5 Sätze umfaßt und jeder Satz 10 Wege umfaßt; und so daß jede Affinität 611A, 611B 5 Sätze umfaßt und jeder Satz (reduzierte) 5 Wege umfaßt.
  • 7 ist ein Ablaufdiagramm, welches ein Verfahren gemäß dieser Ausführungsform veranschaulicht. Das Verfahren beginnt bei Block 700 und wird mit Block 702 fortgesetzt, wo das Verfahren den Empfang einer Anforderung von Daten von einem Prozessor aus mehreren Prozessoren umfassen kann. Wieder Bezug nehmend auf 6, kann in einem Beispiel der Prozessor 601 das Datenelement A anfordern.
  • Bei Block 704 kann das Verfahren das Ermitteln einer Cache-Eintragsposition zumindest teilweise basierend auf der Anforderung umfassen. In einer Ausführungsform kann die Cache-Eintragsposition einen Satz und einen Weg umfassen. In einer Ausführungsform kann die Anforderung einen Weghinweis umfassen. In einer anderen Ausführungsform kann sowohl der Satz als auch der Weg in der Anforderung enthalten sein.
  • In 6 kann die Cache-Eintragsposition Satz 1, Weg 2 umfassen. In diesem Beispiel kann die Datenanforderung in dem Systemspeicher vollendet werden, wenn ein Cache-Fehltreffer vorliegt (wenn also die angeforderten Daten nicht in dem Snoopfilter 609 vorliegen und deswegen keinem Prozessoren-Cache-Speicher 605, 607 gefunden werden oder wenn sie in dem Snoopfilter 609 vorliegen, aber als ungültig gekennzeichnet sind).
  • Bei Block 706 kann das Verfahren das Speichern der Daten in einem Cache-Speicher, welcher dem Prozessor entspricht, auf der Cache-Eintragsposition umfassen.
  • Wieder Bezug nehmend auf 6, kann das Datenelement A nach dem Abrufen des Datenelements A aus dem Systemspeicher auf der ermittelten Cache-Eintragsposition des Prozessoren-Cache-Speichers 605 gespeichert werden.
  • Bei Block 708 kann das Verfahren, wenn ein Cache-Fehltreffer vorliegt, das Speichern einer Kohärenzaufzeichnung entsprechend den Daten in einem Snoopfilter gemäß einem der Blöcke 708A und 708B umfassen.
  • Bei Block 708A kann das Verfahren das Speichern der Kohärenzaufzeichnung auf der Cache-Eintragsposition einer entsprechenden Affinität in dem Snoopfilter umfassen, wenn die Cache-Eintragsposition in der entsprechenden Affinität gefunden wird.
  • Wiederum Bezug nehmend auf 6, kann, da sich die Cache-Eintragsposition in diesem Fall in der entsprechenden Affinität 611A (Satz 1, Weg 2) findet, die entsprechende Affinität 611A aktualisiert werden, indem zusätzlich die Kohärenzaufzeichnung CRA (entsprechend dem Datenelement A im Prozessor 601) auf der Cache-Eintragsposition der entsprechenden Affinität 611A gespeichert wird. In einer Ausführungsform wird, da jede Gruppe von Prozessoren-Cache-Speichern 605, 607 in den entsprechenden Affinitäten 611A, 611B dupliziert wird, aber nicht jede Wegnummer dupliziert wird, die angeforderte Cache-Eintragsposition gefunden, wenn die Wegnummer (Weg 2) sich in der Affinität 611A befindet, welche dem Cache-Speicher 605 entspricht.
  • Bei Block 708B kann das Verfahren das Speichern der Kohärenzaufzeichnung auf einer abgeleiteten Cache-Eintragsposition der entsprechenden Affinität umfassen, wenn die Cache-Eintragsposition in der entsprechenden Affinität nicht gefunden wird.
  • Wieder Bezug nehmend auf 6, kann nach Abruf des Datenelements B aus dem Systemspeicher das Datenelement B auf der ausgewählten Cache-Eintragsposition des Prozessoren-Cache-Speichers 607 gespeichert werden. In diesem Beispiel kann, da die Cache-Eintragsposition in der entsprechenden Affinität 611B (Satz 2, Weg 5) nicht gefunden wird, die entsprechende Affinität 611B aktualisiert werden, indem zusätzlich die Kohärenzaufzeichnung CRB (entsprechend dem Datenelement B) auf einer abgeleiteten Cache-Eintragsposition der entsprechenden Affinität 611B gespeichert wird. In einer Ausführungsform wird, da jede Gruppe von Prozessoren-Cache-Speichern 605, 607 in den entsprechenden Affinitäten 611A, 611B dupliziert wird, aber nicht jede Wegnummer dupliziert wird, die angeforderte Cache-Eintragsposition nicht gefunden, wenn die Wegnummer (Weg 5) sich nicht in der Affinität 611B befindet, welche dem Cache-Speicher 607 entspricht.
  • Das Speichern der Kohärenzaufzeichnung auf einer abgeleiteten Cache-Eintragsposition der Affinität, welche dem Cache-Speicher entspricht, kann das Speichern der Kohärenzaufzeichnung auf einem willkürlich ausgewählten Weg in der Affinität umfassen. Bei diesem Weg kann es sich um irgendeinen der Wege in der Affinität handeln, der ausgewählt werden kann. In der Affinität 611B (Annahme: 5 Wege) kann dies zum Beispiel W0, W1, W2, W3 und W4 umfassen.
  • Als ein anderes Beispiel kann das Speichern der Kohärenzaufzeichnung auf einer abgeleiteten Cache-Eintragsposition der Affinität, welche dem Cache-Speicher entspricht, das Berechnen einer Wegnummer umfassen. Dies kann das Berechnen einer Wegnummer zumindest teilweise basierend auf der Wegnummer und einer Anzahl von Wegen der zugehörigen Affinität umfassen. Die abgeleitete Wegnummer kann zum Beispiel, wie in 6 dargestellt, die ausgewählte Wegnummer (z.B. 5) modulo die Anzahl der Wege in der Affinität 611B (5 Wege in der Affinität 611B) umfassen, was in diesem Fall 0 ist. Deswegen kann in 6 das Datenelement B in Satz 2, Weg 0 gespeichert werden. Es können natürlich auch andere Berechnungsverfahren angewendet werden.
  • Das Verfahren kann bei Block 710 enden.
  • 8A veranschaulicht ein Szenario, in welchem das Datenelement A gemeinsam benutzt werden kann. In diesem Beispiel kann das Datenelement A zuerst vom Prozessor 601 angefordert werden und auf der Cache-Eintragsposition gespeichert werden, die durch Satz 1, Weg 2 des Prozessoren-Cache-Speichers 605 (800A) dargestellt wird. Die entsprechende Affinität 611A kann aktualisiert werden, indem zusätzlich die Kohärenzaufzeichnung CRA (entsprechend dem Datenelement A) auf der ermittelten Cache-Eintragsposition der entsprechenden Affinität 611A (802A) gespeichert wird. danach kann das Datenelement A vom Prozessor 603 angefordert werden und auf der Cache-Eintragsposition gespeichert werden, die durch Satz 1, Weg 1 des Prozessoren-Cache-Speichers 607 (804A) dargestellt wird.
  • In einer Ausführungsform wird, da die Kohärenzaufzeichnung CRA, welche dem Datenelement A entspricht, bereits in der Affinität 611A gespeichert worden ist, die entsprechende Affinität 611B nicht aktualisiert. In dieser Ausführungsform wird nur die Affinität aktualisiert, welche dem Cache-Speicher des ersten Prozessors entspricht, der auf das Datenelement zugreift. 8B veranschaulicht den resultierenden Zustand der Cache-Speicher 605, 607 und der entsprechenden Affinitäten 611A, 611B.
  • Bezug nehmend auf 8C kann dann, wenn der Prozessor 601 danach das Datenelement C anfordert und eine Cache-Eintragsposition auswählt, die durch Satz 1, Weg 2 des Prozessoren-Cache-Speichers 605 dargestellt wird, in welchem das Datenelement C zu speichern ist, nach Abruf des Datenelements C dies auf der ermittelten Cache-Eintragsposition des Prozessoren-Cache-Speichers 605 (800C) gespeichert werden. Da diese Cache-Eintragsposition besetzt ist (also das Datenelement A enthält), kann das Datenelement A aus der Cache-Eintragsposition im Cache-Speicher 605 (802C) entfernt werden. Ferner kann die entsprechende Kohärenzaufzeichnung CRA aus der Cache-Eintragsposition der entsprechenden Affinität 611A (804C) entfernt werden, und die Kohärenzaufzeichnung CRC, welche dem Datenelement C entspricht, kann auf der Cache-Eintragsposition der entsprechenden Affinität 611A (806C) gespeichert werden. Das entfernte Datenelement A kann dann vorübergehend im Rückinvalidierungspuffer 613 (808C) gespeichert werden, und eine Rückinvalidierungsmitteilung kann an einen oder mehrere Prozessoren gesendet werden, die das Datenelement A gemeinsam benutzen, was zur Entfernung des Datenelements A aus den entsprechenden Cache-Speichern (810C) führt. 8D veranschaulicht den resultierenden Zustand der Cache-Speicher 605, 607 und der entsprechenden Affinitäten 611A, 611B. Als ein Ergebnis der Rückinvalidierung kann eine darauf folgende Anforderung des Datenelements A durch den Prozessor 603 (und aller anderen Prozessoren, in welchen das Datenelement A vor der Rückinvalidierungsmitteilung zuvor cache-gespeichert war) zu einem Cache-Fehltreffer führen. In einer Umgebung eines Arbeitspensums mit starker gemeinsamer Benutzung kann dies die Cache-Fehltrefferrate merklich erhöhen.
  • 9 veranschaulicht ein Verfahren gemäß einer anderen Ausführungsform der Erfindung. Das Verfahren beginnt bei Block 900 und wird bei Block 902 fortgesetzt, wo das Verfahren den Empfang einer Anforderung von Daten von einem Prozessor aus mehreren Prozessoren umfassen kann, wobei die Anforderung eine Cache-Eintragsposition aufweist. In einer Ausführungsform kann die Cache-Eintragsposition einen Satz und einen Weg umfassen.
  • Bei Block 904 kann das Verfahren das Ermitteln einer Cache-Eintragsposition zumindest teilweise basierend auf der Anforderung umfassen. In einer Ausführungsform kann die Cache-Eintragsposition einen Satz und einen Weg umfassen. In einer Ausführungsform kann die Anforderung einen Weghinweis umfassen. In einer anderen Ausführungsform kann sowohl der Satz als auch der Weg in der Anforderung enthalten sein.
  • In 6 kann die Cache-Eintragsposition Satz 1, Weg 2 umfassen. In diesem Beispiel kann die Datenanforderung in dem Systemspeicher vollendet werden, wenn ein Cache-Fehltreffer vorliegt (wenn also die angeforderten Daten nicht in dem Snoopfilter 609 vorliegen und deswegen keinem Prozessoren-Cache-Speicher 605, 607 gefunden werden oder wenn sie in dem Snoopfilter 609 vorliegen, aber als ungültig gekennzeichnet sind).
  • Bei Block 906 kann das Verfahren das Speichern der Daten in einem Cache-Speicher, welcher dem Prozessor entspricht, auf der Cache-Eintragsposition umfassen.
  • Wieder Bezug nehmend auf 6, kann das Datenelement A nach dem Abrufen des Datenelements A aus dem Systemspeicher auf der ermittelten Cache-Eintragsposition des Prozessoren-Cache-Speichers 605 gespeichert werden.
  • Bei Block 908 kann das Verfahren das Speichern einer Kohärenzaufzeichnung entsprechend den Daten in einer Affinität, welche dem Cache-Speicher entspricht, umfassen. Im Gegensatz zu der in 7 beschriebenen Ausführungsform kann die Kohärenzaufzeichnung ungeachtet dessen, ob ein Cache-Fehltreffer auftritt, in einer Affinität (z.B. des anfordernden Prozessors) gespeichert werden.
  • In dieser Ausführungsform kann die Kohärenzaufzeichnung, wenn ein Cache-Treffer auftritt, in der Affinität gespeichert werden, welche dem Cache-Speicher des anfordernden Prozessors entspricht. In einer Ausführungsform kann die spezielle Cache-Eintragsposition der Affinität gemäß der Weghinweis-Ersetzungsstrategie (vollständig oder teilweise) ausgewählt werden. Insbesondere kann in einer Ausführungsform der Cache-Treffer auf einer anderen Cache-Eintragsposition eines anderen Cache-Speichers eines anderen Prozessors der mehreren Prozessoren auftreten. In diesem Fall wird die Kohärenzaufzeichnung, welche den angeforderten Daten entspricht, auf der Cache-Eintragsposition der Affinität gespeichert, welche dem Cache-Speicher des anfordernden Prozessors entspricht, indem die Daten auf der anderen Cache-Eintragsposition des anderen Cache-Speichers (also des Cache-Speichers, welcher die angeforderten Daten enthält) mit Daten auf der Cache-Eintragsposition der Affinität, welche dem Cache-Speicher des anfordernden Prozessors entspricht, vertauscht werden. Mit anderen Worten, die Kohärenzaufzeichnung in der Affinität, die dem Cache-Speicher des anfordernden Prozessors entspricht, ist zu der Affinität gewandert, welche dem Cache-Speicher entspricht, wo die angeforderten Daten gespeichert werden.
  • Ferner kann in dieser Ausführungsform, wenn ein Cache-Fehltreffer auftritt, die Kohärenzaufzeichnung auf der Cache-Eintragsposition oder einer abgeleiteten Cache-Eintragsposition gespeichert werden, abhängig davon, ob die Cache-Eintragsposition in der entsprechenden Affinität gefunden wird. Wenn die Cache-Eintragsposition in der entsprechenden Affinität gefunden wird, kann die Kohärenzaufzeichnung auf der Cache-Eintragsposition einer Affinität, welche dem Cache-Speicher entspricht, gespeichert werden. Wenn andererseits die Cache-Eintragsposition in der entsprechenden Affinität nicht gefunden wird, kann die Kohärenzaufzeichnung auf einer abgeleiteten Cache-Eintragsposition der Affinität, welche dem Cache-Speicher entspricht, gespeichert werden.
  • Alternativ kann die spezielle Cache-Eintragsposition nach anderen Ersetzungsstrategien ausgewählt werden, zum Beispiel willkürlichen oder pLRU.
  • Das Verfahren kann bei Block 910 enden.
  • Im folgenden werden 10A bis 10D beschrieben, sie veranschaulichen das Verfahren der 9 unter Anwendung einer teilweisen Weghinweis-Ersetzungsstrategie.
  • In 10A kann das Datenelement A zuerst vom Prozessor 601 angefordert werden und auf der Cache-Eintragsposition gespeichert werden, die durch Satz 1, Weg 2 des Prozessoren-Cache-Speichers 605 (1000A) dargestellt wird. Die entsprechende Affinität 611A kann aktualisiert werden, indem zusätzlich die Kohärenzaufzeichnung CRA, welche dem Datenelement A entspricht, auf der ermittelten Cache-Eintragsposition der Affinität 611A (1002A) gespeichert wird. Danach kann das Datenelement A vom Prozessor 603 angefordert werden und auf der Cache-Eintragsposition gespeichert werden, die durch Satz 1, Weg 1 des Prozessoren-Cache-Speichers 607 (1004A) dargestellt wird. In dieser Ausführungsform kann die Affinität 611B, welche dem Cache-Speicher 607 des anfordernden Prozessors 603 entspricht, aktualisiert werden. In diesem Fall, da ein Cache-Treffer vorliegt (das Datenelement A sich also im Cache-Speicher 605 befindet, welcher dem Prozessor 601 entspricht), kann die Kohärenzaufzeichnung, welche dem angeforderten Datenelement entspricht, gespeichert werden, indem die Kohärenzaufzeichnung in der Affinität, welche dem Cache-Speicher des Prozessors auf der ermittelten Cache-Eintragsposition entspricht, mit der Kohärenzaufzeichnung in der Affinität, welche dem Cache-Speicher des anderen Prozessors auf der anderen Cache-Eintragsposition entspricht, vertauscht wird. 10B veranschaulicht den resultierenden Zustand der Cache-Speicher 605, 607 und der entsprechenden Affinitäten 611A, 611B.
  • Bezug nehmend auf 10C kann dann, wenn der Prozessor 601 das Datenelement C anfordert und eine Cache-Eintragsposition auswählt, die durch Satz 1, Weg 2 des Prozessoren-Cache-Speichers 605, in welchem das Datenelement C gespeichert werden soll, dargestellt wird, nach einem Cache-Fehltreffer das Datenelement C aus dem Systemspeicher abgerufen werden und auf der ermittelten Cache-Eintragsposition des Prozessoren-Cache-Speichers 605 (1000C) gespeichert werden. Da diese Cache-Eintragsposition besetzt ist (also das Datenelement A enthält), kann das Datenelement A aus der Cache-Eintragsposition im Cache-Speicher 605 (1002C) entfernt werden. In diesem Fall muß jedoch die Kohärenzaufzeichnung CRA nicht aus der Affinität, welche dem Cache-Speicher 605 entspricht (also der Affinität 611A), entfernt werden, weil die Kohärenzaufzeichnung CRA zu einer Affinität des Prozessors gewandert war, welcher zuletzt das Datenelement anforderte, in diesem Beispiel also zu Prozessor 603 und der entsprechenden Affinität 611B. Demzufolge entsteht kein Cache-Fehltreffer, wenn der letzte anfordernde Prozessor 603 (also der Prozessor, bei dem es am wahrscheinlichsten ist, daß er das Datenelement A anfordert) danach das Datenelement A anfordert. 10D veranschaulicht den resultierenden Zustand der Cache-Speicher 605, 607 und der entsprechenden Affinitäten 611A, 611B.
  • In 10A bis 10D kann das auszutauschende Objekt (also der Weg), welches in dem Tauschschema ausgewählt wird, das in dem Ablaufdiagramm der 9 beschrieben wird, basierend auf der teilweisen Weghinweis-Ersetzungsstrategie ermittelt werden. Dieses Tauschschema ist jedoch auch auf andere Ersetzungsstrategien anwendbar, z.B., aber nicht darauf beschränkt, vollständige Weghinweis-, zufällige und pLRU-Ersetzungsstrategien.
  • In einer Ausführungsform werden der Snoopfilter und seine Komponenten als Hardwarevorrichtungen realisiert. In einer anderen Ausführungsform können diese Komponenten in Software (z.B. Mikrocode, Assemblersprache oder höheren Programmiersprachen) realisiert werden. Diese Software-Realisierungen können auf einem maschinenlesbaren Medium gespeichert werden. Bei einem „maschinenlesbares“ oder „maschinenzugängliches“ Medium kann es sich um irgendein Medium oder einen Mechanismus handeln, das/der Informationen in einer Form speichern oder übertragen kann, die für eine Maschine (z.B. eine Computernetzwerkvorrichtung, einen persönlichen digitalen Assistenten, ein Herstellungswerkzeug, irgendeine Vorrichtung mit einem oder mehreren Prozessoren usw.) zugänglich ist. Beispiele für ein maschinenlesbares oder - zugängliches Medium sind überschreibbare oder nicht überschreibbare Medien, z.B. ein Nur-Lese-Speicher (ROM), ein Direktzugriffsspeicher (RAM), Magnetspeichermedien, optische Speichermedien, physikalische Speichermedien, ein Flash-Speicher oder ein ähnliches Medium.
  • In der vorangehenden Beschreibung sind die Ausführungsformen der Erfindung in Bezug auf spezielle Ausführungsformen davon beschrieben worden. Es ist jedoch offensichtlich, daß verschiedene Modifikationen und Veränderungen daran vorgenommen werden können, ohne den weiteren Gedanken und den Umfang der Erfindung, wie er in den folgenden Patentansprüchen ausgeführt ist, zu verlassen. Die Beschreibung und die Zeichnungen sind demgemäß in einem veranschaulichenden und nicht in einem beschränkenden Sinn zu betrachten.

Claims (22)

  1. Verfahren, welches das folgende umfaßt: Empfangen an einem Snoop-Filter (609) einer Anforderung von Daten von einem Prozessor (601) aus mehreren Prozessoren (601, 603); Ermitteln einer Cache-Eintragsposition zumindest teilweise basierend auf der Anforderung; Speichern der Daten in einem Cache-Speicher (605), der sich auf den Prozessor (601) bezieht, an der Cache-Eintragsposition; Speichern einer Kohärenzaufzeichnung, welche den Daten entspricht in einer Affinität(611A), die dem Cache-Speicher (605) entspricht; und Ermitteln eines Auftretens eines Cache-Treffers an einer anderen Cache-Eintragsposition eines anderen Cache-Speichers (607), welcher einem anderen Prozessor (603) der mehreren Prozessoren (601, 603) entspricht, wobei das Speichern der Kohärenzaufzeichnung, welche den Daten in der Affinität (611A) entspricht, das Speichern der Daten in einer Affinität (611B), die dem Cache-Speicher entspricht, an einer Cache-Eintragsposition, die gemäß einer Weghinweis-Ersetzungsstrategie ausgewählt wird, umfasst und das Vertauschen der Kohärenzaufzeichnung in der Affinität (611A) an der Cache-Eintragsposition mit einer Kohärenzaufzeichnung in der Affinität (611B), die dem anderen Cache-Speicher entspricht, an der anderen Cache-Eintragsposition, wobei geräumte Daten temporär in einem Puffer gespeichert werden, bis eine Invalidierungsnachricht zu einem Ursprungsprozessor gesendet wird, um sicherzustellen, dass sich der anfordernde Prozessor (601) nicht auf Daten stützt, die nicht bereits invalidiert wurden.
  2. Verfahren nach Anspruch 1, wobei das Speichern einer Kohärenzaufzeichnung, welche den Daten in einer Affinität (611A) entspricht, die dem Cache-Speicher (605) entspricht, das Speichern der Daten in einer Affinität (611A), die dem Cache-Speicher (605) entspricht, auf einer willkürlich ausgewählten Cache-Eintragsposition umfaßt.
  3. Verfahren nach Anspruch 1, welches ferner ein Ermitteln eines Auftretens eines Cache-Fehltreffers umfaßt, und wobei das Speichern der Kohärenzaufzeichnung in einer Affinität (611A), welche dem Cache-Speicher (605) entspricht, das folgende umfaßt: Speichern der Kohärenzaufzeichnung auf der Cache-Eintragsposition der Affinität (611A), wenn die Cache-Eintragsposition in der entsprechenden Affinität (611A) gefunden wird; und Speichern der Kohärenzaufzeichnung auf einer abgeleiteten Cache-Eintragsposition der Affinität (611A), wenn die Cache-Eintragsposition nicht in der entsprechenden Affinität (611A) gefunden wird.
  4. Verfahren nach Anspruch 3, wobei die Cache-Eintragsposition einen Satz und einen Weg umfaßt.
  5. Verfahren nach Anspruch 4, wobei das Speichern der Kohärenzaufzeichnung auf einer abgeleiteten Cache-Eintragsposition ein Speichern der Kohärenzaufzeichnung auf einem willkürlich ausgewählten Weg in der Affinität (611A) umfaßt.
  6. Verfahren nach Anspruch 4, wobei das Speichern der Kohärenzaufzeichnung auf einer abgeleiteten Cache-Eintragsposition das Berechnen einer Wegnummer umfaßt.
  7. Verfahren nach Anspruch 1, weiter aufweisend: in Antwort auf ein Auftreten eines Cache-Fehltreffers, Speichern einer Kohärenzaufzeichnung entsprechend den Daten in einer Affinität (611A), die dem Cache (605) entspricht, an der Cache-Eintragsposition von Caches (607), die allen anderen Prozessoren (603) der Vielzahl von Prozessoren (601, 603) entsprechen.
  8. Verfahren nach Anspruch 1, wobei ein Bestimmen des Auftretens des Cache-Treffers an der anderen Cache-Eintragsposition des anderen Caches (607) der dem anfordernden Prozessor der Mehrzahl der Prozessoren entspricht.
  9. Verfahren nach Anspruch 1, wobei die Weghinweis-Ersetzungsstrategie vollständig oder partiell ist.
  10. Verfahren nach Anspruch 1, das des Weiteren ein Migrieren der Kohärenzaufzeichnung in der Affinität (611A), die dem Cache (605) des anfordernden Prozessors (601) entspricht, zur Affinität (611B), die dem Cache entspricht, wo die angeforderten Daten gespeichert werden, aufweist.
  11. Vorrichtung, welche das folgende umfaßt: einen Snoopfilter (609), welcher derart betrieben werden kann, daß: eine Anforderung von Daten von einem Prozessor (601) aus mehreren Prozessoren (601, 603) empfangen wird; eine Cache-Eintragsposition zumindest teilweise basierend auf der Anforderung ermittelt wird; die Daten in einem Cache-Speicher (605), der sich auf den Prozessor (601) bezieht, auf der Cache-Eintragsposition gespeichert werden; eine Kohärenzaufzeichnung gespeichert wird, welche den Daten in einer Affinität (611A) entspricht, die dem Cache-Speicher (605) entspricht, und Ermitteln eines Auftretens eines Cache-Treffers an einer anderen Cache-Eintragsposition eines anderen Cache-Speichers (607), welcher einem anderen Prozessor (603) der mehreren Prozessoren (601, 603) entspricht, wobei das Speichern der Kohärenzaufzeichnung, welche den Daten in der Affinität (611-a) entspricht, das Speichern der Daten in einer Affinität, die dem Cache-Speicher entspricht, an einer Cache-Eintragsposition, die gemäß einer Weghinweis-Ersetzungsstrategie ausgewählt wird, umfasst und das Vertauschen der Kohärenzaufzeichnung in der Affinität (611A) an der Cache-Eintragsposition mit einer Kohärenzaufzeichnung in der Affinität (611B), die dem anderen Cache-Speicher entspricht, an der anderen Cache-Eintragsposition, wobei geräumte Daten temporär in einem Puffer gespeichert werden, bis eine Invalidierungsnachricht zu einem Ursprungsprozessor gesendet wird, um sicherzustellen, dass sich der anfordernde Prozessor (601) nicht auf Daten stützt, die nicht bereits invalidiert wurden.
  12. Vorrichtung nach Anspruch 11, wobei der Snoopfilter (609) eine Kohärenzaufzeichnung speichert, welche den Daten in einer Affinität (611A) entspricht, die dem Cache-Speicher (605) entspricht, indem die Daten in einer Affinität (611A), die dem Cache-Speicher (605) entspricht, auf einer willkürlich ausgewählten Cache-Eintragsposition gespeichert werden.
  13. Vorrichtung nach Anspruch 11, wobei der Snoopfilter (609) ferner so zu betreiben ist, daß das Auftreten eines Cache-Fehltreffers ermittelt wird, und der Snoopfilter (609) die Kohärenzaufzeichnung in einer Affinität (611A) speichert, welche dem Cache-Speicher (605) entspricht, indem: die Kohärenzaufzeichnung auf der Cache-Eintragsposition der Affinität (611A) gespeichert wird, wenn die Cache-Eintragsposition in der entsprechenden Affinität (611A) gefunden wird; und die Kohärenzaufzeichnung auf einer abgeleiteten Cache-Eintragsposition der Affinität (611A) gespeichert wird, wenn die Cache-Eintragsposition in der entsprechenden Affinität (611A) nicht gefunden wird.
  14. Vorrichtung nach Anspruch 13, wobei die Cache-Eintragsposition eine Gruppe und einen Weg umfaßt und der Snoopfilter (609) die Kohärenzaufzeichnung auf einer abgeleiteten Cache-Eintragsposition speichert, indem eine Wegnummer berechnet wird.
  15. Vorrichtung nach Anspruch 11, die des Weiteren eine Controller-Vorrichtung aufweist, die den Snoop-Filter (609) aufweist, wobei die Controller-Vorrichtung dazu eingerichtet ist, die Mehrzahl von Prozessoren (601, 603) mit einem Systemspeicher zu koppeln und die Bewegung von Daten zwischen der Mehrzahl von Prozessoren (601, 603) und dem Systemspeicher zu verwalten.
  16. System, welches das folgende umfaßt: einen SRAM (statischen Direktzugriffsspeicher); mehrere Prozessoren (601, 603), welche mit dem SRAM verbunden sind; und einen Chipsatz, welcher mit den mehreren Prozessoren (601, 603) verbunden ist, wobei der Chipsatz einen Snoopfilter (609) aufweist, der so betrieben werden kann, daß er auf Daten auf dem SRAM zugreift und so daß er: eine Anforderung von Daten von einem Prozessor (601) aus mehreren Prozessoren (601, 603) empfängt; zumindest teilweise basierend auf der Anforderung eine Cache-Eintragsposition ermittelt; die Daten in einem Cache-Speicher (605), der sich auf den Prozessor (601) bezieht, auf der Cache-Eintragsposition speichert; eine Kohärenzaufzeichnung speichert, welche den Daten in einer Affinität (611A) entspricht, die dem Cache-Speicher (605) entspricht Ermitteln eines Auftretens eines Cache-Treffers an einer anderen Cache-Eintragsposition eines anderen Cache-Speichers (607), welcher einem anderen Prozessor (603) der mehreren Prozessoren (601, 603) entspricht, wobei das Speichern der Kohärenzaufzeichnung, welche den Daten in der Affinität (611-a) entspricht, das Speichern der Daten in einer Affinität, die dem Cache-Speicher entspricht, an einer Cache-Eintragsposition, die gemäß einer Weghinweis-Ersetzungsstrategie ausgewählt wird, umfasst und das Vertauschen der Kohärenzaufzeichnung in der Affinität (611A) an der Cache-Eintragsposition mit einer Kohärenzaufzeichnung in der Affinität (611B), die dem anderen Cache-Speicher entspricht, an der anderen Cache-Eintragsposition, wobei geräumte Daten temporär in einem Puffer gespeichert werden, bis eine Invalidierungsnachricht zu einem Ursprungsprozessor gesendet wird, um sicherzustellen, dass sich der anfordernde Prozessor (601) nicht auf Daten stützt, die nicht bereits invalidiert wurden.
  17. System nach Anspruch 16, wobei der Snoopfilter (609) ferner so zu betreiben ist, daß das Auftreten eines Cache-Fehltreffers ermittelt wird und der Snoopfilter (609) die Kohärenzaufzeichnung in einer Affinität (611A) speichert, welche dem Cache-Speicher (605) entspricht, indem: die Kohärenzaufzeichnung auf der Cache-Eintragsposition der Affinität (611A) gespeichert wird, wenn die Cache-Eintragsposition in der entsprechenden Affinität (611A) gefunden wird; und die Kohärenzaufzeichnung auf einer abgeleiteten Cache-Eintragsposition der Affinität (611A) gespeichert wird, wenn die Cache-Eintragsposition in der entsprechenden Affinität (611A) nicht gefunden wird.
  18. System nach Anspruch 17, wobei die Cache-Eintragsposition eine Gruppe und einen Weg umfaßt und der Snoopfilter (609) die Kohärenzaufzeichnung auf einer abgeleiteten Cache-Eintragsposition speichert, indem eine Wegnummer berechnet wird.
  19. System nach Anspruch 16, wobei der Chipsatz eingerichtet ist, die Bewegung von Daten zwischen der Mehrzahl von Prozessoren (601, 603) und dem SRAM zu verwalten.
  20. Herstellungsgegenstand, welcher darauf gespeicherte Befehle aufweist, wobei die Befehle, wenn sie von einer Maschine ausgeführt werden, zu dem folgenden führen: Empfangen an einem Snoop-Filter (609) einer Anforderung von Daten von einem Prozessor (601) aus mehreren Prozessoren (601, 603); Ermitteln einer Cache-Eintragsposition zumindest teilweise basierend auf der Anforderung; Speichern der Daten in einem Cache-Speicher (605), der sich auf den Prozessor (601) bezieht, auf der Cache-Eintragsposition; Speichern einer Kohärenzaufzeichnung, welche den Daten in einer Affinität (611A) entspricht, die dem Cache-Speicher (605) entspricht, und Ermitteln eines Auftretens eines Cache-Treffers an einer anderen Cache-Eintragsposition eines anderen Cache-Speichers (607), welcher einem anderen Prozessor (603) der mehreren Prozessoren (601, 603) entspricht, wobei das Speichern der Kohärenzaufzeichnung, welche den Daten in der Affinität (611-a) entspricht, das Speichern der Daten in einer Affinität, die dem Cache-Speicher entspricht, an einer Cache-Eintragsposition, die gemäß einer Weghinweis-Ersetzungsstrategie ausgewählt wird, umfasst und das Vertauschen der Kohärenzaufzeichnung in der Affinität (611A) an der Cache-Eintragsposition mit einer Kohärenzaufzeichnung in der Affinität (611B), die dem anderen Cache-Speicher entspricht, an der anderen Cache-Eintragsposition, wobei geräumte Daten temporär in einem Puffer gespeichert werden, bis eine Invalidierungsnachricht zu einem Ursprungsprozessor gesendet wird, um sicherzustellen, dass sich der anfordernde Prozessor (601) nicht auf Daten stützt, die nicht bereits invalidiert wurden.
  21. Verfahren nach Anspruch 20, welches ferner das Ermitteln des Auftretens eines Cache-Fehltreffers umfaßt, und wobei das Speichern der Kohärenzaufzeichnung in einer Affinität (611A), welche dem Cache-Speicher (605) entspricht, das folgende umfaßt: Speichern der Kohärenzaufzeichnung auf der Cache-Eintragsposition der Affinität (611A), wenn die Cache-Eintragsposition in der entsprechenden Affinität (611A) gefunden wird; und Speichern der Kohärenzaufzeichnung auf einer abgeleiteten Cache-Eintragsposition der Affinität (611A), wenn die Cache-Eintragsposition in der entsprechenden Affinität (611A) nicht gefunden wird.
  22. Verfahren nach Anspruch 21, wobei die Cache-Eintragsposition einen Satz und einen Weg umfaßt, und wobei das Speichern der Kohärenzaufzeichnung auf einer abgeleiteten Cache-Eintragsposition das Berechnen einer Wegnummer umfaßt.
DE102007052853.3A 2006-12-14 2007-11-06 Zeilentauschschema zur Verringerung von Rückinvalidierungen in einem Snoopfilter Expired - Fee Related DE102007052853B4 (de)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US11/638,851 2006-12-14
US11/638,851 US8055851B2 (en) 2006-12-14 2006-12-14 Line swapping scheme to reduce back invalidations in a snoop filter

Publications (2)

Publication Number Publication Date
DE102007052853A1 DE102007052853A1 (de) 2008-07-03
DE102007052853B4 true DE102007052853B4 (de) 2018-09-27

Family

ID=38962285

Family Applications (1)

Application Number Title Priority Date Filing Date
DE102007052853.3A Expired - Fee Related DE102007052853B4 (de) 2006-12-14 2007-11-06 Zeilentauschschema zur Verringerung von Rückinvalidierungen in einem Snoopfilter

Country Status (6)

Country Link
US (1) US8055851B2 (de)
KR (1) KR100978156B1 (de)
CN (1) CN101236527B (de)
DE (1) DE102007052853B4 (de)
GB (1) GB2444818B (de)
TW (1) TWI385514B (de)

Families Citing this family (17)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20080109624A1 (en) * 2006-11-03 2008-05-08 Gilbert Jeffrey D Multiprocessor system with private memory sections
US8015365B2 (en) 2008-05-30 2011-09-06 Intel Corporation Reducing back invalidation transactions from a snoop filter
US8782347B2 (en) * 2009-06-26 2014-07-15 Intel Corporation Controllably exiting an unknown state of a cache coherency directory
US8301842B2 (en) * 2009-08-26 2012-10-30 Via Technologies, Inc. Efficient pseudo-LRU for colliding accesses
US9558119B2 (en) * 2010-06-23 2017-01-31 International Business Machines Corporation Main memory operations in a symmetric multiprocessing computer
US8489822B2 (en) 2010-11-23 2013-07-16 Intel Corporation Providing a directory cache for peripheral devices
CN102819420B (zh) * 2012-07-31 2015-05-27 中国人民解放军国防科学技术大学 基于命令取消的高速缓存流水线锁步并发执行方法
US9086980B2 (en) 2012-08-01 2015-07-21 International Business Machines Corporation Data processing, method, device, and system for processing requests in a multi-core system
US9535848B2 (en) * 2014-06-18 2017-01-03 Netspeed Systems Using cuckoo movement for improved cache coherency
US9727466B2 (en) * 2014-08-26 2017-08-08 Arm Limited Interconnect and method of managing a snoop filter for an interconnect
US9639470B2 (en) * 2014-08-26 2017-05-02 Arm Limited Coherency checking of invalidate transactions caused by snoop filter eviction in an integrated circuit
US9507716B2 (en) * 2014-08-26 2016-11-29 Arm Limited Coherency checking of invalidate transactions caused by snoop filter eviction in an integrated circuit
US10417128B2 (en) * 2015-05-06 2019-09-17 Oracle International Corporation Memory coherence in a multi-core, multi-level, heterogeneous computer architecture implementing hardware-managed and software managed caches
JP6451538B2 (ja) * 2015-07-22 2019-01-16 富士通株式会社 演算処理装置及び演算処理装置の制御方法
US20170185515A1 (en) * 2015-12-26 2017-06-29 Bahaa Fahim Cpu remote snoop filtering mechanism for field programmable gate array
NO345417B1 (en) * 2019-03-22 2021-01-18 Numascale As Snoop filter device
US11334495B2 (en) * 2019-08-23 2022-05-17 Arm Limited Cache eviction

Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6018763A (en) 1997-05-28 2000-01-25 3Com Corporation High performance shared memory for a bridge router supporting cache coherency

Family Cites Families (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5732242A (en) 1995-03-24 1998-03-24 Silicon Graphics, Inc. Consistently specifying way destinations through prefetching hints
US6647466B2 (en) * 2001-01-25 2003-11-11 Hewlett-Packard Development Company, L.P. Method and apparatus for adaptively bypassing one or more levels of a cache hierarchy
US6857048B2 (en) * 2002-01-17 2005-02-15 Intel Corporation Pseudo least-recently-used (PLRU) replacement method for a multi-node snoop filter
US6959364B2 (en) * 2002-06-28 2005-10-25 Intel Corporation Partially inclusive snoop filter
US7558920B2 (en) * 2004-06-30 2009-07-07 Intel Corporation Apparatus and method for partitioning a shared cache of a chip multi-processor
US7590804B2 (en) 2005-06-28 2009-09-15 Intel Corporation Pseudo least recently used replacement/allocation scheme in request agent affinitive set-associative snoop filter

Patent Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6018763A (en) 1997-05-28 2000-01-25 3Com Corporation High performance shared memory for a bridge router supporting cache coherency

Also Published As

Publication number Publication date
GB2444818A (en) 2008-06-18
DE102007052853A1 (de) 2008-07-03
TWI385514B (zh) 2013-02-11
KR100978156B1 (ko) 2010-08-25
US20080147986A1 (en) 2008-06-19
CN101236527A (zh) 2008-08-06
KR20080055681A (ko) 2008-06-19
GB2444818B (en) 2010-08-25
CN101236527B (zh) 2012-09-05
US8055851B2 (en) 2011-11-08
TW200830098A (en) 2008-07-16
GB0723332D0 (en) 2008-01-09

Similar Documents

Publication Publication Date Title
DE102007052853B4 (de) Zeilentauschschema zur Verringerung von Rückinvalidierungen in einem Snoopfilter
DE10262164B4 (de) Computersystem mit einer hierarchischen Cacheanordnung
DE102009022151B4 (de) Verringern von Invalidierungstransaktionen aus einem Snoop-Filter
DE112008002018B4 (de) Bereitstellen eines gemeinsam genutzten Inklusiv-Cache bei Mehrkern-Cache-Clustern
DE102011076895B4 (de) Cachekohärenzprotokoll für persistente Speicher
DE3587960T2 (de) Datenverarbeitungsanlage mit einem Speicherzugriffssteuergerät.
DE69727856T2 (de) Multiprozessorsystem mit Konsistenzfehler-Registrierung mit entsprechendem Verfahren
DE102007030116B4 (de) Snoop-Filter mit ausschließlicher Inhaberschaft
DE69906585T2 (de) Datenverarbeitungssystem mit nichtuniformen speicherzugriffen (numa) mit spekulativer weiterleitung einer leseanforderung an einen entfernten verarbeitungsknoten
DE2226382C3 (de) Datenverarbeitungsanlage mit mehreren Prozessoren und diesen zugeordneten Pufferspeichern
DE69629140T2 (de) Cachefähigkeitsattribut für virtuelle Adressen in Cachespeichern mit sowohl virtuellen als auch physikalischem Index
DE102011076894B9 (de) Persistenter Speicher für einen Hauptspeicher eines Prozessors
DE60117818T2 (de) Verwaltung des ersetzens von daten in einem zwischenspeicher auf einem knoten aufgrund von zwischenspeichern anderer knoten
DE102013204414B4 (de) Daten-Cachespeicherblock-Freigabeanforderungen in einer Cachespeicherhierarchie mit mehreren Ebenen
DE102006030879B4 (de) System zum Reduzieren der Latenzzeit von exklusiven Leseanforderungen in einem symmetrischen Multiprozessorsystem
DE10316725B4 (de) Datenverwaltungsverfahren für ein Distributed Shared Memory-System
DE102013114256B4 (de) Systeme und Verfahren zur Beibehaltung der Informationskohärenz
DE102008048627A1 (de) Zuteilen von Platz in dedizierten Cache-Wegen
DE102013201079A1 (de) Mechanismus des Weiterleitungsfortschritts für Speichervorgänge beim Vorhandensein einer Überlastung in einem System, das Belastungen durch Zustandsänderungen begünstigt
DE19961499A1 (de) Caching von Objekten in Platten-gestützten Datenbanken
DE102007048601A1 (de) Datenspeicherung in einem Schaltsystem, das mehrere Prozessoren eines Computersystems koppelt
DE10219621A1 (de) Schnelle Prioritätsbestimmungsschaltung mit rotierender Priorität
DE10006430B4 (de) Verfahren zur Aufrechterhaltung einer Kohärenz für ein Multi-Prozessor-System
DE69130626T2 (de) Verfahren zur Verwaltung einer Cache-Speicheranordnung
DE69721641T2 (de) Verfahren und Vorrichtung für ein verzeichnisloses Speicherzugriffsprotokoll in einem Rechnersystem mit verteiltem gemeinsamen Speicher

Legal Events

Date Code Title Description
OP8 Request for examination as to paragraph 44 patent law
R016 Response to examination communication
R018 Grant decision by examination section/examining division
R020 Patent grant now final
R119 Application deemed withdrawn, or ip right lapsed, due to non-payment of renewal fee