-
Hintergrund
-
In einem Multi-Prozessor-System mit mehreren Prozessoren und mehreren Caches kann jeder Cache eine Kopie eines Datenstücks speichern, das im Speicher gespeichert ist. Probleme treten auf, wenn mehr als ein Cache eine Kopie desselben Datenstücks enthält. Verschiedene Techniken wurden entwickelt, um die Datenkohärenz über mehrere Caches zu gewährleisten. Wenn die Daten in einem Cache modifiziert werden, werden zum Beispiel andere Kopien der Daten als ungültig markiert, so dass sie nicht verwendet werden.
-
Um beim Einhalten der Cache-Kohärenz behilflich zu sein, umfassen zahlreiche Systeme ein Verzeichnis, um ein Bestimmen des Vorhandenseins und des Zustands von Daten in Cache-Zeilen solcher mehrfachen Caches zu unterstützen. Der Zustand einer Cache-Zeile kann anzeigen, ob die Zeile nur eine gültige Kopie außerhalb des Hauptspeichers hat, mehrere gültige Kopien hat, die von mehreren Caches gemeinsam benutzt werden, oder keine Kopien außerhalb des Hauptspeichers hat (d.h., dass sie in allen Caches ungültig gemacht wurde).
-
Die Effizienz von Cache-Kohärenz kann die Gesamtleistungsfähigkeit von Allzweckprozessoren verbessern. Dies gilt insbesondere für Mehrfachkernprozessoren und cache-kohärente (cc-NUMA)-Großsysteme mit uneinheitlicher Speicherarchitektur. Unterschiedliche Systeme können zahlreiche unterschiedliche Cache-Kohärenz-Nachrichtentypen haben, wovon jeder unterschiedliche Zeitkritikalitätseigenschaften aufgrund von durch Verzeichnisindirektion verursachten Hop-Ungleichgewicht-Root haben kann. Jedoch behandeln existierende Systeme diese unterschiedlichen Nachrichtentypen nicht unterschiedlich.
-
Die
US 6 035 424 A offenbart eine Vorrichtung, bei der einem Warteschlangenauffüller über einen Kommando-Buffer u. a. Cache-Kohärenz-Kommandos bzw. -Nachrichten von einer Snoop-Logik zugeführt werden, die eine Priorität aufweisen.
-
Die
US 6 628 615 B1 ist auf ein System für paketvermittelte Kommunikation über ein Netzwerk aus miteinander verbundenen Computern gerichtet.
-
Die vorliegende Erfindung liefert eine Vorrichtung gemäß Anspruch 1 sowie ein Verfahren gemäß Anspruch 6. Die jeweiligen abhängigen Ansprüche betreffen vorteilhafte Weiterbildungen derselben.
-
Figurenliste
-
- 1 ist ein Blockdiagramm eines Abschnitts eines Systems gemäß einer Ausführungsform der vorliegenden Erfindung.
- 2 ist ein Blockdiagramm eines Interconnect-Routers gemäß einer Ausführungsform der vorliegenden Erfindung.
- 3 ist ein Flussdiagramm eines Verfahrens gemäß einer Ausführungsform der vorliegenden Erfindung.
- 4 ist ein Blockdiagramm eines Systems gemäß einer Ausführungsform der vorliegenden Erfindung.
-
Detaillierte Beschreibung
-
In verschiedenen Ausführungsformen kann ein Interconnect-Router oder eine andere Systemkomponente konfiguriert werden, um kritikalitätsbewusst zu sein. Das heißt, dass die Router-Verzögerung von kritischen Kohärenznachrichten auf Kosten einer potentiellen Verlangsamung von unkritischen Nachrichten verkürzt werden kann. Kritikalität kann in Laufzeit basierend auf cache-kohärenten Nachrichtentypen durch Hardware extrahiert werden. Solche Kritikalität wird dann verwendet, um ein Verwalten eines Interconnects zu betreiben, auf dem die Nachrichten laufen, wie zum Beispiel virtuelle Kanäle eines Punkt-zu-Punkt (PTP)- oder anderen Zwischenverbindungsschemas. Die Ausführungsformen beziehen sich sowohl auf Chip-Netzwerke als auch traditionelle eigenständige Router. Die Ausführungsformen können in einer Mikroarchitektur-Hardware implementiert sein und können für Software komplett transparent sein. Die Handhabung der Cache-Kohärenz kann durch Verwendung solcher Ausführungsformen signifikant gesteigert werden.
-
Bezugnehmend auf 1 wird nun ein Blockdiagramm eines Abschnitts eines Systems gezeigt, das ein Verzeichnis einschließt, das ein gegebenes Cache-Kohärenzprotokoll implementiert. Obwohl der Umfang der vorliegenden Erfindung in dieser Hinsicht nicht beschränkt ist, kann das Cache-Kohärenzprotokoll einem Modified Exclusive Shared Invalid (MESI)- oder einem Modified Exclusive Shared Invalid Forward (MESIF)-Protokoll oder einem anderen derartigen Protokoll entsprechen. In der in 1 gezeigten Ausführungsform sind mehrere Kerne, von denen nur zwei 20a und 20b (allgemein Kern 20) gezeigt sind, jeweils an einen entsprechenden privaten Cache 30a und 30b (allgemein privater Cache 30) gekoppelt. In einigen Ausführungsformen können die privaten Caches 30 ein Cache auf niedrigster Ebene sein, z. B. ein Cache auf Ebene Null, der seinem entsprechenden Kern direkt zugeordnet ist.
-
Die Caches 30 können wiederum an einen gemeinsamen Speicher 40 gekoppelt sein. In verschiedenen Ausführungsformen kann der gemeinsame Speicher 40 ein gemeinsamer Inklusiv-Cache-Speicher oder ein Systemhauptspeicher sein. Auf diese Art und Weise umfasst der gemeinsame Speicher 40 alle Daten, die in den Caches 30 vorhanden sind, sowie potentiell zusätzliche Daten. Anders gesagt, können die Daten, die in den Caches 30 vorliegen, mit denen im Speicher 40 inklusiv sein, jedoch nicht umgekehrt. Ferner kann der gemeinsame Speicher 40 noch ein Verzeichnis umfassen. Ein solches Verzeichnis kann ein separates Array oder ein anderer Abschnitt des Speichers 40 sein, der eine Vielzahl von Einträgen (und zugehörige Steuerlogik) umfasst, um eine Stelle von entsprechenden Cache-Zeilen in den Caches auf niedrigerer Ebene sowie den Zustand solcher Cache-Zeilen anzuzeigen. Entsprechend kann das Verzeichnis des Speichers 40 verwendet werden, um ein gegebenes Cache-Kohärenzprotokoll zu implementieren.
-
In einer Implementierung kann das System 10 ein Ein-Chip-Netzwerk (NoC) sein. Ein solches NoC kann ein auf einem einzelnen Die integrierter Schaltkreis sein, der verschiedene Verarbeitungsagenten verbindet, wie zum Beispiel Kerne, spezialisierte Prozessoren, Beschleuniger usw., sowie lokale Speicher und andere solche Strukturen. Alle diese verschiedenen Agenten können durch eine gegebene Interconnect-Struktur gekoppelt sein, wie zum Beispiel einen in 1 gezeigten Interconnect 50. In unterschiedlichen Implementierungen können bestimmte Agenten durch PTP-Links zwischenverbunden sein, die Vorrichtungen durch eingreifende Router eines Interconnects zusammen koppeln. Entsprechend sollte verständlich sein, dass der Interconnect 50 Interconnect-Links sowie Interconnect-Router repräsentieren kann, obwohl es zur Vereinfachung der Darstellung in 1 nicht gezeigt ist.
-
Um die Cache-Kohärenz für die entsprechenden Speicher im System 10 einzuhalten, können verschiedene Cache-Kohärenznachrichten zwischen unterschiedlichen Agenten gesendet werden, um in einem gegebenen Speicher vorhandene Daten anzufragen und um Einsicht in einen Zustand solcher Daten zu erhalten. Die Verzögerungen von unterschiedlichen Cache-Kohärenznachrichten können einen sehr unterschiedlichen Einfluss auf die Leistungsfähigkeit von Anwendungen haben. 1 zeigt ein Szenario in einem MESI-Protokoll, in dem der Cache-Speicher 30a eine Leseanfrage (Nachricht (Msg) 1) an einen Block ausgibt, der sich in einem Dirty-Zustand im Cache-Speicher 30b befindet. Gemäß einem gegebenen Kohärenzprotokoll kann diese Leseanfrage die Übermittlung zusätzlicher Nachrichten verursachen, die eine zweite Nachricht (Nachricht 2) umfassen, die die angefragten im gemeinsamen Speicher 40 vorhandenen Daten direkt zum Cache-Speicher 30a sendet. Jedoch ist zu beachten, dass diese Daten spekulativ sind, da es unbekannt ist, ob eine modifizierte Kopie der Daten zum Beispiel im Cache-Speicher 30b existiert. Entsprechend sendet das Verzeichnis, noch auf die Leseanfrage vom Cache-Speicher 30a reagierend, eine Probe-Nachricht (d. h., Nachricht 3) an den Cache-Speicher 30b . Reagierend auf diese Nachricht kann der Cache-Speicher 30b bewirken, dass die Daten, die sich in einem Dirty-Zustand befinden können, direkt zum Cache-Speicher 30a gesendet werden (Msg 4). Schließlich wird eine Rückschreib (WB)-Nachricht (d. h., Nachricht 5) gesendet, um die Dirty-Daten aus dem Cache-Speicher 30b zurück zum gemeinsamen Speicher 40 zu liefern.
-
Die Nachrichten 3 und 4 sind serialisierte Schritte, um diese Leseanfrage auszuführen, und sie stellen den kritischen Pfad dar. Anders gesagt, weisen die Nachrichten 3 und 4 eine höhere Priorität auf und sollten eine kürzere Verzögerung haben, da die Latenz der Speicheranfrage von Nachricht 1 von diesen Nachrichten abhängt. Somit können diese beiden Nachrichten auf eine höchste Kritikalitätsebene abgebildet werden. Im Gegensatz dazu ist die Nachricht 2 in diesem Beispiel nutzlos (unter der Annahme, dass sich die angefragten Daten in einem Modified- Zustand im Cache-Speicher 30b befinden), jedoch gemäß einem gewöhnlichen Protokoll würden sie im Speicher 30a vor den gültigen Daten der Nachricht 4 ankommen. Dieses unerwünschte Szenario ist ein Ergebnis von einem durch eine Verzeichnisindirektion verursachten Hop-Ungleichgewicht-Root. Die Nachricht 5 ist am wenigsten kritisch und kann somit auf eine niedrigste Kritikalitätsebene abgebildet werden. Die Nachricht 1 liegt ebenfalls auf dem kritischen Pfad, sie bindet jedoch weniger Systemressourcen als die Nachrichten 3 und 4. Die Nachricht 2 liegt normalerweise nicht auf dem kritischen Pfad, obwohl ihre Daten nützlich wären, wenn der Cache-Speicher 30b keine Dirty-Kopie hätte. Die Nachrichten 1 und 2 können als eine durchschnittliche Kritikalitätsebene klassifiziert werden. Die unterschiedlichen Kritikalitätsebenen sind somit in 1 durch die durchgezogene Linie und verschiedene gestrichelte Linien identifiziert.
-
Es gibt zahlreiche Varianten des MESI-Protokolls, jedoch kann es für jede von ihnen mehrere Ebenen von Kritikalitäten geben, wobei jede Ebene einem gegebenen Satz von Nachrichtentypen entspricht. Obwohl der Umfang der vorliegenden Erfindung in dieser Hinsicht nicht beschränkt ist, können in einigen Implementierungen zwischen ungefähr 2 und 8 Kritikalitätsebenen identifiziert werden. Ferner kann jede dieser Kritikalitätsebenen mit einem oder mehreren Kohärenzprotokollnachrichtentypen übereinstimmen. Bezugnehmend auf Tabelle 1 sind nun unten Beispielprotokollnachrichten und ihre entsprechende Kritikalitätsebene gezeigt.
Tabelle 1
Äußerst kritisch | Durchschnittlich kritisch | Unkritisch |
RspI | RspFwd | WbMtoI |
RspS | RspFwdS | WbMtoE |
RspCnflt | RspFwdIWb | WbMtoS |
SnpCode | RdCur | RspIWb |
SnpData | RdCode | RspSWb |
SnpInvOwn | RdData | |
SnpInvItoE | RdInvOwn | |
AckCnflt | InvItoE | |
-
Tabelle 1 zeigt somit verschiedene Cache-Kohärenznachrichten, von denen jede auf eine von drei Kritikalitätsebenen abgebildet ist. Die Namen der verschiedenen in Tabelle 1 gezeigten Nachrichten (RspI, RspFwd usw.) sind Mnemonics und können unterschiedliche Label in unterschiedlichen Implementierungen haben. Allgemein umfassen diese Namen eine Nachrichtentypabkürzung (z. B. Antworten (Rsp), Snoopen (Snp), Rückmelden (Ack), Lesen (Rd), Rückschreiben (WB), Weiterleiten (Fwd) usw.) und eine Cache-Zustandsabkürzung (z. B. einen der MESI-Zustände).
-
Die Nachrichten der höchsten in Tabelle 1 gezeigten Kritikalitätsebene sind im Allgemeinen auf Probe-Nachrichten und Antworten darauf gerichtet. Die durchschnittliche Kritikalitätsebene ist allgemein Anfragen und bestimmten Antworten zugeordnet, während die niedrigste Kritikalitätsebene allgemein Rückschreibnachrichten zugeordnet ist. Es ist zu beachten, dass diese obige Tabelle eine beispielhafte Abbildung ist und andere Nachrichten und unterschiedliche Protokolle unterschiedliche Abbildungen haben können.
-
Wie später beschrieben wird, kann in verschiedenen Implementierungen Kritikalität oder eine andere derartige Steuerlogik verwendet werden, um Protokoll-Cache-Kohärenznachrichtentypen auf eine gegebene Kritikalitätsebene abzubilden. In verschiedenen Ausführungsformen kann ein Interconnect-Router oder eine andere Schaltlogik kritikalitätsbewusst gemacht werden. Auf diese Art und Weise kann die Router-Verzögerung von kritischen Kohärenznachrichten auf Kosten einer potentiellen Verlangsamung von unkritischen Nachrichten kürzer werden. Die Kritikalität kann durch Hardware zur Laufzeit basierend auf Nachrichtentypen extrahiert werden und kann dann verwendet werden, um eine VC-Verwaltung zu betreiben.
-
Bezugnehmend auf 2 wird nun ein Blockdiagramm eines Interconnect-Routers gemäß einer Ausführungsform der vorliegenden Erfindung gezeigt. Wie in 2 gezeigt, kann der Interconnect-Router 100 eine Router-Struktur eines Interconnect-Systems sein. Wie später diskutiert wird, können viele solche Interconnect-Router in einem gegebenen System vorhanden sein, um Transaktionen von einem eingangsverbundenen Router zu empfangen und solche Transaktionen an einen ausgangsverbundenen Router weiterzuleiten. Wie in 2 gezeigt, umfasst ein beispielhafter Router 100 eine Vielzahl von virtuellen Eingangskanälen (VCs) 110a - 110n (allgemein VC 110). Jeder VC 110 ist angeschlossen, um eingehende Nachrichten zu empfangen. Solche Nachrichten können verschiedene Formen annehmen, umfassend Anfragenachrichten, Datennachrichten, Rückmeldungsnachrichten und so weiter. Diese eingehenden Nachrichten können von einem eingangsverbundenen Router empfangen werden, der ähnlich konfiguriert ist. Jedoch können in weiteren Implementierungen mindestens einige der Eingänge eines gegebenen Routers direkt von einem Caching-Agenten empfangen werden, wie zum Beispiel einem Prozessorkern oder anderen solchen Agenten.
-
Eingehende Nachrichten werden an einem Eingangs-Multiplexer 112 geliefert, der basierend auf Kritikalitätsinformationen, die den Nachrichten zugeordnet sind, kontrolliert wird. Das heißt, dass in verschiedenen Ausführungsformen die Nachrichten Link-Layer-Nachrichten sein können, in denen eine Transaktion in eine Vielzahl von Flusssteuereinheiten, wie zum Beispiel in Pakete, segmentiert ist, zum Beispiel Flits, wobei jeder Flit der kleinsten Verbindungsschichtnachricht entspricht und einen Header aufweist. Dieser Header kann Kritikalitätsinformationen umfassen. Eine Transaktionsschicht kann zum Beispiel die Kritikalitätsinformationen zu einem Link-Layer liefern, der wiederum die Kritikalitätsinformationen an jedes Link-Layer-Paket (z. B. ein Flit) anfügt, das sie erzeugt. Basierend auf einer Ebene von Kritikalität, die einer gegebenen Nachricht, zum Beispiel einer Cache-Kohärenznachricht, zugeordnet ist, kann das zugeordnete Flit zu einer aus einer Vielzahl von Warteschlangen 115a - 115n (allgemein Warteschlange 115) geliefert werden, von denen jede einer gegebenen Kritikalitätsebene zugeordnet sein kann. In einer Ausführungsform können die Warteschlangen 115 First-In-First-Out (FIFO)-Puffer sein, obwohl der Umfang der vorliegenden Erfindung in dieser Hinsicht nicht beschränkt ist. In einer Ausführungsform kann jede Warteschlange 115 einer einzelnen Kritikalitätsebene zugeordnet sein, obwohl in weiteren Ausführungsformen eine Warteschlange Speicher für Nachrichten mehrerer Kritikalitätsebenen bereitstellen kann. Um Nachrichten aus den VCs 110 auszugeben, kann eine VC-Allocator/Steuerlogik 120 an einen Ausgangs-Multiplexer 118 gekoppelt sein, um die Nachrichtenausgabe zu steuern. In verschiedenen Implementierungen kann die Steuerung von Nachrichten, die von dem VC 110 gesendet werden sollen, einer Kritikalitätsebene entsprechen. Wie in 2 gezeigt, werden die Ausgänge der verschiedenen VCs 110 an einem Switch 130 bereitgestellt, der ebenfalls von dem VC-Allocator 120 gesteuert wird, um die Nachrichten an einen ausgangsverbundenen Router oder einen anderen solchen Agenten ausgegeben.
-
Es ist zu beachten, dass im Fall eines erzeugenden oder Quell-Routers für eine Nachricht, d.h., ein Router, der mit einem Caching-Agenten verbunden ist, das eine Cache-Kohärenznachricht erzeugt, die VC-Allocator/Steuerlogik 120 den Nachrichtentyp auf eine gegebene Kritikalitätsebene abbilden kann und diese Kritikalitätsebene auf jedes Flit der Nachricht anwenden kann, die vom Switch 130 gesendet wird. Auf diese Art und Weise kann ein ausgangsverbundener Router, der die Nachricht empfängt, ebenfalls die zugeordnete Kritikalitätsebene empfangen, um somit ihren Durchgang durch die virtuellen Kanäle entsprechend zu verwalten. Der Umfang der vorliegenden Erfindung ist jedoch in dieser Hinsicht nicht beschränkt, obwohl sie anhand dieser bestimmten Implementierung in der Ausführungsform aus 2 gezeigt wird.
-
In unterschiedlichen Ausführungsformen wird ein Abbilden von einem Cache-Kohärenznachrichtentyp auf eine Kritikalitätsebene durch das spezifische Kohärenzprotokoll und das Leistungsfähigkeitsziel bestimmt. In Laufzeit extrahiert ein Quell-Router (der mit einem Caching-Agenten verbunden ist) den Nachrichtentyp, übersetzt ihn auf eine der Kritikalitätsebenen und hängt diese Informationen an den Flit-Header an. In jedem Zwischen-Router wird die VC-Zuordnung vereinfacht, da die Kritikalitätsbits in dem Flit-Header als die VC-Kennung dienen.
-
Nachdem ein Flit in eine geeignete Warteschlange 115 eingefügt wurde, können unterschiedliche Arten des Sicherstellens einer schnellen Zustellung der kritischen Nachricht implementiert werden. In einer Implementierung können die FIFOs priorisiert sein, so dass eine FIFO mit höherer Kritikalität immer vor einer FIFO mit niedrigerer Kritikalität in dem Wettbewerb um den Switch 130 gewinnt. In anderen Ausführungsformen kann jede Warteschlange 115 eine unterschiedliche relative Priorität haben. Dies wird durch Verwenden eines prioritätsbasierten Hardware-Schlichters (z. B. innerhalb des VC-Allocators 120) erreicht, der eine Bewilligung bereitstellt und einen „schnelleren Pfad“ für Nachrichten mit höherer Kritikalität ermöglicht. Jedoch sind andere Implementierungen möglich. Man beachte, dass die Ausführungsformen quer zu existierenden VC-Entwürfen sind, da jede Kritikalitätsebene mehrere ihr zugeordnete VCs haben kann.
-
Da die Nachrichtentypen für den Link-Layer offengelegt sind, können log2C Bits pro Flit verwendet werden, wobei C die Gesamtanzahl der Kritikalitätsebenen ist. In der Praxis kann C eine kleine Zahl sein, wie zum Beispiel 4. Ferner kann die Größe eines VC-Allocationsschlichters verglichen mit einem gewöhnlichen homogenen VC-Entwurf um einen Faktor von V reduziert werden, wobei V die Anzahl der virtuellen Kanäle pro Port ist. Da die Ausführungsformen rein mikroarchitektonisch sind, gibt es ebenfalls keine Notwendigkeit für irgendwelche Software-Hinweise von einem Benutzer (z. B. einem Programmierer) und somit wird die Korrektheit des Cache-Kohärenzprotokolls nicht beeinflusst. Das heißt, dass eher ein hardwarebasiertes Prioritätsschema bereitgestellt wird, als dass ein Software-Programmierer Prioritätsinformationen für eine Nachricht kodiert.
-
Bezugnehmend auf 3 wird nun ein Flussdiagramm eines Verfahrens gemäß einer Ausführungsform der vorliegenden Erfindung gezeigt. Wie in 3 gezeigt, kann ein Verfahren 200 verwendet werden, um eine Kritikalitätsebene auf Cache-Kohärenznachrichtentypen anzuwenden und um eine Verwendung derselben beim Weiterleiten der Nachricht an ihr Ziel zu ermöglichen. Wie in 3 gezeigt, kann das Verfahren 200 in einer Interconnect-Struktur implementiert sein, zum Beispiel innerhalb einer Kritikalitäts- oder anderen Steuerlogik, die einem Quell-Router zugeordnet ist, sowie in verschiedenen Zwischen-Routern, die zwischen diesem Quell-Router und einem Ziel-Router angeschlossen sind, der an das Nachrichtenziel gekoppelt ist.
-
Das Verfahren 200 kann mit einem Empfangen einer Cache-Kohärenznachricht von einem Caching-Agenten (Block 210) beginnen. Ein Quell-Router kann zum Beispiel eine Cache-Kohärenznachricht von einem Prozessorkern oder einem weiteren Agenten empfangen. Als nächstes kann dieser Nachrichtentyp auf eine Kritikalitätsebene abgebildet werden (Block 220). Die Kritikalitätslogik oder andere Steuerlogik des Quell-Routers kann zum Beispiel eine Tabelle umfassen oder ihr zugeordnet sein, die in einem nicht-flüchtigen Speicher gespeichert werden kann, die eine Abbildung zwischen den verschiedenen Nachrichtentypen des Cache-Kohärenzprotokolls und unterschiedlichen Kritikalitätsebenen umfasst. In einer Ausführungsform kann jeder Nachrichtentyp seine eigene Kritikalitätsebene haben, während in weiteren Ausführungsformen eine Vielzahl von Nachrichten einer gegebenen Kritikalitätsebene zugeordnet sein kann.
-
Der Router kann dann die Kritikalitätsebene an eine Nachricht anfügen (Block 230). In einem Kommunikationsprotokoll, in dem ein Link-Layer Flits an einen physikalischen Layer liefert, kann zum Beispiel jeder solche Flit eine Kritikalitätsebene haben, die in seinen Header eingefügt ist. Basierend zumindest teilweise auf diesen Informationen kann die Nachricht durch eine Interconnect-Struktur zu ihrem Ziel geroutet werden (Block 240). Auf diese Art und Weise können Nachrichten mit einer höheren Priorität effizienter behandelt werden, was die Speicherlatenzzeiten und die Systemleistungsfähigkeit verbessert. Obwohl mit dieser bestimmten Implementierung in der Ausführungsform aus 3 gezeigt, ist der Umfang der vorliegenden Erfindung in dieser Hinsicht nicht beschränkt.
-
Bezugnehmend auf 4 wird nun ein Blockdiagramm eines Systems gemäß einer Ausführungsform der vorliegenden Erfindung gezeigt. Wie in 4 gezeigt, kann ein System 300 ein Ein-Chip-Netzwerk oder eine Mehrfach-Chip-Vorrichtung sein. Jedoch ist der Umfang der vorliegenden Erfindung in dieser Hinsicht nicht beschränkt. In der Ausführungsform aus 4 umfasst das System 300 eine Vielzahl von Caching-Agenten 310x , von denen jeder an eine Zwischenverbindungsstruktur 320 durch einen oder mehrere Router 330x gekoppelt ist. Die Caching-Agenten 310x können Prozessorkerne, Cache-Speicher oder andere Verarbeitungsagenten sein. Wie ferner in 4 gezeigt, können eine Netzwerkschnittstelle 340 und eine Bridge 350 an entsprechende Router 330 gekoppelt sein. In einer Ausführungsform können Vorrichtungen, wie zum Beispiel ein Eingabe/Ausgabe (I/O)-Controller-Hub oder ein Switch gemäß einem Peripheral Component Interconnect (PCI) Express™ (PCIe)-Protokoll an die Bridge 350 gekoppelt sein. Wie ebenfalls in 4 gezeigt, kann ein Speicher-Controller 360 an einen anderen Router 330 gekoppelt sein, um Speicheroperationen in einem Off-Chip-Speicher zu behandeln, zum Beispiel ein Dynamic Random Access Memory (DRAM) oder eine andere Systemspeichervorrichtung. Wenn ein Flit von einem Agenten 310x oben rechts zum Speicher-Controller 360 laufen soll, kann als ein Beispiel des Kommunikations-Routings der Flit durch neun Router durchkommen, und jeder der sieben Zwischen-Router kann die Nachricht unter Verwendung von Kritikalitätsinformationen gemäß einer Ausführungsform der vorliegenden Erfindung weitergeben. Obwohl mit dieser bestimmten Implementierung in der Ausführungsform aus 4 gezeigt, ist der Umfang der vorliegenden Erfindung in dieser Hinsicht nicht beschränkt.
-
Durch die Verwendung von Nachrichtenkritikalitätsinformationen zum Verwalten von virtuellen Kanälen können die Ausführungsformen dabei behilflich sein, dass das Speichersystem eine höhere Leistungsfähigkeit als aktuelle Router erreicht. Ferner können Ausführungsformen als Mikroarchitektur implementiert sein, so dass die Leistungsfähigkeitsvorteile ohne Software-Kosten entstehen.
-
Die Ausführungsformen können als Code implementiert sein und können auf einem Speichermedium gespeichert sein, das darauf gespeicherte Befehle aufweist, die verwendet werden können, um ein System zum Durchführen der Befehle zu programmieren. Das Speichermedium kann jede Art einer Disk, umfassend Floppy Disks, optische Disks, Compact Disk Read-Only Memories (CD-ROMs), Compact Disk Rewritables (CD-RWs) und magnetooptische Disks, Halbleitervorrichtungen, wie zum Beispiel Read-Only Memories (ROMs), Random Access Memories (RAMs), wie zum Beispiel Dynamic Random Access Memories (DRAMs), Static Random Access Memories (SRAMs), Erasable Programmable Read-Only Memories (EPROMs), Flash-Speicher, Electrically Erasable Programmable Read-Only Memories (EEPROMs), magnetische oder optische Karten oder jeden anderen Medientyp umfassen, der in der Lage ist, elektronische Befehle zu speichern, ohne darauf beschränkt zu sein.