-
Hintergrund
-
Bei einem Mehrprozessorsystem, das mehrere Prozessoren und mehrere Caches aufweist, kann jeder Cache eine Kopie eines Abschnittes aus Daten speichern, die in einem Speicher abgelegt sind. Probleme treten auf, wenn mehr als ein Cache eine Kopie desselben Datenabschnitts enthält. Verschiedene Techniken sind entwickelt worden, um die Datenkohärenz bei mehreren Caches sicherzustellen. Wenn zum Beispiel die Daten in einem Cache abgeändert werden, werden andere Kopien der Daten als ungültig markiert, so dass sie nicht verwendet werden.
-
Um dabei zu helfen, die Cache-Kohärenz aufrecht zu erhalten, umfassen viele Systeme ein Verzeichnis, so wie einen Snoop-Filter, um beim Bestimmen des Vorhandenseins und des Status von Daten in Cache-Zeilen solcher mehreren Chaches zu helfen. Eine Snoop-Operation kann stattfinden, bei der ein Agent eines Bus Speichertransaktionen, z.B. Lese/Schreib-Operationen. überwacht. Der Agent kann die Zustände der Cache-Zeilen, die bei den Speichertransaktionen in dem Snoop-Filter befasst sind, aufzeichnen. Der Zustand einer Cache-Zeile kann angeben, ob die Zeile nur eine gültige Kopie außerhalb des Hauptspeichers hat. mehrere gültige Kopien hat. die von mehreren Caches gemeinsam genutzt werden, oder keine Kopien außerhalb des Hauptspeichers hat (d.h. die in allen Caches ungültig gemacht worden ist). Ein Dateneintrag in dem Snoop-Filter wird oftmals teilweise durch einen Bereich seiner Adresse in dem Hauptspeicher indexiert.
-
Dem Snoop-Filter fehlt manchmal der Raum, um den Zustand einer Zeile für eine neue Speichertransaktion aufzuzeichnen, und muss einen Eintrag aus dem Snoop-Filter ausräumen, um die neue Transaktion unterzubringen. Oftmals, wenn ein Eintrag aus dem Snoop-Filter geräumt wird, wird eine Rück-Invalidierungsnachricht an jeden Prozessorcache gesendet, der möglicherweise eine gültige Kopie der Zeile hält, die mit dem geräumten Eintrag verknüpft ist. Viele Cache-Fehler werden auf von einem Snoop-Filter herrührenden Rück-Invalidierungen einer Cache-Zeile zurückgeführt, die gerade verwendet werden sollte.
-
Einige Snoop-Filter werden als inklusive Snoop-Filter (ISFs - Inclusive Snoop Filters) dahingehend bezeichnet, dass die Information in dem Snoop-Filter und ebenso in Cache-Zeilen des Cache gehalten wird, die der Snoop-Filter abdeckt. Bei einer inklusiven Cache-Hierarchie umfasst einer der Cache-Speicher (d.h. ein Cache-Speicher niedrigerer Ebene) eine Untermenge der Daten, die in einem anderen Cache-Speicher (d.h. einem Cache-Speicher höherer Ebene) enthalten ist. Cache-Hierarchien können das Leistungsverhalten von Prozessoren verbessern, da sie es ermöglichen, dass ein kleinerer Cache mit einer relativen schnellen Zugriffsgeschwindigkeit häufig benutzte Daten enthält. Ein größerer Cache wiederum mit einer geringeren Zugriffsgeschwindigkeit als der kleinere Cache speichert weniger häufig verwendete Daten (ebenso wie Kopien der Daten in dem Cache niedrigerer Ebene).
-
Snoop-Filter, ebenso wie die Caches, die sie abdecken, weisen Einträge zu und löschen diese. Da jedoch eine inklusive Cache-Hierarchie mit einem ISF gewisse gemeinsame Daten speichert, kann das Räumen einer Cache-Zeile in einer Cache-Ebene oder einem Snoop-Filter das Räumen einer Cache-Zeile in einer anderen Ebene der Cache-Hierarchie bewirken, um die Cache-Kohärenz beizubehalten. Die ISFs müssen sicherstellen, dass eine Cache-Zeile, deren Adresse aus dem Snoop-Filter geräumt wird, aus allen abgedeckten Caches entfernt wird. Im Allgemeinen umfasst dies das Senden einer Rück-Invalidierungsanfrage von dem Snoop-Filter an die abgedeckten Caches. Wenn der Snoop-Filter viele solcher Anfragen sendet, verbraucht er Bandbreite auf der Koppelstruktur, was die effektive Speicherwartezeit erhöhen kann, ebenso werden möglicherweise nützliche Cache-Einträge entfernt.
-
US2007/02339651 offenbart ein System und ein Verfahren zur Aufrechterhaltung der Datenkohärenz, in einer Multiprozessorumgebung. Das System umfasst einen Snoop-Filter.
-
Die Aufgabe der vorliegenden Erfindung ist es, ein Verfahren sowie eine entsprechende Vorrichtung bereitzustellen, mit welchen die Zahl der Rück-Invalidierungsanfragen vom Snoop-Filter an den Prozessor-Cache reduziert werden können.
-
Figurenliste
-
- 1 ist ein Blockschaubild einer Ausführungsform eines Mehrprozessorsystems.
- 2 ist eine Blockschaubild eines Kohärenzcontrollers gemäß einer Ausführungsform der vorliegenden Erfindung.
- 3 ist ein Blockschaubild, das die Wechselwirkung zwischen einem Caching-Agent, einem Snoop-Filter und einem Bereitstellungsbereich gemäß einer Ausführungsform der vorliegenden Erfindung zeigt.
- 4 ist ein Ablaufdiagramm eines Verfahrens gemäß einer Ausführungsform der vorliegenden Erfindung.
-
Genaue Beschreibung
-
Bei verschiedenen Ausführungsformen kann ein Snoop-Filter so ausgestaltet sein, dass er eine verringerte Anzahl an Rück-Invalidierungsnachrichten an die Caches schickt, an die er gekoppelt ist. Auf diese Weise müssen weniger Einträge aus den Caches geräumt werden, was die Treffergeschwindigkeiten beim Cache verbessert. Das Verringern der Anzahl der Rück-Invalidierungsnachrichten wird auch den Systemverkehr auf der Koppelstruktur verringern. was die Speichcnvartezeit und andere Faktoren, die die Leistungsfähigkeit des Systems bestimmen. verbessert. Genauer kann bei verschiedenen Implementierungen ein Snoop-Filter. der einen Eintrag aus dem Snoop-Filter ausräumen soll (wobei der Eintrag mit einer gegebenen Cache-Zeile verknüpft ist) das Senden der Rück-Invalidierungsnachricht vermeiden. wenn es wahrscheinlich ist. dass ein entsprechender Cache in kurzer Zeit seine eigene Invalidierungsnachricht für diese Cache-Zeile ausgeben wird. Auf diese Weise können die Kosten des Aussendens der Rück-Invalidierungsnachricht von dem Snoop-Filter vermieden werden.
-
Abhängig von der Größe des Cache und von der Anwendung wird ein wesentlicher Anteil der Cache-Zeilen, die von einem Snoop-Filter geräumt werden, abgeändert (auch als „schmutzig” bezeichnet). Wenn ein Cache entscheidet, eine schmutzige Zeile auszuräumen, gibt er im Allgemeinen eine ..explicit writeback“ (EWB)-Transaktion aus. Bei manchen Implementierungen wird diese Transaktion als ein ungültig machende explizite Rückschreibe (oder BWL.INVLD)-Transaktion bezeichnet, welche die beiden Semantiken in eine einzige Transaktion kombiniert. Genauer berichtet diese Transaktion den aktuellen Wert der in Frage stehenden Cache-Zeile und liefert eine Angabe, dass die Cache-Zeile vollständig aus allen Ebenen der Cache-Hierarchie entfernt worden ist. Ausführungsformen verstärken dieses zweite Attribut, so dass ein Snoop-Filter, der diesen Cache abdeckt, seinen zugeordneten Eintrag stumm entfernen kann. Das heißt, der Snoop-Filter kann den entsprechenden Eintrag aus dem Snoop-Filter ohne das Ausgeben einer Rück-Invalidierungsanfrage ausräumen.
-
Somit, wenn ein ISF feststellen kann, dass ein abgedeckter Cache wahrscheinlich eine ungültig machende explizite Rückschreibetransaktion für einen ISF-Eintrag ausgeben wird, der geräumt worden ist oder geräumt werden soll, kann er das Ausgeben einer Invalidierungsanfrage verzögern. Dann. wenn der Cache diese Transaktion für die in Frage stehende Cache-Zeile ausgibt, braucht der Snoop-Filter die Invalidierungsanfrage nicht auszugeben.
-
Somit können Ausführungsformen einen ersten Mechanismus zur Verfügung stellen, der einem ISF eine Angabe liefert, dass wahrscheinlich ein ungültig machendes explizites Rückschreiben für einen geräumten (oder gerade zu räumenden) Eintrag in den Snoop-Filter ausgegeben wird, und einen zweiten Mechanismus, um diese Information zu nutzen, von einer Ausgabe einer Invalidierungsanfrage über eine gegebene Zeitdauer abzusehen. Wenn die zugeordnete ungültig machende explizite Rückschreibetransaktion während dieser Zeitdauer empfangen wird. kann der Snoop-Filter vermeiden, dass die Anfrage versendet wird.
-
Bei einer Ausführungsform kann der erste Mechanismus Hinweise bei Lesetransaktionen verwenden, die angeben, welcher Ort in einer Cache-Zeile in einem bestimmten Cache geräumt wird, um Raum für die Leseergebnisse zu schaffen. Der Hinweis selbst kann Information umfassen, hiernach als ein „EWB-Hinweis“ bezeichnet, um zu berichten, dass der geräumte Weg modifiziert wird. Eine alternative Form dieses Mechanismus kann Information in dem Snoop-Filter selbst verwenden. Zum Beispiel kann, nach dem Empfangen des Räumhinweises, der Snoop-Filter eine Angabe enthalten, dass der Cache exklusive Eigentümerschaft für die Zeile, die geräumt werden soll, erhalten hat. Das Anfragen nach exklusiver Eigentümerschaft einer Zeile ist stark mit dem Abändern der Zeile korreliert (typischerweise weit über 90 Prozent Wahrscheinlichkeit für Anwendungen der Befehlssatzarchitektur (ISA - Instruction Set Architecture) Intel®64 und Intel® Architektur (IA)-32. Somit kann diese Angabe bewirken, dass der Snoop-Filter das Ausgeben einer Invalidierungsnachricht verzögert.
-
Bei einer Ausführungsform kann der zweite Mechanismus als ein Puffer implementiert werden. so wie eine virtuelle oder physikalische Schlange oder ein Pool aus Invalidierungsanfragen. Das heißt, der Snoop-Filter kann in einen Haupt-Snoop-Filterbereich, in dem alle Snoop-Filtereinträge gespeichert sind, und einen Neben-Snoop-Filterbereich, der hierin als ein Bereitstellungspool oder Invalidierungspool bezeichnet wird, in den Einträge, die aus dem Snoop-Filter geräumt werden sollen, gespeichert werden, aufgeteilt werden. Somit können vor dem Räumen und über wenigstens eine Zeitdauer (z.B. bei manchen Ausführungsformen eine vorbestimmte Zeitdauer, die in der Größenordnung von ungefähr 100 Nanosekunden sein kann), in der eine Invalidierungsanfrage von dem Snoop-Filter von der Sendung zurückgehalten werden, geräumte Einträge aus dem Haupt-Snoop-Filterbereich in diesem Bereitstellungspool gespeichert werden. Somit können einlaufende ungültig machende explizite Rückschreibetransaktionen verwendet werden, um ein Durchsuchen in diesem Pool zu bewirken, welches den Satz anhängiger Einträge umfasst, die Invalidierungsanfragen erwarten, und jedwede passenden Größen zu löschen. Anhängige Invalidierungen bei dieser virtuellen oder physikalischen Struktur können nach einer gewissen Zeitdauer ausgegeben werden, können auf irgendeiner Altersrangbasis ausgegeben werden, sollte die Belegung des Pools oder der Schlange einen Wert erreichen, und/oder können ausgegeben werden, wenn ausreichende Systemquellen verfügbar werden.
-
Mit Bezug auf 1 ist ein Blockschaubild einer Ausführungsform eines Mehrprozessorsystems 10 gezeigt. Wie es in 1 gezeigt ist. kann das System 10 eine Vielzahl von Verarbeitungsknoten 17 haben, die mit einem Chipsatz 13 gekoppelt ist. Jeder der Verarbeitungsknoten 17 kann einen oder mehrere Prozessoren 11 (zwei Prozessoren pro Verarbeitungsknoten sind gezeigt, wobei jeder Prozessor ein Prozessorkern oder ein Mehrkernprozessor sein kann) und einen Cache 12 umfassen. Auf jeden Cache 12 kann lokal von Prozessoren eines „Home-Knotens“ (der Verarbeitungsknoten in dem sich der Cache befindet) und von Fern durch Prozessoren 11 von „Fern-Knoten“ (den Verarbeitungsknoten neben dem Home-Knoten) zugegriffen werden. Der Cache 12 wird als ein „lokaler Cache“ mit Bezug auf die Prozessoren 11 des Home-Knoten bezeichnet und kann aus einem relativ kleinen, jedoch schnellen Speicher gebildet sein, so wie einem statischen Speicher mit wahlfreiem Zugriff (SRAM - Static Random Access Memory). Die Verarbeitungsknoten 17 können mit dem Chipsatz 13 über einen oder mehrere Front Side Busse (FSBs) 14 (nur zwei FSBs sind gezeigt) oder andere Arten von Koppelstrukturen, so wie Punkt-zu-Punkt-Verbindungen gekoppelt sein. Ein oder mehrere der Verarbeitungsknoten 17 können auf einem einzigen Chip implementiert werden. Das System 10 kann wegen der starken gesammelten Verarbeitungsleistung, die es besitzt, als ein Serversystem verwendet werden, obwohl der Umfang der vorliegenden Erfindung in dieser Hinsicht nicht beschränkt ist.
-
Der Chipsatz 13 kann einen Kohärenz-Controller 132 umfassen, der einen Snoop-Filter gemäß einer Ausführungsform der vorliegenden Erfindung umfasst. um Anfragen zu verarbeiten. die von den FSBs 14 empfangen worden sind, und um die Datenkohärenz unter den Caches 12 aufrecht zu erhalten. Die Funktionen des Kohärenzcontrollers 132 werden hiernach mit Bezug auf die 2 diskutiert. Der Chipsatz 13 kann einen Speichercontroller 134 zum Bereitstellen einer Schnittstelle für die Verarbeitungsknoten 17 und weitere Komponenten des Systems 10 zur Verfügung stellen, um auf Speicherorte eines Speichers 15 zuzugreifen. Der Speicher 15 kann eine dynamische Speichereinheit mit wahlfreiem Zugriff (DRAM - Dynamic Random Access Memory) oder eine andere flüchtige oder nicht flüchtige Speichereinheit sein. die für Serveranwendungen oder allgemeine Anwendungen geeignet ist.
-
Der Chipsatz 13 kann auch einen I/O-Controller 136 umfassen, um eine Schnittstelle für die Verarbeitungsknoten 11 und weitere Komponenten des Systems 10 zur Verfügung zu stellen, um auf eine oder mehrere I/O-Baugruppen 16 zuzugreifen. Die I/O-Baugruppen 16 können Industry Standard Architecture (ISA)-Baugruppen, Peripheral Connect Interconnect (PCI)-Baugruppen. PCI Express-Baugruppen. Universal Serial Bus (USB)-Baugruppen, Small Computer System Interface (SCSI)-Baugruppen oder andere standardmäßige oder patentrechtlich geschützte I/O-Baugruppen, die für Serveranwendungen oder allgemeine Anwendungen geeignet sind, umfassen. Bei manchen Ausführungsformen kann der Chipsatz 13 als ein einzelner Chip implementiert sein. Bei manchen Ausführungsformen kann der Chipsatz 13 als zwei oder mehr Chips implementiert sein.
-
Die Prozessoren 11 können Speicherzeilen in ihren jeweiligen lokalen Caches 12 speichern. um den schnellen Zugriff zu vereinfachen. Die Caches 12 können Daten. Befehle oder eine Kombination aus beiden speichern. Für jede Cache-Zeile können die Caches 12 einen Tag (z.B. einen Teil einer Speicheradresse) speichern, um die Cache-Zeile einer entsprechenden Zeile im Speicher 15 zuzuordnen oder sie darauf abzubilden. Die Caches 12 können auch einen Kohärenzzustand für jede Cache-Zeile speichern und aktualisieren. Zum Beispiel können die Caches 12 MESI Kohärenzzustände unterstützen, bei denen eine Cache-Zeile einen modifizierten (M - Modified) Zustand, einen exklusiven (E - Exclusive) Zustand, einen gemeinsam genutzten (S - Shared) Zustand oder einen ungültigen (I - Invalid) Zustand haben kann.
-
Mit Bezug auf 2 kann bei einer Ausführungsform der Kohärenz-Controller 132 einen Snoop-Filter 24 umfassen, um Kohärenzinformation über die Cache-Zeilen zur Verfügung zu stellen. Wie in 2 gezeigt, kann eine Ausführungsform eines Kohärenz-Controllers 132 mehrere FSB-Ports (FSB_Port_0 21 und FSB_Port_1 22), eine Kohärenzmaschine 23, einen Snoop-Filter 24 und einen Bereitstellungspool 28 haben.
-
Der Snoop-Filter 24 kann eine oder mehrere Speicheranordnungen umfassen, so wie zum Beispiel eine vollassoziative Anordnung, einen teilassoziative Anordnung oder eine direkt abgebildete Anordnung, die Wege oder Zeilen umfasst, um Kohärenzinformation zu speichern. Bei einer Ausführungsform weist der Snoop-Filter 24 eine teilassoziative Anordnung mit N Wegen auf. wobei jede der Teilmengen N Slots (oder Wege) 225 (von denen nur einer gezeigt ist) zum Speichern von Kohärenzinformation von N Cache-Zeilen umfasst. Eine Cache-Zeile kann auf eine der Teilmengen abgebildet werden, indem beispielsweise bestimmte Bits der Speicheradresse verwendet werden. Der Weg 225 kann Information über eine Zeile speichern. Die Information kann ein Adressen-Tag, MESI-Kohärenzzustandsinformation und einen Anwesenheitsvektor umfassen. Der Anwesenheitsvektor kann angeben, welcher FSB 14 mit dem Cache verbunden ist. der die Cache-Zeile enthalten könnte.
-
Bei einer Ausführungsform kann der Snoop-Filter 24 nur diejenigen Einträge speichern, die mit Zeilen in dem E/M-Zustand verknüpft sind. Derartige Snoop-Filtereinträge können als E/M-Einträge bezeichnet werden. Das heißt, der Snoop-Filter 24 kann einen E/M-Eintrag für eine Zeile speichern, wenn irgendein Cache eine exklusive Kopie der Zeile außerhalb des Hauptspeichers enthält oder enthalten kann. Das Speichern nur der E/M-Einträge kann die Gesamtanzahl der Einträge, die in dem Snoop-Filter 24 gespeichert sind, verringern, und kann effektiv die Größe des Snoop-Filters erweitern. Als ein Kompromiss kann das Speichern nur der E/M-Einträge bewirken, dass sich die Anzahl der Snoops, die von dem Snoop-Filter 24 erzeugt wird. erhöht. Insbesondere für leseintensive Anwendungen jedoch verbessert sich das Leistungsverhalten des Gesamtsystems allgemein.
-
Wie es weiter in der 2 gezeigt ist, kann der Snoop-Filter 24 mit dem Bereitstellungspool 28 verknüpft sein. Obwohl sie mit solchen Strukturen bei der Ausführungsform der 2 gezeigt ist. ist der Umfang der vorliegenden Erfindung in dieser Hinsicht nicht beschränkt, und bei verschiedenen Implementierungen kann der Bereitstellungspool 28 ein Teil des Snoop-Filters 24 sein. Der Bereitstellungspool 28 kann Einträge speichern, die aus dem Snoop-Filter 24 ausgeräumt worden sind, bevor sie tatsächlich geräumt werden (und somit aus dem Bereitstellungspool 28 entfernt werden), und eine entsprechende Invalidierungsnachricht wird von der Kohärenzmaschine 23 zu einem oder mehreren Prozessorknoten übertragen.
-
Bei einer Ausführungsform kann. wenn eine Anfrage nach einer Speichertransaktion am Kohärenz-Controller 132 eintrifft, die Kohärenzmaschine 23 festlegen, wohin die Anfrage geschickt werden soll. Eine Speichertransaktion bezieht sich auf eine Transaktion, die den Zugriff auf einen Speicher oder einen Cache erfordert. Die Kohärenzmaschine 23 kann den Snoop-Filter 24 durchsuchen, um festzustellen, ob der Snoop-Filter Information über die angefragte Zeile enthält. Wenn der Snoop-Filter 24 die Information hat, schickt die Kohärenzmaschine 23 die Anfrage an den FSB-Port (21 oder 22), der mit dem Cache verbunden ist, der eine aktuelle Kopie der Zeile hat, basierend auf dem Anwesenheitsvektor für die Zeile. Wenn die Transaktion möglicherweise den Zustand der angefragten Zeile ändern könnte, aktualisiert die Kohärenzmaschine 23 die Information im Snoop-Filter 24. wobei die Aktualisierungseinheit 25 verwendet wird, um die Änderungen wiederzugeben. Wenn der Snoop-Filter 24 keine Information für die Zeile hat, kann die Kohärenzmaschine 23 einen Eintrag in den Snoop-Filter hinzufügen, um Kohärenzinformation über die angefragte Zeile aufzuzeichnen, wobei ebenfalls die Aktualisierungseinheit 25 verwendet wird.
-
Im Zusammenhang mit dem Einfügen eines neuen Eintrags in einen vollen Snoop-Filter oder beim Empfang einer Invalidierungstransaktion von einem Cache, der mit einem gegebenen Eintrag in dem Snoop-Filter 24 verknüpft ist, kann eine Invalidierungseinheit 26 der Kohärenzmaschine 23 verwendet werden, um die Invalidierung eines Eintrags in dem Snoop-Filter zu bewirken. Beim Durchführen solcher Invalidierungen wird der ausgewählte Eintrag aus dem Snoop-Filter 24 geräumt. Wenn es jedoch wahrscheinlich ist, dass eine invalidierende explizite Transaktion von einem Cache geräumten Eintrag empfangen werden wird, kann die Invalidierungseinheit 26 bewirken, dass der Snoop-Filter 24 den Eintrag in dem Bereitstellungspool 28 leitet, so dass das Senden einer Rück-Invalidierungsnachricht vermieden wird.
-
Nun mit Bezug auf die 3 ist ein Blockschaubild gezeigt, welches die Wechselwirkung zwischen einem Caching-Agent, einem Snoop-Filter und einem Bereitstelllungsbereich gemäß einer Ausführungsform der vorliegenden Erfindung veranschaulicht. Insbesondere zeigt die 3 einen Caching-Agent 17, der einem der Prozessorknoten der 2 entsprechen kann. Der Caching-Agent 17 ist an den Snoop-Filter 24 gekoppelt, der wiederum an einen Bereitstellungspool 28 gekoppelt ist. Für die einfache Veranschaulichung ist der Bereitstellungspool 28 weiter an den Caching-Agent 17 gekoppelt gezeigt. Es soll jedoch verstanden werden, dass bei verschiedenen Implementierungen der Snoop-Filter 24 und der Bereitstellungspool 28 ein Teil eines Chipsatzes oder einer anderen Schnittstellenkomponente sein kann, die wiederum an einen entsprechenden Caching-Agent gekoppelt ist.
-
Während des Betriebs kann ein Cache-Speicher, der mit dem Caching-Agent 17 verknüpft ist, so wie ein Cache der Ebene 2 (L2 - Level 2) feststellen, dass er sich auf einem Kapazitätswert befindet und er somit, um zusätzliche Information zu speichern, einen oder mehrere Einträge löschen muss. Um dies zu tun. kann der Caching-Agent 17 eine Kapazitätsräumtransaktion an die Schnittstelle senden, die den Snoop-Filter 24 umfasst. Da der Snoop-Filter 24 ein inklusiver Snoop-Filter ist, kann, nach dem Empfang einer solchen Kapazitätsräumtransaktion, der Snoop-Filter 24 bewirken, dass der zugeordnete Eintrag für die Cache-Zeile, der vom Caching-Agent 17 geräumt werden soll, von dem Snoop-Filter selbst geräumt wird. Wie in 3 gezeigt, kann, wenn der Snoop-Filter 24 feststellt, dass für diese Cache-Zeile vom Caching-Agent 17 wahrscheinlich eine ungültig machende explizite Rückschreibtransaktion ausgegeben wird, der Snoop-Filter 24 in diesem Fall anstatt direkt den Eintrag aus dem Snoop-Filter 24 zu räumen und das Senden einer Invalidierungsanfrage vom Snoop-Filter 24 an den Caching-Agent mit exklusivem Eigentum an der Zeile zu senden, bewirken, dass der anhängige Eintrag in den Bereitstellungspool 28 bewegt wird. Das heißt, der Bereitstellungspool 28 kann Speicherraum für verschiedene Einträge, die auf das Räumen von dem Snoop-Filter 24 warten, umfassen. Wenn der Caching-Agent 17 vor dem Ablauf einer gegebenen Zeitdauer, nachdem dieser Eintrag in den Bereitstellungspool 28 gebracht ist, eine Invalidierungsräumtransaktion ausgibt, kann der Eintrag aus dem Bereitstellungspool 28 ohne Senden der Rück-Invaliierungsanfrage geräumt werden.
-
Nun mit Bezug auf 4 ist ein Ablaufdiagramm eines Verfahrens gemäß einer Ausführungsform der vorliegenden Erfindung gezeigt. Das Verfahren 300 kann verwendet werden, um das Senden einer Invalidierungsanfrage von einem Snoop-Filter gemäß einer Ausführungsform der vorliegenden Erfindung zu verzögern. Wie es in der 4 gezeigt ist, kann das Verfahren 300 damit beginnen, eine Angabe über eine anhängige Kapazitätsräumung von einem Caching-Agent zu empfangen (Block 310). Als nächste kann von dem Snoop-Filter festgestellt werden. ob eine Invalidierungs-Rückschreibetransaktion von dem Caching-Agent wahrscheinlich ist (Diamant 320). Obwohl in dieser Hinsicht nicht beschränkt, wie oben diskutiert, kann diese Feststellung basierend auf einem oder mehreren Hinweisen von dem Caching-Agent getroffen werden und/oder basierend auf Information, die bereits in dem Snoop-Filter vorhanden ist. Wenn eine solche Transaktion unwahrscheinlich ist, geht die Steuerung zum Block 330 weiter, an dem der zugeordnete Snoop-Filtereintrag gelöscht werden kann und eine Invalidierungstransaktion von dem Snoop-Filter an einen oder mehrere Caching-Agent basierend auf Information in dem Snoop-Filter gesendet werden kann.
-
Jedoch, wie oben diskutiert, kann das Senden einer solchen Invalidierungstransaktion die Bandbreite der Koppelstruktur des Systems beeinflussen. Demgemäß geht bei verschiedenen Ausführungsformen, wenn festgestellt wird, dass eine invalidierende Rückschreibtransaktion von dem Caching-Agent wahrscheinlich ist. die Steuerung statt dessen vom Diamanten 320 zum Block 340. Dort kann der zugeordnete Snoop-Filtereintrag zu einem Bereitstellungsbereich bewegt werden, so wie einem Bereitstellungs- oder Invalidierungspool. Dann kann festgestellt werden, ob innerhalb einer bestimmten Zeitdauer, beginnend, wenn der Eintrag in den Bereitstellungsbereich bewegt wurde (Diamant 350) eine ungültig machende Rückschreibtransaktion von dem Caching-Agent erhalten wird. Das heißt, dieser Bereitstellungspool kann einer Liste von Invalidierungstransaktionen, die verschickt werden sollen, entsprechen, so lange ein Eintrag nicht durch Empfang einer einlaufenden invalidierenden Rückschreibtransaktion innerhalb einer gegebenen Zeitdauer gelöscht wird. Auf diese Weise wird. wenn eine solche ungültig machende Rückschreibtransaktion empfangen wird, das Senden einer Invalidierungsnachricht von dem Snoop-Filter vermieden.
-
Wenn die ungültig machende Rückschreibtransaktion innerhalb dieses Intervalls empfangen wird, kann der Snoop-Filtereintrag ohne Senden einer Invalidierungstransaktion geräumt werden (Block 360). Wenn jedoch eine derartige Transaktion nicht innerhalb dieser vorbestimmten Zeitdauer von dem Caching-Agent empfangen wird, geht die Steuerung statt dessen vom Diamanten 350 zum Block 330, wie oben diskutiert. Obwohl es mit dieser besonderen Implementierung in der Ausführungsform der 4 gezeigt ist, ist der Umfang der vorliegenden Erfindung in dieser Hinsicht nicht beschränkt.
-
Ausführungsformen können somit die Bandbreite der Koppelstruktur des Systems durch einen inklusiven Snoop-Filter verringern, der die effektive Speicherwartezeit verringern und das Leistungsverhalten des Systems verbessern kann. Weiter, indem ungültig machender Verkehr basierend wenigstens teilweise auf der Verfügbarkeit von Systemressourcen moduliert wird, kann die Variabilität beim Leistungsverhalten des Systems verringert werden.
-
Ausführungsformen könne in Code implementiert werden und können auf einem Speichermedium gespeichert werden, auf dem Befehle gespeichert sind, die verwendet werden können, um ein System so zu programmieren, dass es die Befehle ausführt. Das Speichermedium kann irgendeinen Typ einer Platte umfassen, einschließlich Floppy-Disks, optische Platten Nur-Lese-Speicher als Compact-Disk (DC-ROMs - Compact Disk Read Only Memories), wiederbeschreibbare Compact-Disks (CD-RWs - Compact Disk rewritables) und magnetooptische Platten. Halbleitereinheiten, so wie Nur-Lese-Speicher (ROMs - Read Only Memories), Speicher mit wahlfreiem Zugriff (RAMs - Random Access Memories), so wie dynamische Speicher mit wahlfreiem Zugriff (DRAMs - Dynamic Random access Memories), statische Speicher mit wahlfreiem Zugriff (SRAMs - Static Random Access Memories), löschbare programmierbare Nur-Lese-Speicher (EPROMs -Erasable programmabe Read-Only Memories). Flash-Speicher, elektrisch löschbare programmierbare Nur-Lese-Speicher (EEPROMs - Electrically Erasable Programmable Read-Only Memories), magnetische oder optische Karten oder irgendein anderer Typ Medium, der für das Speicher elektronischer Befehle geeignet ist. ist jedoch nicht darauf beschränkt.
-
Obwohl die vorliegende Erfindung im Hinblick auf eine beschränkte Anzahl von Ausführungsformen beschrieben worden ist. werden Fachleute zahlreiche Modifikationen und Abänderungen davon erkennen. Es ist beabsichtigt, dass die angefügten Ansprüche alle derartigen Modifikationen und Abänderungen abdecken, die in den wahren Gedanken und Umfang dieser vorliegenden Erfindung fallen.