DE19983443B4 - Außer-der-Reihe-Snooping für Multiprozessor-Computersysteme - Google Patents

Außer-der-Reihe-Snooping für Multiprozessor-Computersysteme Download PDF

Info

Publication number
DE19983443B4
DE19983443B4 DE19983443T DE19983443T DE19983443B4 DE 19983443 B4 DE19983443 B4 DE 19983443B4 DE 19983443 T DE19983443 T DE 19983443T DE 19983443 T DE19983443 T DE 19983443T DE 19983443 B4 DE19983443 B4 DE 19983443B4
Authority
DE
Germany
Prior art keywords
snoop
order
request
node
requests
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Expired - Fee Related
Application number
DE19983443T
Other languages
English (en)
Other versions
DE19983443T1 (de
Inventor
Gilbert A. Portland Neiger
Nicholas D. Portland Wade
Kai Portland Cheng
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Intel Corp
Original Assignee
Intel Corp
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Intel Corp filed Critical Intel Corp
Publication of DE19983443T1 publication Critical patent/DE19983443T1/de
Application granted granted Critical
Publication of DE19983443B4 publication Critical patent/DE19983443B4/de
Anticipated expiration legal-status Critical
Expired - Fee Related legal-status Critical Current

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0806Multiuser, multiprocessor or multiprocessing cache systems
    • G06F12/0813Multiuser, multiprocessor or multiprocessing cache systems with a network or matrix configuration
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0806Multiuser, multiprocessor or multiprocessing cache systems
    • G06F12/0815Cache consistency protocols
    • G06F12/0831Cache consistency protocols using a bus scheme, e.g. with bus monitoring or watching means

Landscapes

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

Abstract

Verfahren zum Bestimmen von Snoop-Ergebnissen von Snoop-Anforderungen, die von verschiedenen Knoten in unterschiedlichen Knotenempfangsreihenfolgen empfangen worden sind, umfassend:
Empfangen der Snoop-Anforderungen durch verschiedene Knoten der Knoten in verschiedenen Knotenempfangsreihenfolgen;
Initiieren von Snoop-Operationen des Speichers der jeweiligen Knoten, bevor die Snoop-Anforderungen in einer globalen Reihenfolge sind;
Positionieren der Snoop-Anforderungen in Ordnungspuffern der jeweiligen Knoten;
Vorrücken der Snoop-Anforderungen in den Ordnungspuffern in der erforderlichen Weise, bis die Snoop-Anforderungen sich in der globalen Reihenfolge befinden.

Description

  • Die vorliegende Erfindung bezieht sich auf ein Verfahren zum Bestimmen von Snoop-Ergebnissen von Snoop-Anforderungen, die von verschiedenen Knoten eins Computersystems in unterschiedlichen Knotenempfangsreihenfolgen empfangen worden sind, sowie auf ein Computersystem zum Ausführen eines solchen Verfahrens.
  • Multiprozessor-Computersysteme enthalten Busse, die eine Kommunikation zwischen den Prozessoren und zwischen einem Chipsatz und den Prozessoren, die jeweils als Knoten bezeichnet werden, ermöglichen. Um eine Konkurrenz auf dem Bus zu vermeiden, bestimmt ein zentraler Arbiter, welcher in dem Chipsatz sein kann, welcher Knoten an dem Bus eine Nachricht auf dem Bus übertragen darf. Eine Nachricht auf dem Bus wird an jeden Knoten auf dem Bus ausgesendet, und jeder Knoten empfängt die Nachricht im wesentlichen zur gleichen Zeit. Folglich gibt es keine Verwirrung bezüglich der Reihenfolge, in welcher die Nachrichten gesendet worden sind.
  • Es wurden Ringtopologien entwickelt, bei welchen jeder Knoten mit einem benachbarten Knoten an einem Ring verbunden ist. Bei einem Punkt-Zu-Punkt-Ring ist jeder Knoten von benachbarten Knoten an dem Ring durch Verbindungen (Leitungen) getrennt. Ein Vorteil der Ringe besteht darin, daß die Treiber der Leitungen an dem Ring nur mit der Empfängerschaltung des speziellen Knotens und nicht mit denen sämtlicher Knoten an dem System belastet werden. Demzufolge können die Signale ihren Zustand signifikant schneller ändern.
  • Jeder Knoten kann Nachrichten zu jedem anderen Knoten senden, aber die Nachrichten werden sequentiell von Knoten zu Knoten weitergeleitet, statt sie von einem zentralen Punkt zu sämtlichen Knoten gleichzeitig zu senden. Demzu folge kann keine der Verbindungen von sämtlichen Knoten beobachtet oder überwacht werden. Gewöhnlich weiß ein Knoten nicht, daß ein anderer Knoten eine Nachricht gesendet hat, bis sie empfangen worden ist. Sofern mehr als ein Knoten gleichzeitig Nachrichten sendet, werden sie von verschiedenen Knoten in unterschiedlicher Reihenfolge empfangen. Bei Nachrichten, wie beispielsweise Snoop-Anforderungen, führt dies zu unrichtigen Ergebnissen.
  • Aus der EP 0 817 077 A2 ist ein Computersystem mit mehreren Prozessor-Knoten bekannt, wobei die Knoten einen Speicher, eine Verarbeitungsschaltung und an ihrer Schnittstelle zu einem verbindenden Bussystem Warteschlangen (Puffer) zum Aufnehmen von Transaktionen in der Reihenfolge, in der sie bei dem Knoten eintreffen, aufweist. Wenn Transaktionen nicht in der richtigen (globalen) Reihenfolge präsentiert werden, so wird bei der bekannten Anordnung eine Transaktion mit Hilfe eines „ignoriere"-Signals verzögert, d. h. ihre Verarbeitung zurückgestellt.
  • Aufgabe der Erfindung ist es, Snoop-Transaktionen, die von einem Knoten außerhalb ihrer globalen Reihenfolge empfangen werden, schneller, aber dennoch richtig zu verarbeiten.
  • Diese Aufgabe wird erfindungsgemäß durch ein Verfahren mit den Merkmalen des Anspruchs 1 bzw. ein Computersystem mit den Merkmalen des Anspruchs 3 gelöst. Vorteilhafte und/oder bevorzugte Weiterbildungen der Erfindung sind in den Unteransprüchen gekennzeichnet.
  • Die Erfindung ist vollständiger zu verstehen aus der unten angegebenen detaillierten Beschreibung und aus den beigefügten Zeichnungen von Ausführungsbeispielen der Erfindung, welche jedoch nicht in einem die Erfindung auf die speziellen beschriebenen Ausführungsbeispiele einschränkenden Sinne verstanden werden sollen, sondern nur der Erläuterung und dem besseren Verständnis dienen.
  • 1 ist eine schematische Darstellung einer aktuellen Verteilung von Schlitzen (Slots) bei einem Ausführungsbeispiel der Erfindung.
  • 2 ist eine schematische Darstellung einer virtuellen Verteilung von Slots bei einem Ausführungsbeispiel der Erfindung.
  • 3 ist eine schematische Darstellung bestimmter Schaltungen in einem der Knoten der 1 und 2 bei einem Ausführungsbeispiel der Erfindung.
  • 4 ist eine schematische Darstellung von Details der Steuerschaltung gemäß 3 bei einem Ausführungsbeispiel der Erfindung.
  • 5 veranschaulicht Zuweisungen virtueller Slots zu Zwischen-Knoten-Verbindungen, wie sie bei einem Ausführungsbeispiel der Erfindung verwendet werden.
  • Die 6, 7, 8, 9, 10 und 11 veranschaulichen Skyline-Diagramme und zugehörige Schaltungen, die Daten halten, die sich auf bestimmte Nachrichten beziehen.
  • 12A, 12B und 12C zeigen bestimmte MESI-Zustände in einem Ordnungspuffer zu bestimmten Zeitpunkten.
  • 13A, 13B und 13C zeigen Tag-Zustände im Speicher für eine Adresse zu bestimmten Zeitpunkten.
  • 14 ist eine schematische Darstellung einer virtuellen Verteilung von Slots bei einem Ausführungsbeispiel der Erfindung einschließlich einer gleichzeitigen bidirektionalen Übertragung zwischen Knoten.
  • 15 ist eine schematische Darstellung bestimmter Schaltungen in einem der Knoten der 14 bei einem Ausführungsbeispiel der Erfindung.
  • 16 veranschaulicht Skline-Diagramme, die einer bidirektionalen Übertragung zugeordnet sind.
  • Detaillierte Beschreibung der bevorzugten Ausführungsbeispiele
  • 1. Überblick
  • Gemäß 1 enthält ein Beispielcomputersystem 10 die Knoten N0, N1, N2 und N3. Die Knoten kommunizieren miteinander über eine Punkt-Zu-Punkt-Ringtopologie anstelle eines gemeinsamen Busses. Signale können zwischen den Knoten N0 und N1 auf den Leitungen 22, zwischen den Knoten N1 und N2 auf den Leitungen 24, zwischen den Knoten N2 und N3 auf den Leitungen 26 und zwischen den Knoten N3 und N4 auf den Leitungen 28 weitergeleitet werden. Die Leitungen 22-28 können jeweils zahlreiche parallele Leiter enthalten. Verschiedene Leiter der Leitungen 22, verschiedene Leiter der Leitungen 24, verschiedene Leiter der Leitungen 26 und verschiedene Leiter der Leitungen 28 werden jeweils für verschiedene Zwecke verwendet. Beispielsweise können virtuelle Schlitze (Slots), die unten beschrieben werden, auf nur einigen der Leiter der Leitungen 22-28 übertragen werden. Snoop-Antworten können auf andere Leitern übertragen werden als Snoop-Anforderungen. Bei einigen Ausführungsbeispielen werden einige Signale, wie beispielsweise Datensignale, auf Leitern gesendet, die nicht in den Leitungen 22-28 enthalten sind. 1 veranschaulicht ein unidirektionales Beispiel, bei welchem sich die Signale nur in Uhrzeigerrichtung ausbreiten. Bei dem Beispiel teilen sich die Knoten keinen globalen Takt und verwenden eine quellensynchrone Übertragung.
  • 3 veranschaulicht ein Ausführungsbeispiel des Knotens N2, welcher einen Prozessor 30 und einen Cache 34 (welcher sich auf dem gleichen Chip wie der Prozessor 30 aufhalten kann) enthält. Knoten N2 kann mehr als einen Prozessor und/oder Chipsatz für Speicher und/oder Peripherieeinrichtungen enthalten. Der Prozessor 30 bildet eine Schnittstelle mit Hilfe einer Netzwerkschnittstellenschaltung, welche bei einigen Ausführungsbeispielen eine Empfangsschaltung 42, eine Steuerschaltung 40 und eine Sendeschaltung 48 enthält. Auf den Cache 34 kann sowohl über einen rückseitigen Bus zum Prozessor 30 als auch direkt zur Steuerschaltung 40 zugegriffen werden, wie es veranschaulicht ist oder über nur einen oder den anderen. Der Hauptspeicher 46 ist optional und kann Teil eines gemeinsamen, mit anderen Knoten geteilten Hauptspeichers sein. Er kann direkt durch den Prozessor und/oder die Steuerschaltung 40 zugreifbar sein. 3 veranschaulicht die Empfangsschaltung 42 und die Sendeschaltung 48 als von der Steuerschaltung 40 getrennt; jedoch können die Signale schnell aus der Empfangs- in die Sendeschaltung bewegt werden, und bei einigen Ausführungsbeispeilen kann die gleiche Schaltung für beide verwendet werden. Knoten N2 kann Komponenten enthalten, die nicht in 3 veranschaulicht sind. Ein Knoten kann Teil mehr als eines Rings sein. Die hier beschriebenen Funktionen der Steuerschaltung 40 können von dem Prozessor 30 ausgeführt werden. Knoten N0, N1 und N3 können dem Knoten N2 gleich sein oder von ihm abweichen. Um bloß ein Beispiel zu nennen; die Leiter 22-28 können jeweils eine Länge in der Größenordnung von wenigen Zentimetern oder weniger haben. Als weiteres Beispiel kann das System 10 ein verteiltes Netzwerk sein, bei dem die Leiter 22-28 beispielsweise mehrere Meter lang sind.
  • Man betrachte das folgende Beispiel, bei welchem ein Prozessor im Knoten N0 zu bestimmen wünscht, ob ein Cache oder ein anderer den Prozessoren in den Knoten N1, N2 oder N3 zugeordneter Speicher eine bestimmte Cache-Zeile auf weist. Eine Anforderungsnachricht (welche in Form eines Pakets vorliegen kann) wird auf den Leiter 22 zum Knoten N1 gesendet, um abzufragen, ob der Knoten N1 die Cache-Zeile aufweist. Bevor der Knoten N1 bestimmt, ob er die Cache-Zeile hat, wird die Nachricht auf den Leitern 24 an den Knoten N2 weitergeleitet, um abzufragen, ob der Knoten N2 die Cache-Zeile hat. Bevor der Knoten N2 bestimmt, ob er die Cache-Zeile hat, wird die Nachricht auf den Leitern 26 zum Knoten N3 weitergeleitet, um abzufragen, ob der Knoten N3 die Cache-Zeile hat. Die Nachricht wird auf den Leitern 28 zurück zum Knoten N0 weitergeleitet. Bei dem Beispiel wird die Nachricht von dem Knoten N0-N4 gesendet, aber ursprünglich nur von dem Knoten N0 gesendet.
  • System 10 ist dezentralisiert in der Weise, daß es keinen zentralen Entscheider (Arbiter) aufweist. Bei einigen Ausführungsbeispielen bildet das System 10 ein zentralisiertes bus-basiertes System derart nach, daß herkömmliche Protokolle (wie beispielsweise das Cache-Kohärenz-Protokoll) mit geringen oder ohne Änderungen verwendet werden können. Bei vielen, wenn nicht allen bus-basierten Systemen darf zu einem Zeitpunkt nur ein Teilnehmer Daten auf den Bus geben, und sämtliche Teilnehmer sehen die Nachrichten auf dem Bus gleichzeitig und in der gleichen Reihenfolge. Bei einem ring-basierten System empfangen die Teilnehmer solche Pakete in unterschiedlicher Reihenfolge. Einige Ausführungsbeispiele der Erfindung umfassen ein passives Nachrichtenordnen unter Verwendung der Abstraktion eines virtuellen Schlitzes (Slots), durch welche die Knoten die Nachrichten übereinstimmend in einer globalen Reihenfolge ordnen können.
  • 2. Virtuelle Slots
  • Bei einigen Ausführungsbeispielen ist ein virtueller Slot die Einheit der Ringbandbreite, die ausreicht, um das größte Paket oder eine andere Form der in diesem Teil des Rings übermittelten Nachricht zu transportieren. Wenn ein solches Paket größer ist als die Anzahl der Leiter des Rings, die zum Übermitteln der Nachrichten verfügbar sind, kann es mehr als einen Taktzyklus für einen Teilnehmer beanspruchen, ein Paket zu senden. Die Länge eines virtuellen Slot ist die größte Anzahl von Zyklen, die in den relevanten Leitern des Rings benutzt werden.
  • Das Folgende ist ein Beispiel für das System 10, welches 4 Knoten aufweist. Selbstverständlich kann die Erfindung mit einer größeren oder geringeren Anzahl von Knoten und mit abweichenden Details implementiert werden. Es sei angenommen, daß die Gesamtverzögerung zwischen einem Paar von Knoten (Laufzeit + Knotenverzögerung) 9 Taktzyklen beträgt. Demzufolge werden 36 Taktzyklen für ein einzelnes Flit (kein vollständiges Nachrichtenpaket) benötigt, damit es den Ring durchläuft. Somit kann der Ring 36 getrennte Flits halten. Ferner sei angenommen, daß 5 Taktzyklen von einem Knoten zum Senden eines Nachrichtenpakets benötigt werden. Entsprechend kann der gesamte Ring bis zu [36/5] = 7 Nachrichten zu einem beliebigen Zeitpunkt halten. Die 36 Flits, die den Ring durchlaufen, werden so betrachtet, daß sie 7 virtuelle Slots und ein unbenutztes Flit bilden. Bei dem Beispiel beträgt die Ringkapazität 7 virtuelle Slots.
  • Die 7 virtuellen Slots (S0, S1, S2, S3, S4, S5 und S6) können sichtbar gemacht werden, wie es in den 1 und 2 gezeigt ist. Der eine unbenutzte Zyklus oder das eine unbenutzte Flit ist in 1, aber nicht in 2, gezeigt. 1 veranschaulicht eine tatsächliche Verteilung von Nachrichten-Slots und 2 veranschaulicht eine virtuelle Verteilung von Nachrichten-Slots.
  • Die Knoten kennen möglicherweise nicht genau die verschiedenen Zeitgaben, die bei der Berechnung der Anzahl der virtuellen Slots in einem Ring verwendet werden. Jedoch können die Knoten die Anzahl c der Takte kennen, die sie benötigen, um eine Nachricht auszusenden (c = 5 bei dem obigen Beispiel). Unter Verwendung dieser Information können die Knoten die Anzahl der virtuellen Slots im Ring berechnen. Beispielsweise sei die folgende Prozedur betrachtet. Beim Systemstart beginnt ein bestimmter Knoten (z. B. der Knoten N0) damit, Flits auszusenden, welche die Knoten dann zyklisch durch den Ring herumreichen. Jeder dieser Flits wird mit einer sich erhöhenden Sequenznummer gekennzeichnet. Angenommen, der Knoten hat zu dem Zeitpunkt, wenn der mit 0 gekennzeichnete Flit zu ihm zurückkehrt, p Flits ausgesendet. Der Knoten weiß dann, daß der Ring p Flits enthalten kann und die Anzahl der virtuellen Slots wird dann s = [p/c]. Dies kann zu den anderen Knoten kommuniziert werden.
  • Bei einigen Ausführungsbeispielen markiert der spezielle Knoten die erste (Kopfteil-) Nachricht jedes virtuellen Slots, sobald die Anzahl der virtuellen Slots bestimmt worden ist. Ein Knoten beginnt damit, ein Paket nur in eine freie Nachricht, die der Kopfteil eines virtuellen Slots ist, einzusetzen. Der spezielle Knoten kann einen Slot-ID auf den ersten Flit jedes virtuellen Slot einbringen, der ihn identifiziert. Die Knoten können dann nach den Flits mit diesen Slot-IDs sehen, um zu bestimmen, welche Flits sie für ihre Nachrichten verwenden können. Ein Knoten bringt den ersten Flit einer Nachricht nur in einen freien Flit, der der Beginn eines virtuellen Slot ist.
  • Die Anzahl der virtuellen Slots in einem Ring kann sich über die Zeit ändern (z. B. unter sich ändernden thermischen Bedingungen). Das System kann so ausgebildet sein, daß es entweder weniger virtuelle Slots verwendet als verfügbar sind (was eine Erhöhung ermöglicht) oder so, daß es sich periodisch selbst umkonfiguriert, um Slots hinzuzufügen oder aufzugeben.
  • 3. Passives Nachrichtenordnen
  • Bei einigen Ausführungsbeispielen ist das Nachrichtenordnen (das Ordnen der Nachrichten) passiv insofern, als es keine Kommunikation über das hinaus erfordert, was erforderlich ist, um die Nachrichten zu übersenden. Die Knotenempfangsreihenfolge ist diejenige Reihenfolge, in welcher die Nachrichten tatsächlich von den Knoten empfangen werden (welche typischerweise für jeden Knoten verschieden ist). Die virtuelle Zeit wird inkrementiert, wenn sich virtuelle Slots um den Ring herum bewegen. Die Reihenfolge in der virtuellen Zeit ist die Reihenfolge der Nachrichten in Übereinstimmung mit der virtuellen Zeit. Jede Nachricht, die ursprünglich zum gleichen virtuellen Zeitpunkt gesendet worden ist, befindet sich in der gleichen Ebene der Reihenfolge der virtuellen Zeit. Die globale Reihenfolge ist eine Reihenfolge der Nachrichten, mit der sich jeder Knoten, der an dem globalen Ordnen teilnimmt, einverstanden erklärt. Es kann einen oder mehrere Knoten in einem Ring geben, der bzw. die nicht wissen, welches die globale Reihenfolge ist. Beispielsweise kann ein Knoten ein Eingabe/Ausgabe-Knoten sein, bei dem die globale Reihenfolge nicht relevant ist und der die globale Reihenfolge nicht verfolgt.
  • Nachrichten werden aus dem Ordnungspuffer 62 in der globalen Reihenfolge zur Ruhe gebracht (retired). Die Nachrichten in der unteren Position des Ordnungspuffers 62 sind in der globalen Reihenfolge, weil keine Nachricht in einer früheren Position in der globalen Reihenfolge eingefügt werden kann. Zu einem Zeitpunkt können sich mehr als eine Nachricht in dem Ordnungspuffer 62 in einer globalen Reihenfolge befinden. In Abhängigkeit von dem sendenden Knoten und der Anzahl der virtuellen Slots zwischen dem sendenden und dem empfangenden Knoten kann eine Nachricht in eine Position eingefügt werden, die sich bereits in einer globalen Reihenfolge befindet oder in eine Position, die zu einer globalen Reihenfolge führt, wenn zusätzliche Nachrichten empfangen werden. Wenn sich zwei oder mehrere Nachrichten auf der gleichen Ebene der virtuellen Zeitreihenfolge befinden, wird eine Schiedsentscheidungstechnik (Tie-Break-Technik) verwendet, um zu bestimmen, welche in eine frühere Position in dem Ordnungspuffer 62 eingefügt wird. Die globale Reihenfolge kann Busreihenfolge genannt werden, da sie eine Reihenfolge zur Verfügung stellt, welche ähnlich, aber nicht notwendigerweise exakt gleich, derjenigen ist, welche ein gemeinsamer Bus zur Verfügung stellen würde. Beispielsweise sei angenommen, daß eine Nachricht 1 vom Knoten 1 gesendet wird, bevor eine Nachricht 2 vom Knoten 2 gesendet wird. Nachricht 1 kann vor oder nach Nachricht 2 in der globalen Reihenfolge angeordnet werden, was von den Details des Rings und der virtuellen Slots abhängig ist.
  • Die globale Reihenfolge weist die folgenden drei Eigenschaften auf (die als Eigenschaft (1), (2) und (3) bezeichnet werden):
    • (1) Sofern Knoten A die Nachricht ml als der Nachricht m2 in der globalen Reihenfolge vorhergehend sieht, so sehen dann alle Knoten, die an der globalen Ordnung teilnehmen, ml vor m2 in der globalen Reihenfolge.
    • (2) Wenn ein Knoten zuerst die Nachricht ml sendet und dann die Nachricht m2 sendet, sehen sämtliche an der globalen Ordnung teilnehmenden Knoten ml vor m2 in der globalen Reihenfolge.
    • (3) Wenn ein Knoten die Nachricht ml in der Knotenempfangsreihenfolge empfängt und später eine Nachricht m2 sendet, dann sehen sämtliche an der globalen Ordnung teilnehmenden Knoten ml vor m2 in der globalen Reihenfolge.
  • Daß die globale Reihenfolge nicht notwendigerweise der genauen zeitlichen Reihenfolge folgt, in welcher die Nachrichten gesendet werden, ist grundsätzlich nicht wichtig, solange die Eigenschaften (1), (2) und (3) zur Verfügung gestellt werden.
  • Zusätzlich zu den Eigenschaften (1)-(3) können die folgenden zwei zusätzlichen Eigenschaften (die als Eigenschaft (4) und (5) bezeichnet werden) bei bestimmten Anwendungen des passiven Nachrichtenordnens nützlich sein.
    • (4) Wenn ein Knoten eine Nachricht m in der Knotenempfangsreihenfolge empfängt, kennt er die globale Ordnung von m relativ zu den Nachrichten, die er bereits empfangen hat.
    • (5) Der Empfang einer Nachricht an einem Knoten ändert nicht die relative globale Reihenfolge der früher empfangenen Nachrichten.
  • Es sei betont, daß das passive Nachrichtenordnen verwendet werden kann beim Ordnen von Nachrichten für eine Viel zahl von Zwecken und Systemen. Beispielsweise kann das passive Nachrichtenordnen verwendet werden, um Snoop-Anforderungen auf einem Ring zu ordnen. Als weiteres Beispiel kann das passive Nachrichtenordnen darüber hinaus von einem verteilten Netzwerk von Computern verwendet werden, um eine konsistente Reihenfolge der Nachrichten in einer verteilten Datenbank zur Verfügung zu stellen.
  • Ein Element eines bestimmten Protokolls wie beispielsweise des Cache-Kohärenz-Protokolls besteht darin, daß sämtliche Knoten sämtliche Transaktionen in der gleichen Reihenfolge sehen. Mit dem durch das passive Anforderungsordnen zur Verfügung gestellten globalen Ordnen sehen sämtliche Knoten sämtliche Transaktionen in der gleichen Reihenfolge.
  • a. Abstraktion des virtuellen Slots
  • Die Virtueller-Slot-Abstraktion kann bei der Bestimmung des "virtuellen Zeitpunkts" einer Nachrichtenübertragung verwendet werden. Nachrichten können in Übereinstimmung mit diesem virtuellen Zeitpunkt in einem Ordnungspuffer geordnet werden.
  • i. Wenn Slots gleichmäßig verteilt sind
  • Angenommen, es gibt s virtuelle Slots in dem Ring und jeder Slot weist c Flits auf. Wenn die Anzahl der Knoten (n) s gleichmäßig aufteilt, kann es s/n Slots oder (sc/n Flits) auf jeder Verbindung (link) geben, wobei s/n und sc/n ganze Zahlen sind. Dies bedeutet, daß sc/n Zyklen benötigt werden, damit eine Flit von einem Knoten zu einem anderen Knoten läuft. Knoten können diese Information benutzen, um zu bestimmen, wann eine Nachricht gesendet wurde. Wenn ein Knoten das erste Flit einer Nachricht von einem stromaufwärts liegenden Nachbarn empfängt, weiß er, daß die Nachricht u sc/n Zyklen zuvor gesendet wurde, wobei u die Anzahl der Knoten stromauf ist. Wenn alles perfekt synchronisiert ist, können sich die Knoten präzise auf die Sendezeit einer Nachricht einigen. Da jedoch das System nicht perfekt synchronisiert ist, können die Knoten ihre Berechnung nicht auf Taktzyklen sondern auf virtuellen Slots, die bei dem Ring ein treffen, begründen. Da die Knoten sich auf die Struktur der Abstraktion der virtuellen Slots einigten, sind die Knoten virtuell synchronisiert.
  • Knoten brauchen nicht die Flits (oder "virtuellen Zyklen") zu zählen. Es ist ausreichend, die virtuellen Slots zu zählen, wie sie bei dem Ring vorbeikommen (der erste Flit eines virtuellen Slot kann identifizierbar sein). Wenn eine Nachricht bei einem Knoten eintrifft, kann der Knoten bestimmen, daß sie u = s/n Slots zuvor gesendet wurde. Ein Knoten kann sich über seine eigene Nachricht zu seiner Sendezeit bewußt werden, wobei er weiß, daß die Nachricht 0 Slots zuvor gesendet wurde.
  • Der Knoten kann das Alter "einer Nachricht" in Einheiten der virtuellen Slots oder der virtuellen Zeit verfolgen. Wenn eine Nachricht von einem Knoten u Verbindungen (links) stromaufwärts empfangen worden ist, weiß der Empfänger, daß sie us/n Slots alt ist und kann sie in geeigneter Weise in einem Ordnungspuffer kennzeichnen (tag). Wenn jeweils ein virtueller Slot empfangen wird, werden die Nachrichten jeweils um ein Slot gealtert. Es ist nicht erforderlich, daß das Alter explizit als eine Zahl irgendwo in den Knoten gespeichert wird. Stattdessen können die Knoten eine Schaltung enthalten, die um einen Zustand voranrückt, wenn sich das Alter erhöht.
  • Da kein Knoten mehr als n-1 Verbindungen (links) stromauf angeordnet ist, ist bei einigen Ausführungsbeispielen u < n, so daß us/n < s für sämtliche möglichen u ist. Die älteste Nachricht, die ein Knoten empfangen könnte, würde ein Alter von s – 1 Slots haben. Somit weiß ein Knoten, sobald eine Nachricht ein Alter von s-1 aufweist, daß irgendwelche nachfolgend eintreffenden Nachrichten zu einer späteren virtuellen Zeit gesendet worden sind. Demzufolge kann ein Ordnen einer Nachricht in dem Ordnungspuffer abgeschlossen werden, wenn ihr Alter s – 1 ist.
  • ii. Wenn Slots nicht gleichmäßig aufgeteilt sind
  • Man betrachte beispielsweise einen Ring, der 4 Knoten aufweist, die 7 virtuelle Slots halten (n = 4 und s = 7), wie es in 2 der Fall ist. In diesem Fall ist es ausreichend, die virtuellen Slots unter den Verbindungen (links) in dem Ring aufzuteilen. Knoten können beispielsweise bei der Initialisierung entscheiden, welche Verbindungen wieviele virtuelle Slots halten. Im Falle der 2 kann es entschieden worden sein, daß
    • • die Verbindung vom Knoten 0 zum Knoten 1 zwei virtuelle Slots hält
    • • die Verbindung vom Knoten 1 zum Knoten 2 zwei virtuelle Slots hält
    • • die Verbindung vom Knoten 2 zum Knoten 3 zwei virtuelle Slots hält
    • • die Verbindung vom Knoten 3 zum Knoten 0 einen virtuellen Slot hält.
  • 5 veranschaulicht die Zuweisung virtueller Slots in Zwischen-Knoten-Verbindungen in Übereinstimmung mit dieser Bestimmung. Wenn die Slots nicht gleichmäßig verteilt sind, kann eine Slots-Funktion gemäß in Tabelle 1 definiert werden:
    Figure 00130001
    Tabelle 1
  • Die Slots-Funktion kann verwendet werden, um das "Alter" einer Nachricht zu bestimmen, die empfangen worden ist. Insbesondere kann man eine Funktions "verzögerung" derart ableiten, daß eine Verzögerung (i, j) das "Alter" einer Nachricht (auf der Grundlage ihrer Slot-Verzögerung) ist, die durch den Knoten i vom Knoten j empfangen worden ist. Sie kann berechnet werden als Verzögerung (i, j) = Slots (j) + Slots (nächstes (j)) + ... + Slots (vorgehendes(i)), wobei vorhergehendes(i) = n + i – 1 mod n ist, sofern i ≠ j ist, und Verzögerung (i, i) = 0 ist. Für 5 stellt Tabelle 2 eine Verzögerungsfunktion zur Verfügung (Berechnung der Nachrichtenverzögerungen (in Einheiten der Slots)):
    Figure 00140001
    Tabelle 2
  • Beispielsweise zeigt Tabelle 2 an, daß die Nachricht, die Knoten 2 vom Knoten 0 empfängt, 4 Slots zuvor gesendet worden ist.
  • Wenn ein bestimmter Knoten nicht an dem globalen Ordnen teilnimmt, arbeitet die Abstraktion der virtuellen Slots und zugeordneten Verzögerungsfunktionen dennoch, könnte aber entsprechend modifiziert werden. Wenn beispielsweise Knoten N1 nicht teilnimmt, können noch 4 virtuelle Slots benötigt werden, damit eine Nachricht sich vom Knoten N0 zu N2 ausbreitet, wie es in Tabelle 2 gezeigt ist.
  • Bei einigen Ausführungsbeispielen sind dann, wenn eine Nachricht m Slots alt ist (wobei m die Maximalanzahl der Slots in der Verzögerungsfunktion ist (in dem Beispiel ist m = 6)), die Nachrichten irgendwelcher zu derselben virtuellen Zeit gesendeter Anforderungen empfangen worden. An diesem Punkt kann das Ordnen abgeschlossen werden.
  • 4 veranschaulicht gewisse Schaltungen, die bei einem Ausführungsbeispiel der Steuerschaltung 40 des Knotens N2 gemäß 3 enthalten sind. Gemäß den 3 und 4 stellt eine Positionierschaltung 60 eine von der Empfangs schaltung 42 auf den Leitungen 70 oder aus dem Prozessor 30 auf den Leitungen 76 empfangene Nachricht einer geeigneten Position im Ordnungspuffer 62 zur Verfügung. Die Verarbeitungsschaltung 66 kann verschiedene Funktionen ausführen, wie beispielsweise das Bereitstellen von Nachrichten an den Prozessor 39. Bei einigen Ausführungsbeispielen initiiert die Verarbeitungsschaltung 66 eine Snoop-Operation bei dem Speicher, wie beispielsweise bei dem Cache 34. Der Ordnungspuffer 62 enthält eine Position für jeden Slot auf dem Ring. Die Positionen sind in der globalen Reihenfolge angeordnet, wobei die höchste die späteste in der globalen Reihenfolge ist, und die unterste die früheste in der globalen Reihenfolge. In Abhängigkeit von den virtuellen Zeiten, zu welchen die Nachrichten ursprünglich gesendet worden sind, kann sich mehr als eine Position bei dem gleichen virtuellen Zeitpunkt aufhalten. Die Positionierschaltung 60 bringt die Nachricht an die richtige Anfangsposition auf der Grundlage ihrer virtuellen Zeit. Wenn dann neue Nachrichten empfangen werden, altern die zuvor positionierten Nachrichten und bewegen sich zum Boden des Ordnungspuffers 62. (Bei einigen Ausführungsbeispielen können die Nachrichten mittels Änderungen von Bits anstelle der physischen Änderung von Positionen zum Abwärtsbewegen in dem Ordnungspuffer 62 altern.) Bei einigen Ausführungsbeispielen ist es wünschenswert, daß bestimmte Nachrichten miteinander verknüpft werden. Beispielsweise können bestimmte Snoop-Anforderungen zu der gleichen Adresse miteinander über Zeiger verknüpft werden. Bei einigen Ausführungsbeispielen stellt die Positionierschaltung 60 diese Zeiger zur Verfügung. Darüber hinaus kann eine optionale Einstellschaltung 64 verwendet werden, um Daten zwischen Positionen zu bewegen und/oder zu ändern. Nachrichten, welche in Bezug auf die von der Positionierschaltung 60 empfangene Nachricht an der Bodenposition eingestellt werden können, sind in der globalen Reihenfolge, mit welcher jeder Knoten einverstanden ist. Die Nachrichten werden der Sendeschaltung 48 über die Leitungen 72 oder dem Prozessor 30 über die Leitungen 76 oder einer anderen Schaltung zur Verfügung gestellt. Bei einigen Ausführungsbeispielen kann nur die Bodenposition des Ordnungspuffers 62 die sich zur Ruhe setzende Nachricht (retiring message) halten. Bei anderen Ausführungsbeispielen können irgendwelche Positionen die Retiring-Nachrichten halten. Die Verbindung der Leitungen 72 mit dem Ordnungspuffer 62 stellt einen Ausgang des Ordnungspuffers 62 für irgendeine Retiring-Nachricht haltende Position dar. Um eine Verwirrung zu vermeiden und weil Details implementierungsspezifisch sind, sind nicht sämtliche Steuerschaltungen (z. B. Schnittstellenschaltungen) und zugehörige Leitungen für die 3 und 4 veranschaulicht. Man beachte, daß die Nachrichten in einer anderen Form in dem Ordnungspuffer 62 vorliegen können, als sie von der Verarbeitungsschaltung 66 empfangen worden sind.
  • b. Visualisierung durch "Skyline-Diagramme"
  • Die Betriebsweise der Ordnungspuffer, wie beispielsweise des Ordnungspuffers 62 für den Knoten 2, kann mit Hilfe von "Skyline-Diagrammen" sichtbar gemacht werden. 6 veranschaulicht beispielhafte Skyline-Diagramme 102, 104, 106 und 108 für die Knoten 0, 1, 2 bzw. 3. Demzufolge veranschaulicht das Skyline-Diagramm 106 die Betriebsweise des Ordnungspuffers 62 in Knoten 2. Obwohl die Skyline-Diagramme mehr als s Positionen zeigen (wobei s die Anzahl der Slots ist), können zu einem vorgegebenen Zeitpunkt nur s Positionen belegt werden. Die Positionierschaltung (z. B. in 4) enthält Demultiplexer (DEMUX), die ähnlich den in 6 veranschaulichten sind, welche eine Nachricht empfangen und eine Knoten-ID-Nummer aus einem Slot oder dem Prozessor innerhalb des Knotens senden. Die Spalten der Skyline-Diagramme entsprechen den Nachrichten aus den verschiedenen Knoten. Der Demultiplexer weist eine Nachricht derjenigen Spalte zu, die dem sendenden Knoten-ID entspricht. D. h., Spalte 0 hält die von dem Knoten N0 gesendeten Nachrichten; Spalte 1 hält die von dem Knoten N1 gesendeten Nachrichten; usw. Die Höhe der Spalten differieren und sind gleich der Anzahl der virtuellen Slots s abzüglich der oben definierten Verzögerungsfunktion. Beispielsweise ist die Höhe der Spalte 3 in dem Diagramm für Knoten 1 s-Verzögerung (1,3) = 7 – 3 = 4. Zur Vereinfachung der Beschreibung werden im Falle eines Rings mit 7 virtuellen Slots die Abschnitte der Spalten als Ebene 0, Ebene 1, Ebene 2, Ebene 3, Ebene 4, Ebene 5 und Ebene 6 bezeichnet, obwohl nicht jede Spalte jede Ebene aufweist. Zu derselben virtuellen Zeit gesendete Nachrichten werden auf der gleichen Ebene positioniert, obwohl sie von den verschiedenen Knoten zu verschiedenen virtuellen Zeiten empfangen werden.
  • Wenn eine Nachricht empfangen wird, wird sie an die Spitze derjenigen Spalte angeordnet, die dem Knoten entspricht, der die Nachricht gesendet hat. Mit jedem nachfolgend empfangenen Slot altern sämtliche Nachrichten und fallen eine Ebene nach unten. Wenn eine Nachricht den Boden erreicht, ist sie s-1 Slots alt (bei diesem Beispiel 6 Slots alt), und das globale Ordnen kann dadurch abgeschlossen werden, daß bestimmt wird, welche Nachrichten, die das gleiche Slot-Alter aufweisen, die Priorität erhalten. Man beachte, daß es nicht erforderlich ist, daß die Knoten die virtuelle Zeit verfolgen, wie beispielsweise mit Hilfe eines Zählers. Statt dessen kann die Schaltung lediglich Nachrichten in der richtigen Position in dem Ordnungspuffer plazieren und die anderen Nachrichten altern, indem sie um eine Ebene bewegt werden. Darüber hinaus braucht der Ordnungspuffer 62 nicht sämtliche Komponenten des Skyline-Puffers zu enthalten. Beispielsweise haben die Skyline-Puffer mehr Positionen als es Slots gibt. Der Ordnungspuffer 62 weist eine Position für jeden Slot auf. Jedoch können Ausführungsbeispiele der Erfindung mit Ordnungspuffern implementiert werden, die von dem Ordnungspuffer 62 abweichen.
  • i. Beispiel: vier zur gleichen virtuellen Zeit gesendete Slots
  • 6, 7, 8 und 9 veranschaulichen ein Beispiel für den Ring gemäß 2. Jeder Knoten ruft die Sendung einer Nachricht in einem virtuellen Slot zu der gleichen virtuellen Zeit (VT0) hervor. Die virtuellen Slots bewegen sich um den Ring herum, wobei sie vier Nachrichten der Reihe nach liefern. Die Knotenempfangsreihenfolge ist für jeden Knoten verschieden. Dennoch bestimmen sämtliche vier Knoten korrekt, daß die vier Nachrichten zur gleichen virtuellen Zeit gesendet wurden.
  • Zum virtuellen Zeitpunkt VT0 sendet der Knoten N0 ursprünglich eine Nachricht im Slot S0, der Knoten N1 sendet ursprünglich eine Nachricht im S2, der Knoten N2 sendet ursprünglich eine Nachricht in dem Slot S4 und der Knoten N3 sendet ursprünglich eine Nachricht in dem Slot S6. Jedoch ist diese Tatsache nicht sofort jedem Knoten bekannt. Statt dessen werden die verschiedenen Slots zu den Ordnungspuffern der verschiedenen Knoten zu verschiedenen Zeiten geliefert. Zum virtuellen Zeitpunkt VT0 werden die Slots S0, S2, S4 und S6 den Ordnungspuffern der Knoten N0, N1, N2 bzw. N3 zur Verfügung gestellt. Gemäß 6 werden die Nachrichten der Slots S0, S2, S4 und S6 auf der Ebene 0 der Spalten 0, 1, 2 bzw. 3 der Skyline-Diagramme 102, 104, 106 bzw. 108 empfangen. Man beachte, daß in den 6 bis 10 die Symbole "S0", "S2", "S4" und "S6" die in den Slots S0, S2, S4 und S6 mitgeführten Nachrichten repräsentieren. Selbstverständlich sind die Slots selbst nicht in dem Ordnungspuffer.
  • Zum virtuellen Zeitpunkt VT1 werden die Slots jeweils um eine Ebene auf dem Ring vorgerückt. D. h., Slot 0 wird dahin vorgerückt, wo Slot 1 zum Zeitpunkt VT0 gewesen ist; Slot 1 schreitet dahin voran, wo Slot 2 zum Zeitpunkt VT0 war; usw., wobei Slot 6 dorthin vorgerückt wird, wo Slot 0 zum Zeitpunkt VT0 war. Wenn die Slots in die Knoten eintreten, werden die Nachrichten in den Skyline-Diagrammen gealtert und bewegen sich zur nächsten Ebene. Dementsprechend werden, wie es in 7 veranschaulicht ist, die Nachrichten der Slots S0, S2, S4 und S6 zur Ebene 1 der Spalten 0, 1, 2 bzw. 3 der Skyline-Diagramme vorgerückt. Darüber hinaus wird zum virtuellen Zeitpunkt VT1 die Nachricht des Slots S6 aus dem Knoten 3 von dem Ordnungspuffer des Knotens N0 empfangen. Die Nachricht des Slots S6 wird in Spalte 3, Ebene 1 des Skyline-Diagramms 102 plaziert. Da Spalte 3 kürzer ist als Spalte 0, sind die Nachrichten der Shots S0 und S6 auf derselben Ebene in dem Skyline-Diagramm 102 zum virtuellen Zeitpunkt VT1. Dies macht Sinn, da sie ursprünglich zum gleichen virtuellen Zeitpunkt gesendet worden sind.
  • Mit jedem Vorrücken der Slots um den Ring herum empfangen verschiedene Knoten Slots, die von verschiedenen Knoten herrühren, aber zum gleichen virtuellen Zeitpunkt gesendet wurden. Die zuvor empfangenen Nachrichten werden die Skyline-Diagramme hinab vorgerückt, wenn sich die Slots um den Ring herumbewegen. Im folgenden wird zusammengefaßt, welche Knoten welche Slots aus welchen Knoten empfangen und wo die Slots plaziert werden.
  • Zum virtuellen Zeitpunkt VT0:
    • N0 empfängt S0 aus N0 (Nachricht wird an der Spitze der Spalte 0 plaziert)
    • N1 empfängt S2 aus N1 (Nachricht wird an der Spitze der Spalte 1 plaziert)
    • N2 empfängt S4 aus N2 (Nachricht wird an der Spitze der Spalte 2 plaziert)
    • N3 empfängt S6 aus N3 (Nachricht wird an der Spitze der Spalte 3 plaziert)
  • Zum virtuellen Zeitpunkt VT1:
    • N0 empfängt S6 aus N3 (Nachricht wird an der Spitze der Spalte 3 plaziert)
  • Zum virtuellen Zeitpunkt VT2:
    • N1 empfängt S0 aus N0 (Nachricht wird an der Spitze der Spalte 0 plaziert)
    • N2 empfängt S2 aus N1 (Nachricht wird an der Spitze der Spalte 1 plaziert)
    • N3 empfängt S4 aus N2 (Nachricht wird an der Spitze der Spalte 2 plaziert)
  • Zum virtuellen Zeitpunkt VT3:
    • N0 empfängt S4 aus N2 (Nachricht wird an der Spitze der Spalte 2 plaziert)
    • N1 empfängt S6 aus N3 (Nachricht wird an der Spitze der Spalte 3 plaziert)
  • Zum virtuellen Zeitpunkt VT4:
    • N2 empfängt S0 aus N0 (Nachricht wird an der Spitze der Spalte 0 plaziert)
    • N3 empfängt S2 aus N1 (Nachricht wird an der Spitze der Spalte 1 plaziert)
  • Zum virtuellen Zeitpunkt VT5:
    • N0 empfängt S2 aus N1 (Nachricht wird an der Spitze der Spalte 1 plaziert)
    • N1 empfängt S4 aus N2 (Nachricht wird an der Spitze der Spalte 2 plaziert)
    • N2 empfängt S6 aus N3 (Nachricht wird an der Spitze der Spalte 3 plaziert)
  • Zum virtuellen Zeitpunkt VT6:
    • N3 empfängt S0 aus N0 (Nachricht wird an der Spitze der Spalte 0 plaziert)
  • 8 veranschaulicht die Nachrichten in den Skyline-Diagrammen 102 bis 108 zum virtuellen Zeitpunkt VT4.
  • 9 veranschaulicht die Nachrichten in den Skyline-Diagrammen 102 bis 108 zum virtuellen Zeitpunkt VT6. Jedes Skyline-Diagramm weist dieselbe Kombination von vier Nachrichten auf, was Sinn macht, da die Nachrichten zu derselben virtuellen Zeitpunkten gesendet wurden. Jeder Knoten verwendet das gleiche Schema zum Bestimmen der Priorität zwischen den Nachrichten zu derselben virtuellen Zeit. Beispielsweise könnte eine einem geringeren Knoten-ID zugeordnete Nachricht eine Priorität gegenüber Nachrichten, die höheren Knoten-IDs zugeordnet sind, einnehmen.
  • Bis zum virtuellen Zeitpunkt VT6 wurden noch nicht sämtliche Nachrichten empfangen und ist die globale Reihenfolge der Nachrichten nicht bekannt. Nimmt man beispielsweise an, daß die Nachricht in der Spalte 0 die oberste Priorität hat, ist es gewöhnlich bis VT6 nicht bekannt, ob eine Nachricht in Spalte 0 des Knotens 3 empfangen werden wird, und wenn dies der Fall ist, welchen Inhalts die Nachricht sein wird. Bestimmte Techniken können verwendet werden, um die Operation der Knoten zu beschleunigen. Wenn beispielsweise die Spalte 0 die höchste Priorität aufweist und die Spalte 3 die geringste Priorität, so ist es möglicherweise im Falle des Knotens 2 zum Zeitpunkt VT4 (auf Ebene 4) bekannt, daß die Nachrichten vor S0, S2 und S4 die ersten drei Prioritäten sein würden. Angenommen, die Antwort auf die Nachrichten S0, S2 und S4 hängt nicht von dem Inhalt der Nachricht von S6 ab, so kann der Knoten N3 in der Lage sein, an den Nachrichten von S0, S2 und S4 vor dem Zeitpunkt VT6 zu agieren. Die Nachricht mit der höchsten Priorität kann für jeden Knoten zum Zeitpunkt VT5 bekannt sein. Tatsächlich sind sämtliche Nachrichten außer der Nachricht der Spalte 0 des Knotens 3 bis dahin bekannt. In diesem Fall sind die Knoten N0, N1, N2 und N3 ggf. in der Lage, vor dem Zeitpunkt VT6 an den Nachrichten der höchsten Priorität zu agieren. Jedoch können die Knoten so implementiert sein, daß keine Nachricht bearbeitet wird, bis sämtliche Nachrichten in der Ebene 6 der Skyline-Diagramme empfangen worden sind. Einige Skyline-Diagramme können mehr als eine Spalte mit nur einer Position aufweisen, wobei in diesem Fall es weniger Stellen geben kann, bei denen die globale Reihenfolge bekannt ist, bevor jede Nachricht sich an der Ebene 6 befindet.
  • ii. Beispiel: zu verschiedenen virtuellen Zeitpunkten gesendete Slots
  • Zur Vereinfachung veranschaulichen die Beispiele gemäß den 6 bis 9 nur das Voranschreiten von Nachrichten, die ursprünglich zu dem gleichen virtuellen Zeitpunkt gesendet worden sind. Ursprünglich zu verschiedenen virtuellen Zeitpunkten gesendete Nachrichten in Slots werden auf verschiedenen Ebenen positioniert. Beispielsweise sei angenommen, daß zum virtuellen Zeitpunkt VT0 die Knoten N0 und N1 ursprünglich Nachrichten in den Slots S0 bzw. S2 gesendet haben, und daß zum virtuellen Zeitpunkt VT1 die Knoten N0 und N1 Nachrichten in Slot S6 bzw. in Slot S1 ursprünglich gesendet haben, aber keine weiteren Nachrichten senden. Zu den virtuellen Zeitpunkten VT0 und VT1 empfangen die Ordnungspuffer für die Knoten N0 und N1 die Nachrichten, die diese Knoten ursprünglich senden. Die Nachrichten der Slots S0, S1, S2 und S6 altern in den Skyline-Diagrammen 102 und 104 mit jedem Vorrücken der virtuellen Zeit. Zum virtuellen Zeitpunkt VT2 empfängt die Spalte 0 des Skyline-Diagramms 104 die Nachricht des Slots S0, und Spalte 1 des Skyline-Diagramms 106 empfängt die Nachricht des Slots S2. 10 veranschaulicht die Skyline-Diagramme zum Zeitpunkt VT2. Zur Vereinfachung sind keinerlei weitere Nachrichten gezeigt.
  • 4. Außer-der-Reihe-Snooping
  • Snoop-Operationen bei Speichern, wie beispielsweise Caches, sind gut bekannt. Wenn jedoch Knoten Snoop-Anforderungsnachrichten in unterschiedlicher Reihenfolge empfangen, sollte irgendein Mechanismus verwendet werden, um zu sichern, daß jeder Knoten die Anforderungen in der gleichen Reihenfolge sieht, so daß die Cache-Kohärenz aufrechterhalten bleibt. Ein Außer-der-Reihe-Snooping kann auf verschiedenen Netzwerken möglich sein, die die Eigenschaften (1) bis (3) zur Verfügung stellen. Das Netzwerk braucht nicht in Form eines Rings vorzuliegen. Wenn das Netzwerk in Form eines Rings vorliegt, können die oben beschriebenen passiven Nachrichten-Ordnungstechniken beim Ordnen von Anforderungen nützlich sein. Jedoch selbst dann, wenn ein Ring verwendet wird, können von dem oben beschriebenen passiven Nachrichten-Ordnungstechniken abweichende Techniken verwendet werden, um die Anforderungen zu ordnen.
  • Das Außer-der-Reihe-Snooping-Schema ist für einen darunterliegenden Kommunikationsmechanismus entwickelt, bei dem Nachrichten schnell geliefert werden, aber bei welchem die Kenntnis über ihre abschließende Reihenfolge (relativ zueinander) verzögert sein kann. Einige Ausführungsbeispiele der Erfindung ermöglichen ein Initiieren des Snoopings bei Empfang der Snoop-Anforderung, während sie noch die endgültige Cache-Kohärenz aufrechterhalten. Die Erfindung gestattet eine Initiierung des Snooping vor dem Abschluß des Ordnens der Anforderungen.
  • Die detaillierte Technik für das Außer-der-Reihe-Snooping, die unten beschrieben wird, umfaßt die obengenannten Eigenschaften 1 bis 5. Jedoch sind die Eigenschaften 4 und 5 nicht erforderlich.
  • Es ist zulässig, Snoop-Operationen in der Knotenempfangsreihenfolge auszuführen, solange die Ergebnisse (sowohl die Snoop-Ergebnisse als auch die Rückschreiboperationen) in einer globalen Reihenfolge verteilt werden. Änderungen an den Tags dürfen solche sein, die auftreten würden, wenn die Snoop-Operationen in der globalen Reihenfolge ausgeführt würden. Sämtliche Knoten haben die gleiche Sicht auf den Speicher (Cache-Kohärenz), und bei einigen Implementierungen werden Verfahren der Zwischen-Prozeß-Synchronisation (Verriegelungen, Schreibordnen, Interrupt-Ordnen) bewahrt. Bei einigen Implementierungen umfassen die Snoop-Antworten clean (sauber) (Zeile nicht gefunden oder ungültiger (invalid) (I) Zustand), hit (Treffer) (exklusiver (E) oder geteilter (S) Zustand) und hitm (modifizierter (M) Zustand), aber die Erfindung ist nicht darauf beschränkt.
  • Der Ordnungspuffer in jedem Knoten, wie beispielsweise der Ordnungspuffer 62, empfängt Snoop-Anforderungen für verschiedene Speicherzeilenadressen. Der hier interessierende Fall liegt vor, wenn es zwei oder mehr ausstehende Anforderungen für die gleiche Adresse gibt.
  • Wenn ein Knoten eine Anforderung empfängt (in der Knotenempfangsreihenfolge), ist er bei einigen Ausführungsbeispielen in der Lage, diese Anforderung in bezug auf irgendwelche Anforderungen, die bereits eingetroffen sind oder von diesem Knoten ausgegeben worden sind, zu ordnen. Später eintreffende Anforderungen dürfen nicht die relative globale Reihenfolge der vorhandenen Anforderungen beeinflussen.
  • Tabelle 3 stellt bestimmte beispielhafte Cache-Kohärenz-Transaktionen und Abkürzungen zur Verfügung, die bei Snoop-Anforderungen in Verbindung mit der vorliegenden Erfindung vorhanden sein können. Selbstverständlich können auch andere Transaktionen verwendet werden, und die Erfindung ist nicht auf die Details gemäß Tabelle 3 eingeschränkt.
  • Figure 00240001
    Tabelle 3
  • a. Überblick über den Snoop-Prozeß
  • Bei einigen Ausführungsbeispielen wird, sobald eine Anforderung von einem Knoten empfangen worden ist, eine Snoop-Operation für diesen ausgegeben. Eine Lese-Modifiziere-Schreib-Operation wird an den Cache-Tags ausgeführt, wie sie gut bekannt ist. Während der neue Tag-Zustand in der üblichen Weise festgelegt (committed) wird, wird das Snoop-Ergebnis nicht unmittelbar an den anfordernden Knoten zurückgegeben. Statt dessen wird das alte Tag gespeichert, bis die Anforderung global geordnet ist. An diesem Punkt kann der Knoten bestimmen, welches das Snoop-Ergebnis der Anforderung wäre, sofern es durch eine Snoop-Operation in der globalen Reihenfolge gewonnen worden wäre. Dieses Ergebnis wird an den anfordernden Knoten zurückgegeben.
  • Bei einigen Ausführungsbeispielen wird dann, wenn eine Snoop-Operation durchgeführt wird und eine Tag-Übereinstimmung erfaßt wird, möglicherweise der MESI-Zustand (M, E, S oder I) in dem Tag geändert. Diese Änderung kann als eine Funktion f angesehen werden, die auf die MESI-Bits angewen det wird (z. B.: neue MESI Bits = f alte MESI Bits)). Tabelle 4 gibt eine beispielhafte Ungültig invalid)-MESI-Funktion an. Tabelle 5 gibt eine beispielhafte Geteilt(share)-MESI-Funktion an.
    Figure 00250001
  • Bei bestimmten Prozessoren der Intel Corporation wird Tabelle 5 derart geändert, daß der neue Zustand S ist, wenn der aktuelle Zustand M ist.
  • Bei einigen Ausführungsbeispielen kann eine Snoop-Operation eine Ungültig (invalid)-MESI-Funktion in Erwiderung einer BRILO- oder einer BILO-Anforderung verwenden und eine Geteilt (share)-MESI-Funktion in Erwiderung einer BRL-Anforderung. Man beachte, daß diese beide Funktionen wie folgt miteinander kombiniert werden:
    inval°inval = inval°share = share°inval = inval; share°share = share.
  • Die Tatsache, daß die Menge {inval, share} bei Zusammensetzung geschlossen ist, bedeutet, daß richtige Snoop-Ergebnisse berechnet werden können, nachdem ein Außer-der-Reihe-Snooping auftrat. Der Umstand, daß sie kommutativ ist (inval°share = share°inval), bedeutet, daß selbst dann, wenn Snoop-Operationen außer der Reihe ausgeführt werden, das endgültige Snoop-Ergebnis dasjenige ist, was bei der richtigen Reihenfolge gewonnen würde. Die Reihenfolge, in welcher die Snoop-Operationen an den Tags durchgeführt werden, ist aus der Perspektive des endgültigen Tag-Zustands unwesentlich.
  • b. Detaillierter Snoop-Prozeß
  • Im folgenden werden zusätzliche Details angegeben, die bei einigen Ausführungsbeispielen enthalten sein können.
    • • Die Snoop-Ergebnisse werden so berichtet, als ob die Snoop-Operationen in der globalen Reihenfolge ausgeführt würden. Folglich wird der ursprüngliche Zustand der Tags (vor einem gegebenen Snoop) bewahrt, bis festgestellt wird, daß keine weiteren Snoop-Anforderungen eintreffen können, die der gegebenen Snoop-Operation in der globalen Reihenfolge vorhergehen. Dieser ursprüngliche Tag-Zustand wird an die neue Snoop-Operation weitergeleitet, sofern die neue Snoop-Operation der alten Snoop-Operation in der globalen Reihenfolge vorhergeht.
    • • Der modifizierte Tag-Zustand wird zurückgeleitet zu nachfolgenden Snoop-Anforderung in der globalen Reihenfolge, nachdem die globale Reihenfolge der Snoop-Anforderungen bekannt ist. Dies ermöglicht jeder Snoop-Anforderung, ihr Ergebnis so zu berichten, als ob es in der globalen Reihenfolge aufgetreten wäre.
    • • Snoop-Operationen werden in einer unteilbaren (atomic) Lese-Modifiziere-Schreib-Sequenz in der empfangenen Reihenfolge ausgeführt.
    • • Der ursprüngliche Tag-Zustand wird bewahrt und an Snoop-Anforderungen weitergeleitet, welche die gleiche Zeile treffen und in der Knotenempfangsreihenfolge später eintreffen, aber in der globalen Reihenfolge früher angeordnet sind.
    • • Es wird ein Zeiger (zum Verknüpfen) auf (in der globalen Reihenfolge) nachfolgende Snoop-Anforderungen, welche die gleiche Zeile treffen, derart aufrechterhalten, daß der modifizierte Tag-Zustand zu nachfolgenden Anforderungen in der globalen Reihenfolge weitergeleitet werden kann.
  • Die unten angegebene Tabelle 6 zeigt Begriffe und die Terminologie für bestimmte Merkmale, die für ein besseres Verständnis einiger Ausführungsbeispiele der Erfindung verwendet werden können.
  • Figure 00270001
    Tabelle 6
  • Mit den Definitionen gemäß Tabelle 6 können Aussagen wie die folgende verstanden werden:
    if(TAG[Request.Index] == Request.Tag)do_something(), in bezug auf den unten angegebenen Pseudocode.
  • Ein Außer-der-Reihe-Snooping kann durch die bei dem oben beschriebenen passiven Nachrichtenordnen verwendete Struktur durchgeführt werden. Beispielsweise können SSRB und SRB im Ordndungspuffer 62 in 3 sein. Bei einigen Ausführungsbeispielen kann in dem Skyline-Diagramm der SSRB durch die Spalte dargestellt werden, die Anforderungen aus dem den Ordnungspuffer enthaltenen Knoten empfängt; und der SRB kann durch die anderen Spalten dargestellt werden. Beispielsweise ist in 11, die das Skyline-Diagramm 102 veranschaulicht, der SSRB durch die Spalte 0 und der SRB durch die Spalten 1 bis 3 dargestellt. Man beachte, daß selbst dann, wenn ein Knoten sich selbst keiner Snoop-Operation unterzieht (self snoop), Anforderungen aus diesem Knoten für andere Knoten noch in dem Ordnungspuffer angeordnet werden können, so daß jeder Knoten die gleiche globale Reihenfolge hat. Die Positionen in dem Ordnungspuffer des anfordernden Knotens, die dessen eigene Snoop-Anforderungen halten, können SSRB genannt werden oder nicht. Die Positionierschaltung 60 kann Snoop-Anforderungen, die die gleiche Adresse aufweisen, über Zeiger zwischen den Anforderungen verbinden oder verknüpfen (link).
  • Bei einigen Ausführungsbeispielen können die Ordnungspuffer-Einträge (z. B. der SRB und möglicherweise der SSRB) die Felder gemäß Tabelle 7 enthalten. Es sind nicht sämtliche Felder erforderlich und zusätzliche Felder können verwendet werden.
  • Figure 00280001
    Tabelle 7
  • Das Folgende beschreibt die Operation einiger Ausführungsbeispiele der Erfindung und wird veranschaulicht durch ein Beispiel in Verbindung mit den 12A, 12B und 12C, die einen Ordnungspuffer 62 zu den Zeitpunkten 1, 2 und 3 zeigen, und den 13A, 13B und 13C, die den MESI-Zustand einer Adresse X in einem Speicher-Tag der Tags 36 zu den Zeitpunkten 1, 2 und 3 zeigen. In der Knotenempfangsreihenfolge werden zunächst eine Snoop-Anforderung (1) (einschließlich des Kommandos C1), dann eine Snoop-Anforderung (2) (die ein Kommando C2 einschließt) und dann eine Snoop-Anforderung (3) (die ein Kommando C3 einschließt) von dem Ordnungspuffer 62 empfangen. Die Anforderungen (1), (2) und (3) sind jeweils für die Adresse X. Anforderungen für andere Adressen können enthalten sein, sind aber nicht in den 12A, 12B oder 12C gezeigt. Vor dem Empfang der Snoop-Anforderung 1 durch den Ordnungspuffer 62 hat die Adresse X entweder den M-, E-, S- oder I-Zustand (um allgemein zu bleiben, wurde MESI geschrieben).
  • Das MESI-Protokoll ist ein Beispiel eines Cache-Zeilen-Kohärenz-Protokolls. Die MESI-Zustände in den Speicher-Tags 36 sind Beispiele von Speicher-Cache-Zeilen-Kohärenz-Zuständen und werden durch Speicher-Cache-Zeilen-Kohärenz-Zustandsbits in den Tags 36 dargestellt. Die MESI-Zustände in dem Ordnungspuffer 62 sind Beispiele von Ordnungspuffer-Cache-Zeilen-Kohärenz-Zuständen und werden durch die Ordnungspuffer-Cache-Zeilen-Kohärenz-Zustandsbits in dem Ordnungspuffer 62 dargestellt. Die Tabellen 4 und 5 sind Beispiele von Cache-Zeilen-Kohärenz-Funktionen. Die Erfindung ist nicht auf eine Verwendung in Verbindung mit dem MESI-Protokoll eingeschränkt, sondern kann in Verbindung mit anderen Cache-Zeilen-Kohärenz-Protokollen verwendet werden (welche einige oder sämtliche MESI-Zustände und möglicherweise zusätzliche Cache-Zeilen-Kohärenz-Zustände enthalten können). In Abhängigkeit von den Details der anderen Cache-Zeilen-Kohärenz-Protokolle können die Tabellen 4 und/oder 5 und/oder andere Cache-Zeilen-Kohärenz-Funktionen, die bei Zusammensetzung geschlossen und die kommutativ sind, verwendet werden.
  • Wenn eine neue Snoop-Anforderung für die Adresse X von einem Knoten empfangen wird, wird sie in die Position des Ordnungspuffers 62 positioniert, die zu der globalen Reihenfolge führt. Der Ordnungspuffer 62 wird durchsucht, um eine am nächsten liegende frühere und/oder eine nächstliegende spätere Snoop-Anforderung in dem Ordnungspuffer 62 zu identifizieren, die ebenfalls auf die Adresse X gerichtet ist (nächstliegende frühere übereinstimmende Anforderung oder nächstliegende spätere übereinstimmende Anforderung genannt). Von einer früheren Snoop-Anforderung wird angenommen, daß sie in der globalen Reihenfolge früher auftritt und vor späteren Snoop-Anforderungen aus dem Ordnungspuffer 62 zur Ruhe gebracht (retired) wird. Nächstliegend bedeutet am nächsten in der globalen Reihenfolge. Man beachte, daß eine Anforderung die nächstliegende frühere übereinstimmende Anforderung auch dann sein kann, wenn es nur eine frühere übereinstimmende Anforderung gibt, und daß eine nächstliegende spätere übereinstimmende Anforderung auch dann vorhanden sein kann, wenn es nur eine spätere übereinstimmende Anforderung gibt. Eine neue Anforderung zeigt auf ihre nächstliegende frühere übereinstimmende Anforderung, sofern diese vorhanden ist, und auf ihre nächstliegende spätere übereinstimmende Anforderung, sofern vorhanden.
  • Ein MESI-Zustand wird dem MESI-Feld für die neue Anforderung in dem Ordnungspuffer 62 zur Verfügung gestellt. Wo dieser MESI-Zustand herrührt, hängt davon ab, ob es eine spätere übereinstimmende Anforderung gibt. Sofern es keine spätere übereinstimmende Anforderung gibt, wird der MESI-Zustand (d. h. entweder M, E, S oder I) in dem Tag für die Adresse X in dem Speicher (z. B. Cache 36) der Ordnungspufferposition für die neue Anforderung zur Verfügung gestellt. Beispielsweise wird in 12A der MESI-Zustand des Cache 36 (da er vor dem Zeitpunkt 1 existierte) zum Zeitpunkt 1 dem MESI-Feld der Anforderung (1) zur Verfügung gestellt. Man beachte, daß bei dem Beispiel die Zeitpunkte 1, 2 und 3 nicht als genaue Momente gedacht sind, sondern als Zeitintervalle. Beispielsweise kann das Ereignis der 12A zum Zeitpunkt 1 vor, gleichzeitig mit oder nach dem Ereignis der 13A auftreten, welches ebenfalls zum Zeitpunkt 1 stattfindet.
  • Sofern es eine spätere übereinstimmende Anforderung gibt, wird der MESI-Zustand der nächstliegenden späteren übereinstimmenden Anforderung kupiert und wird zum MESI-Zustand der neuen Anforderung. Beispielsweise ist in 12B der MESI-Zustand der Anforderung (2) zum Zeitpunkt 2 der gleiche wie der MESI-Zustand der Anforderung (1) zum Zeitpunkt 1. Man beachte, daß einige Anforderungen sowohl eine frühere als auch eine spätere übereinstimmende Anforderung haben können. Beispielsweise ist Anforderung (3) sowohl frü her als Anforderung (1) als auch später als Anforderung (2). Demzufolge wird, wie es in dem vorhergehenden Absatz beschrieben wurde, der MESI-Zustand in Anforderung (1) in den MESI-Zustand der Anforderung (3) kopiert. Auf diese Weise fließen frische MESI-Bits vorwärts in der globalen Reihenfolge und werden in die abschließende (retiring) Anforderung aufgenommen.
  • Bei einigen Ausführungsbeispielen wird nach dem Zeitpunkt, zu dem sichergestellt ist, daß die MESI-Bits einer Anforderung sich nicht ändern können (z. B. dann, wenn die Anforderung aus dem Ordnungspuffer 62 zur Ruhe gebracht (retired) ist), der MESI-Zustand der nächstliegenden späteren übereinstimmenden Anforderung der zur Ruhe gebrachten (retiring) Anforderung aktualisiert. Der aktualisierte MESI-Zustand ist derjenige, welcher durch die geeignete MESI-Funktion (z. B. in Tabelle 4 oder 5) erzeugt worden ist, wenn die Eingabe der Funktion der aktuelle MESI-Zustand in der nächstliegenden späteren übereinstimmenden Anforderung ist. Welche MESI-Funktion die richtige ist, hängt von dem Kommando der abschließenden (retiring) Anforderung ab. Wie angemerkt, kann eine Snoop-Operation "invalid" (Tabelle 4) in Erwiderung eines BRILO- oder eines BILO-Kommandos und "share" (Tabelle 5) in Erwiderung eines BRL-Kommandos verwenden. Beispielsweise ist in 12C bei Abschluß (retirement) der Anforderung (2) der MESI-Zustand für die Anforderung (3) gleich fC2(MESI), was bedeutet, daß der neue MESI-Zustand für die die Anforderung (3) haltende Position des Ordnungspuffers 62 das Ergebnis des MESI-Zustands der Anforderung (2) vor dem Abschluß (retirement), angewendet auf die MESI-Funktion für das Kommando C2, ist. Angenommen, es gibt keine weiteren Anforderungen an die Adresse X, wenn die Anforderung (3) abschließt (retires), so wäre der MESI-Zustand der Anforderung (1) fC3(fC2(MESI))). Bei anderen Ausführungsbeispielen werden die MESI-Zustände der nächstliegenden späteren übereinstimmenden Anforderungen jedes Mal dann geändert, wenn der MESI-Zustand einer früheren Anforde rung errichtet wird, wenn eine neue Anforderung von dem Ordnungspuffer 62 empfangen wird. Bei beiden Ausführungsbeispielen fließen die aktualisierten MESI-Zustände rückwärts zu früheren Anforderungen. Eine Einstellschaltung 64 kann MESI-Zustände modifizieren und MESI-Zustände zwischen Positionen des Ordnungspuffers bewegen. Bei dem Beispiel können fC1, fC2 und fC3 Tabelle 4, Tabelle 5 oder ähnliche Tabellen implementieren, was von den Kommandos C1, C2 und C3 abhängt. Wenn beispielsweise C1 BRILO ist, könnte fC1 Tabelle 4 implementieren.
  • Der MESI-Zustand in dem Speicher-Tag (z. B. im Cache 62) wird mit dem von der geeigneten MESI-Funktion erzeugten MESI-Zustand aktualisiert, wobei der aktuelle MESI-Zustand in dem Speicher-Tag die Eingabe für die MESI-Funktion ist. Welche MESI-Funktion geeignet ist, hängt von dem Kommando der neuen Snoop-Anforderung ab. In 13A beispielsweise ist der MESI-Zustand für die Adresse X zum Zeitpunkt 1 fC1(MESI), was bedeutet, daß der MESI-Zustand in dem Speicher-Tag im Cache 62 vor dem Zeitpunkt 1 an die MESI-Funktion für das Kommando C1 angelegt wird. In 13B ist der MESI-Zustand in dem Speicher-Tag für die Adresse X zum Zeitpunkt 2 fC2(fC1(MESI)). In 13C ist der MESI-Zustand in dem Speicher-Tag für die Adresse X fC3(fC2(fC1(MESI))) zum Zeitpunkt 3, was vor oder nach dem Abschluß (retirement) der Anforderung in (2) sein kann.
  • Bei einigen Ausführungsbeispielen werden die oben beschriebenen Aktivitäten in dem Beispiel der 12A-12C und 13A13C nur für Anforderungen in dem SRB-Abschnitt des Ordnungspuffers durchgeführt. Beispielsweise sind nur Anforderungen in dem SRB-Abschnitt übereinstimmende Anforderungen. Bei anderen Ausführungsbeispielen können die Aktivitäten für Anforderungen in sowohl dem SRB- als auch dem SSRB-Abschnitt des Ordnungspuffers durchgeführt werden.
  • Der MESI-Zustand einer Anforderung beim Abschluß (retirement) und der MESI-Zustand des zugehörigen Speicher- Tags sind unabhängig von der Knotenempfangsreihenfolge der Anforderungen gleich.
  • Bei Abschluß (retirement) wird die Snoop-Antwort (z. B. clean, hit, hitm) in der Steuerschaltung 40 mit Hilfe einer auf dem MESI-Zustand der Anforderung bei Abschluß (retirement) und dem Kommando der abschließenden Anforderung basierenden Funktion berechnet. Die Erfindung ist nicht auf einen speziellen Typ von Snoop-Antworten oder Funktionen für eine Berechnung der Snoop-Antworten beschränkt. Bei einigen Ausführungsbeispielen sind zwei der Leitungen 22-28 dem Übertragen von hit- und hitm-Snoop-Antwortsignalen gewidmet. Beispielsweise könnte die Einstellschaltung 64 den hit- und den hitm-Zustand berechnen und sie den Leitungen 72 liefern. Es kann eine Verdrahtetes-ODER-Technik verwendet werden, wobei jeder Knoten einen hit- oder hitm-Leiter auf niedrigen Pegel ziehen kann. Wenn weder hit noch hitm angelegt sind, wird einen Snoop-Antwort clean angenommen. Die Snoop-Antworten können für eine fest vorgegebene Dauer (z. B. einen Ringzyklus) nach der Anforderung übertragen werden. Die Erfindung ist nicht auf irgendeine spezielle Implementierung des Snooping oder des Sendens von Snoop-Antworten eingeschränkt. Es ist nicht erforderliche, daß jeder Knoten einen Speicher aufweist, an dem eine Snoop-Operation durchgeführt werden kann. Beispielsweise kann der Ring auch einen Knoten enthalten, der einen Chipsatz ohne Speicher für Snoop-Operationen aufweist. Bei einen solchen Ausführungsbeispiel kann dieser Knoten einen Ordnungspuffer enthalten oder nicht. Die Ordnungspuffer und Positionierschaltung in anderen Knoten würden entsprechend konfiguriert werden.
  • Der folgende Pseudocode liefert eine weitere Darstellung der Snooping-Operation einiger Ausführungsbeispiele der Erfindung. In der Praxis kann der Pseudo-Code über eine spezielle Hardware, Software, Firmware oder irgendwelche anderen Mittel oder Kombinationen von diesen implementiert werden.
  • Figure 00340001
  • Figure 00350001
  • 5. Bi-direktionales Signalisieren
  • Arten der bi-direktionalen Signalisierung auf dem Ring umfassen (1) die Verwendung verschiedener Leitungen für verschiedene Richtungen und (2) die Verwendung der gleichen Leitung für beide Richtungen. Siehe beispielsweise US-Patent 5,604,450 von Borkar et a1. Bei einer Technik zur Verwendung des gleichen Leiters wissen beide Knoten, daß der andere Knoten ein logisch hohes Signal sendete, sofern der Leiter auf hohem Pegel bleibt, und beide Knoten wissen, daß der andere Knoten ein logisch niedriges Signal sendete, wenn der Leiter auf niedrigem Pegel bleibt. Jeder Knoten weiß, daß der andere Knoten ein Signal mit einem abweichenden Zustand sendete, wenn der Leiter sich auf eine abweichende Spannung ändert (z. B. 1/2 VDD), wenn VDD hoch ist. Der empfangende Knoten kann seine Empfängerschaltungen von VDD/2 zu VDD/4 ändern. Andere Schemata können für die bi-direktionale Signalisierung verwendet werden. Details der bidirektionalen Signalisierung und der Auswahl der Richtungen können ausgewählt werden, um die Liefergeschwindigkeit und die Balanceleistung zu verbessern.
  • 14 veranschaulicht einen bi-direktionalen Ring 120, bei welchem die Knoten N0 und N1, N1 und N2, N2 und N3 und N3 und N0 bi-direktional über die Leitungen 122, 124, 126 bzw. 128 miteinander verbunden sind. Wie bei dem System 10 können verschiedene Leiter der Leitungen 122-128 verwendet werden, um verschiedene Arten von Signalen zu führen. Wenigstens ein Teil der Bidirektionalität ist vom Typ (2). Es wird auf 15 Bezug genommen; die Empfangsschaltungen 84 und 90, beispielsweise im Knoten N2, empfangen Signale aus verschiedenen Richtungen, während die Sendeschaltungen 86 und 88 Signale in verschiedene Richtungen senden. Die Steuerschaltung 82 kann ähnlich der Steuerschaltung 40 sein, behandelt aber Signale in beiden Richtungen.
  • Die Ebene der virtuellen Slots und die zugehörige Aktivität (z. B. Schiedsentscheidung) kann unabhängig für die beiden Richtungen aufrechterhalten werden. Eine Überlastung (congestion) in einer Richtung braucht nicht den Ringverkehr in der anderen Richtung zu unterbrechen. Bei einigen Ausführungsbeispielen kann es jedoch sein, daß dann, wenn die Speicherkonsistenz es erfordert, die Knoten damit fortfahren, ihre Nachrichten in der Reihenfolge auszugeben. Beispielsweise sei angenommen, daß eine erste Nachricht eines Knotens im Uhrzeigersinn gesendet werden soll und seine zweite Nachricht ertgegen des Uhrzeigersinns. Sofern der Ring im Uhrzeigersinn überfüllt ist, und der entgegen des Uhrzeigersinns es nicht ist, könnte es sein, daß der Knoten dann (wenn ein Ordnen erforderlich ist) es nicht mehr versucht, die Nachricht entgegen des Uhrzeigersinns auszugeben, bis die im Uhrzeigersinn zu sendende Nachricht auf den Ring gegeben wird.
  • Es kann eine Schaltung enthalten sein, um es Nachrichten (z. B. Snoop-Anforderungen), die in entgegengesetzten Richtungen gesendet werden, zu ermöglichen, konsistent geordnet zu sein. Knoten können beispielsweise einen einzigen Ord nungspuffer für beide Richtungen aufrechterhalten. Wenn zwei Richtungen perfekt synchronisiert werden (was möglicherweise unrealistisch ist), könnte eine feste Positionsbeziehung zwischen den Slots verwendet werden, um zu sichern, daß sämtliche teilnehmenden Knoten diese konsistent verarbeiten.
  • Wenn die beiden Richtungen nicht perfekt synchronisiert sind, können die Knoten Anforderungspakete so verarbeiten, als ob eine spezielle Positionsbeziehung vorhanden wäre. Insbesondere kann jeder Knoten die Richtungen beim Verarbeiten von Slots abwechseln. Wenn jedoch die Ringe nicht perfekt synchronisiert sind, könnte es ein, daß sich die eintreffenden Slots aus den zwei Richtungen nicht miteinander abwechseln. Beispielsweise sei angenommen, daß ein Knoten die Nachrichen A und C in der Richtung im Uhrzeigersinn nacheinander empfängt, bevor die Nachricht B aus der anderen Richtung eintrifft. C sollte nicht in den Ordnungspuffer plaziert werden, bis B eintrifft. Jedoch ist es für den Knoten nicht durchführbar, einfach den Ring im Uhrzeigersinn anzuhalten, ein Weiterleiten von C abzulehnen (und neue Slots im Uhrzeigersinn anzunehmen), während er wartet. Stattdessen wird er C wie üblich weiterleiten, aber er wird, anstelle des Eingebens von C in den Ordnungspuffer, C in einen ersten Richtungspuffer (z. B. einen Uhrzeigersinn-Puffer) eingeben und ihn dort halten, bis B eintrifft. Es gibt einen entsprechenden zweiten Richtungspuffer (z. B. einen Puffer für die Richtung entgegen des Uhrzeigersinns). Bei einem Ausführungsbeispiel ist einer der beiden stets leer, so daß sie mit Hilfe desselben Speichers implementiert werden können. 16 veranschaulicht einen Ordnungspuffer 160, beispielsweise des Knotens N0. Die Betriebsweise des Ordnungspuffers 160 kann durch ein Skyline-Diagramm für jede Richtung veranschaulicht werden. Die beiden Skyline-Diagramme können ein unterschiedliches Erscheinungsbild haben, wie dies in 16 der Fall ist oder dasselbe Erscheinungsbild (z. B. die zwei Skyline-Diagramme 102). Erste und zweite Richtungspuffer 162 und 168 stellen Anfor derungen den Positionierschaltungen 164 und 170 zur Verfügung, von welchen sie dem Ordnungspuffer 160 zur Verfügung gestellt werden. Es können andere Anordnungen verwendet werde. Eine Verarbeitungsschaltung ähnlich der Verarbeitungsschaltung 66 kann enthalten sein.
  • Wenn die beiden Richtungen in willkürlicher weise "aus der Synchronisation" zueinander herauslaufen können, gibt es möglicherweise keinen weg, um die Größe des ersten und zweiten Richtungspuffers zu begrenzen. Somit ist es wünschenswert, zu begrenzen, um wieviel die Richtungen aus der Synchronisation herausgehen können. Dies kann ausgeführt werde, indem man einen der Knoten (z. B. N0), einen Master-Knoten, die Taktimpulse der beiden Richtungen konsistent einmals pro Ringumlauf regnerieren läßt. Obwohl dies nicht garantiert, daß die beiden Richtungen perfekt synchronisiert sind, begrenzt es, um wieviel die Richtungen voneinander abdriften können und gestattet uns somit, die Größe des Uhrzeigersinn- und Entgegenuhrzeigersinn-Puffers zu begrenzen.
  • 6. Zusätzliche Informationen und Ausführungsbeispiele
  • Es kann Zwischenstrukturen (wie beispielsweise einen Puffer) oder Signale zwischen zwei veranschaulichten Strukturen oder innerhalb einer als kontinuierlich veranschaulichten Struktur (wie beispielsweise eines Leiters) geben. Die Begrenzungen der Kästen in den Figuren dienen der Veranschaulichung und sind nicht in einem einschränkenden Sinne zu verstehen. Pfeile zeigen bestimmte Signalflüsse bei bestimmten Ausführungsbeispielen, aber nicht jedes Signal, wie beispielsweise Steuersignale und Anforderungen für Daten.
  • Gewöhnlich wird dort, wo es keine oder relativ wenige leere virtuelle Slots zwischen den Nachrichten gibt, die globale Reihenfolge von der Knotenempfangsreihenfolge abweichen. Dort jedoch, wo Nachrichten ausreichend weit voneinander beabstandet sind, kann die globale Reihenfolge die gleiche wie die Knotenempfangsreihenfolge sein.
  • Bei einigen Ausführungsbeispielen enthält ein Ring nur zwei Knoten, wobei die Signale bidirektional zwischen den Knoten weitergeleitet werden (z. B. gleichzeitig auf wenigstens einem Leiter und/oder jeweils in einer Richtung auf mehr als einem Leiter).
  • Die Erfindung ist nicht auf Leiter eingeschränkt, die Spannungssignale führen. Beispielsweise können die Leiter Lichtleiter sein. Zwei oder mehrere der Knoten in einem Ring können drahtlos über elektromagnetische Signale miteinander verbunden sein.
  • Sofern in der Beschreibung von einer Komponente, einem Merkmal, eine Struktur oder einem Charakteristikum die Rede ist, das enthalten sein "kann" oder "könnte", bedeutet dies, daß es nicht erforderlich ist, daß diese bestimmte Komponente, das Merkmal, die Struktur oder das Charakteristikum enthalten ist. Die Bezugnahme auf "einige Ausführungsbeispiele" in der Beschreibung bedeutet, daß ein bestimmtes Merkmal, eine Struktur oder ein Charakteristikum, das in Verbindung mit den Ausführungsbeispielen beschrieben ist, in wenigstens einigen Ausführungsbeispielen aber nicht notwendigerweise in allen Ausführungsbeispielen der Erfindung enthalten ist. Der an verschiedenen Stellen auftretende Begriff "einige Ausführungsbeispiele" bezieht sich nicht notwendigerweise auf dieselben Ausführungsbeispiele.
  • In der Weise, wie es hier verwendet wird, wird ein Bit "angelegt", wenn es einen bestimmten Spannungszustand hat oder sich innerhalb eines Bereichs befindet, der dem Anlegen zugeordnet ist, und "weggenommen", wenn es irgendeinen abweichenden Zustand aufweist oder sich in einem anderen Bereich befindet, der dem Wegnehmen zugeordnet ist. Ein angelegtes oder weggenommenes Bit könnte eine logische 1, eine logische 0, VDD/2 oder irgendein anderer Wert oder Bereich von Werten sein, was von der Implementierung abhängig ist. Ein Anhängige-Anforderung-Puffer (PRB; Pending Request Buffer) kann Anforderungen eines Knotens halten, welche noch nicht an den eigenen Ordnungspuffer des Knotens ausgegeben oder an einen anderen Knoten gesendet worden sind.
  • Bei einigen Implementierungen können Anforderungen, nachdem sie den Ordnungspuffer verlassen, in einem Ausstehende-Anforderung-Puffer (ORB; Outstanding Request Buffer) gespeichert werden, auf den in Tabelle 6 Bezug genommen wird. Dieser Puffer kann als inhaltsadressierbarer Speicher (CAM) implementiert werden, der eine neue Anforderung (intern oder snoop) mit allen aktuellen Einträgen in einem einzigen Zyklus vergleicht. Dieser Puffer kann verwendet werden, weil die Cache-Tags den Zustand des Zeilen-Besitzes und der Verantwortlichkeit reflektieren, aber nicht notwendigerweise das Vorhandensein von Daten. Sobald die Snoop-Antwort für eine Cache-Zeile empfangen worden ist, übernimmt der Anforderung die Verantwortung für die Zeile, setzt sie in den M-Zustand in dem Cache. Jetzt sei angenommen, daß eine weitere BRILO-Anforderung für dieselbe Zeile eintrifft und von dem Knoten einer Snoop-Operation unterzogen wird. Die Cache-Zeile ist in dem M-Zustand und der Knoten wird in richtiger Weise HITM als Snoop-Ergebnis zurückgeben; jedoch darf er nicht ein Rückschreiben (WB) für die Zeile liefern, bis er die Daten für seine eigene (frühere) BRILO-Anforderung gewinnt (und sie einmal verwendet). Die Informationen über ausstehende Anforderungen (die die Snoop-Phase durchlaufen und für einen Abschluß in der Reihenfolge festgelegt sind, aber noch keine Daten empfangen haben) werden in dem ORB aufgezeichnet. Der ORB und der PRB können durch die Kästen in den 3 und 4 oder durch zusätzliche, nicht veranschaulichte Kästen präsentiert werden. Bei einigen Implementierungen kann ein Knoten, um ein Verfolgen der zu dem Knoten zurückkommenden Daten zu unterstützen, eine spezielle statische Identifikation (ID) haben und bis zu N Anforderungen, die auf dem Bus ausstehen (z. B. N = 16). Ein Acht-Bit-Feld für zurückgestellt-ID (deferred ID), DID[7:0]: = {AgentType, AgentID[2:0], RegID[4:0] = } identifiziert ein deutig jede Anforderung und kennzeichnet die Datenantwort für diese Anforderung.
  • Bei einigen Ausführungsbeispielen wird dann, wenn ein virtueller Slot keine Nachricht enthält, nichts in den Ordnungspuffer eingesetzt, außer dem Altern der vorhandenen Nachrichten. Bei anderen Ausführungsbeispielen wird ein Bit oder werden Bits in eine Position in den Ordnungspuffer eingesetzt (dort, wo eine Nachricht angeordnet würde) und die vorhandenen Nachrichten altern. Bei noch anderen Ausführungsbeispielen wird nichts eingesetzt und die vorhandenen Nachrichten altern nicht.

Claims (26)

  1. Verfahren zum Bestimmen von Snoop-Ergebnissen von Snoop-Anforderungen, die von verschiedenen Knoten in unterschiedlichen Knotenempfangsreihenfolgen empfangen worden sind, umfassend: Empfangen der Snoop-Anforderungen durch verschiedene Knoten der Knoten in verschiedenen Knotenempfangsreihenfolgen; Initiieren von Snoop-Operationen des Speichers der jeweiligen Knoten, bevor die Snoop-Anforderungen in einer globalen Reihenfolge sind; Positionieren der Snoop-Anforderungen in Ordnungspuffern der jeweiligen Knoten; Vorrücken der Snoop-Anforderungen in den Ordnungspuffern in der erforderlichen Weise, bis die Snoop-Anforderungen sich in der globalen Reihenfolge befinden.
  2. Verfahren nach Anspruch 1, ferner umfassend das Halten der Snoop-Anforderungen in Richtungspuffern, um die abwechselnde Aufnahme bidirektional gesendeter Snoop-Anforderungen aufrechtzuerhalten.
  3. Computersystem mit mehreren miteinander verbundenen Knoten (N0-N3), von denen wenigstens einige jeweils enthalten: einen Speicher (34); eine Verarbeitungsschaltung (66) zum Empfangen von Snoop-Anforderungen in einer Knotenempfangsreihenfolge und zum Initiieren von Snoop-Operationen an dem Speicher (34) in dem Knoten, bevor sich die Snoop-Anforderungen in einer globalen Reihenfolge befinden; und einen Ordnungspuffer (62) zum Aufnehmen der Snoop-Anforderungen und zum Bereitstellen derselben an einem Ausgang des Ordnungspuffers in der globalen Reihenfolge.
  4. Computersystem nach Anspruch 3, wobei dann, wenn festgestellt worden ist, daß eine bestimmte Anforderung der Snoop-Anforderungen sich in der globalen Reihenfolge befindet, diese Snoop-Anforderung aus dem Ordnungspuffer zur Ruhe gebracht (retired) wird, und wobei die die Ordnungspuffer enthaltenden Knoten ferner eine Schaltung zum Bestimmen eines Snoop-Ergebnisses für diese Snoop-Anforderung enthalten, wobei das Snoop-Ergebnis unabhängig von der Knotenempfangsreihenfolge stets dasselbe ist.
  5. Computersystem nach Anspruch 3, wobei die die Ordnungspuffer (62) enthaltenden Knoten ferner eine Schaltung enthalten, um die Snoop-Ergebnisse für die Snoop-Anforderungen zu bestimmen, nachdem bestimmt worden ist, daß die Snoop-Anforderungen sich in der globalen Reihenfolge befinden, und wobei die Snoop-Ergebnisse unabhängig von der Knotenempfangsreihenfolge stets dieselben sind.
  6. Computersystem nach Anspruch 3, wobei der Speicher Speicher-Cache-Zeilen-Kohärenz-Zustandsbits für Adressen, die mit Adressen in den Snoop-Anforderungen übereinstimmen, enthält, und der Ordnungspuffer Positionen enthält, die die Snoop-Anforderungen und den Snoop-Anforderungen entsprechende Ordnungspuffer-Cache-Zeilen-Kohärenz-Zustandsbits halten.
  7. Computersystem nach Anspruch 6, wobei Ordnungspuffer-Cache-Zeilen-Kohärenz-Zustandsbits von späteren übereinstimmenden Anforderungen zu früheren übereinstimmenden Anforderungen weitergeleitet werden und aktualisierte Ordnungspuffer-Cache-Zeilen-Kohärenz-Zustandsbits von global geordneten übereinstimmenden Anforderungen zu späteren übereinstimmenden Anforderungen weitergeleitet werden.
  8. Computersystem nach Anspruch 6, wobei die Speicher-Cache-Zeilen-Kohärenz-Zustandsbits und die Ordnungspuffer-Cache-Zeilen-Kohärenz-Zustandsbits MESI-Bits sind.
  9. Computersystem nach Anspruch 6, wobei die Quellen der Ordnungspuffer-Cache-Zeilen-Kohärenz-Zustandsbits davon abhängen, ob es spätere übereinstimmende Anforderungen gibt.
  10. Computersystem nach Anspruch 9, wobei dann, wenn es keine späteren übereinstimmenden Anforderungen für eine bestimmte neue Snoop-Anforderung der Snoop-Anforderungen gibt, die Ordnungspuffer-Cache-Zeilen-Kohärenz-Zustandsbits für diese Snoop-Anforderung eine Kopie der Speicher-Cache-Zeilen-Kohärenz-Zustandsbits für die zugehörige Adresse im Speicher sind.
  11. Computersystem nach Anspruch 9, wobei dann, wenn es eine spätere übereinstimmende Anforderung für eine bestimmte neue Snoop-Anforderung der Snoop-Anforderungen gibt, die Ordnungspuffer-Cache-Zeilen-Kohärenz-Zustandsbits für diese Snoop-Anforderung aus einer Kopie der Ordnungspuffer-Cache-Zeilen-Kohärenz-Zustandsbits der nächstliegenden späteren übereinstimmenden Anforderung zur Verfügung gestellt werden.
  12. Computersystem nach Anspruch 11, wobei das Ordnungspuffer-Cache-Zeilen-Kohärenz-Zustandsbits-Zustandssignal für die spätere übereinstimmende Anforderung mit dem Ergebnis einer Cache-Zeilen-Kohärenz-Funktion, die den aktuellen Zustand der Ordnungspuffer-Cache-Zeilen-Kohärenz-Zustandsbits der nächstliegenden späteren übereinstimmenden Anforderung empfängt, aktualisiert wird.
  13. Computersystem nach Anspruch 12, wobei die Cache-Zeilen-Kohärenz-Funktion auf der Grundlage eines Kommandos der neuen Snoop-Anforderung ausgewählt wird.
  14. Computersystem nach Anspruch 6, wobei dann, wenn bestimmt worden ist, daß eine bestimmte Snoop-Anforderung der Snoop-Anforderungen sich in der globalen Reihenfolge befindet, die Ordnungspuffer-Cache-Zeilen-Kohärenz-Zustandsbits einer nächstliegenden späteren übereinstimmenden Anforderung dieser Snoop-Anforderung, sofern eine solche vorhanden ist, mit dem Ergebnis einer Cache-Zeilen-Kohärenz-Funktion, die den aktuellen Zustand der Ordnungspuffer-Cache-Zeilen-Kohärenz-Zustandsbits der nächstliegenden späteren übereinstimmenden Anforderung empfängt, aktualisiert werden.
  15. Computersystem nach Anspruch 14, wobei die Cache-Zeilen-Kohärenz-Funktion auf der Grundlage eines Kommandos der Snoop-Anforderung in der globalen Reihenfolge ausgewählt wird.
  16. Computersystem nach Anspruch 3, wobei dann, wenn eine neue Snoop-Anforderung der Snoop-Anforderungen von dem Ordnungspuffer empfangen wird, der Ordnungspuffer nach einer nächstliegenden früheren und einer nächstliegenden späteren Snoop-Anforderung durchsucht wird und die neue Snoop-Anforderung und die nächstliegende frühere Snoop-Anforderung aufeinander verweisen und die neue Snoop-Anforderung und die nächstliegende spätere Snoop-Anforderung aufeinander verweisen.
  17. Computersystem nach Anspruch 3, ferner aufweisend eine Positionierschaltung zum Bereitstellen der Snoop-Anforderungen an Positionen der Ordnungspuffer, und wobei einige der Snoop-Anforderungen anfänglich in der globalen Reihenfolge positioniert werden und andere Snoop-Anforderungen anfänglich in einer Position plaziert werden, die zu der globalen Reihenfolge führt, während weitere Snoop-Anforderungen empfangen werden.
  18. Computersystem nach Anspruch 3, wobei die Knoten mit die Knoten verbindenden Leitungen einen Ring bilden und die Snoop-Anforderungen in virtuellen Slots übertragen werden.
  19. Computersystem nach Anspruch 18, wobei es zusätzliche Leitungen gibt, die nicht Teil des Rings sind.
  20. Computersystem nach Anspruch 3, wobei die Snoop-Anforderungen in einer abweichenden Form in dem Ordnungspuffer vorliegen, als sie aufweisen, wenn sie von der Verarbeitungsschaltung empfangen worden sind.
  21. Computersystem nach Anspruch 3, ferner umfassend erste und zweite Richtungspuffer zum abwechselnden Empfang bidirektional gesendeter Snoop-Anforderungen.
  22. Computersystem nach Anspruch 3, wobei in dem Speicher ein Cache ist.
  23. Computersystem nach Anspruch 3, wobei: die Verarbeitungsschaltung (66) eine neue Snoop-Anforderung und weitere Snoop-Anforderungen in einer Knotenempfangsreihenfolge empfangen und die Snoop-Operation bezüglich der neuen Snoop-Anforderung initiiert, bevor sich die neue Snoop-Anforderung in einer globalen Reihenfolge befindet; und eine Positionierschaltung zum Positionieren der neuen Snoop-Anforderung und der anderen Snoop-Anforderungen in dem Ordnungspuffer vorgesehen ist.
  24. Computersystem nach Anspruch 23, wobei die neue Snoop-Anforderung anfänglich in den Ordnungspuffer in der globalen Reihenfolge positioniert werden kann oder anfänglich in einer Position in dem Ordnungspuffer angeordnet werden kann, die zu der globalen Reihenfolge führt, während Snoop-Anforderungen der weiteren Snoop-Anforderungen von dem Ordnungspuffer empfangen werden.
  25. Computersystem nach Anspruch 23, wobei die Knoten, die die Ordnungspuffer enthalten, ferner eine Schaltung enthalten, um ein Snoop-Ergebnis für die neue Snoop-Anforderung zu bestimmen, nachdem festgestellt worden ist, daß die neue Snoop-Anforderung sich in der globalen Reihenfolge befindet, und wobei das Snoop-Ergebnis unabhängig von der Knotenempfangsreihenfolge stets dasselbe ist.
  26. Computersystem nach Anspruch 23, wobei die Knoten miteinander über Leitungen verbunden sind, um einen Ring zu bilden.
DE19983443T 1998-08-06 1999-07-27 Außer-der-Reihe-Snooping für Multiprozessor-Computersysteme Expired - Fee Related DE19983443B4 (de)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US09/130,302 US6112283A (en) 1998-08-06 1998-08-06 Out-of-order snooping for multiprocessor computer systems
US09/130,302 1998-08-06
PCT/US1999/017040 WO2000008564A1 (en) 1998-08-06 1999-07-27 Out-of-order snooping for multiprocessor computer systems

Publications (2)

Publication Number Publication Date
DE19983443T1 DE19983443T1 (de) 2001-07-26
DE19983443B4 true DE19983443B4 (de) 2007-07-19

Family

ID=22444049

Family Applications (1)

Application Number Title Priority Date Filing Date
DE19983443T Expired - Fee Related DE19983443B4 (de) 1998-08-06 1999-07-27 Außer-der-Reihe-Snooping für Multiprozessor-Computersysteme

Country Status (7)

Country Link
US (1) US6112283A (de)
JP (1) JP4414096B2 (de)
AU (1) AU5133799A (de)
DE (1) DE19983443B4 (de)
GB (1) GB2357867B (de)
HK (1) HK1035045A1 (de)
WO (1) WO2000008564A1 (de)

Families Citing this family (23)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6574219B1 (en) * 1998-08-06 2003-06-03 Intel Corp Passive message ordering on a decentralized ring
US6377582B1 (en) * 1998-08-06 2002-04-23 Intel Corporation Decentralized ring arbitration for multiprocessor computer systems
US6848003B1 (en) * 1999-11-09 2005-01-25 International Business Machines Corporation Multi-node data processing system and communication protocol that route write data utilizing a destination ID obtained from a combined response
US6604162B1 (en) 2000-06-28 2003-08-05 Intel Corporation Snoop stall reduction on a microprocessor external bus
ATE367690T1 (de) 2001-02-24 2007-08-15 Ibm Datenerfassungstechnik für die schnelle zeichengabe
US20030115402A1 (en) * 2001-11-16 2003-06-19 Fredrik Dahlgren Multiprocessor system
JP2003271574A (ja) 2002-03-14 2003-09-26 Hitachi Ltd 共有メモリ型マルチプロセッサシステムにおけるデータ通信方法
US8185602B2 (en) 2002-11-05 2012-05-22 Newisys, Inc. Transaction processing using multiple protocol engines in systems having multiple multi-processor clusters
US7069362B2 (en) * 2003-05-12 2006-06-27 International Business Machines Corporation Topology for shared memory computer system
US7644237B1 (en) * 2003-06-23 2010-01-05 Mips Technologies, Inc. Method and apparatus for global ordering to insure latency independent coherence
US7551564B2 (en) * 2004-05-28 2009-06-23 Intel Corporation Flow control method and apparatus for single packet arrival on a bidirectional ring interconnect
US7360008B2 (en) * 2004-12-30 2008-04-15 Intel Corporation Enforcing global ordering through a caching bridge in a multicore multiprocessor system
US7451231B2 (en) * 2005-02-10 2008-11-11 International Business Machines Corporation Data processing system, method and interconnect fabric for synchronized communication in a data processing system
US20060176890A1 (en) * 2005-02-10 2006-08-10 International Business Machines Corporation Data processing system, method and interconnect fabric for improved communication in a data processing system
US7793040B2 (en) 2005-06-01 2010-09-07 Microsoft Corporation Content addressable memory architecture
US7451297B2 (en) 2005-06-01 2008-11-11 Microsoft Corporation Computing system and method that determines current configuration dependent on operand input from another configuration
US7707387B2 (en) * 2005-06-01 2010-04-27 Microsoft Corporation Conditional execution via content addressable memory and parallel computing execution model
JP4912789B2 (ja) * 2006-08-18 2012-04-11 富士通株式会社 マルチプロセッサシステム,システムボードおよびキャッシュリプレース要求処理方法
JP4680851B2 (ja) * 2006-08-18 2011-05-11 富士通株式会社 システムコントローラ,同一アドレスリクエストキューイング防止方法および情報処理装置
WO2009050665A2 (en) 2007-10-18 2009-04-23 Nxp B.V. Circuit and method with cache coherence stress control
JP5505516B2 (ja) * 2010-12-06 2014-05-28 富士通株式会社 情報処理システムおよび情報送信方法
US8635411B2 (en) * 2011-07-18 2014-01-21 Arm Limited Data processing apparatus and method for managing coherency of cached data
JP6003607B2 (ja) * 2012-12-14 2016-10-05 富士通株式会社 サーバ装置

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
DE68925470T2 (de) * 1988-12-05 1996-08-14 Ibm Verfahren zum Abrufen von potentiell ungültigen Daten in einem Mehrrechnersystem
US5682516A (en) * 1994-03-01 1997-10-28 Intel Corporation Computer system that maintains system wide cache coherency during deferred communication transactions
EP0817077A2 (de) * 1996-07-01 1998-01-07 Sun Microsystems, Inc. Multiprozessorsystem ausgestaltet zur Ausführung von Vorausladeoperationen

Family Cites Families (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5025365A (en) * 1988-11-14 1991-06-18 Unisys Corporation Hardware implemented cache coherency protocol with duplicated distributed directories for high-performance multiprocessors
US5715428A (en) * 1994-02-28 1998-02-03 Intel Corporation Apparatus for maintaining multilevel cache hierarchy coherency in a multiprocessor computer system
US5751986A (en) * 1994-03-01 1998-05-12 Intel Corporation Computer system with self-consistent ordering mechanism
US5623628A (en) * 1994-03-02 1997-04-22 Intel Corporation Computer system and method for maintaining memory consistency in a pipelined, non-blocking caching bus request queue
US5604450A (en) * 1995-07-27 1997-02-18 Intel Corporation High speed bidirectional signaling scheme

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
DE68925470T2 (de) * 1988-12-05 1996-08-14 Ibm Verfahren zum Abrufen von potentiell ungültigen Daten in einem Mehrrechnersystem
US5682516A (en) * 1994-03-01 1997-10-28 Intel Corporation Computer system that maintains system wide cache coherency during deferred communication transactions
EP0817077A2 (de) * 1996-07-01 1998-01-07 Sun Microsystems, Inc. Multiprozessorsystem ausgestaltet zur Ausführung von Vorausladeoperationen

Also Published As

Publication number Publication date
DE19983443T1 (de) 2001-07-26
GB2357867A (en) 2001-07-04
WO2000008564A8 (en) 2000-04-27
GB0102431D0 (en) 2001-03-14
JP2002522827A (ja) 2002-07-23
GB2357867B (en) 2003-04-09
WO2000008564A1 (en) 2000-02-17
HK1035045A1 (en) 2001-11-09
US6112283A (en) 2000-08-29
AU5133799A (en) 2000-02-28
JP4414096B2 (ja) 2010-02-10

Similar Documents

Publication Publication Date Title
DE19983443B4 (de) Außer-der-Reihe-Snooping für Multiprozessor-Computersysteme
DE69727856T2 (de) Multiprozessorsystem mit Konsistenzfehler-Registrierung mit entsprechendem Verfahren
DE69729243T2 (de) Multiprozessorsystem mit Vorrichtung zur Optimierung von Spin-Lock-Operationen
DE69832943T2 (de) Sequenzsteuerungsmechanismus für ein switch-basiertes Mehrprozessorsystem
DE69929095T2 (de) Verwaltung eines durch eine Mehrzahl von Knoten benutzten Betriebsmittels
DE10085385B3 (de) Vierfach gepumpte Bus-Architektur und Protokoll
DE112015004336B4 (de) Konfigurationsbasierte Auswahl eines Cachekohärenz-Protokolls
DE69128107T2 (de) Busanordnung für Speicherzugriff
DE69721643T2 (de) Multiprozessorsystem ausgestaltet zur effizienten Ausführung von Schreiboperationen
DE112013000891T5 (de) Verbessern der Prozessorleistung für Befehlsfolgen, die Sperrbefehle enthalten
DE60217221T2 (de) Ein-Chip System zur Paketverarbeitung
DE3751091T2 (de) Übertragungsprotokoll zwischen Prozessoren.
DE69722512T2 (de) Mehrrechnersystem mit einem die Anzahl der Antworten enthaltenden Kohärenzprotokoll
DE60003834T2 (de) Vituelle kanäle und entsprechende pufferzuweisungen für einen blockierungfreien rechnersystem -betrieb
DE3883532T2 (de) Knoten für die bedienung von unterbrechungsanforderungsnachrichten auf einem anstehenden bus.
DE102009023898A1 (de) Optimierung von gleichzeitigen Zugriffen in einem verzeichnisbasierten Kohärenzprotokoll
DE69111764T2 (de) Übereinstimmungsprotokolle für Mehrprozessoren mit gemeinsam genutztem Speicher.
DE3882991T2 (de) Anordnung und methode zur erzielung von unterbrechungen mit einem &#34;pended bus&#34;.
DE60311302T2 (de) Verfahren und vorrichtung zur verriegelung von mehreren clustern
DE60201650T2 (de) Systeme, welche eine Mischung aus paketartigem, kohärentem und nicht-kohärentem Verkehr verwenden, um die Übertragung zwischen Systemen zu optimieren
DE112018004138B4 (de) Asynchrone aktualisierung von metadatenspuren in reaktion auf einen mittels einer e/a-operation über eine busschnittstelle erzeugten cachetreffer
DE10045916A1 (de) Methode und System zum Implementieren eines Remstat-Protokolls und Einbeziehung und Nicht-Einbeziehung von L1-Daten im L2-Cache zur Verhinderung einer gegenseitigen Lesesperre
DE69721641T2 (de) Verfahren und Vorrichtung für ein verzeichnisloses Speicherzugriffsprotokoll in einem Rechnersystem mit verteiltem gemeinsamen Speicher
DE60017774T2 (de) Verfahren und vorrichtung zur unterstützung von mehrtaktübertragung in einem rechnersystem mit einer punkt-zu-punkt halb-duplex verbindung
DE68920443T2 (de) Systembus mit multiplexbetriebenen steuer-kennzeichnungsinformationen und daten.

Legal Events

Date Code Title Description
8110 Request for examination paragraph 44
8125 Change of the main classification

Ipc: G06F 13372

8364 No opposition during term of opposition
8339 Ceased/non-payment of the annual fee
R119 Application deemed withdrawn, or ip right lapsed, due to non-payment of renewal fee

Effective date: 20110201