-
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.