-
Hintergrund.
-
Bei modernen Mehrprozessor-(MP)-Sockel-Computersystemen sind verschiedene Topologien möglich. Solche Systeme schließen häufig viele unterschiedliche Halbleiterbauelemente ein, die als integrierte Schaltungen (ICs) realisiert sind. Die ICs schließen Prozessoren, Speicher, Chipsätze, Ein-/Ausgabe-Hubs (IOHs) usw. ein.
-
Während Prozessknoten Fortschritte machen, können größere Mengen an Funktionalität in einer einzelnen Halbleiter-Chiplage eingebunden werden. Ein Integrationstrend besteht darin, eine IO-Komponente wie Funktionalität eines IOH in eine Hauptprozessor-(CPU)-Chiplage zu integrieren. Die hauptsächliche Motivation, dies zu tun, ist die Materialkosten (BOM) eines Computersystems zu reduzieren und kleine Formfaktoren zu ermöglichen, während die gesamte Leistungsaufnahme reduziert wird.
-
Es ergeben sich aber Probleme, sobald eine IO-Komponente auf dem gleichen Chip mit einem Mehrprozessor integriert wird. Traditionelle IO-Integration behandelt die IO-Komponente als einen separaten Caching-Agenten, was bedeutet, dass dedizierte Logik mit der IO-Komponente verbunden wird, um Cache-Kohärenz-Operationen zu behandeln. Wenn ein IO-Agent Schreib-/Leseoperationen mit dem Hauptspeicher durchführt, muss es den Cache auf der CPU-Seite per Snooping abfragen, um die Cache-Kohärenz aufrechtzuerhalten. Bei MP-Systemen wird dies zu einem hauptsächlichen Skalierungsproblem. Beispielsweise befinden sich bei einem 8-Sockel-System effektiv 16 Caching-Agenten im System, welche die Leistung vermindern können. Und der Aufwand, um ein System zu vergrößern und diese vielen Caching-Agenten zu unterstützen, ist nicht geringfügig.
-
Kurze Beschreibung der Zeichnungen
-
1 ist ein Blockdiagramm eines Teils eines Mehrprozessor-Systems gemäß einer Ausführungsform der vorliegenden Erfindung.
-
2 ist ein Blockdiagramm eines Caching-Agenten gemäß einer Ausführungsform der vorliegenden Erfindung.
-
3 ist ein Ablaufdiagramm eines Verfahrens gemäß einer Ausführungsform der vorliegenden Erfindung.
-
4 ist ein Ablaufdiagramm eines Verfahrens gemäß einer weiteren Ausführungsform der vorliegenden Erfindung.
-
5 ist ein Blockdiagramm eines Beispiels eines möglichen Deadlock-Szenarios, das gemäß verschiedenen Ausführungsformen vermieden werden kann.
-
6 ist ein Blockdiagramm eines Mehrkernprozessors gemäß einer Ausführungsform der vorliegenden Erfindung.
-
7 ist ein Blockdiagramm eines Mehrprozessor-Systems gemäß einer erfindungsgemäßen Ausführungsform. Ausführliche Beschreibung
-
Bei verschiedenen Ausführungsformen kann ein IO-Agent in einen Mehrprozessor-Sockel wie einen Mehrkernprozessor zur Verwendung in einem MP-Server-System integriert sein, während Skalierungsprobleme vemieden werden. Spezieller kann ein CPU-Caching-Agent konfiguriert werden, sowohl CPU-Verkehr als auch IO-Verkehr zu unterstützen, wodurch das Skalierungsproblem gelöst wird. Die Leistung kann durch das näher Zueinanderbringen des IO-Agenten und des bzw. der CPU-Kerne verbessert werden. Dieser IO-Agent schließt Funktionalität ein, um eine Schnittstelle zwischen einem oder mehreren Peripheriegeräten, die mit dem Prozessor gekoppelt sind, durch chipexterne Links wie Peripheral Component Interconnect-(PCleTM)-Links bereitzustellen, und kann die Stelle einer separaten Chipsatz-Komponente wie eines IOH einnehmen.
-
Unter Bezugnahme auf 1 ist ein Blockdiagramm eines Teils eines Mehrprozessorsystems gemäß einer Ausführungsform der vorliegenden Erfindung gezeigt. Wie gezeigt in 1 schließt System 100 ein Paar von Prozessorsockeln 110 0 und 110 1 ein. Bei der gezeigten Ausführungsform entspricht jeder Sockel 110 (generell) einem Mehrkernprozessor. Zur Erleichterung der Erörterung wird Bezug auf die Komponenten innerhalb des Sockels 110 0 genommen. Bei der Ausführungsform von 1 kann der Sockel 110 1 auf identische Weise konfiguriert sein. Es ist jedoch offensichtlich, dass bei anderen Ausführungsformen, heterogene Prozessorsockel vorhanden sein können.
-
Wie ersichtlich schließt Sockel 110 0 eine Vielzahl von Kernen 120 00–120 0n ein. Als Beispiel kann Sockel 110 0 4, 8 oder eine andere solche Zahl an Kernen einschließen. Jeder der Kerne kann verschiedene Komponenten einschließen, einschließlich einer Prozessor-Pipeline, die mehrfache Stufen wie eine Frontend-Einheit, eine oder mehrere Ausführungseinheiten und eine Backend-Einheit aufweist. Außerdem können ein oder mehrere Cache-Speicher-Level innerhalb der Kerne vorhanden sein. Jeder der Kerne 120 kann mit einem gemeinsam benutzten Cache-Speicher 130 0 gekoppelt sein, der ein Last Level Cache (LLC) sein kann. Wie ersichtlich kann LLC 130 einen Caching-Agenten 135 0 einschließen. Bei verschiedenen Ausführungsformen kann dieser Caching-Agent ein kombinierter Caching-Agent für die CPU sowie für einen integrierten IO-Agenten sein. Insbesondere kann der Sockel 110 0 ein IO-Modul (hiernach ein integriertes IO-Modul oder IIO-Modul) einschließen. Dieses IIO-Modul kann als eine Schnittstelle zu einem oder mehreren chipexternen Peripherie- oder IO-Geräten (nicht dargestellt in 1) agieren, die mit dem Prozessor gekoppelt sind, z. B. über PCleTM-Links. Beispiele von solchen IO-Geräten schließen Speichergeräte, Netzwerkschnittstellen, Grafikkarten usw. ein.
-
Wie weiter gezeigt kann Sockel 110 0 einen integrierten Memory-Controller (IMC) 145 0 einschließen, um eine Schnittstelle zu einem Systemspeicher (aus Gründen einer vereinfachten Darstellung nicht dargestellt) über eine Speicher-Kopplungsstruktur bereitzustellen. Der Sockel 110 1 schließt ähnliche Komponenten ein und kann mit Sockel 110 0 über eine Kopplungsstruktur 150 gekoppelt sein, welche bei einer Ausführungsform ein Punkt-zu-Punkt-(PtP)-Link gemäß eines Intel® Quick Path Interconnect-(QPI)-Protokolls sein kann.
-
Bezugnehmend auf 2 ist ein Blockdiagramm eines Caching-Agenten gemäß einer Ausführungsform der vorliegenden Erfindung gezeigt. Wie gezeigt in 2 kann Caching-Agent 200 Logik sein, die zwischen einem oder mehreren Kernen eines Prozessors und einem LLC 230 zwischengeschaltet ist. Außerdem kann Caching-Agent 200 auch eine Schnittstelle zwischen einem IIO-Modul innerhalb eines Mehrkernprozessors und dem LLC bereitstellen. Wie ersichtlich kann Caching-Agent 200 einen Eingangsport 210 einschließen, der mehrere Eingangswarteschlangen 211–213 einschließt. Wie ersichtlich kann Eingangsport 210 mit einem Arbiter 215 gekoppelt sein, der unter eingehenden Anfragen vermitteln und sie an eine Tabelle von Anforderungen (TOR) 220 bereitstellen kann. Wie ersichtlich kann TOR 220 ein Puffer oder ein anderer Zwischenspeicher sein, um eingehende Anfragen aufzunehmen. Bei der gezeigten Ausführungsform kann TOR 220 wenigstens eine fest zugeordnete Ressource 225 für gepostete Transaktionen einschließen. Bei einer Ausführungsform kann die fest zugeordnete Ressource 225 ein einzelner Eintrag der Warteschlange sein, obwohl der Umfang der vorliegenden Erfindung in dieser Hinsicht in keiner Weise eingeschränkt ist.
-
Unter weiterer Bezugnahme auf 2 bildet TOR 220 eine Schnittstelle mit LLC 230. Spezieller kann dieser LLC eine Bank oder ein anderer Teil des mit dem Caching-Agenten verbundenen LLC sein. Um Zugriff zu anderen Orten innerhalb des Prozessors über eine Ring-Kopplungsstruktur 260 bereitzustellen, können eine Eingangswarteschlange 240 und eine Ausgangswarteschlange 250 vorgesehen werden. Deshalb können über den Caching-Agenten 200 Kerne des Prozessors und ein IIO-Modul ohne die Notwendigkeit von zusätzlichen Caching-Agenten die Kohärenz aufrechterhalten. Obwohl aus Gründen einer vereinfachten Darstellung nicht dargestellt, ist es offensichtlich, dass Caching-Agent 200 weiter verschiedene Kohärenz-Logik einschließen kann, um Cache-Kohärenz-Operationen im Auftrag der Kerne und des IIO-Moduls auszuführen und kohärenten Zugriff in Bezug auf die Kerntransaktionen als auch die IO-Gerät-Transaktionen wie hiernach beschrieben zu ermöglichen.
-
Zu beachten ist, dass, obwohl in 2 aus Gründen einer vereinfachten Darstellung eine einzelne Struktur gezeigt ist, es offensichtlich ist, dass ein Caching-Agent so verteilt werden kann, dass jeder von unterschiedlichen Teilen des Caching-Agenten mit einem entsprechenden Kern und einer LLC-Bank oder einem LLC-Segment verbunden sein kann.
-
Mit dieser Herangehensweise geht das IIO-Modul durch den CPU-Caching-Agenten, um auf Speicher oder andere IO-Geräte zuzugreifen und dadurch den Overhead des Zuordnens von fest zugeordneten Ressourcen für einen integrierten IO-Caching-Agenten zu reduzieren. Dies reduziert auch den Betrag an erforderlichem Snoop-Verkehr, da eine verminderte Anzahl von Caching-Agenten pro System realisiert werden kann. Deshalb kann bei verschiedenen Ausführungsformen ein System einen einzelnen Caching-Agenten pro Mehrkernprozessor-Sockel einschließen, wobei jeder Sockel mehrere Kerne und ein IIO-Modul einschließt.
-
Ausführungsformen stellen auch eine IO-Leistungsverbesserung bereit. Insbesondere kann ein IO-Gerät, das durch das IIO-Modul unterstützt wird, direkt kohärente Daten in diesen Cache „schieben”, wo jeder Prozessorkern innerhalb des gleichen Sockels einen sehr schnellen Weg aufweisen kann, um auf die Daten zuzugreifen, da sich dieses IIO-Modul viel näher an einem internen CPU-Cache wie einem LLC befindet. Dies steht im Gegensatz zum konventionellen Ansatz, bei dem ein chipexternes IO-Gerät einen direkten Cache-Zugriff-(DCA)-Hinweis an einen Prozessorkern ausgeben muss, um zu bewirken, dass eine Cachezeile in den LLC gebracht wird. Zu diesem Zweck kann ein IO-Gerät, das mit einem IIO-Modul gemäß einer Ausführungsform der vorliegenden Erfindung gekoppelt ist, eine Zuordnungstransaktion generieren, die Daten direkt im LLC deponieren kann.
-
Auf diese Weise können IO-Daten näher an den CPU-Cache herangebracht werden, was einen effizienteren Mechanismus bereitstellt, um Daten von einem IO-Gerät direkt in einem LLC eines Prozessors zu deponieren und ohne die Notwendigkeit zuerst die Daten in einem Systemspeicher zu speichern, was den Bandbreitenverbrauch reduziert. Weiter noch kann die Notwendigkeit eines direkten Cache-Hinweises vom IO-Gerät an einen Kern, um eine Leseanfrage zu veranlassen und die Daten zu erhalten, vermieden werden.
-
Bezugnehmend auf 3 ist ein Ablaufdiagramm eines Verfahrens gemäß einer Ausführungsform der vorliegenden Erfindung gezeigt. Wie gezeigt in 3 kann das Verfahren 300 verwendet werden, um die Zuweisung von Daten von einem IO-Gerät, das mit einem Mehrkernprozessor gekoppelt ist, direkt in einen Cache-Speicher des Prozessors auszuführen. Insbesondere kann Verfahren 300 von 3 verwendet werden, um Daten auf eine Weise in den Cache einzuführen, die Folgendes vermeidet: die Daten an einen Systemspeicher, der mit dem Prozessor (wie ein dynamischer Random Access Memory (DRAM)) über einen integrierten Memory-Controller des Prozessors gekoppelt ist, zuerst bereitzustellen; und die Notwendigkeit, einen Hinweis an einen Kern des Prozessors zu senden, um zu veranlassen, dass die Daten angefordert und im Cache gespeichert werden.
-
Wie ersichtlich in 3 kann Verfahren 300 mit dem Empfangen einer Zuweisungstransaktion in einem IIO-Modul von einem IO-Gerät (Block 310) beginnen. Beispielsweise kann diese Zuweisungstransaktion eine Anforderung sein, Daten direkt in einen Cache-Speicher, wie beispielsweise einen LLC des Prozessors zu schreiben, und sie kann von einem IO-Gerät wie einem Peripheriegerät empfangen werden, das beispielsweise mit dem Prozessor über einen PCleTM-Link gekoppelt ist. Wie ersichtlich kann diese Zuweisungstransaktion vom IIO an einen CPU-Caching-Agenten weitergeleitet werden (Block 320). Da es bei verschiedenen Ausführungsformen keinen separaten Caching-Agenten für den IIO gibt, kann diese Transaktion zu einem gemeinsamen Caching-Agenten geleitet werden, der Caching-Agenten-Funktionalität für die Prozessorkerne und den IIO ausführt.
-
Ansprechend auf diese Anforderung geht die Steuerung zu Block 330 weiter, wo die Daten direkt in den LLC gespeichert werden können. Bei einer Ausführungsform kann ein Least Recently Used-(LRU)-Algorithmus verwendet werden, um die Daten, zusammen mit einer Weg-Maske zu platzieren und die LLC-Wege einzuschränken, die IIO-Daten zugewiesen werden können. Insbesondere können die Daten zusammenhängend gemäß einem gegebenen Cache-Kohärenz-Protokoll (z. B. einem Modified Exclusive Shared Invalid-(MESI)-Protokoll) gespeichert werden.
-
Mit den jetzt im LLC vorhandenen Daten kann auf diesen mehrfach durch jeden der Kerne des Prozessors sowie durch das initiierende IO-Gerät oder andere IO-Geräte, die mit dem Prozessor gekoppelt sind, für Lese- und Schreiboperationen zugegriffen werden (Block 340). Konventionelle Cache-Kohärenz-Protokoll-Operationen und Compliance mit Sortierungsregeln können beim Zugreifen auf diese Daten erfolgen, um die Kohärenz aufrechtzuerhalten. Während des normalen Cachevorgangs kann bestimmt werden, ob die Daten dieser Cachezeile zwangsweise entfernt werden sollen (Raute 350). Wenn dies so ist, können die Daten zum Speicher zurückgeschrieben werden (Block 360). Indem Ausführungsformen das Verfahren 300 auf diese Weise verwenden, stellen sie die Fähigkeit bereit, wirksam Daten von einem IO-Gerät direkt in einen Prozessor-Cachespeicher zu laden ohne die Notwendigkeit, irgendeine Speicherbandbreite zu verbrauchen. Stattdessen werden nur bei einem Entfernen aus dem Cache die Daten in den Systemspeicher geschrieben. Obwohl diese bestimmte Implementierung in der Ausführungsform von 3 gezeigt ist, wird dadurch der Umfang der vorliegenden Erfindung in dieser Hinsicht in keiner Weise eingeschränkt.
-
Verschiedene Elemente sowohl innerhalb eines IIO-Moduls als auch innerhalb des CPU-Caching-Agenten können konfiguriert werden, um Deadlocks zu vermeiden und eine angemessene Leistung sicherzustellen. Für eine PCleTM-Sortierungsregel-Compliance, und um die Leistung aufrechtzuerhalten, kann eine Drop-Eigentümerschaft-Anzeige an einen CPU-Caching-Agenten bereitgestellt werden, um einen Hinweis an den IIO zurückzusenden, die Eigentümerschaft einer Cachezeile im Falle, dass eine externe Snoop-Anfrage zu einer vorhandenen Eigentümerschaftsanforderung erkannt wird, fallen zu lassen. Im Gegensatz dazu ruft eine konventionelle IIO-Implementierung die Eigentümerschaft einer Cachezeile lange davor ab, wenn das IIO-Gerät gelesen wird, um rückzuordnen und die Schreibanordnung zu erfüllen. Deshalb arbeitet ein konventioneller IIO derart, dass die Eigentümerschaft einer Zeile erworben wird, bevor das Schreiben der Cachezeile für die Übergabe an das System bereit ist. Nur, wenn die Schreibanordnung erfüllt ist, tritt ein Schreibvorgang zum System auf. Während dieser Zeit bewirken alle zur gleichen Zeile eingehenden Snoops, dass der IIO die Eigentümerschaft der Zeile verliert, und es muss eine Anforderung für die Eigentümerschaft erneut ausgegeben werden, um die Eigentümerschaft erneut zu erhalten.
-
Bezugnehmend auf 4 ist ein Ablaufdiagramm eines Verfahrens gemäß einer weiteren Ausführungsform der vorliegenden Erfindung gezeigt. Wie gezeigt in 4 kann das Verfahren 375 verwendet werden, um Deadlocks zu vermeiden, indem ein IIO veranlasst wird, die Eigentümerschaft einer gegebenen Cachezeile fallen zu lassen, wenn eine in Konflikt stehende Anforderung empfangen wird. Speziell wie gezeigt in 4 kann das Verfahren 375 beginnen, indem es bestimmt, dass eine Snoop-Anfrage in einem Caching- Agenten für eine Cachezeile empfangen wird, die von einem IIO-Modul besessen wird (Raute 380). Diese Eigentümerschaft kann bei einigen Ausführungsformen auf Zustandsinformationen basieren, die mit der Cachezeile verbunden sind, wie beispielsweise eine Eigentümerschaftsanzeige sowie Cache-Kohärenz-Zustandsinformationen. Wenn eine solche Anforderung empfangen wird, kann der Caching-Agent eine Drop-Eigentümerschaft-Anzeige an das IO-Modul senden, um das Modul zu veranlassen, die Eigentümerschaft der Cachezeile fallen zu lassen (Block 385). Zu beachten ist, dass der Grund für diesen Hinweis wahrscheinlich der ist, dass die Eigentümerschaft der Cachezeile vom IIO-Modul auf ein Vorabrufen durch ein gekoppeltes IO-Gerät anspricht und somit die Daten in Bezug auf das IO-Gerät von einer spekulativen Natur und noch nicht erforderlich sind.
-
Wie weiter gezeigt in 4, geht die Steuerung als Nächstes zu Block 390 weiter, wo die Eigentümerschaft der Cachezeile dem Initiator des Snoop gewährt werden kann. Auf diese Weise kann dieser anfragende Agent gewünschte Operationen an den Daten ausführen. Dann kann auf die Daten später durch das IO-Gerät zugegriffen werden. Obwohl diese bestimmte Implementierung in der Ausführungsform von 4 gezeigt ist, ist der Umfang der vorliegenden Erfindung jedoch in dieser Hinsicht in keiner Weise eingeschränkt.
-
Deshalb können unter Verwendung des oben beschriebenen Mechanismus, um die Eigentümerschaft abzutreten, Deadlocks vermieden werden. Stattdessen kann man sich bei einem konventionellen System leicht vorstellen, dass zwei I/Os im System die Eigentümerschaft für die nichtälteste Transaktion erwerben und beide um die älteste Transaktion bieten, um rückzuordnen. Sofern nicht eine Seite die Eigentümerschaft abtritt, resultiert das System in einem Deadlock.
-
Es gibt zwei Arten von IIO-Verkehr, die von CPU-Agenten gesehen werden, das heißt, gepostete und nicht gepostete Anforderungen gemäß einer PCleTM-Spezifikation, wie beispielsweise die PCI ExpressTM Specification Base Specification Version 2.0 (veröffentlicht am 17. Januar, 2007) (hiernach die PCleTM-Spezifikation). Generell ist eine gepostete Transaktion eine Transaktion, die, wenn sie von einer Quelle gesendet wurde, von der Quelle als abgeschlossen betrachtet wird, und die Quelle empfängt keine Abschlussmeldung oder irgendeine andere Bestätigungsmeldung bezüglich der Transaktion. Ein solches Beispiel einer geposteten Transaktion kann eine Schreibtransaktion sein. Im Gegensatz dazu wird eine nicht gepostete Transaktion von der Quelle nicht als abgeschlossen betrachtet, bis eine Rückmeldung, das heißt, ein Abschluss empfangen wird. Ein Beispiel einer nicht geposteten Transaktion ist eine Lesetransaktion, bei der der Quelle-Agent ein Lesen von Daten anfordert. Dementsprechend stellt die Abschlussmeldung die angeforderten Daten bereit. Gepostete Anforderungen dürfen nicht von nicht geposteten Anforderungen in den Strukturen blockiert werden, ansonsten existiert ein Deadlock-Anliegen. Wenn beispielsweise IIO-gepostete Anforderungen, die durch den CPU-Caching-Agenten hindurchgehen, keinen Zugriff zu einer angeforderten Ressource erlangen können, um Anforderungen an einen Speicher oder einen Remote-IIO zu senden, hindern sie alle nicht geposteten Anforderungen vom Kern oder IIO daran abgeschlossen zu werden und schaffen deshalb einen Deadlock.
-
Bezugnehmend auf 5 ist ein Blockdiagramm eines Beispiels eines möglichen Deadlock-Szenarios gezeigt, das gemäß verschiedenen Ausführungsformen vermieden werden kann. Wie ersichtlich in 5 schließt System 400 einen ersten Mehrkernprozessor 410 0 gekoppelt mit einem zweiten Mehrkernprozessor 410 1 ein. Wie ersichtlich schließt jeder Prozessor einen entsprechenden Kern 420 und ein IIO-Modul 430 ein. Natürlich können mehrere Kerne in unterschiedlichen Ausführungsformen vorhanden sein. Außerdem schließt jeder Prozessor einen Caching-Agenten 440 ein, der als der Caching-Agent für den Kern und das IIO-Modul agiert. Wie ersichtlich kann Kern 420 0 nicht gepostete Anforderungen ausgeben, wie Kern-speicherzugeordnete IO-(MMIO)-Leseanfragen von einer nicht geposteten Warteschlange 422 0 zu einer TOR 444 0 des Caching-Agenten 440 0. Wenn sich diese nicht geposteten Lesevorgänge vor geposteten Anforderungen befinden, können Deadlocks auftreten.
-
Wie weiter gezeigt schließt IIO-Modul 430 0 eine gepostete Warteschlange 432 0 ein, die verwendet wird, um ausstehende gepostete Anforderungen wie eingehende (eingehend zum Prozessor) Speicherschreibanforderungen zu speichern, sowie eine nicht gepostete Warteschlange 434 0, die nicht gepostete Anforderungen wie ausgehende nicht gepostete Leseanfragen speichern kann, wie beispielsweise vom Prozessor oder einem anderen IO-Agenten zum IO-Gerät. Deshalb können wie ersichtlich Transaktionen in der Schreibwarteschlange 434 0 nach Transaktionen in der Schreibwarteschlange 432 0 angeordnet werden. Durch Bereitstellen einer zugehörigen geposteten Ressource innerhalb von TOR 444 kann eine Prozessblockade vermieden werden. Zu beachten ist, dass die PCleTM-Sortierungsregeln diktieren, dass gepostete Anforderungen nicht durch nicht gepostete Anforderungen blockiert werden dürfen und deshalb bei allgemeinen Schreibtransaktionen Lesetransaktionen vorausgehen.
-
Um solche Deadlocks zu vermeiden, können Ausführungsformen CPU-Caching-Agenten entsprechend konfigurieren. Diese Konfiguration schließt ein, dem CPU-Caching-Agenten zu ermöglichen, eine Ressourcenreservierung und -Anordnung, Konfliktumgehung und Arbitrierungsrichtlinie gemäß einer Ausführungsform der vorliegenden Erfindung auszuführen. Zu diesem Zweck erhält der CPU-Caching-Agent fest zugeordnete Ressourcen für gepostete Anforderungen, wie beispielsweise das Reservieren von wenigstens einer Ressource wie ein Eintrag einer TOR für eine gepostete Anforderung. Ausführungsformen können auch sicherstellen, dass die reservierte Ressource durch die „älteste” gepostete Anforderung vom IIO verbraucht wird. Ansonsten kann eine jüngere Anforderung die Ressource aufnehmen, kann aber nicht während des Wartens auf die älteste Anforderung rückordnen, die in einer Struktur feststecken kann.
-
Ein CPU-Caching-Agent gemäß einer Ausführungsform der vorliegenden Erfindung kann auch Adresskonflikte erkennen und umgehen, wenn eine gepostete Anforderung mit einer älteren nicht geposteten Anforderung abgeglichen werden sollte, welche die gleiche Adresse aufweist, und stellt somit eine Konfliktumgehung bereit. Ausführungsformen können weiter eine Arbitrierungsrichtlinie bereitstellen, sodass sie dort, wo es einen Anti-Hunger-Mechanismus im Arbitrierungsschema innerhalb des CPU-Caching-Agenten gibt, sicherstellt, dass die älteste gepostete Anforderung es immer noch durch die Arbitrierung schaffen kann, um einen Deadlock zu vermeiden.
-
Mit der oben genannten Konfiguration eines CPU-Caching-Agenten kann ein IIO hinter einem CPU-Caching-Agenten gekoppelt werden und aus einer reduzierten Komplexität und Bauelementeanzahl einen Nutzen ziehen. Das heißt, mittels Proxying von IIO-verwandten Transaktionen durch einen CPU-Caching-Agenten können im Gegensatz zu separaten zugehörigen IO-Agenten, die mit einem Sockel über einen chipexternen Link gekoppelt sind, eine bessere Skalierungsprofilierung und Leistungsvorteile realisiert werden. Ausführungsformen erhöhen auch potenziell die Möglichkeit, mehr Plattform-Konfigurationen unterstützen zu können. Diese Integration zusammen mit einem Durchrouten mit niedriger Latenzzeit (unter Verwendung von Ring-Ressourcen) kann verschiedene Plattform-Konfigurationen berücksichtigen.
-
Durch Reduzieren der Anzahl von Caching-Agenten tritt viel weniger Ressourcenaufteilung im System wie Home-Agent-Tracker-Einträge usw. auf, und durch das Reduzieren des Betrags an Snoop-Overhead aufgrund der Anzahl an Caching-Agenten in einem System kann eine verbesserte Skalierung/Leistung erreicht werden.
-
Bezugnehmend auf 6 ist ein Blockdiagramm eines Mehrkernprozessors gemäß einer Ausführungsform der vorliegenden Erfindung gezeigt. Wie bei der Ausführungsform von 6 gezeigt, schließt Prozessor 700 eine dezentralisierte Konfiguration ein, die Partitionen oder Teile aufweist, von denen jeder einen Kern 710 und eine Partition eines Caching-Agenten 715 und einen LLC 720 einschließt. Zu beachten ist, dass, während verteilte Caching-Agenten gezeigt sind, es offensichtlich ist, dass diese verteilten Teile einen einzelnen Caching-Agenten bilden, der konfiguriert ist, Cache-Kohärenz-Operationen für die Kerne sowie für ein IIO-Modul 750 zu behandeln. Im Allgemeinen kann jeder Kern 710 0–710 n zusätzlich zu verschiedenen Ausführungseinheiten und zusätzlichen Verarbeitungselementen weiter Low-Level-Caches einschließen. Wiederum können die verschiedenen Kerne miteinander und mit einem gemeinsam benutzten Cache-Speicher gekoppelt sein, der aus einer Vielzahl von Einheiten eines LLC 740 0–740 n via Caching-Agent 715 0–715 n gebildet ist. Bei verschiedenen Ausführungsformen kann LLC 740 unter den Kernen und dem IIO-Modul 750 gemeinsam benutzt werden. Wie ersichtlich koppelt eine Ring-Kopplungsstruktur 730 deshalb die Kerne miteinander und stellt eine Verbindung zwischen den Kernen, Caching-Agent 715 und IIO-Modul 750 bereit.
-
Wie ersichtlich in 6 kann IIO-Modul 750 eine Schnittstelle zu verschiedenen chipexternen IO-/Peripheriegeräten (aus Gründen einer vereinfachten Darstellung in 6 nicht dargestellt) bereitstellen. Zu diesem Zweck kann IIO-Modul 750 verschiedene Schnittstellen einschließen, einschließlich mehrerer PCleTM-Schnittstellen 752 0–752 n, einer Direct Media Interface (DMI) 754 und eines erweiterten programmierbaren IO-Interruptcontrollers (IO-APIC) 755. Wie ersichtlich kann IIO-Modul 750 auch mit einer Power Control Unit (PCU) 760 gekoppelt sein.
-
Um Kommunikationen mit anderen Komponenten eines Systems bereitzustellen, kann Ring-Kopplungsstruktur 730 mit einem Home-Agenten 770 koppeln, der wiederum einen integrierten Memory-Controller (IMC) 775 schützt. Wiederum kann IMC 775 beispielsweise über DDR-Links mit einem mit dem Prozessor gekoppelten Systemspeicher kommunizieren. Des Weiteren kann eine Intel® Quick Path Interconnect-(QPI)-Schnittstelle 780 mit Ring-Kopplungsstruktur 730 koppeln, um als eine Schnittstelle zu einem anderen Agenten (wie einem anderen Prozessor in einem Mehrprozessorsystem) zu agieren, der mit dem Prozessor über einen QPITM-Link gekoppelt ist. Obwohl diese bestimmte Konfiguration in der Ausführungsform von 6 gezeigt ist, wird dadurch der Umfang der vorliegenden Erfindung in dieser Hinsicht in keiner Weise eingeschränkt.
-
[7 ist ein Blockdiagramm eines Mehrprozessorsystems 800 gekoppelt mit Punkt–zu-Punkt-(PtP)-Systemkopplungsstrukturen gemäß einer Ausführungsform der vorliegenden Erfindung. Bei der gezeigten Ausführungsform schließt jeder Prozessor 810 eine Instanz eines integrierten Memory-Controllers 815 ein, der wiederum mit einem entsprechenden lokalen Teil eines Systemspeichers 820 gekoppelt ist, wie beispielsweise über verschiedene Speicher-Links wie Doppel-Datenrate-(DDR)-Kanäle. Wie ersichtlich ist einer der Prozessoren mit einem peripheren Controller Hub (PCH) 830 über beispielsweise DMI- und PCleTM-Links verbunden. Bei der gezeigten Ausführungsform wird ein QPITM-Link 825 verwendet, um die zwei Prozessoren zu verbinden. Zu beachten ist, dass jeder der Prozessoren ein IIO-Modul einschließen kann, um eine Schnittstelle zu einem oder mehreren chipexternen Peripheriegeräten und einem einzelnen vom IIO-Modul und den Kernen des Prozessors gemeinsam benutzten Caching-Agenten bereitzustellen. Wie weiter in 7 ersichtlich kann PCH 830 mit verschiedenen Geräten kommunizieren, einschließlich einem Basic Input/Output System-(BIOS)-Speicher 835 wie ein Flash-Speicher, einem Serial Advanced Technology Attach(SATA)-Gerät 840 wie ein Plattenlaufwerk und einer Netzwerkschnittstelle 850, wie beispielsweise ein Ethernet-Gerät.
-
Ausführungsformen können in Code implementiert und auf einem nicht flüchtigen Speichermedium gespeichert werden, auf dem Befehle gespeichert sind, die verwendet werden können, um ein System zu programmieren, die Befehle auszuführen. Das Speichermedium kann einschließen, ist aber nicht beschränkt auf, jede Art Disks, u. a. Floppy Disks, optische Disks, Solid State-Laufwerke (SSDs), Compact Disk Read-Only Memories (CD-ROMs), Compact Disk Rewritables (CD-RWs) und magnetooptische Disks (MO), Halbleiter-Geräte, wie Read-Only Memories (ROMs), Random Access Memories (RAMs), wie Dynamic Random Access Memories (DRAMs), Static Random Access Memories (SRAMs), Erasable Programmable Read-Only Memories (EPROMs), Flash Memories, Electrically Erasable Programmable Read-Only Memories (EEPROMs), magnetische oder optische Karten oder jede andere Art Speichermedium, das sich für das Speichern von elektronischen Befehlen eignet.
-
Obwohl die vorliegende Erfindung im Hinblick auf eine begrenzte Anzahl von Ausführungsformen beschrieben wurde, ist sich ein Fachmann bewusst, dass viele weitere Modifikationen und Varianten davon möglich sind. Die beigefügten Ansprüche sollen alle solchen Modifikationen und Varianten abdecken, die dem Sinn und Schutzbereich der vorliegenden Erfindung entsprechen.