DE69721643T2 - Multiprozessorsystem ausgestaltet zur effizienten Ausführung von Schreiboperationen - Google Patents

Multiprozessorsystem ausgestaltet zur effizienten Ausführung von Schreiboperationen Download PDF

Info

Publication number
DE69721643T2
DE69721643T2 DE69721643T DE69721643T DE69721643T2 DE 69721643 T2 DE69721643 T2 DE 69721643T2 DE 69721643 T DE69721643 T DE 69721643T DE 69721643 T DE69721643 T DE 69721643T DE 69721643 T2 DE69721643 T2 DE 69721643T2
Authority
DE
Germany
Prior art keywords
write
address
coherency
node
processor
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
DE69721643T
Other languages
English (en)
Other versions
DE69721643D1 (de
Inventor
Erik E. Palo Alto Hagersten
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.)
Sun Microsystems Inc
Original Assignee
Sun Microsystems Inc
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 Sun Microsystems Inc filed Critical Sun Microsystems Inc
Publication of DE69721643D1 publication Critical patent/DE69721643D1/de
Application granted granted Critical
Publication of DE69721643T2 publication Critical patent/DE69721643T2/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/0815Cache consistency protocols
    • G06F12/0817Cache consistency protocols using directory methods

Description

  • Die vorliegende Erfindung bezieht sich auf das Gebiet der Mehrprozessor-Computersysteme und genauer gesagt auf die Leistung von Schreiboperationen in Mehrprozessor-Computersystemen.
  • Simultanverarbeitungs- bzw. Mehrprozessor-Computersysteme enthalten zwei oder mehr Prozessoren, die verwendet werden können, um Berechnungs- bzw. Verarbeitungsaufgaben durchzuführen. Eine bestimmte Berechnungsaufgabe kann auf einem Prozessor ausgeführt werden, während andere Prozessoren Berechnungsaufgaben ausführen, die mit jener nicht in Beziehung stehen. Alternativ können Komponenten einer bestimmten Berechnungsaufgabe auf mehrere Prozessoren verteilt werden, um die benötigte Zeit zur Durchführung der gesamten Berechnungsaufgabe zu verringern. Allgemein gesprochen ist ein Prozessor eine Einrichtung bzw. ein Gerät, die bzw. das dazu eingerichtet ist, eine Operation auf einem oder mehreren Operanden durchzuführen, um ein Ergebnis zu erzeugen. Die Operation wird als Reaktion auf einen Befehl, der vom Prozessor ausgeführt wird, durchgeführt.
  • Eine weit verbreitete Architektur in kommerziellen Simultanverarbeitungs-Computersystemen ist die symmetrische Mehrprozessor-Architektur (Symmetric Multiprocessor Architecture, SMP Architecture). Typischerweise umfaßt ein SMP-Computersystem mehrere Prozessoren, die durch eine Cache-Hierarchie mit einem gemeinsam genutzten Bus verbunden sind. Zusätzlich ist mit dem Bus ein Speicher verbunden, der von den Prozessoren in dem System gemeinsam genutzt wird. Der Zugriff auf irgendeine bestimmte Speicherstelle innerhalb des Speichers erfolgt in einer ähnlichen Zeitspanne wie der Zugriff auf irgendeine andere bestimmte Speicherstelle. Da auf jede Stelle im Speicher in einer gleichförmigen bzw. einheitlichen Weise zugegriffen werden kann, wird diese Struktur häufig als einheitliche Speicherarchitektur bzw. Uniform Memory Architecture (UMA) bezeichnet.
  • Prozessoren werden häufig mit internen Cachespeichern eingerichtet, und ein oder mehrere Cachespeicher sind typischerweise in der Cache-Hierarchie zwischen den Prozessoren und dem gemeinsam genutzten Bus in einem SMP-Computersystem enthalten. Mehrere Kopien von Daten, die sich an einer bestimmten Hauptspeicheradresse befinden, können in diesen Cachespeichern gespeichert werden. Um das gemeinsam genutzte Speichermodell zu erhalten bzw. aufrecht zu halten, in dem eine bestimmte Adresse genau einen Datenwert zu jedem gegebenen Zeitpunkt speichert, verwenden Computersysteme mit gemeinsam genutztem Bus Cachekohärenz. Allgemein gesprochen ist eine Operation kohärent, wenn die Auswirkungen der Operation auf die gespeicherten Daten an einer bestimmten Speicheradresse in jeder Kopie der Daten innerhalb der Cache-Hierarchie widergespiegelt werden. Wenn zum Beispiel Daten, die an einer bestimmten Speicheradresse gespeichert sind, aktualisiert werden, kann die Aktualisierung für die Cachespeicher, welche die Kopien der vorherigen Daten speichern, bereitgestellt werden. Alternativ können die Kopien der vorherigen Daten in den Cachespeichern ungültig gemacht werden, so daß ein nachfolgender Zugriff auf die bestimmte Speicheradresse dazu führt, daß die aktualisierte Kopie vom Hauptspeicher übermittelt wird. Bei gemeinsam genutzten Bussystemen wird typischerweise ein Mithör- bzw. Snoop-Busprotokoll verwendet. Jede kohärente Transaktion, die über den gemeinsam genutzten Bus ausgeführt wird, wird gegen die Daten in den Cachespeichern geprüft (oder "mitgehört"). Wenn eine Kopie der betroffenen Daten gefunden wird, wird der Zustand des Cacheblocks bzw. der Cache-Zeile, der bzw. die die Daten enthält, als Reaktion auf die kohärente Transaktion aktualisiert.
  • Unglücklicherweise leiden gemeinsam genutzte Busarchitekturen unter verschiedenen Nachteilen, die ihre Brauchbarkeit bzw. ihren Nutzen in Simultanverarbeitungs-Computersystemen beschränken bzw. einschränken. Ein Bus ist zu einer gewissen Spitzenbandbreite fähig (z. B. eine Anzahl von Bytes/Sekunde, die über den Bus übermittelt werden kann). Wenn zusätzliche Prozessoren an den Bus angeschlossen werden, kann die Bandbreite, die benötigt wird, um die Prozessoren mit Daten und Befehlen zu versorgen, die Busspitzenbandbreite übersteigen. Da einige Prozessoren gezwungen werden, auf verfügbare Busbandbreite zu warten, leidet die Leistungsfähigkeit des Computersystems, wenn die Bandbreitenanforderungen der Prozessoren die verfügbare Busbandbreite übersteigen.
  • Darüber hinaus steigert das Hinzufügen von mehr Prozessoren zu einem gemeinsam genutzten Bus die kapazitive Belastung auf dem Bus und kann sogar dazu führen, daß die physikalische Länge des Busses vergrößert wird. Die erhöhte kapazitive Belastung und die erweiterte Buslänge vergrößern die Verzögerung bzw. Laufzeit beim Ausbreiten eines Signals über den Bus. Aufgrund der vergrößerten Signallaufzeit kann die Ausführung von Transaktionen länger dauern. Daher kann die Spitzenbandbreite des Busses tatsächlich kleiner werden, wenn mehr Prozessoren hinzugefügt werden.
  • Diese Probleme werden durch den anhaltenden Anstieg der Betriebsfrequenzen und die Leistung der Prozessoren weiter vergrößert. Die angestiegene Leistung, die durch höhere Frequenzen ermöglicht wird, und die weiter entwickelten Mikroarchitekturen von Prozessoren führen zu höheren Bandbreitenanforderungen als (bei) frühere(n) Prozessorgenerationen, selbst bei der gleichen Anzahl von Prozessoren. Daher können Busse, die zuvor eine ausreichende Bandbreite für ein Simultanverarbeitungs-Computersystem zur Verfügung gestellt haben, für ein ähnliches Computersystem, das die Prozessoren mit höherer Leistung verwendet, ungenügend sein.
  • Eine weitere Struktur für Simultanverarbeitungs-Computersysteme ist eine verteilte, gemeinsam genutzte Speicherarchitektur. Eine verteilte, gemeinsam genutzte Speicherarchitektur umfaßt mehrere Knoten, innerhalb derer sich Prozessoren und Speicher befinden. Die mehreren Knoten kommunizieren über ein Netzwerk, das zwischen ihnen geschaltet ist. Wenn er als ein Ganzes betrachtet wird, bildet der Speicher, der in den mehreren Knoten enthalten ist, den gemeinsam genutzten Speicher für das Computersystem. Typischerweise werden Verzeichnisse verwendet, um anzuzeigen, welche Knoten Kopien von Daten im Cache haben, die einer bestimmten Adresse entsprechen. Kohärenzaktivitäten können mittels Prüfens der Verzeichnisse erzeugt werden.
  • Verteilte, gemeinsam genutzte Speichersysteme sind skalierbar und überwinden dadurch die Beschränkungen der gemeinsam genutzten Busarchitektur. Da viele der Prozessorzugriffe innerhalb eines Knotens abgeschlossen werden, haben Knoten typischerweise viel niedrigere Bandbreitenanforderungen an das Netzwerk, als eine gemeinsam genutzte Busarchitektur auf ihrem gemeinsam genutzten Bus bereitstellen muß. Die Knoten können mit einer hohen Taktfrequenz und Bandbreite betrieben werden und greifen auf das Netzwerk zu, wenn es nötig ist. Zusätzliche Knoten können zu dem Netzwerk hinzugefügt werden, ohne die lokale Bandbreite der Knoten zu beeinflussen. Stattdessen wird nur die Netzwerkbandbreite beeinflußt.
  • Unglücklicherweise ist ein Prozessorzugriff auf Speicher in einem entfernten Knoten (d. h. einem anderen Knoten als der Knoten, der den Prozessor enthält) beträchtlich langsamer als ein Zugriff auf Speicher innerhalb des Knotens. Insbesondere können Schreiboperationen in einem System mit verteiltem, gemeinsam genutztem Speicher schwerwiegende Leistungseinbußen erleiden. Wenn eine Schreiboperation von einem Prozessor in einem bestimmten Knoten durchgeführt wird und der bestimmte Knoten keine Schreibberechtigung auf der Kohärenzeinheit hat, die von der Schreiboperation betroffen ist, dann wird die Schreiboperation typischerweise blockiert, bis die Schreibberechtigung vom Rest des Systems erlangt wird. Das Blockieren des Schreibvorgangs kann Prozessorressourcen belegen (wie zum Beispiel Speicherplatz für die zu schreibenden Daten), bis die Schreibberechtigung erlangt wird. Dementsprechend sind die Prozessorressourcen zur Verwendung durch nachfolgende Operationen nicht verfügbar, was möglicherweise zu weiterem Blockieren des Prozessorbetriebs führt. Ein effizienteres Verfahren zum Durchführen von Schreiboperationen in einem System mit verteiltem, gemeinsam genutztem Speicher ist erwünscht.
  • IBM Technical Disclosure Bulletin, Vol. 33, Nr. 11, 1. April 1991, Seiten 313–316, ist auf ein "Verfahren zum Speichern in non-ex Zeilen bzw. Blöcken mit Mehrprozessor-Cachespeicher unter Prozessorpriorität" ausgerichtet. Diese Offenbarung von IBM beschreibt eine Technik, mit der Mehrprozessor (MP) Cachespeicher mit einem Verfahren zum Speichern in non-ex Zeilen mit Prozessorpriontät versehen werden. Das System arbeitet mit einem Token S für das gesamte System. Zu jedem Zeitpunkt kann das Token von höchstens einem Zentralprozessor (Central Processor, CP) gehalten bzw. besessen werden. Der CP, der das Token besitzt, darf ohne Bedingungen bzw. unbeschränkt Speicherungen vornehmen. Daher lehrt die Offenbarung von IBM, daß der Besitz eines Tokens die Gewähr bzw. das Einräumen einer Berechtigung zum Vernehmen von uneingeschränkten Speichervorgängen bedeutet.
  • Ein Artikel aus dem Journal of Parallel and Distributed Computing, Vol. 12, Nr. 2, 1. Juni 1991, Seiten 87–106, von T. Mowry et al., mit dem Titel "Tolerating Latency Through Software-Controlled Prefetching in Shared-Memory Multiprocessors" beschreibt ein Verfahren zum Vorab-Holen von Daten unter Verwendung eines Schreibvorgangs in eine Stelle im I/O-Adreßraum. Dieser Artikel bezieht sich auf die sogenannte DASH-Architektur, die das Vorab-Holen unter Verwendung eines Freigabe-Konsistenz-Modells implementiert. Das DASH-Systemm verwendet normale, handelsübliche Prozessoren, bei denen keine speziellen Befehle zum Vorab-Holen zur Verfügung stehen. Folglich wird der im Cache speicherbare Adreßraum der Anwendung doppelt auf einen Teil des I/O- Adreßraumes abgebildet, um das Vorab-Holen zu implementieren. Um eine Speicherstelle vorab zu holen, wird ein Schreibvorgang auf die entsprechende Stelle in diesem speziellen I/O-Adreßraum vorgenommen. Der Vorteil bei der Verwendung von I/O-Schreibvorgängen ist, daß sie in den Schreibpuffer gestellt werden und den Prozessor nicht blockieren. Sobald das Vorab-Holen den Kopf des Schreibpuffers erreicht, wird es auf den Bus ausgegeben. Wenn sich das Vorab-Holen auf eine entfernte Speicherstelle bezieht, wird es von der Verzeichnissteuerung in eine normale Speicheranforderungsnachricht umgewandelt und an den Heimatcluster gesendet. Die Antwort auf das Vorab-Holen wird im Cache für entfernte Zugriffe (Remote Access Cache, RAC) gespeichert, einem speziellen 256 Kbyte großen Cache, der jedem Cluster zugeordnet ist (siehe 1), der dann zurückkehrt bzw. zurückmeldet. Wenn der Prozessor anschließend die vorab geholte Speicherstelle liest, werden die Daten vom RAC zur Verfügung gestellt. Falls die Daten noch nicht zum RAC zurückgekommen sind, wenn die normale Anforderung bei ihm eintrifft, ist der RAC intelligent genug, keine doppelte Anforderung an den Heimatcluster auszusenden. Der Anforderung des Prozessors wird entsprochen, sobald die Antwort auf die ursprüngliche Anforderung zum Vorab-Holen eintrifft.
  • Bestimmte und bevorzugte Aspekte der Erfindung sind in den begleitenden unabhängigen und abhängigen Patentansprüchen dargelegt.
  • Die Probleme, die oben skizziert sind, werden zum großen Teil durch eine Ausführungsform eines Computersystems in Übereinstimmung mit der beanspruchten Erfindung gelöst. Das Computersystem definiert ein "schnelles Schreib"-Protokoll bzw. "Fast-Write"-Protokoll, um gewisse Schreiboperationen durchzuführen. Die Schreiboperationen beinhelten eine spezielle Kodierung, wenn sie unter Verwendung des "schnellen Schreib"-Protokolls durchgeführ werden sollen. Wenn die Systemschnittstelle innerhalb eines Knotens die spezielle Kodierung erkennt, wird die Schreiboperation von der Systemschnittstelle abgefangen. Darüber hinaus werden die Daten von dem Prozessor, der die Schreiboperation durchführt, an die Systemschnittstelle übertragen. Die Datenübertragung wird auch dann ausgeführt, wenn der Knoten keinen Kohärenzzustand für die betroffene Kohärenzeinheit, die mit der Durchführung der Schreiboperation vereinbar bzw. konsistent ist, hält. Stattdessen wird die Kohärenzaktivität, die angewandt wird, um den richtigen Kohärenzzustand zu erreichen, im Anschluß an oder parallel zu dem Empfang der Daten vom Prozessor initiiert. Vorteilhafterweise sind Prozessorressourcen frei, um mit anderen Berechnungsaufgaben fortzufahren, während die Systemschnittstelle die Kohärenzaktivität als Reaktion auf die Schreiboperation durchführt. Insbesondere wenn ein Prozessor eine große Anzahl von Schreiboperationen in folge durchführt, kann das Durchführen der Schreiboperationen unter Verwendung des schnellen Schreibprotokolls die Leistung des Computersystems steigern. Die Schreiboperationen können schnell in die Systemschnittstelle übertragen werden, anstatt innerhalb des Prozesors blockiert zu werden, während sie auf Ressourcen warten, die von vorangehenden Schreiboperationen belegt sind.
  • Schnelle Schreib- bzw. Fast-Write-Operationen werden durchgeführt, bevor die Schreibberechtigung für die Kohärenzeinheit eingeholt bzw. erlangt wird. Die Reihenfolge bezüglich anderer Operationen, die sich auf die Kohärenzeinheit beziehen, wird nicht beibehalten. Daher ist das schnelle Schreibprotokoll nicht für alle Schreiboperationen innerhalb des Computersystems geeig net. Jedoch kann das Protokoll verwendet werden, um die Leistung bzw. Leistungsfähigkeit zu steigern. Zum Beispiel erscheint eine Gruppe von Schreibvorgängen, die von Software-Synchronisations-Operationen umgeben sind, bezogen auf Operätionen außerhalb der Synchronisation als Gruppe angeordnet. Der Leistungsgewinn, der durch Ausführen der Gruppe von Schreiboperationen unter Verwendung des schnellen Schreibprotokolls erreicht wird, kann die Systembandbreite, die zur Durchführung der Synchronisation verwendet wird, überwiegen.
  • Im allgemeinen wird eine Schreiboperation von einem Prozessor in einem lokalen Verarbeitungsknoten ausgeführt, und eine Kohärenzoperation an zumindest einen entfernten Verarbeitungsknoten wird als Reaktion auf die Schreiboperation durchgeführt. Wenn die Schreiboperation als schneller Schreibvorgang kodiert ist, wird die Schreiboperation innerhalb des lokalen Verarbeitungsknotens abgeschlossen, bevor die Kohärenzoperation global in Auftrag gegeben wird. Umgekehrt wird in dem Fall, daß die Schreiboperation nicht als ein schneller Schreibvorgang kodiert ist, die Schreiboperation innerhalb des lokalen Knotens abgeschlossen, nachdem die Kohärenzoperation global in Auftrag gegeben wurde.
  • Allgemein gesprochen stellt eine Ausführungsform der vorliegenden Erfindung ein Verfahren zum Durchführen von Schreiboperationen in einem Simultanverarbeitungs-Computersystem zur Verfügung. Eine Schreiboperation wird von einem Prozessor in einem lokalen Verarbeitungsknoten des Simultanverarbeitungs-Computersystems ausgeführt. Eine Kohärenzoperation an zumindest einen entfernten Verarbeitungsknoten wird als Reaktion auf die Schreiboperation durchgeführt. Wenn die Schreiboperation eine spezielle, zuvor definierte Kodierung enthält, wird die Schreiboperation innerhalb des lokalen Verarbeitungsknotens vor Abschluß der Kohärenzoperation abgeschlossen. Alternativ wird in dem Fall, daß die Schreiboperation eine von der speziellen, zuvor definierten Kodierung verschiedene Kodierung enthält, die Schreiboperation innerhalb des lokalen Verarbeitungsknotens im Anschluß an den Abschluß der Kohärenzoperation abgeschlossen.
  • Eine Ausführungsform der vorliegenden Erfindung stellt darüber hinaus eine Vorrichtung zur Durchführung von Schreiboperationen in einem Simultanverarbeitungs-Computersystem bereit, die einen Prozessor und eine Systemschnittstelle umfaßt. Der Prozessor ist eingerichtet, um Schreiboperationen durchzuführen. Die Systemschnittstelle, die angeschlossen ist, um die Schreiboperation zu empfangen und eine Kohärenzoperation als Reaktion auf die Schreiboperation durchzuführen, ist dafür eingerichtet, die Schreiboperation bezüglich des Prozessors vor Abschluß der Kohärenzoperation abzuschließen, wenn die Schreiboperation eine spezielle, zuvor definierte Kodierung enthält. Die Systemschnittstelle ist darüber hinaus dafür eingerichtet, den Abschluß der Schreiboperation bezüglich des Prozessors bis zum Abschluß der Kohärenzoperation zu verhindern, wenn die Schreiboperation eine andere Kodierung als die spezielle, zuvor definierte Kodierung enthält. Eine Ausführungsform der Erfindung sieht auch ein Computersystem vor, das einen ersten Verarbeitungsknoten und einen zweiten Verarbeitungsknoten umfaßt. Der erste Verarbeitungsknoten enthält zumindest einen Prozessor, der dafür eingerichtet ist, eine Schreiboperation durchzuführen. Zusätzlich ist der erste Verarbeitungsknoten dafür eingerichtet, die Schreiboperation bezüglich des Prozessors abzuschließen, bevor der erste Verarbeitungsknoten einen Kohärenzzustand erhält, der die Schreiboperation zuläßt, wenn die Schreiboperation eine zuvor definierte Kodierung enthält. Der zweite Verarbeitungsknoten ist als ein Heimatknoten einer Kohärenzeinheit eingerichtet, die von der Schreiboperation betroffen ist. Der zweite Verarbeitungsknoten ist angeschlossen, um eine Kohärenzanforderung vom ersten Verarbeitungsknoten zu empfangen, welcher die Kohärenzanforderung überträgt, um den geeigneten Kohärenzzustand zu erhalten.
  • Andere Ziele bzw. Zwecke und Vorteile der Erfindung werden beim Lesen der folgenden, detaillierten Beschreibung und unter Bezug auf die begleitenden Zeichnungen offensichtlich, in denen:
  • 1 ein Blockdiagramm eines Simultanverarbeitungs-Computersystems darstellt.
  • 1A eine konzeptionelles Blockdiagramm ist, das eine Non-Uniform Memory Architecture (nicht-einheitliche Speicherarchitektur) darstellt, welche von einer Ausführungsform des in 1 abgebildeten Computersystems unterstützt wird.
  • 1B ein konzeptionelles Blockdiagramm ist, das eine Cache-Only Memory Architecture (ausschließlich Cachespeicher umfassende Speicherarchitektur) darstellt, welche von einer Ausführungsform des in 1 abgebildeten Computersystems unterstützt wird.
  • 2 ein Blockdiagramm einer Ausführungsform eines in 1 abgebildeten, symmetrischen Simultanverarbeitungsknotens ist.
  • 2A einen beispielhaften Verzeichniseintrag darstellt, der in einer Ausführungsform eines in 2 abgebildeten Verzeichnisses gespeichert ist.
  • 3 ein Blockdiagramm einer Ausführungsform einer Systemschnittstelle ist, die in 1 abgebildet ist.
  • 4 ein Diagramm ist, das Aktivitäten darstellt, die als Reaktion auf eine typische Kohärenzoperation zwischen einem Anforderungsagenten, einem Heimatagenten und einem abhängigen Agenten durchgeführt werden.
  • 5 eine beispielhafte Kohärenzoperation darstellt, die als Reaktion auf eine Leseanforderung zum Zweck des Besitzens bzw. Read-to-Own-Anforderung von einem Prozessor durchgeführt wird.
  • 6 ein Flußdiagramm ist, das einen beispielhaften Zustandsautomaten bzw. Zustandsmaschine für eine Ausführungsform eines in 3 abgebildeten Anforderungsagenten darstellt.
  • 7 ein Flußdiagramm ist, das einen beispielhaften Zustandsautomaten für eine Ausführungsform eines in 3 abgebildeten Heimatagenten darstellt.
  • 8 ein Flußdiagramm ist, das einen beispielhaften Zustandsautomaten für eine Ausführungsform eines in 3 abgebildeten, abhängigen Agenten darstellt.
  • 9 eine Tabelle ist, die Typen von Anforderungen gemäß einer Ausführungsform der Systemschnittstelle auflistet.
  • 10 eine Tabelle ist, die Typen von Aufforderungen bzw. Anfragen gemäß einer Ausführungsform der Systemschnittstelle auflistet.
  • 11 eine Tabelle ist, die Typen von Antworten gemäß einer Ausführungsform der Systemschnittstelle auflistet.
  • 12 eine Tabelle ist, die Typen von Abschlüssen bzw. Beendigungen gemäß einer Ausführungsform der Systemschnittstelle auflistet.
  • 13 eine Tabelle ist, die Koharenzoperationen als Reaktion auf verschiedene Operationen, die von einem Prozessor durchgeführt werden, gemäß einer Ausführungsform der Systemschnittstelle beschreibt.
  • 14 ein Diagramm ist, das einen lokalen physikalischen Adreßraum einschließlich Pseudonymen bzw. Aliasnamen darstellt.,
  • 15 eine Flußdiagramm ist, das Schritte beschreibt, die von einer Systemschnittstelle innerhalb des in 1 abgebildeten Computersystems ausgeführt werden, um eine Schreiboperation gemäß einer Ausführungsform durchzuführen.
  • 16 ein Blockdiagramm eines Teils einer Ausführungsform eines in 1 abgebildeten SMP-Knotens ist, das die Ausführung einer Schreiboperation darstellt.
  • 17 ein Diagramm ist, das Kohärenzaktivitäten zeigt, die von einer Ausführungsform des in 1 abgebildeten Computersystems als Reaktion auf eine Schreiboperation durchgeführt werden.
  • 18 ein Zeitdiagramm ist, das eine Schreibstrom- (Write-Stream-) Operation darstellt.
  • 19 ein Zeitdiagramm ist, das eine schnelle Schreibstrom- (Fast-Write-Stream-) Operation darstellt.
  • Wenden wir uns nun 1 zu, die ein Blockdiagramm eines Ausführungsform eines Simultariverarbeitungs-Computersystem 10 darstellt. Das Computersystem 10 umfaßt mehrere SMP-Knoten 12A–12D, die durch ein Punkt-zu-Punkt-Netzwerk 14 miteinander verbunden sind. Auf Elemente, die hier mit einer bestimmten Bezugszahl gefolgt von einem Buchstaben bezeichnet werden, wird durch die Bezugszahl allein kollektiv Bezug genommen. Zum Beispiel werden die SMP-Knoten 12A-12D kollektiv als SMP-Knoten 12 bezeichnet. In der abgebildeten Ausführungsform enthält jeder SMP-Knoten 12 mehrere Prozessoren, externe Cachespeicher, einen SMP-Bus, einen Speicher und eine Systemschnittstelle. Zum Beispiel ist der SMP-Knoten 12A mit mehreren Prozessoren einschließlich der Prozessoren 16A–16B eingerichtet. Die Prozessoren 16 sind mit den externen Cachespeichem 18 verbunden, die darüber hinaus an einen SMP-Bus 20 angeschlossen sind. Zusätzlich sind ein Speicher 22 und eine Systemschnittstelle 24 an den SMP-Bus 20 angeschlossen. Weiterhin können ein oder mehrere Ein-/Ausgabe (Input/Output, I/O) Schnittstellen 26 an den SMP-Bus 20 angeschlossen sein. Die I/O-Schnittstellen 26 werden benutzt, um die Schnittstelle zu Peripheriegeräten bzw. -einrichtungen wie seriellen und parallelen Ports, Plattenlaufwerken, Modems, Drucker etc. zu bilden. Andere SMP-Knoten 12B–12D können ähnlich eingerichtet sein.
  • Allgemein gesprochen ist das Computersystem 10 dafür optimiert, Schreiboperationen von einem lokalen SMP-Knoten 12 zu einem entfernten SMP-Knoten 12 durchzuführen. Ein Prozessor 16 innerhalb des lokalen SMP-Knotens 12 führt eine Schreiboperation mit einer spezifischen Kodierung durch, die anzeigt, daß die Schreiboperation unter Verwendung eines "schnellen Schreib"-Protokolls durchgefährt werden soll. Die Systemschnittstelle 24 speichert die Schreiboperation beim Erkennen der "schnellen Schreib"- bzw. "Fast-Write"-Schreiboperation und ermöglicht auch die Übertragung der Daten, die zur Schreiboperation gehören, vom Prozessor in die Systemschnittstelle. In diesen Fall werden die Daten vor der Durchführung von Kohärenzoperationen zum Erlangen der Eigentümerschaft an der Kohärenzeinheit, die von der Schreibperation betroffen ist (z. B. um die Schreibberechtigung auf eine Kohärenzeinheit zu erlangen), übertragen. Vorteilhafterweise schließt der Prozessor 16 die Schreiboperation schnell ab. Ressourcen innerhalb des Prozessors 16 werden zur Verwendung in nachfolgenden Operationen freigegeben. Die Leistung des Computersystems kann dadurch, daß Prozessorressourcen schneller freigegeben werden, als es früher möglich war, erhöht werden.
  • Nach einer bestimmten Ausführungsform zeigen gewisse der höchstwertigen Bits der Adresse, die von Prozessor 16 dem SMP-Bus 20 übergeben werden, an, daß das schnelle Schreibproto koll für eine bestimmte Schreiboperation benutzt werden soll. Die verbleibenden Bits legen den Zielknoten und die lokale physikalische Adresse fest, die eine Zielspeicherstelle innerhalb des Speichers 22 des Zielknotens bestimmen. Alternativ können die verbleibenden Bits eine globale Adresse darstellen, die einen entfernten Knoten bestimmen, der die betroffene Kohärenzeinheit speichert. Darüber hinaus ist das schnelle Schreibprotokoll nach der bestimmten Ausführungsform auf Schreibstrom- bzw. Write-Stream-Operationen beschränkt. Schreibstromoperationen aktualisieren eine gesamte Kohärenzeinheit. Daher braucht der Prozessor 16, der eine Schreibstromoperationen durchführt, keine Kopie der Kohärenzeinheit zum Aktualisieren zu erhalten. Das schnelle Schreibprotokoll beseitigt darüber hinaus die Reihenfolgeanforderungen für die Schreibstromoperationen, wodurch es möglich wird, daß diese Operationen schnell aus dem Prozessor 16 entfernt werden. Diese Schreibstromoperationen sind untereinander, aber nicht bezüglich der anderen Operationen, die vom Prozessor 16 durchgeführt werden, geordnet.
  • Das schnelle Schreibprotokoll kann für viele Zwecke nützlich sein. Allgemein gesprochen kann eine Schreiboperation, die zu einem entfernten Knoten durchgeführt werden soll und für die es nicht gewünscht ist, eine lokale Kopie in dem lokalen Knoten zu erhalten, vorteilhafteireise mittels des schnellen Schreibprotokolls durchgeführt werden. Zum Beispiel kann eine Schreiboperation, die eine globale Adresse auf dem SMP-Bus 20 verwendet, unter Verwendung des schnellen Schreibprotokolls durchgeführt werden. Als ein weiteres Beispiel kann eine Blockkopie eines lokalen Quellblocks (z. B. einer Seite) zu einem entfernten Zielblock durchgeführt werden. Um die Blockkopieroperation durchzuführen, liest ein Prozessor 16 Daten von dem lokalen Quellblock und schreibt die Daten in den entfernten Zielblock. Der Prozessor 16 kann die Daten in den entfernten Zielblock unter Verwendung des schnellen Schreibprotokolls schreiben. Zusätzlich könne große zwischen Prozessoren ausgetauschte Kommunikationsblöcke (z. B. einige Kohärenzeinheiten) unter Verwendung des schnellen Schreibprotokolls übertragen werden. Kleinere Blöcke können keinen Gebrauch von dem schnellen Schreibprotokoll machen, da eine Synchronisationsoperation zwischen der Überfragung der Kommunikationsblöcke und dem Setzen des Flags, das anzeigt, daß die Kommunikationsblöcke für den empfangenden Prozessor verfügbar sind, erforderlich sein können.
  • Allgemein gesprochen ist eine Speicheroperation eine Operation; die eine Übertragung von Daten von einer Quelle zu einem Ziel veranlaßt. Die Quelle und/oder das Ziel können Speicherstellen innerhalb des Initiators oder Speicherstellen innerhalb des Speichers sein. Wenn eine Quelle oder ein Ziel eine Speicherstelle innerhalb des Speichers ist, wird die Quelle oder das Ziel mittels einer Adresse, die mit der Speicheroperation übermittelt wird, bestimmt. Speicheroperationen können Lese- oder Schreiboperationen sein. Eine Leseoperation veranlaßt die Übertragung von Daten von einer Quelle außerhalb des Initiators zu einem Ziel innerhalb des Initiators. Umgekehrt veranlaßt eine Schreiboperation die Übertragung von Daten von einer Quelle innerhalb des Initiators zu einem Ziel außerhalb des Initiators. In dem in 1 abgebildeten Computersystem kann eine Speicheroperation sowohl eine oder mehrere Transaktionen auf dem SMP-Bus 20 als auch eine oder mehrere Kohärenzoperationen auf dem Netzwerk 14 beinhalten.
  • Architekturübersicht
  • Jeder SMP-Knoten 12 ist im wesentlichen ein SMP-System mit einem Speicher 22 als dem gemeinsam genutzten Speicher. Die Prozessoren 16 sind Hochleistungsprozessoren. Nach einer Ausführungsform ist jeder Prozessor 16 ein mit Version 9 der SPARC-Prozessorarchitektur konformer SPARC-Prozessor. Es wird jedoch darauf hingewiesen, daß jede beliebige Prozessorarchitektur von den Prozessoren 16 verwendet werden kann.
  • Typischerweise enthalten die Prozessoren 16 interne Befehls- und Daten-Cachespeicher. Daher werden die externen Cachespeicher 18 als L2- Cachespeicher bezeichnet (für Stufe 2, wobei die internen Cachespeicher die Stufe-1-Cachespeicher sind). Wenn die Prozessoren 16 nicht mit internen Cachespeichern eingerichtet sind, dann sind die externen Cachespeicher 18 die Stufe-1-Cachespeicher. Es wird darauf hingewiesen, daß die "Stufen"-Nomenklatur verwendet wird, um die Nähe eines bestimmten Cachespeichers zum Verarbeitungskern innerhalb von Prozessor 16 anzugeben. Stufe 1 ist die näheste am Verarbeitungskern, Stufe 2 ist die nächst näheste, etc. Die externen Cachespeicher 18 ermöglichen schnellen Zugriff auf Speicheradressen, auf die von dem daran angeschlossenen Prozessor 16 häufig zugegriffen wird. Es wird darauf hingewiesen, daß die externen Cachespeicher 18 in jeder beliebigen einer Vielfalt von speziellen Cacheanordnungen eingerichtet werden können. Zum Beispiel können mengenassoziative oder direkt abgebildete Konfigurationen von den externen Cachespeichern 18 verwendet werden.
  • Der SMP-Bus 20 unterstützt die Kommunikation zwischen den Prozessoren 16 (durch die Cachespeicher 18), dem Speicher 22, der Systemschnittstelle 24 und der I/O-Schnittstelle 26. Nach einer Ausführungsform enthält der SMP-Bus 20 sowohl einen Adreßbus und zugehörige Steuersignale als auch einen Datenbus und zugehörige Steuersignale. Da die Adreß- und Datenbusse getrennt sind, kann ein geteiltes Transaktionstiosprotokoll bzw. ein Split-Transaction-Busprotokoll auf dem SMP-Bus 20 angewandt werden. Allgemein gesprochen ist ein geteiltes Transaktionsbusprotokoll ein Protokoll, in dem eine Transaktion, die auf dem Adreßbus erfolgt, sich von einer gleichzeitigen Transaktion, die auf dem Datenbus erfolgt, unterscheiden kann. Transaktionen, die eine Adresse und Daten einbeziehen, umfassen eine Adreßphase, in welcher die Adresse und die zugehörige Steuerinformation auf dem Adreßbus transportiert wird, und eine Datenphase, in welcher die Daten auf dem Datenbus transportiert werden. Zusätzliche Adreßphasen und/oder Datenphasen für andere Transaktionen können vor der Datenphase, die einer bestimmten Adreßphase entspricht, eingeleitet werden. Eine Adreßphase und die entsprechende Datenphase können in verschiedener Art und Weise miteinander korreliert werden. Zum Beispiel können Datentransaktionen in derselben Reihenfolge erfolgen, in der die Adreßtransaktionen erfolgen. Alternativ können die Adreß- und Datenphasen einer Transaktion mittels eines eindeutigen Tags bezeichnet werden.
  • Der Speicher 22 ist dafür eingerichtet, Daten und Befehlscode zum Gebrauch durch die Prozessoren 16 zu speichern. Der Speicher 22 umfaßt vorzugsweise dynamischen, wahlfrei zugreifbaren Speicher (Dynamic Random Access Memory, DRAM), obwohl jede beliebige Art von Speicher verwendet werden kann. Des Speicher 22 bildet in Verbindung mit den ähnlich dargestellten Speichern in den anderen SMP-Knoten 12 eine verteiltes, gemeinsam genutztes Speichersystem. Jede Adresse in dem Adreßraum des verteilten, gemeinsam genutzten Speichers ist einem bestimmten Knoten zugewiesen, der als der Heimatknoten der Adresse bezeichnet wird. Ein Prozessor innerhalb eines anderen Knotens als des Heimatknotens kann auf die Daten an einer Adresse des Heimatknotens zugreifen und dabei möglicherweise die Daten im Cache speichern. Somit wird die Kohärenz sowohl zwischen den SMP-Knoten 12 als auch zwischen den Prozessoren 16 und den Cachespeichern 18 innerhalb eines bestimmten SMP-Knotens 12A–12D aufrecht erhalten. Die Systemschnittstelle 24 sorgt für Kohärenz zwischen Knoten, während das Mitlesen bzw. Snooping auf dem SMP-Bus 20 für Kohärenz innerhalb von Knoten sorgt.
  • Über das Aufrechterhalten der Kohärenz zwischen Knoten hinaus erkennt die Systemschnittsteile 24 Adressen auf dem SMP-Bus 20, die eine Datenübertragung an einen oder von einem anderen SMP-Knoten 12 erforderlich machen. Die Systemschnittstelle 24 führt die Übertragung durch und stellt die entsprechenden Daten für die Übertragung auf dem SMP-Bus 20 bereit. Nach der abgebildeten Ausführungsform ist die Systemschnittstelle 24 an ein Punkt-zu-Punkt-Netzwerk 14 angeschlossen. Es wird jedoch darauf hingewiesen, daß nach alternativen Ausführungsformen andere Netzwerke verwendet werden können. In einem Punkt-zu-Punkt-Netzwerk sind individuelle Verbindungen zwischen allen Knoten in dem Netzwerk vorhanden. Ein bestimmter Knoten kommuniziert direkt mit einem zweiten Knoten über einen dedizierten Knoten. Um mit einem dritten Knoten zu kommunizieren, macht der betreffende Knoten von einer anderen Verbindung Gebrauch als derjenigen, die zur Kommunikation mit dem zweiten Knoten verwendet wird.
  • Es wird darauf hingewiesen, daß Ausführungsformen des Computersystems 10, die irgendeine beliebige Anzahl von Knoten verwenden, betrachtet werden, auch wenn in 1 vier SMP-Knoten 12 abgebildet sind.
  • Die 1A und 1B sind konzeptionelle Darstellungen von verteilten Speicherarchitekturen, die von einer Ausführungsform des Computersystems 10 unterstützt werden. Speziell stellen die 1A und 1B alternative Arten und Weisen dar, in denen jeder SMP-Knoten 12 aus 1 Daten im Cache speichern und Speicherzugriffe durchführen kann. Details bezüglich der Art, in der das Computersystem 10 solche Zugriffe unterstützt, werden unten genauer beschrieben.
  • Wenden wir uns nun 1A zu, die ein logisches Diagramm einer ersten Speicherarchitektur 30 darstellt, die von einer Ausführungsform des Computersystems 10 unterstützt wird. Die Architektur 30 enthält mehrere Prozessoren 32A–32D, mehrere Cachespeicher 34A–34D, mehrere Speicher 36A-36D und ein Verbindungsnetzwerk 38. Die mehreren Speicher 36 bilden einen verteilten, gemeinsam genutzten Speicher. Jede Adresse innerhalb des Adreßraumes entspricht einer Speicherstelle innerhalb eines der Speicher 36.
  • Die Architektur 30 ist eine nicht-einheitliche bzw. nicht-gleichförmige Speicherarchitektur bzw. eine Non-Uniform Memory Architecture (NUMA). In einer NUMA-Architektur kann die benötigte Zeit zum Zugriff auf eine erste Speicheradresse wesentlich verschieden sein von der benötigten Zeit für den Zugriff auf eine zweite Speicheradresse. Die Zugriffszeit ist abhängig vom Ursprung der Zugriffs und von der Lage bzw. Stelle des Speichers 36A–36D, welcher die Daten, auf die zugegriffen wird, speichert. Wenn zum Beispiel Prozessor 32A auf eine erste Speicheradresse zugreift, die in Speicher 36A gespeichert ist, kann die Zugriffszeit bedeutend kürzer sein als die Zugriffszeit für einen Zugriff auf eine zweite Speicheradresse, die in einem der Speicher 36B–36D gespeichert ist. Das heißt, ein Zugriff von Prozessor 32A auf den Speicher 36A kann lokal erledigt werden (z. B. ohne Übertragung auf dem Netzwerk 38), während ein Zugriff von Prozessor 32A auf den Speicher 36B über das Netzwerk 38 durchgeführt wird. Typischerweise ist ein Zugriff üüber das Netzwerk 38 langsamer als ein Zugriff, der innerhalb eines lokalen Speichers erledigt wird. Zum Beispiel könnte ein lokaler Zugriff in wenigen Hundert Nanosekunden abgeschlossen werden, während ein Zugriff über das Netzwerk wenige Mikrosekunden benötigen könnte.
  • Daten, die in entfernten Knoten gespeicherten Adressen entsprechen, können in irgendeinem der Cachespeicher 34 gespeichert werden. Sobald jedoch ein (Cachespeicher 34 die Daten, die einer solchen entfernten Adresse entsprechen, verwirft, wird ein nachfolgender Zugriff auf die entfernte Adresse mittels einer Übertragung über das Netzwerk 38 absolviert.
  • NUMA-Architekturen können ausgezeichnete Leistungsmerkmale für Softwareanwendungen zur Verfügung stellen, die Adressen verwenden, die in erster Linie einem bestimmten lokalen Speicher entsprechen. Softwareanwendungen, die zufälligere bzw. willkürlichere Zugriffsmuster aufweisen und die ihre Speicherzugriffe nicht auf Adressen innerhalb eines bestimmten lokalen Speichers einschränken, können andererseits eine große Menge von Netzwerkverkehr erfahren, wenn ein bestimmter Prozessor 32 wiederholte Zugriffe auf entfernte Knoten durchführt.
  • Wenden wir uns nun 1B zu, die ein logisches Diagramm einer zweiten Speicherarchitektur 40 darstellt, die vom in 1 abgebildeten Computersystem 10 unterstützt wird. Die Architektur 40 enthält mehrere Prozessoren 42A–42D, mehrere Cachespeicher 44A–44D, mehrere Speicher 46A–46D und das Netzwerk 48. Die Speicher 46 sind jedoch logisch zwischen die Cachespeicher 44 und das Netzwerk 48 geschaltet. Die Speicher 46 dienen als größere Cachespeicher (z. B. ein Stufe-3-Cache), die Adressen speichern, auf die von den entsprechenden Prozessoren 42 zugegriffen wird. Man sagt, die Speicher 46 "ziehen" die Daten "an", mit denen von einem entsprechenden Prozessor 42 operiert wird. Im Gegensatz zu der in 1A abgebildeten NUMA-Architektur reduziert die Architektur 40 die Anzahl von Zugriffen über das Netzwerk 48, indem entfernte Daten im lokalen Speicher gespeichert werden, wenn der lokale Prozessor auf diese Daten zugreift.
  • Die Architektur 40 wird als Nur-Cache-Speicherarchitektur bzw. Cache-Only Memory Architecure (COMA) bezeichnet. Mehrere Stellen innerhalb des verteilten, gemeinsam genutzten Speichers, der durch die Kombination der Speicher 46 gebildet wird, können Daten, die einer bestimmten Adresse entsprechen, speichern. Es ist keine permanente Abbildung einer bestimmten Adresse zu einer bestimmten Speicherstelle zugewiesen. Stattdessen ändert sich die Stelle, die einer bestimmten Adresse entsprechende Daten speichert, dynamisch abhängig von den Prozessoren 42, die auf diese bestimmte Adresse zugreifen. Umgekehrt ist in der NUMA-Architektur eine bestimmte Speicherstelle innerhalb der Speicher 46 einer bestimmten Adresse zugewiesen. Die Architektur 40 paßt sich den Speicherzugriffsmustern an, die von Anwendungen, die derauf ausgeführt werden, durchgeführt werden, und die Kohärenz zwischen den Speichern 46 wird aufrecht erhalten.
  • Nach einer bevorzugten Ausführungsform unterstützt das Computersystem 10 beide Speicherarchitekturen, die in den 1A und 1B abgebildet sind. Insbesondere kann auf eine Speicheradresse in einer NUMA-Art und Weise von einem SMP-Knoten 12A–12D zugegriffen werden, während auf sie in einer COMA-Art und Weise von einem anderen SMP-Knoten 12A–12D zugegriffen wird. Nach einer Ausführungsform wird ein NUMA-Zugriff erkannt, wenn bestimmte Bits der Adresse auf dem SMP-Bus 20 einen anderen SMP-Knoten 12 als den Heimatknoten der überreichten Adresse bezeichnen. Ansonsten wird von einem COMA-Zugriff ausgegangen. Zusätzliche Details werden unten dargelegt.
  • Nach einer Ausführungsform wird die COMA-Architektur unter Verwendung einer Kombination von Hardware- und Software-Techniken implementiert. Nardware erhält die Kohärenz zwischen den lokal im Cache gespeicherten Kopien von Seiten, und Software (z. B. das im Computersystem 10 eingesetzte Betriebssystem) ist für das Zuordnen bzw. Reservieren und Aufheben der Zuordnung bzw. Freigeben von Cacheseiten verantwortlich.
  • 2 stellt Details einer Implementierung eines SMP-Knotens 12A dar, der im allgemeinen dem in 1 abgebildeten SMP-Knotens 12A entspricht. Andere Knoten 12 können ähnlich eingerichtet sein. Es wird darauf hingewiesen, daß alternative, spezifische Implementierungen jedes SMP-Knotens 12 aus 12 ebenso möglich sind. Die Implementierung des SMP-Knotens 12A, die in 2 abgebildet ist, enthält mehrere Unterknoten wie die Unterknoten 50A und 50B. Jeder Unterknoten 50 beinhaltet zwei Prozessoren 16 und entsprechende Cachespeicher 18, einen Speicheranteil 56 eine Adreßsteuerung 52 und eine Datensteuerung 56. Die Speicheranteile 56 innerhalb der Unterknoten 50 bilden gemeinsam den Speicher 22 des SMP-Knotens 12A aus 1. Andere Unterknoten (nicht abgebildet) sind darüber hinaus an den SMP-Bus 20 angeschlossen, um die I/O-Schnittstellen 26 zu bilden.
  • Wie in 2 dargestellt beinhaltet der SMP-Bus 20 einen Adreßbus 58 und einen Datenbus 60. Eine Adreßsteuerung 52 ist an den Adreßbus 58 angeschlossen, und eine Datensteuerung 54 ist an den Datenbus 60 angeschlossen. 2 veranschaulicht auch die Systemschnittstelle 24, die einen Logikblock 62 der Systemschnittstelle, einen Übersetzungsspeicher 64, ein Verzeichnis 66 und ein Speicher-Tag (MTAG) 68 beinhaltet. Der Logikblock 62 ist sowohl an den Adreßbus 58 als auch an den Datenbus 60 angeschlossen und setzt bzw. bestätigt ein Ignoriersignal 70 auf dem Adreßbus 58 unter gewissen Bedingungen, wie weiter unten erläutert wird. Darüber hinaus ist der Logikblock 62 an den Übersetzungsspeicher 64, das Verzeichnis 66, das MTAG 68 und das Netzwerk 14 angeschlossen.
  • Für die Ausführungsform von 2 ist jeder Unterknoten 50 auf einer Platine (Printed Circuit Board) eingerichtet, die in eine Rückwand bzw. Backplane, auf der der SMP-Bus 20 liegt, eingesetzt wird. Auf diese Weise kann die Anzahl von Prozessoren und /oder I/O-Schnittstellen 26, die in einem SMP-Knoten 12 enthalten sind, durch Einsetzen oder Entfernen von Unterknoten 50 variiert werden. Zum Beispiel kann das Computersystem 40 anfänglich mit einer kleinen Anzahl von Unterknoten 50 eingerichtet werden. Zusätzliche Unterknoten 50 können von Zeit zu Zeit hinzugefügt werden, wenn die von den Benutzern des Computersystems 10 benötigte Rechenleistung wächst.
  • Die Adreßsteuerung 52 stellt eine Schnittstelle zwischen den Cachespeichern 18 und dem Adreßanteil des SMP-Busses 20 zur Verfügung. Nach der abgebildeten Ausführungsform beinhaltet die Adreßsteuerung 52 eine Ausgangswarteschlange 72 und eine gewisse Anzahl von Eingangswarteschlangen 74. Die Ausgangswarteschlange 72 puffert Transaktionen von den Prozessoren, die damit verbunden sind, bis der Adreßsteuerung 52 Zugriff auf den Adreßbus 58 gewährt wird. Die Adreßsteuerung 52 führt die Transaktionen, die in der Ausgangswarteschlange 72 gespeichert sind, in der Reihenfolge durch, in der sie in die Ausgangswarteschlange 72 gestellt wurden (d. h. die Ausgangswarteschlange 72 ist eine FIFO-Warteschlange). Sowohl die Transaktionen, die von der Adreßsteuerung 52 durchgeführt werden, als auch die Transaktionen, die vom Adreßbus 58 empfangen und von den Cachespeichern 18 und den Cachespeichem innerhalb der Prozessoren 16 mitgelesen werden sollen, werden in die Eingangswarteschlange 74 gestellt.
  • Ähnlich zur Ausgangswarteschlange 72 ist die Eingangswarteschlange 74 eine FIFO-Warteschlange. Alle Adreßtransaktionen werden in der Eingangswarteschlange 74 jedes Unterknotens 50 gespeichert (sogar innerhalb der Eingangswarteschlange 74 desjenigen Unterknotens 50, der die Adreßtransaktion einleitet). Adreßtransaktionen werden folglich an die Cachespeicher 18 und die Prozessoren 16 zum Mitlesen in derselben Reihenfolge überreicht, in der sie auf dem Adreßbus 58 auftreten. Die Reihenfolge, in der Transaktionen auf dem Adreßbus 58 auftreten, ist die Reihenfolge für dem SMP-Knoten 12A. Jedoch wird von dem gesamten System angenommen, daß es eine einzige globale Speicherreihenfolge hat. Diese Erwartung einer Anordnung erzeugt sowohl in der NUMA- als auch in der COMA-Architektur, die vom Computersystem 10 eingesetzt bzw. angewandt wird, Probleme, da die globale Reihenfolge möglicherweise aufgrund der Reihenfolge von Operationen auf dem Netzwerk 14 bereitgestellt werden muß. Wenn zwei Krioten eine Transaktion auf bzw. für einer) Adresse durchführen, definiert die Reihenfolge, in der die entsprechenden Kohärenzoperationen beim Heimatknoten für die Adresse auftreten, die Reihenfolge der zwei Transaktionen, wie sie in jedem Knoten gesehen wird. Wenn zum Beispiel zwei Schreiboperationen für dieselbe Adresse durchgeführt werden, dann sollte die zweite Schreiboperation, die beim Heimatknoten der Adresse eintrifft, die zweite Schreibtransaktion sein, die abgeschlossen bzw. erledigt wird (d. h. eine Byte- Speicherstelle, die von beiden Transaktionen aktualisiert wird, speichert zum Abschluß beider Transaktionen einen Wert, der von der zweiten Transaktion bereitgestellt wird). Jedoch kann bei dem Knoten, der die zweite Transaktion durchführt, tätsächlich die zweite Transaktion zuerst auf dem SMP-Bus 20 aufgetreten sein. Das Ignoriersignal 70 ermöglicht es, daß die zweite Transaktion an die Systemschnittstelle 24 übermittelt wird, ohne daß der Rest des SMP-Knotens 12 auf die Transaktion reagiert: Daher verwendet der Logikblock 62 der Systemschnittstelle das Ignoriersignal 70, um effektiv mit den Reihenfolgeneinschränkungen bzw. -randbedingurigen zu arbeiten, die durch die Ausgangswarteschlangen-/Eingangswarteschlangenstruktur der Adreßsteuerung 52 auferlegt werden. Wenn eine Transaktion auf dem Adreßbus 58 überreicht wird und Logikblock 62 der Systemschnittstelle erkennt, daß eine entfernte Transaktion als Reaktion auf die Transaktion durchgeführt werden soll, setzt bzw. bestätigt der Logikblock 62 das Ignoriersignal 70. Das Setzen des Ignoriersignals 70 bezogen auf eine Transaktion veranlaßt die Adreßsteuerung 52, die Speicherung der Transaktion in den Eingangswarteschlangen 74 zu verhindern. Daher können andere Transaktionen, die im Anschluß an die ignorierte Transaktion auftreten und lokal innerhalb des SMP-Knotens 12A erledigt werden können, außer der Reihe bezüglich der ignorierten Transaktion abgeschlossen werden, ohne die Reihenfolgeregeln der Eingangswarteschlange 74 zu verletzen. Insbesondere können Transaktionen, die von der Systemschnittstelle 24 als Reaktion auf eine Kohärenzaktivität auf dem Netzwerk 14 durchgeführt werden, im Anschluß an die ignorierte Transaktion durchgeführt und abgeschlossen werden. Wenn eine Antwort von der entfernten Transaktion empfangen wird, kann die ignorierte Transaktion vom Logikblock 62 der Systemschnittstelle erneut auf dem Adreßbus 58 ausgegeben werden. Die Transaktion wird dadurch in die Eingangswarteschlange 74 gestellt und kann der Reihe nach mit Transaktionen, die zum Zeitpunkt der erneuten Ausgabe auftreten, abgeschlossen werden.
  • Es wird darauf hingewiesen, daß nach einer Ausführungsform dann, wenn einmal eine Transaktion von einer bestimmten Adreßsteuerung 52 ignoriert wurde, auch nachfolgende, kohärente Transaktionen von dieser betreffenden bzw. bestimmten Adreßsteuerung 52 ignoriert werden. Transaktionen von einem bestimmten Prozessor 16 können eine wichtige Reihenfolgebeziehunguntereinander haben, unabhängig von den Reihefolgeanforderungen, die durch das Überreichen auf dem Adreßbus 58 auferlegt werden. Zum Beispiel kann eine Transaktion von einer anderen Transaktion durch einen Speichersynchronisierungsbefehl wie dem MEMBAR-Befehl, der in der SPARC-Architektur enthalten ist, getrennt werden. Der Prozessor 16 übermittelt die Transaktionen in der Reihenfolge, in der die Transaktionen mit Bezug zueinander durchgeführt werden sollen. Die Transaktionen sind innerhalb der Ausgangswarteschlange 72 der Reihe nach geordnet und daher sind die Transaktionen, die von einer bestimmten Ausgangswarteschlange 72 ausgehen, der Reihe nach durchzuführen. Das Ignorieren nachfolgender Transaktionen von einer bestimmten Adreßsteuerung 52 ermöglicht es, die Regeln zur richtigen Reihenfolge für eine bestimmte Ausgangswarteschlange 72 einzuhalten. Es wird darüber hinaus darauf hingewiesen, daß nicht alle Transaktionen von einem bestimmten Prozessor geordnet sein müssen. Es ist jedoch schwierig, auf dem Adreßbus 58 zu bestimmen, welche Transaktionen geordnet sein müssen und welche Transaktionen nicht geordnet zu sein brauchen. Daher behält in dieser Implementierung der Logikblock 62 die Reihenfolge bei allen Transaktionen von einer bestimmten Ausgangswarteschlange 72 bei. Es wird darauf hingewiesen, daß andere Implementierungen von Unterknoten 50 möglich sind, die Ausnahmen von dieser Regel zulassen.
  • Die Datensteuerung 54 leitet Daten zu und von dem Datenbus 60, dem Speicheranteil 56 und den Cachespeichern 18. Die Datensteuerung 54 kann Eingangs- und Ausgangswarteschlangen ähnlich zur Adreßsteuerung 52 beinhalten. Nach einer Ausführungsform verwendet die Datensteuerung 54 mehrere physikalische Einheiten in einer byteweise aufgeteilten bzw. byte-sliced Buskonfiguration.
  • Die Prozessoren 16 enthalten wie in 2 abgebildet Spericherverwaltungseinheiten (Memory Management Units, MMUs) 76A-76B. Die MMUs 76 führen sowohl auf den Datenadressen, die von dem auf den Prozessoren 16 ausgeführten Befehlscode erzeugt werden, als auch auf den Befehlsadressen eine Übersetzung von virtuellen in physikalische Adressen durch. Die Adressen, die als Reaktion auf die Befehlsausführung erzeugt werden, sind virtuelle Adressen. Mit anderen Worten sind die virtuellen Adressen diejenigen Adressen, die vom Programmierer des Befehlscode kreiert werden. Die virtuellen Adressen werden durch einen Mechanismus zur Adreßübersetzung (verkörpert in den MMUs 76) gereicht, von dem entsprechende physikalische Adressen kreiert werden. Die physikalische Adresse gibt die Speicherstelle innerhalb des Speichers 22 an.
  • Die Adreßübersetzung wird aus vielen Gründen durchgeführt. Zum Beispiel kann der Mechanismus zur Adreßübersetzung verwendet werden, um einer bestimmten Berechnungsaufgabe den Zugriff auf gewisse Speicheradressen zu gewähren oder zu verweigern. Auf diese Weise werden Daten und Befehle innerhalb einer Berechnungsaufgabe von den Daten und Befehlen einer anderen Berechnungsaufgabe isoliert. Zusätzlich können Teile der Daten und Befehle einer Berechnungsaufgabe auf ein Plattenlaufwerk per Paging ausgelagert werden. Wenn ein Teil per Paging ausgelagert wird, wird die Übersetzung ungültig gemacht. Beim Zugriff auf den Teil durch eine Berechnungsaufgabe tritt eine Unterbrechung bzw. ein Interrupt aufgrund der fehlgeschlagenen Übersetzung auf. Der Interrupt erlaubt es dem Betriebssystem, die entsprechende Information vom Plattenlaufwerk zurückzuholen. Auf diese Weise kann mehr virtueller Speicher als tatsächlicher Speicher im Speicher 22 verfügbar sein. Viele andere Verwendungen von virtuellem Speicher sind wohl bekannt.
  • Wiederum gemäß dem in 1 abgebildeten Computersystem 10 in Verbindung mit der in 2 veranschaulichten Implementierung des SMP-Knotens 12A, ist die von den MMUs 76 berechnete physikalische Adresse eine lokale physikalische Adresse (LPA), die eine Stelle innerhalb des Speichers 22 definiert, die einem SMP-Knoten 12, in dem der Prozessor 16 angesiedelt ist, zugeordnet ist. Das MTAG 68 speichert einen Kohärenzzustand für jede "Kohärenzeinheit" im Speicher 22. Wenn eine Adreßtransaktion auf dem SMP-Bus 20 durchgeführt wird, überprüft der Logikblock 62 der Systemschnittstelle den Kohärenzzustand, der im MTAG 68 für die Kohärenzeinheit, auf die zugegriffen wird, gespeichert ist. Wenn der Kohärenzzustand anzeigt, daß der SMP-Knoten 12 ausreichende Zugriffsrechte auf die Kohärenzeinheit hat, um den Zugriff durchzuführen, dann macht bzw. geht die Adreßtransaktion weiter. Wenn jedoch der Kohärenzzustand anzeigt, daß die Kohärenzaktivität vor Abschluß der Transaktion durchgeführt werden sollte, dann setzt der Logikblock 62 der Systemschnittstelle das Ignoriersignal 70. Der Logikblock 62 führt Kohärenzoperationen auf dem Netzwerk 14 durch, um den geeigneten Kohärenzzustand zu erhalten. Wenn der geeignete Kohärenzzustand erlangt ist, dann gibt der Logikblock 62 die ignorierte Transaktion erneut auf dem SMP-Bus 20 aus. Im Anschluß daran wird die Transaktion abgeschlossen.
  • Allgemein gesprochen zeigt der Kohärenzzustand, der für eine Kohärenzeinheit an einer bestimmten Speicherstelle (z. B. einem Cache oder einem Speicher 22) gehalten wird, die Zugriffsrechte auf die Kohärenzeinheit an diesem SMP-Knoten 12 an. Das Zugriffsrecht zeigt sowohl die Gültigkeit einer Kohärenzeinheit als auch die gewährte Lese-/Schreibberechtigung für die Kopie der Kohärenzeinheit innerhalb dieses SMP-Knotens 12 an. Nach einer Ausführungsform sind die Kohärenzzustände, die vom Computersystem 10 verwendet werden, "modifiziert", "im Besitz", "gemeinsam genutzt" und "ungültig". Der Zustand "modifiziert" zeigt an, daß der SMP-Knoten 12 die entsprechende Kohärenzeinheit aktualisiert hat. Daher besitzen andere SMP-Knoten 12 keine Kopie der Kohärenzeinheit. Zusätzlich wird die Kohärenzeinheit in den Heimatkonten zurückgespeichert, wenn die geänderte Kohärenzeinheit vom SMP-Knoten 12 gestrichen bzw. verworfen wird. Der Zustand "im Besitz" zeigt an, daß der SMP-Knoten 12 für die Kohärenzeinheit verantwortlich ist, aber andere SMP-Knoten 12 können eine gemeinsam genutzte Kopie haben. Wiederum wird die Kohärenzeinheit in den Heimatkonten zurückgespeichert, wenn die Kohärenzeinheit vom SMP-Knoten 12 verworfen wird. Der Zustand "gemeinsam genutzt" zeigt an, daß der SMP-Knoten 12 die Kohärenzeinheit lesen kann, jedoch die Kohärenzeinheit nicht aktualisieren darf, ohne den Zustand "im Besitz" zu erhalten. Zusätzlich können andere SMP-Knoten 12 gleichfalls Kopien der Kohärenzeinheit besitzen. Schließlich zeigt der Zustand "ungültig" an, daß der SMP-Knoten 12 keine Kopie der Kohärenzeinheit besitzt. Nach einer Ausführungsform zeigt der Zustand "modifiziert" Schreibberechtigung an und jeder Zustand außer "ungültig" zeigt Leseberechtigung für die entsprechende Kohärenzeinheit an.
  • In dem hier verwendeten Sinn ist eine Kohärenzeinheit eine Anzahl von zusammenhängenden Bytes von Speicher, die zu Kohärenzzwecken als eine Einheit behandelt werden. Wenn zum Beispiel ein Byte innerhalb der Kohärenzeinheit aktualisiert wird, wird die gesamte Kohärenzeinheit als aktualisiert betrachtet. Nach einer spezifischen Ausführungsform ist die Kohärenzeinheit ein Cacheblock bzw. eine Cache-Zeile, die 64 zusammenhängende Bytes umfaßt. Es versteht sich jedoch, daß eine Kohärenzeinheit jede beliebige Anzahl von Bytes umfassen kann.
  • Die Systemschnittstelle 24 beinhaltet auch einen Übersetzungsmechanismus, der von dem Übersetzungsspeicher 64 Gebrauch macht, um Übersetzungen von der lokalen, physikalischen Adresse in eine globale Adresse (GA) zu speichern. Gewisse Bits innerhalb der globalen Adresse geben den Heimatknoten für die Adresse an, bei dem Kohärenzinformation für diese globale Adresse gespeichert ist. Zum Beispiel kann eine Ausführungsform des Computersystems 10 vier SMP-Knoten 12 wie die von 1 verwenden. In einer solchen Ausführungsform zeigen zwei Bits der globalen Adresse den Heimatknoten an. Vorzugsweise werden Bits vom höchstwertigen Teil der globalen Adresse verwendet, um den Heimatknoten anzuzeigen. Dieselben Bits werden in der lokalen physikalischen Adresse verwendet, um NUMA-Zugriffe anzuzeigen. Wenn die Bits der LPA anzeigen, daß der lokale Knoten nicht der Heimatknoten ist; dann ist die LPA eine globale Adresse und die Transaktion wird im NUMA-Modus durchgeführt. Daher setzt das Betriebssystem globale Adressen in den MMUs 76 für jede NUMA-artige Seite. Umgekehrt setzt das Betriebssystem LPAs in den MMUs 76 für jede COMA-artige Seite. Es wird darauf hingewiesen, daß eine LPA gleich einer GA sein kann (sowohl für NUMA-Zugriffe als auch für globale Adressen, deren Heimat innerhalb des Speichers 22 in dem Knoten ist, in dem die LPA dargestellt wird). Alternativ kann eine LPA in eine GA übersetzt werden, wenn die LPA Speicherstellen anzeigt, die zum Speichern von Kopien von Daten verwendet werden, die eine Heimat in einem anderen SMP-Knoten 12 haben.
  • Das Verzeichnis 66 eines bestimmten Heimatknotens zeigt an, welche SMP-Knoten 12 Kopien von Daten haben, die einer gegebenen globalen Adresse, die dem Heimatknoten zugewiesen ist, entsprechen, so daß die Kohärenz zwischen den Kopien aufrecht gehalten werden kann. Darüber hinaus gibt das Verzeichnis 66 des Heimatknotens den SMP-Knoten 12 an, der die Kohärenzeinheit in Besitz hat. Daher wird die systemweite (oder globale) Kohärenz unter Verwendung des MTAG 68 und des Verzeichnisses 66 aufrecht erhalten, während die lokale Kohärenz zwischen den Cachespeichem 18 und den Prozessoren 16 mittels Mitlesen aufrecht erhalten wird: Das Verzeichnis 66 speichert die Kohärenzinformation, die den Kohärenzeinheiten entspricht, welche dem SMP-Knoten 12A zugewiesen sind (d. h. für die der SMP-Knoten 12A der (Heimatknoten ist).
  • Es wird darauf hingewiesen, daß für die Ausführungsform von 2 das Verzeichnis 66 und das MTAG 68 für jede Kohärenzeinheit (d. h. auf der Basis von Kohärenzeinheiten) Information speichert. Umgekehrt speichert der Übersetzungsspeicher 64 Übersetzungen von lokalen physikalischen in globale Adressen, die für Seiten definiert sind. Eine Seite umfaßt mehrere Kohärenzeinheiten und hat typischerweise ein Größe von einigen Kilobytes oder sogar Megabytes.
  • Die Software kreiert demgemäß Übersetzungen von lokalen physikalischen Adressen in globale Adressen auf der Basis von Seiten (dadurch wird eine lokale Speicherseite zum Speichern einer Kopie einer entfernt gespeicherten, globalen Seite zugeordnet). Daher werden Blöcke des Speichers 22 gleichfalls einer bestimmten globalen Adresse auf der Basis von Seiten zugeordnet. Wie oben dargelegt werden jedoch Kohärenzzustände und Kohärenzaktivitäten auf einer Kohärenzeinheit durchgeführt. Daher werden die Daten, die einer Seite entsprechen, nicht notwendigerweise in den zugeordneten Speicher übertragen, wenn eine Seite im Speicher einer bestimmten globalen Adresse zugeordnet wird. Stattdessen werden dann, wenn die Prozessoren 16 auf verschiedene Kohärenzeinheiten innerhalb der Seite zugreifen, diese Kohärenzeinheiten vom Besitzer der Kohärenzeinheit übertragen. Auf diese Weise werden die Daten, auf die tatsächlich vom SMP-Knoten 12A zugegriffen wird, in den entsprechenden Speicher 22 übertragen. Daten, auf die vom SMP-Knoten 12A nicht zugegriffen wird, brauchen nicht übertragen zu werden, wodurch die Gesamtnutzung von Bandbreite auf dem Netzwerk 14 im Vergleich zu Ausführungsformen, welche die Seite von Daten beim Reservieren der Seite im Speicher 22 übertragen, reduziert wird.
  • Es wird darauf hingewiesen, daß nach einer Ausführungsform der Übersetzungsspeicher 64, das Verzeichnis 66 und/oder das MTAG 68 Cachespeicher sein können, die nur einen Teil der zugeordneten Übersetzungs-, Verzeichnis- bzw. MTAG-Information speichern. Die Gesamtheit der Übersetzungs-, Verzeichnis- und MTAG-Information ist in Tabellen innerhalb des Speichers 22 oder einem dafür bestimmten Speicher (nicht abgebildet) gespeichert. Wenn für einen Zugriff benötigte Information nicht im entsprechenden Cache gefunden wird, wird von der Systemschnittstelle 24 auf die Tabellen zugegriffen.
  • Wenden wir uns nun 2A zu, die einen exemplarischen Verzeichniseintrag 71 darstellt. Der Verzeichniseintrag 71 kann von einer Ausführungsform des in 2 abgebildeten Verzeichnisses 66 verwendet werden. Andere Ausführungsformen des Verzeichnisses 66 können davon verschiedene Verzeichniseinträge verwenden. Der Verzeichniseintrag 71 beinhaltet ein Gültigbit bzw. Valid-Bit 73, ein Zurückschreibbit bzw. Write-Back-Bit 75, ein Besitzerfeld bzw. Owner-Field 77 und ein Gemeinsame-Nutzer-Feld bzw. Sharers-Field 79. Der Verzeichniseintrag 71 befindet sich innerhalb der Tabelle von Verzeichniseinträgen und wird innerhalb der Tabelle mittels der globalen Adresse, welche die entsprechende Kohärenzeinheit angibt, lokalisiert. Genauer wird der einer Kohärenzeinheit zugeordnete Verzeichniseintrag 71 innerhalb der Tabelle von Verzeichniseinträgen mit einem Offset gespeichert, der aus der globalen Adresse, welche die Kohärenzeinheit angibt, gebildet wird.
  • Das Gültigbit 73 zeigt, wenn es gesetzt ist, an daß der Verzeichniseintrag 71 gültig ist (d. h. daß der Verzeichniseintrag 71 Kohärenzinformation für eine entsprechende Kohärenzeinheit speichert). Wenn es gelöscht ist, zeigt das Gültigbit 73 an, daß der Verzeichniseintrag 71 ungültig ist.
  • Das Besitzerfeld 77 bezeichnet einen von den SMP-Knoten 12 als den Besitzer der Kohärenzeinheit. Der besitzende SMP-Knoten 12A–12D hält die Köhärenzeinheit entweder im Zustand "modifiziert" oder im Zustand "in Besitz". Typischerweise erhält der besitzende SMP-Knoten 12A-12D die Kohärenzeinheit im Zustand "modifiziert" (siehe 13 unten). Anschließend kann der besitzende SMP-Knoten 12A–12D dann in den Zustand "in Besitz" übergehen, indem er eine Kopie der Kohärenzeinheit einem anderen SMP-Knoten 12A–12D zur Verfügung stellt. Der andere SMP-Knoten 12A–92D erhält die Kohärenzeinheit im Zustand "gemeinsam genutzt". Nach einer Ausführungsform. umfaßt das Besitzerfeld 77 zwei Bits, die kodiert werden, um einen von vier SMP-Knoten 12A-12D als den Besitzer der Kohärenzeinheit zu bezeichnen.
  • Das Gemeinsame-Nutzer-Feld 79 enthält je ein Bit, das je einem SMP-Knoten 12A–12D zugewiesen ist. Wenn ein SMP-Knoten 12A–12D eine gemeinsam genutzte Kopie der Kohärenzeinheit hält; ist das entsprechende Bit innerhalb des Gemeinsame-Nutzer-Feldes 79 gesetzt. Wenn umgekehrt der SMP-Knoten 12A–12D keine gemeinsam genutzte Kopie der Kohärenzeinheit hält, ist das entsprechende Bit innerhalb des Gemeinsame-Nutzer-Feldes 79 gelöscht. Auf diese Weise zeigt das Gemeinsame-Nutzer-Feld 79 alle gemeinsam genutzten Kopien der Kohärenzeinheit an, die es innerhalb des Computersystems 10 aus 1 gibt.
  • Das Zurückschreibbit 75 gibt, wenn es gesetzt ist, an, daß der SMP-Knoten 12A-12D, der als Besitzer der Kohärenzeinheit mittels des Besitzerfeldes 77 bezeichnet ist, die aktualisierte Kopie der Kohärenzeinheit in den Heimat-SMP-Knoten 12 zurückgeschrieben hat. Wenn es gelöscht ist, zeigt Bit 75 an, daß der besitzende SMP-Knoten 12A–12D die aktualisierte Kopie der Kohärenzeinheit nicht in den Heimat-SMP-Knoten 12A–12D zurückgeschrieben hat.
  • Wenden wir uns nun 3 zu, die ein Blockdiagramm einer Ausführungsform der Systemschnittstelle 24 darstellt. Wie in 3 dargestellt, enthält die Systemschnittstelle 24 das Verzeichnis 66, den Übersetzungsspeicher 64 und das MTAG 68. Der Übersetzungsspeicher 64 ist als eine Übersetzungseinheit 80 von globalen Adressen in lokale, physikalische Adressen (GA2LPA) und eine Übersetzungseinheit 82 von lokalen, physikalischen Adressen in globale Adressen (LPA2GA).
  • Die Systemschnittstelle 24 beinhaltet auch Eingabe- und Ausgabewarteschlangen zum Speichern von Transaktionen, die über den SMP-Bus 20 oder über das Netzwerk 14 durchgeführt werden sollen. Speziell bei der abgebildeten Ausführungsform enthält die Systemschnittstelle 24 die Eingabe-Header-Warteschlange 84 und die Ausgabe-Header-Warteschlange 86 zum Puffern von Headerpaketen zum oder vom Netzwerk 14. Headerpakete bestimmen eine auszuführende Operation und geben die Anzahl und das Format eines beliebigen Datenpakets an, das folgen kann. Die Ausgabe-Header-Warteschlange 86 puffert Headerpakete, die über das Netzwerk 14 zu übertragen sind, und die Eingabe-Header-Warteschlange 84 puffert Headerpakete, die vom Netzwerk 14 empfangen wurden, bis die Systemschnittstelle 24 die empfangenen Headerpakete verarbeitet. Ähnlich werden Datenpakete in der Eingabe-Daten-Warteschlange 88 und der Ausgabe-Daten-Warteschlange 90 gepuffert, bis die Daten über den SMP-Bus 60 bzw. das Netzwerk 14 übertragen werden können.
  • Die SMP-Ausgangswarteschlange 92, die SMP-Eingangswarteschlange 94 und die SMP-I/O-Eingangswarteschlange (PIQ) 96 werden benutzt, um Adreßtransaktionen zum und vom Adreßbus 58 zu puffern. Die SMP-Ausgangswarteschlange 92 puffert Transaktionen, die von der Systemschnittstelle 24 auf dem Adreßbus 58 überreicht werden. Erneut ausgegebene Transaktionen, die als Reaktion auf den Abschluß einer Kohärenzaktivität mit Bezug auf eine ignorierte Transaktion in eine Warteschlange gestellt werden, werden in der SMP-Ausgangswerteschlange 92 gepuffert. Darüber hinaus werden Transaktionen, die als Reaktion auf eine vom Netzwerk 14 empfangene Kohärenzaktivität erzeugt werden, in der SMP-Ausgangswarteschlange 92 gepuffert. Die SMP-Eingangswarteschlange 94 speichert kohärenzbezogene Transaktionen, die von der Systemschnittstelle 24 zu bedienen sind. Umgekehrt speichert die SMP- PIQ 96 I/O-Transaktionen, die an eine I/O-Schnittstelle, die sich in einem anderen SMP-Knoten 12 befindet, zu übermitteln sind. I/O-Transaktionen werden generell als nicht-kohärent betrachtet und erzeugen daher keine Kohärenzaktivitäten.
  • Die SMP-Eingangswarteschlange 94 und die SMP-PIQ 96 empfangen Transaktionen, die in eine Warteschlange einzufügen sind, von einem Transäktionsfilter 98. Der Transaktionsfilter 98 ist an das MTAG 68 und den SMP-Adreßbus 58 angeschlossen. Wenn der Transaktionsfilter 98 eine I/O-Transaktion auf dem Adreßbus 58 entdeckt, die eine I/O-Schnittstelle auf einem anderen SMP-Knoten 12 bezeichnet, stellt der Transaktionsfilter 98 die Transaktion in die SMP- PIQ 96. Wenn eine Kohärenztransaktion zu einer LPA-Adresse vom Transaktionsfilter 98 entdeckt wird, dann wird der entsprechende Kohärenzzustand von dem MTAG 68 überprüft. Entsprechend dem Kohärenzzustand kann der Transaktionsfilter 98 das Ignoriersignal 70 setzen und kann eine Kohärenztransaktion in die SMP-Eingangswarteschlange 94 einstellen. Es wird das Ignoriersignal 70 gesetzt und eine Kohärenztransaktion in die Warteschlange eingestellt, wenn das MTAG 68 anzeigt, daß der SMP-Knoten 12A ungenügende Zugriffsrechte auf die Kohärenzeinheit zum Durchführen der Kohärenztransaktion hält. Umgekehrt wird das Ignoriersignal 70 zurückgesetzt: und keine Kohärenztransaktion erzeugt, wenn das MTAG 68 anzeigt, daß ein ausreichendes Zugriffsrecht vom SMP-Knoten 12A gehalten wird.
  • Transaktionen von der SMP-Eingangswarteschlange 94 und der SMP-PIQ 96 werden von einem Anforderungsagenten 100 innerhalb der Systemschnittstelle 24 verarbeitet. Vor der Aktion des Anforderungsagenten 100 übersetzt die LPA2GA-Übersetzungseinheit 82 die Adresse der Transaktion (wenn sie eine LPA-Adresse ist) von einer lokalen, physikalischen Adresse, die auf dem SMP-Adreßbus 58 präsentiert wird, in die entsprechende globale Adresse. Der Anforderungsagent 100 erzeugt dann ein Headerpaket, das eine bestimmte Kohärenzanforderung bezeichnet, die zum Heimatknoten zu übertragen ist, der durch die globale Adresse bestimmt wird. Die Kohärenzanforderung wird in die Ausgabe-Header-Warteschlange 86 eingestellt. Anschließend wird eine Kohärenzantwort in die Eingabe-Header-Warteschlange 84 empfangen. Der Anforderungsagent 100 verarbeitet die Kohärenzantworten aus der Eingabe-Header-Warteschlange 84, wobei er möglicherweise erneut ausgegebene Transaktionen für die SMP-Ausgangswarteschlange 92 erzeugt (wie unten beschrieben).
  • Ebenso sind in der Systemschnittstelle 24 ein Heimatagent 102 und ein abhängiger Agent 104 enthalten. Der Heimatagent 102 verarbeitet Kohärenzanforderungen, die aus der Eingabe-Header-Warteschlange 84 empfangen werden. Aus der Kohärenzinformation, die im Verzeichnis 66 mit Bezug auf eine bestimmte globale Adresse gespeichert ist, bestimmt der Heimatagent 102, ob eine Kohärenzaufforderung bzw. -anfrage an einen oder mehrere abhängige Agenten in anderen SMP-Knoten 12 zu übertragen ist. Nach einer Ausführungsform blockiert bzw. sperrt der Heimatagent 102 die Kohärenzinformation, die der betroffenen Kohärernzeinheit entspricht. Mit anderen Worten werden nachfolgende Anforderungen, welche die Kohärenzeinheit einbeziehen, nicht durchgeführt, bis die Kohärenzaktivität, die der Kohärenzanforderung entspricht, abgeschlossen ist. Gemäß einer Ausführungsform empfängt der Heimatagent 102 einen Kohärenzabschluß vom Anforderungsagenten, der die Kohärenzanforderung eingeleitet hat (über die Eingabe-Header-Warteschlange 84). Der Kohärenzabschluß zeigt an, daß die Kohärenzaktivität abgeschlossen ist. Beim Empfang des Kohärenzabschlusses entfernt der Heimatagent 102 die Blockierung bzw. Sperre auf der Kohärenzinformation, die der betroffenen Kohärenzeinheit entspricht. Es wird darauf hingewiesen, daß der Heimatagent 102 die Kohärenzinformation entsprechend der durchgeführten Kohärenzaktivität sofort aktualisieren kann, wenn die Kohärenzanforderung empfangen wurde, da die Kohärenzinformation bis zum Abschluß der Kohärenzaktivität gesperrt ist.
  • Der abhängige Agent 104 empfängt Kohärenzaufforderungen bzw. -anfragen von Heimatagenten anderer SMP-Knoten 12 über die Eingabe-Header-Warteschlange 84. Als Reaktion auf eine bestimmte Kohärenzaufforderung kann der abhängige Agent 104 eine Kohärenztransaktion in die SMP-Ausgangswarteschlange 92 stellen. Nach einer Ausführungsform kann die Kohärenztransaktion veranlassen, daß die Cachespeicher 18 und die internen Cachespeicher der Prozessoren 16 die betroffene Kohärenzeinheit ungültig machen. Wenn eine Kohärentzeinheit in den Cachespeichern mödifiziert wird, werden die geänderten Daten an die Systemschnittstelle 24 übertragen. Alternativ kann die Kohärenztransaktion veranlassen, daß die Cachespeicher 18 und die internen Cachespeicher der Prozessoren 16 den Kohärenzzustand der Kohärenzeinheit auf "gemeinsäm genutzt" ändern. Sobald der abhängige Agent 104 die Aktivität als Reaktion auf eine Kohärenzanfrage abgeschlossen hat, sendet der abhängige Agent 104 eine Kohärenzantwort an den Anforderungsagenten, der die Kohärenzanforderung, die der Kohärenzanfrage entspricht, eingeleitet hat. Die Kohärenzantwort wird in die Ausgabe-Header-Warteschlange 86 gestellt. Bevor Aktivitäten als Reaktion auf eine Kohärenzanfrage durchgeführt werden, wird die globale Adresse, die mit der Kohärenzanfrage empfangen wurde, mittels der GA2LPA Übersetzungseinheit 80 in eine lokale, physikalische Adresse übersetzt.
  • Gemäß einer Ausführungsform beinhaltet das Kohärenzprtokoll, das von dem Anforderungsagenten 100, dem Heimatagenten 102 und dem abhängigen Agenten 104 durchgeführt wird, eine Strategie zum Ungültigmachen von Schreibvorgängen bzw. eine Write Invalidate Policy. Mit anderen Worten werden in dem Fall, daß ein Prozessor 16 innerhalb eines SMP-Knotens 12 eine Kohärenzeinheit aktualisiert, alle Kopien der Kohärenzeinheit, die innerhalb von anderen SMP- Knoten 12 gespeichert sind, ungültig gemacht. Es können jedoch in anderen Ausführungsformen andere Schreibstrategien verwendet werden. Zum Beispiel kann eine Strategie zum Aktualisieren beim Schreiben bzw. Write Update Policy angewandt werden. Gemäß einer Strategie zum Aktualisieren beim Schreiben werden dann, wenn eine Kohärenzeinheit aktualisiert wird, die aktualisierten Daten an jede der Kopien der Kohärenzeinheit, die in jedem von den SMP-Knoten 12 gespeichert werden, übertragen.
  • Wenden wir uns als nächstes 4 zu, einem Diagramm, das typische Kohärenzaktivitäten darstellt, die zwischen dem Anforderungsagenten 100 eines ersten SMP-Knotens 12A–12D (dem "anfordernden Knoten"), einem Heimatagenten 102 eines zweiten SMP-Knotens 12A–12D (dem "Heimatknoten") und dem abhängigen Agenten 104 eines dritten SMP-Knotens 12A–12D (dem "abhängigen Knoten") als Reaktion auf eine bestimmte Transaktion auf dem SMP-Bus 20 innerhalb des SMP-Knotens 12, der dem Anforderungsagenten 100 entspricht, durchgeführt werden. Spezifische Kohärenzaktivitäten, die entsprechend einer Ausführungsform des in 4 abgebildeten Computersystems 10 verwendet werden, sind unten unter Bezug auf die 913 weiter beschrieben. Die Bezugszahlen 100, 102 und 104 werden verwendet, um Anforderungsagenten, Heimatagenten und abhängige Agenten für den Rest dieser Beschreibung zu bezeichnen. Es versteht sich, daß dann, wenn ein Agent mit einem anderen Agenten kommuniziert, sich die beiden Agenten häufig in verschiedenen SMP-Knoten 12A–12D befinden.
  • Beim Empfang einer Transaktion vom SMP-Bus 20 bildet der Anforderungsagent 100 eine für die Transaktion geeignete Kohärenzanforderung und überträgt die Kohärenzanforderung an den Heimatagent, der der Adresse der Transaktion entspricht (Bezugszahl 110). Die Kohärenzanforderung gibt sowohl das vom Anforderungsagenten 100 angeforderte Zugriffsrecht als auch die globale Adresse der betroffenen Kohärenzeinheit an. Das angeforderte Zugriffsrecht ist ausreichend, um das Auftreten der Transaktion zu erlauben, die in demjenigen SMP-Knoten 12 versucht wird, der dem Anforderungsagenten 100 entspricht.
  • Beim Empfang der Kohärenzanforderung greift der Heimatagent 102 auf das zugehörige Verzeichnis 66 zu und stellt fest, welche SMP-Knoten 12 Kopien der betroffenen Kohärenzeinheit speichern. Darüber hinaus stellt der Heimatagent 102 den Besitzer der Kohärenzeinheit fest. Der Heimatagent 102 kann eine Kohärenzanfrage sowohl an die abhängigen Agenten 104 jedes der Knoten, welche Kopien der betroffenen Kohärenzeinheit speichern, als auch an den abhängigen Agenten 104 des Knotens, der den Kohärenzzustand "in Besitz" für die betroffene Kohärenzeinheit . hält, stellen (Bezugszahl 112) Die Kohärenzanfragen zeigen den neuen Kohärenzzustand für die betroffene Kohärenzeinheit in den empfangenden SMP-Knoten 12 an. Während die Kohärenzanforderung aussteht, blockiert der Heimatagent 102 die Kohärenzinformation, die der betroffenen Kohärenzeinheit entspricht, so daß nachfolgende Kohärenzanforderungen, welche die betroffene Kohärenzeinheit einbeziehen, vom Heimatagenten 102 nicht eingeleitet werden. Der Heimatagent 102 aktualisiert darüber hinaus die Kohärenzinformation, um den Abschluß der, Kohärenzanforderung widerzuspiegeln.
  • Der Heimatagent 102 kann darüber hinaus eine Kohärenzantwort an den Anforderungsagenten 100 übermitteln (Bezugszahl 114). Die Kohärenzantwort kann die Anzahl der Kohärenzantworten, die von den abhängigen Agenten 104 anstehen bzw. kommen werden, anzeigen. Alternativ können gewisse Transaktionen ohne Interaktion mit den abhängigen Agenten 104 abgeschlossen werden. Zum Beispiel kann eine I/O-Transaktion, die an eine I/O-Schnittstelle 26 in dem SMP-Knoten 12 gerichtet ist, der den Heimatagenten 102 enthält, vom Heimatagenten 102 abgeschlossen werden. Der Heimatagent 102 kann eine Transaktion für den zugeordneten SMP-Bus 20 in eine Warteschlange einreihen (Bezugszahl 116) und dann eine Antwort übermitteln, die anzeigt, daß die Transaktion abgeschlossen ist.
  • Ein abhängiger Agent 104 kann als Reaktion auf eine Kohärenzanfrage vom Heimatagenten 102 eine Transaktion zum Anbieten bzw. zur Übergabe auf dem zugeordneten SMP-Bus 20 in eine Warteschlange einreihen (Bezugszahl 118). Darüber hinaus übermitteln die abhängigen Agenten 104 eine Kohärenzantwort an den Anforderungsagenten 100 (Bezigszahl 120). Die Kohärenzantwort zeigt an, daß die Kohärenzanfrage, die als Reaktion auf eine bestimmte Kohärenzanforderung empfangen wurde, von diesem abhängigen Agenten abgeschlossen wurde. Die Kohärenzantwort wird von den abhängigen Agenten 104 übermiettelt, wenn die Kohärenzanfrage abgeschlossen wurde, oder zu einem solchen Zeitpunkt vor Abschluß der Kohärenzanfrage, zu dem bezüglich der Kohärenzanfrage sichergestellt ist, daß sie auf dem entsprechenden SMP-Knoten 12 fertiggestellt wird und zu dem keine Zustandsänderungen an der betroffenen Kohärenzeinheit vor Abschluß der Kohärenzanfrage mehr durchgeführt werden.
  • Wenn ein Anforderungsagent 100 eine Kohärenzantwort von jedem der betroffenen abhängigen Agenten 104 empfangen hat, übermittelt der Anforderungsagent 100 einen Kohärenzabschluß an den Heimatagenten 102 (Bezugszahl 122). Beim Empfang des Kohärenzabschlusses entfernt der Heimatagent 102 die Sperre von der entsprechenden Kohärenzinformation. Der Anforderungsagent 100 kann eine Neuausgabe- bzw. erneut ausgegebene Transaktion zur Durchführung auf dem SMP-Bus 20 in eine Warteschlange einreihen, um die Transaktion innerhalb des SMP-Knotens 12 abzuschließen (Bezugszahl 124).
  • Es ist darauf hinzuweisen, daß jeder Kohärenzanforderung vom Anforderungsagenten 100, der die Kohärenzanforderung ausgibt, ein eindeutiges Tag zugewiesen wird. Anschließende Kohärenzanfragen, Kohärenzantworten und Kohärenzabschlüsse enthalten das Tag. Auf diese Weise kann eine Kohärenzaktivität bezüglich einer bestimmten Kohärenzanforderung von jedem der beteiligten Agenten identifiziert werden. Es wird weiterhin darauf hingewiesen, daß nicht- kohärente Operationen als Reaktion auf nicht-kohärente Transaktionen (z. B. I/O-Transaktionen) durchgeführt werden können. Nicht- kohärente Operationen können nur den anfordernden Knoten und den Heimatknoten einbeziehen. Darüber hinaus kann ein anderes bzw. unterschiedliches, eindeutiges Tag jeder Kohärenzanforderung durch den Heimatagenten 102 zugewiesen werden. Das andere Tag bezeichnet den Heimatagenten 102 und wird für den Kohärenzabschluß an Stelle des Anforderertags verwendet.
  • Gemäß 5 ist ein Diagramm dargestellt, das Kohärenzaktivitäten als Reaktion auf eine Lesen-um-zu-Besitzen- bzw. Read-To-Own-Transaktion auf dem SMP-Bus 20 für eine beispielhafte Ausführungsform des Computersystems 10 zeigt. Eine Read-To-Own-Transaktion wird durchgeführt, wenn ein Cachefehlschlag für ein bestimmtes Datenelement, das von einem Prozessor 16 angefordert wird, entdeckt wird, und der Prozessor 16 Schreibberechtigung für die Kohärenzeinheit anfordert. Ein Fehlschlag beim Speichern in den Cache kann zum Beispiel eine Read-To-Own-Transaktion erzeugen.
  • Ein Anforderungsagent 100, ein Heimatagent 102 und einige abhängige Agenten 104 sind in 5 abgebildet. Der Knoten, der die Read-To-Own-Transaktion vom SMP-Bus 20 empfängt, speichert die betroffene Kohärenzeinheit im Zustand "ungültig" (z. B., ist die Kohärenzeinheit nicht in dem Knoten gespeichert). Der Index "i" im Anforderungsknoten 100 zeigt den Zustand "ungültig" bzw. "invalid" an. Der Heimatknoten speichert die Kohärenzeinheit im Zustand "gemeinsam genutzt", und die Knoten, die den verschiedenen abhängigen Agenten 104 entsprechen, speichern die Kohärenzeinheit gleichfalls im Zustand "gemeinsam genutzt". Der Index "s" im Heimatagenten 102 und den abhängigen Agenten 104 ist ein Hinweis auf den Zustand "gemeinsam genutzt" bzw. "shared" in diesen Knoten. Die Read-To-Own-Transaktion veranlaßt die Übertragung der angeforderten Kohärenzeinheit an den anfordernden Knoten. Der anfordernde Knoten empfängt die Kohärenzeinheit im Zustand "modifiziert".
  • Beim Empfang der Read-To-Own-Transaktion vom SMP-Bus 20 überträgt der Anforderungsagent 100 eine Read-To-Own-Kohärenzanforderung an den Heimatknoten der Kohärenzeinheit (Bezugszahl 130). Der Heimatagent 102 in dem empfangenden Heimatknoten erkennt den Zu stand "gemeinsam genutzt" für einen oder mehrere andere Knoten. Da die abhängigen Agenten alle im Zustand "gemeinsam genutzt" und nicht im Zustand "im Besitz" sind, kann der Heimatknoten die angeforderten Daten direkt zur Verfügung stellen. Der Heimatagent 102 übermittelt eine Daten-Kohärenzantwort an den Anforderungsagenten 100, welche die der angeforderten Kohärenzeinheit entsprechenden Daten enthält (Bezugszahl 132). Darüber hinaus gibt die Daten-Kohärenzantwort die Anzahl von Bestätigungen an, die von abhängigen Agenten anderer Knoten zu empfangen sind; bevor der Anforderungsagent 100 die Daten in Besitz nimmt. Der Heimatagent 102 aktualisiert das Verzeichnis 66, um anzuzeigen, daß der anfordernde SMP-Knoten 12A–12D der Besitzer der Kohärenzeinheit ist und daß jeder der anderen SMP-Knoten 12A–12D ungültig ist. Wenn die Kohärenzinformation bezüglich der Kohärenzeinheit beim Empfang eines Kohrenzabschlusses vom Anforderungsagenten 100 entsperrt wird, stimmt das Verzeichnis 66 mit dem Zustand der Kohärenzeinheit in jedem SMP-Knoten 12 überein.
  • Der Heimatagent 102 übermittelt Kohärenzanfragen zum Ungültigmachen an jeden der abhängigen Agenten 104, die gemeinsam genutzte Kopien der betroffenen Kohärenzeinheit halten (Bezugszahlen 134A, 134B und 134C). Die Kohärenzanfrage zum Ungültigmachen veranlagt den empfangenden abhängigen Agenten dazu, die entsprechende Kohärenzeinheit innerhalb des Knotens ungültig zu machen und eine Kohärenzantwort zur Bestätigung an den anfordernden Knoten zu senden, die den Abschluß des Ungültigmachens anzeigt. Jeder abhängige Agent 104 bringt das Ungültigmachen der Kohärenzeinheit zum Abschluß und übermittelt anschließend eine Kohärenzantwort zur Bestätigung (Bezugszahlen 136A, 136B und 136C). Nach einer Ausführungsform beinhaltet jede der Bestätigungsantworten eine Zahl der Gesamtanzahl von Antworten, die vom Anforderungsagenten 100 mit Bezug auf die Kohärenzeinheit zu empfangen sind.
  • Im Anschlug an das Empfangen aller Kohärenzantworten zur Bestätigung von den abhängigen Agenten 404 und der Daten-Kohärenzantwort vom Heimatagenten 102 überträgt der Anforderungsagent 100 einen Kohärenzabschluß an den Heimatagenten 102 (Bezugszahl 138). Der Anforderungsagent 100 erklärt die Kohärenzeinheit innerhalb seines lokalen Speichers für gültig und der Heimatagent 102 gibt die Sperre auf der entsprechenden Kohärenzinformation frei. Es ist darauf hinzuweisen, daß die Daten-Kohärenzantwort 132 und die Kohärenzantworten zur Bestätigung 136 in jeder beliebigen Reihenfolge empfangen werden können, unter anderem abhängig von der Anzahl von ausstehenden Transaktionen innerhalb jedes Knotens.
  • Gemäß 6 ist ein Flugdiagramm 140 dargestellt, das einen beispielhaften Zustandsautomaten bzw. endlichen Automaten zur Verwendung durch den Anforderungsagenten 100 zeigt. Der Anforderungsagent 100 kann mehrere unabhängige Kopien des durch das Flugdiagramm 140 dargestellten endlichen Automaten enthalten, so daß mehrere Anforderungen gleichzeitig bzw.
  • nebenläufig verarbeitet werden können.
  • Beim Empfang einer Transaktion von der SMP-Eingangswarteschlange 94 nimmt der Anforderungsagent 100 einen Zustand "Anforderung bereit" bzw. "Request Ready" 142 ein. Im Zustand "Request Ready" 142 übermittelt der Anforderungsagent 100 eine Kohärenzanforderung an den Heimatagenten 102, der sich in dem Heimatknoten befindet, der dur ch die globale Adresse der be troffenen Kohärenzeinheit angegeben ist. Bei der Übermittlung der Kohärenzanforderung, geht der Anforderungsagent 100 in einen Zustand "Anforderung aktiv" bzw. "Request Active" 144 über. Während des Zustands "Request Active" 144 empfängt der Anforderungsagent 100 Kohärenzantworten von den abhängigen Agenten 104 (und optional vom Heimatagenten 102). Wenn alle Kohärenzantworten empfangen wurden, geht der Anforderungsagent 100 in einen neuen Zustand über, der von der Art der Transaktion abhängt, welche die Kohärenzaktivität eingeleitet hat. Darüber hinaus kann der Zustand "Request Active" 142 (Anforderung aktiv) einen Timer verwenden, um zu erkennen, daß die Kohärenzantworten nicht innerhalb einer vordefinierten Zeitüberwachungsdauer empfangen wurden. Wenn der Timer vor Empfang der Anzahl von Antworten, die vom Heimatagenten 102 angegeben wurde, ausläuft, geht der Anforderungsagent 100 zu einem Fehlerzustand (nicht abgebildet) über. Darüber hinaus können gewisse Ausführungsformen eine Antwort verwenden, die anzeigt, daß eine Leseübertragung fehlgeschlagen ist. Wenn eine solche Antwort empfangen wird, geht der Anforderungsagent 100 zum Zustand "Anforderung bereit" bzw. "Request Ready" 142 über, um den Lesevorgang erneut zu versuchen.
  • Wenn die Antworten ohne Fehler oder Zeitüberschreitung empfangen werden, dann ist der Zustand, in den vom Anforderungsagent 100 bei Lesetransaktionen übergegangen wird, der Zustand "Lesen abgeschlossen" bzw. "Read Complete" 146. Es wird darauf hingewiesen, daß bei Lesetransaktionen eine der empfangenen Antworten die Daten, die der angeforderten Kohärenzeinheit entsprechen, enthalten kann. Der Anforderungsagent 100 gibt die Lesetransaktion auf dem SMP-Bus 20 erneut aus und übermittelt darüber hinaus den Kohärenzabschluß an den Heimatagenten 102. Anschließend geht der Anforderungsagent 100 in einen Zustand "Leerlauf' bzw. "Idle" 148 über. Eine neue Transaktion kann dann vom Anforderungsagenten 400 unter Verwendung des in 6 dargestellten endlichen Automaten bedient werden.
  • Umgekehrt werden die Zustände, "Schreiben aktiv" bzw. "Write Active" 150 und "Ignorteren Schreibvorgang neu ausgeben" bzw. "Ignored Write Reissue" 152 bei Schreibtransaktionen verwendet. Das Ignoriersignal 70 wird bei gewissen Schreibtransaktionen im Computersystem 10 nicht gesetzt, sogar wenn eine Kohärenzaktivität auf dem Netzwerk 14 eingeleitet wird. Zum Beispiel werden I/O-Schreibtransaktionen nicht ignoriert. Die Schreibdaten werden an die Systemschnittstelle 24 übertragen und dort gespeichert. Der Zustand "Write Active" 150 wird für nicht-ignorierte Schreibtransaktionen verwendet, um die Übertragung der Daten an die Systemschnittstelle 24 zu ermöglichen, wenn die Kohärenzantworten vor der Datenphase der Schreibtransaktion auf dem SMP-Bus 20 empfangen werden. Sobald die entsprechenden Daten empfangen wurden, geht der Anforderungsagent 100 in den Zustand "Schreiben abgeschlossen" bzw. "Write complete" 154 über. Während des Zustands "Write complete" 154 wird die Kohärenzabschlußantwort an den Heimatagenten 102 übermittelt. Anschließend geht der Anforderungsagent 100 in den Zustand "Idle" 148 über.
  • Ignorierte Schreibtransaktionen werden mittels eines Übergangs in den Zustand "Ignoriertes Schreiben neu ausgeben" bzw. "Ignored Write Reissue" 152 behandelt. Während des Zustands "Ignored Write Reissue" 152 gibt der Anforderungsagent 100 die ignorterte Schreibtransaktion erneut auf dem SMP-Bus 20 aus. Auf diese Weise können die Schreibdaten vom Ursprungsprozessor 16 übertragen und die entsprechende Schreibtransaktion vom Prozessor 16 freigegeben werden. Abhängig davon, ob die Schreibdaten mit dem Kohärenzabschluß übertragen werden sollen oder nicht, geht der Anforderungsagent 100 entweder in den Zustand "Ignoriertes Schreiben aktiv" bzw. "Ignored Write Active" 156 oder in den Zustand "Ignoriertes Schreiben abgeschlossen" bzw: "Ignored Write Complete" 158 über. Der Zustand "Ignored Write Active" 156 wird ähnlich wie der Zustand "Write Active" 150 verwendet, um die Datenübertragung vom SMP-Bus 20 abzuwarten. Während des Zustands "Ignored Write Complete" 158 wird der Kohärenzabschluß an den Heimatagenten 102 übertragen. Im Anschluß daran geht der Anforderungsagent 100 in den Zustand "Idle" 148 über. Vom Zustand "Idle" 148 geht der Anforderungsagent 100 beim Empfang einer Transaktion von der SMP-Eingangswarteschlange 94 in den Zustand "Request Read" 142 über.
  • Gemäß 7 ist ein Flußdiagramm 160 dargestellt, das einen beispielhaften endlichen Automaten für den Heimatagenten 102 zeigt. Der Heimatagent 102 kann mehrere unabhängige Kopien des durch das Flußdiagramm 160 dargestellten endlichen Automaten enthalten, um zu ermöglichen, daß mehrere ausstehende Anforderungen an den Heimatagenten 102 verarbeitet werden können. Gemäß einer Ausführungsform betreffen die mehreren ausstehenden Anforderungen jedoch nicht dieselbe Kohärenzeinheit.
  • Der Heimatagent 102 empfängt Kohärenzanforderungen in einem Zustand "Anforderung empfangen" bzw. "Receive Request" 162. Die Anforderung kann entweder als eine kohärente Anforderung oder als eine andere Transaktionsanforderung klassifiziert werden. Andere Transaktionsanforderungen können gemäß einer Ausführungsform I/O-Lese- und I/O-Schreibanforderungen, Unterbrectnungs- bzw. Interruptanforderungen und Verwaltungsanforderungen umfassen. Die nichtkohärenten Anforderungen werden durch Übertragen einer Transaktion über den SMP-Bus 20 während eines Zustands 164 behandelt. Ein Kohärenzabschluß wird im Anschluß daran übertragen. Auf das Empfangen des Kohärenzabschlusses hin führen I/O-Schreib- und angenommene bzw. akzeptierte Unterbrechungstransaktionen im Heimatknoten zur Übertragung einer Datentransaktion über den SMP-Bus 20 (d. h. Zustand "nur Daten" bzw. "Data Only" 165). Wenn die Daten übertragen wurden, geht der Heimatagent 102 in den Zustand "Idle" 166 über. alternativ verursachen I/O-Lese-, Verwaltungs- und zurückgewiesene Unterbrechungstransaktionen auf den Empfang des Kohärenzabschlusses hin einen Übergang in den Zustand "Idle" 166.
  • Umgekehrt geht der Heimatagent 102 beim Empfang einer Kohärenzanforderung in einen Prüfzustand 188 über. Der Prüfzustand 188 wird verwendet, um zu erkennen, ob eine Kohärenzaktivität für die von der Kohärenzanforderung betroffene Kohärenzeinheit im Gange ist. Wenn die Kohärenzaktivität im Gange ist (d. h. die Kohärenzinformation gesperrt ist), dann bleibt der Heimatagent 402 im Prüfzustand 468, bis die im Gange befindliche Kohärenzaktivität zu Ende geht. Der Heimatagent 102 geht im Anschluß daran in einen Setzzustand 470 über.
  • Während des Setzzustands 170 setzt der Heimatagent 102 den Zustand des Verzeichniseintrages, der die Kohärenzinformation, die der betroffenen Kohärenzeinheit entspricht, auf "gesperrt" bzw. "blockiert". Der Zustand "gesperrt" verhindert, daß ein nachfolgende Aktivität auf der betroffenen Kohärenzeinheit weitergeht bzw. weiter abläuft, wodurch das Kohärenzprotokoll des Computer systems 10 vereinfacht wird. Abhängig von, ob es sich bei der Transaktion, die der empfangenen Kohärenzanforderung entspricht, um eine Lese- oder Schreibtransaktion handelt, geht der Heimatagent 102 in den Zustand "Lesen" bzw. "Read" 172 oder den Zustand "Antwort schreiben" bzw. "Write Reply " 174 über.
  • Während der Heimatagent 102 im Zustand "Read" 172 ist, gibt er Kohärenzanfragen an abhängige Agenten 104 aus, die bezogen auf die Lesetransaktion zu aktualisieren sind. Der Heimatagent 102 bleibt im Zustand "Read" 172, bis ein Kohärenzabschluß vom Anforderungsagenten 100 empfangen wird, worauf der Heimatagent 102 in den Zustand "Blockierungszustand aufheben" bzw. "Clean Block Status" 176 übergeht. In Ausführungsformen, in denen eine Kohärenzanforderung für einen Lesevorgang scheitern kann, setzt der Heimatagent 102 den Zustand des betroffenen Verzeichniseintrages beim Empfang eines Kohärenzabschlusses, der ein Scheitern der Lesetransaktion anzeigt, auf den Zustand vor der Kohärenzanforderung zurück.
  • Während des Schreibzustands 174 übermittelt der Heimatagent 102 eine Kohärenzantwort an den Anforderungsagenten 100. Der Heimatagent 102 bleibt im Zustand "Write Reply" 174, bis ein Kohärenzabschluß vom Anforderungsagenten 100 empfangen wird. Wenn Daten mit dem Kohärenzabschluß empfangen werden, geht der Heimatagent 102 in den Zustand "Daten schreiben" bzw. "Write Data" 178 über. Alternativ geht der Heimatagent 102 beim Empfang eines keine Daten enthaltenden Kohärenzabschlusses in den Zustand "Clear Block Status" 176 über.
  • Der Heimatagent 102 gibt eine Schreibtransaktion auf dem SMP-Bus 20 während des Zustands "Write Data" 178 heraus, um die empfangenen Schreibdaten zu übertragen. Zum Beispiel führt eine Schreibstrom- bzw. Write-Stream-Operation (unten beschrieben) zu einer Datenübertragung von Daten an den Heimatagenten 102. Der Heimatagent 102 übermittelt die empfangenen Daten an den Speicher 22 zum Speichern. Anschließend geht der Heimatagent 102 in den Zustand "Clean Block Status" 176 über.
  • Der Heimatagent 102 löscht im Zustand "Clear Block Status" 176 den Zustand "blockiert" der Kohärenzinformation, die der von der empfangenen Kohärenzanforderung betroffenen Kohärenzeinheit entspricht. Auf die Kohärenzinformation kann anschließend zugegriffen werden. Der Zustand, der innerhalb der nicht-blockierten Kohärenzinformation gefunden wird, spiegelt die durch die zuvor empfangene Kohärenzanforderung eingeleitete Kohärenzaktivität wider. Nach dem Löschen des Zustandes "blockiert" der entsprechenden Kohärenzinformation geht der Heimatagent 102 in den Zustand "Idle" 166 über. Vom Zustand "Idle" 166 geht der Heimatagent 102 beim Empfang einer Kohärenzanforderung in den Zustand "Receive Request" 162 über.
  • Gemäß 8 ist ein Flußdiagramm 180 dargestellt, das einen beispielhaften endlichen Automaten bzw. eine Zustandsmaschine für den abhängigen Agenten 104 zeigt. Der abhängige Agent 104 empfängt Kohärenzanfragen während eines Zustandes "Empfangen" bzw. "Receive" 182. Als Reaktion auf eine Kohärenzanfrage kann der abhängige Agent 104 eine Übergabetransaktion auf dem SMP-Bus 20 in eine Warteschlange einreihen. Die Transaktion führt zu einem Zustandswechsel in den Cachespeichem 18 und den internen Cachespeichern der Prozessoren 16 entsprechend der empfangenen Kohärenzanfrage. Der abhängige Agent 104 reiht die Transaktion während des Zustands "Anforderung senden" bzw. "Send Request" 484 in eine Warteschlange ein.
  • Während des Zustands "Antwort senden" bzw. "Send Reply" 186, übermittelt der abhängige Agent 104 eine Kohärenzantwort an den Anforderungsagenten 100, der die Transaktion eingeleitet hat. Es wird darauf hingewiesen, daß entsprechend verschiedenen Ausführungsformen der abhängige Agent 104 beim Einstellen der Transaktion in eine Warteschlage für den SMP-Bus 20 oder beim erfolgreichen Abschluß der Transaktion auf dem SMP-Bus 20 vom Zustand "Send Request" 184 in den Zustand "Send Reply" 186 übergehen kann. Im Anschluß an die Übertragung der Kohärenzantwort geht der abhängige Agent 104 in einen Zustand "Idle" 188 über. Vom Zustand "Idle" 188 kann der abhängige Agent 104 beim Empfang einer Kohärenzanfrage in den Zustand "Receive" 182 übergehen.
  • Gemäß den 9-12 sind verschiedene Tabellen dargestellt, die beispielhafte Typen von Kohärenzanforderungen, Kohärenzanfragen, Kohärenzantworten und Kohärenzabschlüssen auflisten. Die in den Tabellen aus den 9-12 abgebildeten Typen können von einer Ausführungsform des Computersystems 10 verwendet werden. Andere Auführungsformen können andere Sätze von Typen verwenden.
  • 9 ist eine Tabelle 190, die die Typen von Kohärenzanforderungen auflistet. Eine erste Spalte 192 listet einen Code für jeden Anforderungstyp auf, der in 13 unten verwendet wird. Eine zweite Spalte 194 listet die Typen von Kohärenzanforderungen auf, und eine dritte Spalte 196 gibt den Verursacher bzw. Absender der Kohärenzanforderung an. Ähnliche Spalten werden in den 1012 für Kohärenzanfragen, Kohärenzantworten und Kohärenzabschlüsse verwendet. Ein "R" zeigt den Anforderungsagenten 100 an, ein "S" zeigt den abhängigen Agenten 104 an, und ein "H" zeigt den Heimatagenten 102 an.
  • Eine Lesen-um-gemeinsam-zu-Nutzen- bzw. Read-To-Share-Anforderung wird durchgeführt, wenn eine Kohärenzeinheit in einem bestimmten SMP-Knoten nicht vorliegt und die Beschaffenheit bzw. das Wesen der Transaktion vom SMP-Bus 20 an die Kohärenzeinheit anzeigt, daß ein Lesezugriff auf die Kohärenzeinheit gewünscht wird. Zum Beispiel kann eine im Cache speicherbare Lesetransaktion zu einer Read-To-Share-Anforderung führen. Allgemein gesprochen ist eine Read-To-Share-Anforderung eine Anforderung einer Kopie der Kohärenzeinheit im Zustand "gemeinsam genutzt". Ähnlich ist eine Read-To-Own-Anforderung eine Anforderung einer Kopie der Kohärenzeinheit im Zustand "in Besitz". Kopien eine Kohärenzeinheit in anderen SMP-Knoten sollten in den Zustand "ungültig" geändert werden. Eine Read-To-Own-Anforderung kann zum Beispiel als Reaktion auf einen Cachefehlschlag einer im Cache speicherbaren Schreibtransaktion durchgeführt werden.
  • Strom-Lesen bzw. Read-Stream und Strom-Schreiben bzw. Write-Stream sind Anforderungen, eine gesamte Kohärenzeinheit zu lesen oder zu (be)schreiben. Diese Operationen werden typischerweise für Blockkopier-Operationen verwendet. Die Prozessoren 16 und die Cachespeicher 18 speichern keine Daten im Cache, die als Reaktion auf eine Read-Stream- oder Write-Stream-Anforderung bereitgestellt werden. Stattdessen wird die Kohärenzeinheit im Fall einer Read-Stream-Anforderung als Daten dem Prozessor 16 übergeben oder die Daten werden im Fall einer Write- Stream-Anforderung in den Speicher 22 geschrieben. Es wird darauf hingewiesen, daß Read-To-Share-, Read-To-Own- und Read-Stream-Anforderungen als COMA-Operationen (z. B. RTS, RTO und RS) oder als NUMA-Operationen (z. B. RTSN, RTON und RSN) durchgeführt werden können.
  • Eine Zurückschreib- oder Write-Back-Anforderung wird durchgeführt, wenn eine Kohärenzeinheit in den Heimatknoten der Kohärenzeinheit zu schreiben ist. Der Heimatknoten antwortet mit der Berechtigung bzw. Erlaubnis, die Kohärenzeinheit zurückzuschreiben. Die Kohärenzeinheit wird dann mit dem Kohärenzabschluß an den Heimatknoten gereicht.
  • Die Anforderung zum Ungültigmachen bzw. die Invalidate-Anforderung wird durchgeführt, um zu veranlassen, daß Kopien einer Kohärenzeinheit in anderen SMP-Knoten ungültig gemacht werden. Ein typischer Fall, in dem eine Invalidate-Anforderung erzeugt wird, ist eine Write-Stream-Transaktion auf eine gemeinsam genutzte oder im Besitz befindliche Kohärenzeinheit. Die Write-Stream-Transaktion aktualisiert die Kohärenzeinheit, und daher werden Kopien der Kohärenzeinheit in anderen SMP-Knoten ungültig gemacht.
  • I/O-Lese- und -Schreib- bzw. I/O-Read- und -Write-Anforderungen werden als Reaktion auf I/O-Read- und -Write-Transaktionen übermittelt. I/O-Transaktionen sind nicht-kohärent (d. h. die Transaktionen werden nicht im Cache gespeichert und die Kohärenz wird für diese Transaktionen nicht beibehalten bzw. aufrecht erhalten). I/O-Blocktransaktionen übertragen einen größeren Teil bzw. eine größere Menge von Daten als normale I/O-Transaktionen. Nach einer Ausführungsform werden vierundsechzig Bytes an bzw. von Information in einer Blocke-I/O-Operation übertragen, während acht Bytes in einer Nicht-Block-I/O-Transaktion übertragen werden.
  • Ausspül- bzw. Flush-Anforderungen führen dazu, daß Kopien der Kohärenzeinheit ungültig gemacht werden. Modifizierte Kopien werden an den Heimatknoten zurückgegeben. Unterbrechungs- bzw. Interruptanforderungen werden verwendet, um Unterbrechungen bzw. Interrupts an ein bestimmtes Gerät bzw. eine bestimmte Einrichtung in einem entfernten SMP-Knoten zu signalisieren. Der Interrupt kann einem bestimmten Prozessor 16 übergeben werden, der als Reaktion auf den Interrupt eine Interrupt Service Routine ausführen kann, die an einer vordefinierten Adresse gespeichert ist. Administrative Pakete werden verwendet, um gewisse Arten von Rücksetzsignalen zwischen den Knoten zu senden.
  • 10 ist eine Tabelle 198, die beispielhafte Typen von Kohärenzanfragen auflistet. Ähnlich zur Tabelle 190 sind die Spalten 192, 194 und 196 in der Tabelle 198 enthalten. Eine Read-To-Share-Anfrage wird an den Besitzer einer Kohärenzeinheit übermittelt und veranlaßt den Besitzer dazu, die Daten an den anfordernden Knoten zu übertragen. Ähnlich veranlassen Read-To-Ownund Read-Stream-Anfrage den Besitzer der Kohärenzeinheit dazu, die Daten an den anfordernden Knoten zu übertragen. Darüber hinaus veranlaßt eine Read-To-Own-Anfrage den Besitzer dazu, den Zustand der Kohärenzeinheit im Besitzerknoten auf "ungültig" zu ändern. Read-Stream- und Read-To-Share-Anfragen veranlassen in dem Besitzerknoten einen Zustandswechsel zu "in Besitz" (von "modifiziert").
  • Invalidate-Anfragen veranlassen keine Übertragung der entsprechenden Kohärenzeinheit. Stattdessen führt eine Invalidate-Anfrage dazu, daß Kopien der Kohärenzeinheit ungültig gemacht werden. Schließlich werden administrative Anfragen als Reaktion auf administrative Anforderungen übertragen. Es wird darauf hingewiesen, daß jede der Anfragen vom Heimatagenten 102 als Reaktion auf eine Anforderung vom Anforderungsagenten 100 eingeleitet wird.
  • 11 ist eine Tabelle 200, die beispielhafte Antworttypen., die von einer Ausführungsform des Computersystems 10 verwendet werden, auflistet. Ähnlich zu den 9 und 10 enthält 11 die Spalten 192, 194 und 196 für die Kohärenzantworten.
  • Eine Datenantwort ist eine Antwort, welche die angeforderten Daten enthält. Der abhängige Agent, der Besitzer ist, übergibt bei Köhärenzanforderungen typischerweise die Datenantwort. Jedoch kann bei I/O-Leseanforderungen der Heimatagent die Daten übergeben.
  • Die Bestätigungsantwort zeigt an, daß eine mit einer bestimmten Kohärenzanforderung verbundene Kohärenzanfrage abgeschlossen ist. Typischerweise übergibt der abhängige Agent die Bestätigungsantworten, jedoch übergibt der Heimatagent die Bestätigungsantworten (zusammen mit Daten), wenn der Heimatagent der Besitzer der Kohärenzeinheit ist.
  • Abhängiger-Agent-nicht-Besitzer- bzw. Slave-Not-Owned-, Adresse-nicht-abgebildet- bzw. Address-Not-Mapped- und Fehler- bzw. Error-Antworten werden vom abhängigen Agenten 104 übertragen, wenn ein Fehler erkannt wird. Die Slave-Not-Owned-Antwort wird gesendet, wenn ein abhängiger Agent vom Heimatagenten 102 als Besitzer der Kohärenzeinheit bezeichnet wird und der abhängige Agent nicht mehr Besitzender Kohärenzeinheit ist. Die Address-Not-Mapped-Antwort wird gesendet, wenn der abhängige Agent eine Anfrage empfängt, für die kein Gerät bzw. keine Einrichtung auf dem entsprechenden SMP-Bus 20 die Besitzereigenschaft für sich in Anspruch nimmt. Andere vom abhängigen Agenten erkannte Fehlerbedingungen werden mittels der Fehlerantwort angezeigt.
  • Über die Fehlerantworten hinaus, die dem abhängigen Agenten 104 zur Verfügung stehen, kann der Heimatagent 102 Fehlerantworten tiefem. Die negative Bestätigungsantwort bzw. die Negative-Acknowledge (HACK) Antwort und die negative (NOPE) Antwort werden vom Heimatagenten 102 verwendet, um anzuzeigen, daß die entsprechende Anforderung keine Bedienung durch den Heimatagenten 102 erfordert. Die NACK-Transaktion kann verwendet werden, um anzuzeigen, daß die entsprechende Anforderung vom Heimatagenten zurückgewiesen wird. Zum Beispiel erhält eine Interrupt-Anfordenang ein NACK, wenn der Interrupt vom empfangenden Knoten zurückgewiesen wird. Eine Acknowledge- (ACK) Antwort wird übermittelt, wenn der Interrupt vom empfangenden Knoten akzeptiert wird. Die NOPE-Transaktion wird verwendet, um anzuzeigen, daß eine entsprechende Flush-Anforderung für eine Kohärenzeinheit übermittelt wurde, die nicht vom anfordernden Knoten gespeichert ist.
  • 12 ist eine Tabelle 202, die beispielhafte Typen von Kohärenzabschlüssen entsprechend einer Ausführungsform des Computersystems 10 darstellt. Ähnlich zu den 911 enthält 12 die Spalten 192, 194 und 196 für Kohärenzabschlüsse.
  • Ein Abschluß ohne Daten wird als ein Signal vom Anforderungsagenten 100 an den Heimatagenten 102 verwendet, daß eine bestimmte Anforderung abgeschlossen ist. Als Reaktion darauf entfernt der Heimatagent 402 die Sperre auf der entsprechenden Kohärenzinformation. Zwei Arten von Datenabschlüssen sind enthalten, die verschiedenen Transaktionen auf dem SMP-Bus 20 entsprechen. Eine Art von Neuausgabe-Transaktion bezieht nur eine Datenphase auf dem SMP-Bus 20 ein. Diese Neuausgabe-Transaktion kann nach einer Ausführungs form für I/O-Schreib- und Interrupt-Transaktionen verwendet werden. Die andere Art von Neuausgabe-Transaktion bezieht sowohl eine Adreß- als auch eine Datenphase ein. Kohärente Schreibvorgänge wie Write-Stream und Write-Back können die Neuausgabe-Transaktion, die sowohl Adreß- als auch Datenphasen umfaßt, verwenden. Schließlich ist für Leseanforderungen, die scheiterten, dein angeforderten Zustand zu erwerben, ein Abschluß, der das Scheitern bzw. Fehlschlagen anzeigt, enthalten.
  • Gemäß 13 ist eine Tabelle 210 dargestellt, die Kohärenzaktivitäten als Reaktion auf verschiedene Transaktionen auf dem SMP-Bus 20 zeigt. Die Tabelle 210 stellt Transaktionen dar, die dazu führen, daß Anforderungen an andere SMP-Knoten 12 übermittelt werden. Transaktionen, die innerhalb eines SMP-Knotens abgeschlossen werden, sind nicht abgebildet Ein "-" in einer Spalte zeigt an, daß bezogen auf diese Spalte in dem innerhalb einer bestimmten Zeile betrachteten Fall keine Aktivität durchgeführt wird. Es ist eine Transaktionsspalte 212 enthalten, welche die Transaktion angibt, die von dem Anforderungsagenten 100 über den SMP-Bus 20 empfangen wird. Die MTAG-Spalte 214 gibt den Zustand des MTAG für die Kohärenzeinheit an, auf die durch die der Transaktion entsprechenden Adresse zugegriffen wird. Die abgebildeten Zustände umfassen die oben beschriebenen MOSI-Zustände und einen "n"-Zustand. Der "n"-Zustand zeigt an, daß auf die Kohärenzeinheit für den SMP-Knoten, in dem die Transaktion eingeleitet wird, im NUMA-Modus zugegriffen wird. Daher wird keine lokale Kopie der Kohärenzeinheit im Speicher des anfordernden Knotens gespeichert. Stattdessen wird die Kohärenzeinheit vom Heimat-SMP-Knoten (oder einem Besitzerknoten) übertragen und an den anfordernden Prozessor 16 oder Cache 18 ohne Speicherung im Speicher 22 übermittelt.
  • Eine Anforderungsspalte 216 listet die Kohärenzanforderung auf, die an den durch die Adresse der Transaktion bezeichneten Heimatagenten übertragenen wird. Beim Empfang der in Spalte 216 aufgelisteten Kohärenzanforderung, prüft der Heimatagent 102 den Zustand der Kohärenzeinheit für den anfordernden Knoten, wie im Verzeichnis 66 aufgezeichnet. Die D-Spalte 218 listet den aktuellen Zustand der Kohärenzeinheit auf, der für den anfordernden Knoten aufgezeichnet ist, und die D'-Spalte 220 listet den Zustand der Kohärenzeinheit auf, der für den anfordernden Knoten aufgezeichnet wird, nachdem er vom Heimatagenten 102 als Reaktion auf die empfangene Kohärenzanforderung aktualisiert wurde. Darüber hinaus kann der Heimatagent 102 eine erste Kohärenzanfrage an den Besitzer der Kohärenzeinheit erzeugen und zusätzliche Kohärenzanfragen an jeden beliebigen Knoten, der gemeinsam genutzte Kopien der Kohärenzeinheit hält. Die Kohärenzanfrage, die an den Besitzer übertragen wird, ist in Spalte 222 abgebildet, während die Kohärenzanfrage, die an die gemeinsam benutzenden Knoten übertragen wird, in Spalte 224 abgebildet ist. Weiterhin kann der Heimatagent 102 eine Kohärenzantwort an den anfordernden Knoten übermitteln. Die Antworten des Heimatagenten sind in Spalte 226 abgebildet.
  • Der abhängige Agent 104 in dem SMP-Knoten, der als der Besitzer der Kohärenzeinheit angegeben ist, übermittelt eine Kohärenzantwort wie in Spalte 228 abgebildet. Die abhängigen Agen ten 104 in den Knoten; die als gemeinsam benutzende Knoten angegeben sind, antworten auf die in Spalte 224 abgebildeten Kohärenzanfragen im Anschluß an die Zustandswechsel, die durch die empfangene Kohärenzanfrage angezeigt werden, mit den Kohärenzantworten, die in Spalte 230 abgebildet sind.
  • Auf den Empfang der passenden Anzahl von Kohärenzantworten hin übermittelt der Anforderungsagent 100 einen Kohärenzabschluß an den Heimatagenten 102. Die Kohärenzabschlüsse, die für die verschiedenen Transaktionen verwendet werden, sind in Spalte 232 abgebildet.
  • Als ein Beispiel stellt Zeile 234 die Kohärenzaktivität als Reaktion auf eine Read-To-Share-Transaktion auf dem SMP-Bus 20 dar, für die der entsprechende MTAG-Zustand "ungültig" ist. Der entsprechende Anforderungsagent 100 übermittelt eine Read-To-Share-Kohärenzanforderung an den Heimatagenten, der durch die mit der Read-To-Share-Transaktion verbundene globale Adresse bestimmt ist. Für den in Zeile 234 abgebildeten Fall zeigt das Verzeichnis des Heimatknotens an, daß der anfordernde Knoten die Daten im Zustand "ungültig" speichert. Der Zustand in dem Verzeichnis des Heimatknotens wird für den anfordernden Knoten auf "gemeinsam genutzt" aktualisiert, und eine Read-To-Share-Kohärenzanfrage wird vom Heimatagenten 102 an den Knoten übermittelt, der vom Verzeichnis als der Besitzer angegeben wird. Es werden keine Anfragen an gemeinsame Benutzer übermittelt, da die Transaktion den Zustand "gemeinsam genutzt" zu erlangen sucht. Der abhängige Agent 104 im Besitzerknoten übermittelt die Daten, die der Kohärenzeinheit entsprechen, an den anfordernden Knoten. Beim Empfang der Daten übermittelt der Anforderungsagent 100 innerhalb des anfordernden Knotens einen Kohärenzabschluß an dein Heimatagenten 102 innerhalb des Heimatknotens. Die Transaktion ist somit abgeschlossen.
  • Es wird darauf hingewiesen, daß der in der D-Spalte 218 abgebildete Zustand nicht mit dem Zustand in der MTAG-Spalte 214 übereinzustimmen braucht. Zum Beispiel stellt eine Zeile 236 eine Kohärenzeinheit im Zustand "ungültig" in der MTAG-Spalte 214 dar., Der entsprechende Zustand in der D-Spalte 218 kann jedoch gleich "modifiziert", "in Besitz" oder "gemeinsam genutzt" sein. Solche Situationen treten auf, wenn eine vorausgehende Kohärenzanforderung von dem anfordernden Knoten für die Kohärenzeinheit innerhalb des Computersystems 10 ausstehend ist, wenn der Zugriff auf das MTAG 68 für die aktuelle Transaktion zu der Kohärenzeinheit auf dem Adreßbus 58 durchge- führt wird. Jedoch wird wegen der Sperre des Verzeichniseintrages während eines bestimmten Zugriffs die ausstehende Anforderung vor dem Zugriff auf das Verzeichnis 66 durch die aktuelle Anforderung abgeschlossen. Aus diesem Grund sind die erzeugten Kohärenzanfragen vom Verzeichniszustand (der mit dem MTAG-Zustand zum Zeitpunkt des Zugriffs auf das Verzeichnis übereinstimmt) abhängig. Für das in Zeile 236 abgebildete Beispiel kann die Read-To-Share-Anforderung einfach durch Neuausgabe der Lesetransaktion auf denn SMP-Bus 20 im anfordernden Knoten abgeschlossen werden, da das Verzeichnis anzeigt, daß die Kohärenzeinheit sich nun im anfordernden Knoten befindet. Daher bestätigt der Heimatknoten die Anforderung, einschließlich einer Antwortzahl von eins, und der anfordernde Knoten kann anschließend die Lesetransaktion erneut ausgeben. Obwohl die Tabelle 210 viele Arten von Transaktionen auflistet, wird darüber hin aus darauf hingewiesen, daß zusätzliche Transaktionen entsprechend verschiedener Ausführungsformen des Computersystems 10 verwendet werden können.
  • Schnelle Schreibstrom- bzw. Fast-Write-Stream-Operationen Gemäß 14 ist ein Diagramm dargestellt, das einen lokelen, physikalischen Adreßraum 300 gemäß einer Ausführungsform des Computersystems 10 zeigt.,Allgemein gesprochen bestimmt ein Adreßraum eine entsprechende Speicherstelle zu jeder bzw. für jede der möglichen Adressen innerhalb des Adreßraumes. Der Adreßraum kann gewissen Adressen innerhalb des Adreßraumes zusätzliche Eigenschaften zuweisen. Nach einer Ausführungsform umfassen die Adressen innerhalb des lokalen, physikalischen Adreßraumes 300 41 Bits.
  • Wie in 14 abgebildet enthält der lokale, physikalische Adreßraum 300 einen LPA-Bereich 302 und einen LPAfw-Bereich 304. Der LPA-Bereich 302 ermöglicht es, daß Lese- und Schreibtransaktionen auf entsprechenden Speicherstellen erfolgen können, sobald ein Kohärenzzustand erhalten wird bzw. erreicht ist, der zu der Transaktion konsistent ist. Mit anderen Worten werden den Adressen innerhalb des LPA-Bereiches 302 keine weiteten Eigenschaften zugewiesen. Nach einer Ausführungsform ist der LPA-Bereich 302 diejenige Menge von Adressen innerhalb des Adreßraumes 300 mit den höchstwertigen Bits (Most Signifikant Bits, MSBs) gleich 0xx00 (in binärer Darstellung). Der "xx"-Teil der MSBs zeigt den SMP-Knoten 12 an, der als der Heimatknoten für die Adresse dient. Zum Beispiel kann xx = 00 den SMP-Knoten 12A bezeichnen; xx = 01 kann den SMP-Knoten 12B bezeichnen, etc. Die Adresse ist eine lokale, physikalische Adresse innerhalb des LPA-Bereiches 302, wenn der "xx"-Teil den SMP-Knoten 12 bezeichnet, der den Prozessor 16 enthält, der die Transaktion durchführt, die der Adresse entspricht. Ansonsten ist die Adresse eine globale Adresse. Darüber hinaus ist die globale Adresse eine lokale, physikalische Adresse innerhalb eines anderen SMP-Knotens 12.
  • Adressen innerhalb des LPAfw-Bereiches 304 beziehen sich auf dieselbe Menge von Speicherstellen, auf die sich die Adressen innerhalb des LPA-Bereiches 302 beziehen. Zum Beispiel kann sich eine Adresse "A" innerhalb des LPA-Bereiches 302 auf eine Speicherstelle 306, die den Datenwert "B" speichert, beziehen. Die Adresse "A" innerhalb des LPAfw-Bereiches 304 bezieht sich auch auf die Speicherstelle 306, die den Datenwert "B" speichert. Bei diesem Beispiel bezieht sich die Adresse "A" auf die Bits der Adresse mit Ausnahme der Bits, welche den LPAfw-Bereich 304 und den LPA-Bereich 302 bezeichnen (z. B. die niederwertigen 36 Bits nach einer Ausführungsform). Nach einer Ausführungsform ist der LPAfw-Bereich 304 die. Menge von Adressen mit dem MSBs gleich 0xx10 (in binärer Darstellung). Das "xx"-Feld wird wie oben beschrieben interpretiert. Es wird darauf hingewiesen, daß das Vorhandensein zweier oder mehrerer Bereiche von Adressen innerhalb eines Adreßraumes, die dieselbe Menge von Speicherstellen bezeichnen, als Verwendung von Pseudonymen bzw. als Aliasing bezeichnet wird.
  • Im Gegensatz zu dem Transaktionen, die auf dem LPA-Bereich 302 zulässig sind, sind Lesetransaktionen auf dem LPAfw-Bereich 304 nicht zulässig. Schreibtransaktionen sind auf dem LPAfw-Bereich 304 zulässig. Nach einer Ausführungsform sind Write-Stream-Transaktionen auf dem LPAfw-Bereich 304 zulässig, während andere Schreibtransaktionen nicht zulässig sind.
  • Die Systemschnittstelle 24 erkennt die Schreiboperation auf dem LPAfw-Bereich 304 als eine "Schnellschreib"- bzw. "Fast-Write"-Schreiboperation. Anstatt zuerst einen Kohärenzzustand für die betroffenen Kohärenzeinheit zu erhalten, der mit dem Durchführen der Schreiboperation vereinbar bzw. konsistent ist, und anschließend die Daten vom einleitenden Prozessor zu übertragen, erlaubt die Systemschnittstelle 24 die Übertragung der Daten zur Systemschnittstelle 24 vor dem Abschließen der erforderlichen Kohärenzoperation. Mit anderen Worten setzt die Systemschnittstelle 24 nicht das Ignoriersignal 70 für Schreiboperationen mit einer Adresse im LPAfw-Bereich 304 wegen des Fehlens des richtigen Kohärenzzustandes für die Durchführung eines Schreibvorganges. Die Schreiboperation in den LPAfw-Adreßbereich 304 kann daher dem ausgebenden Prozessor 16 erscheinen, als wenn sie abgeschlossen sei, bevor das Erhalten der Schreibberechtigung vom SMP-Knoten 12 global beauftragt wurde. Prozessorressourcen werden schneller freigegeben, als wenn der Kohärenzzustand erhalten wird, bevor die Daten vom Prozessor empfangen werden.
  • Adressen innerhalb des LPAfw-Bereiches 304 wird daher die zusätzliche Eigenschaft zugewiesen, daß in den LPAfw-Bereich 304 durchgeführte Schreiboperationen unter Verwendung eines schnellen Schreibprotokolls durchgeführt werden. Schreiboperationen unter Verwendung eines schnellen Schreibprotokolls können bezogen auf die anderen Operationen, die innerhalb des lokalen SMP-Knotens 12 durchgeführt werden, außer der Reihe abgeschlossen werden. Es wird darauf hingewiesen, daß andere Kombinationen der MSBs innerhalb des LPA-Adreßraumes 300 verwendet werden können, um andere, zusätzliche Eigenschaften zuzuweisen.
  • Allgemein gesprochen kann eine "Fast-Write"-Operation bezogen auf die umgebenden Operationen außer der Reihe abgeschlossen werden. Darüber hinaus wird die "Fast-Write"-Operation effektiv bzw. tatsächlich außerhalb der globalen Reihenfolge des Computersystems 10 abgeschlossen, da die Operation im lokalen Knoten abgeschlossen wird, bevor ein Kohärenzzustand erworben wird, der mit der Durchführung einer Schreiboperation konsistent bzw. vereinbar ist. Daher wird die Reihenfolge, die im allgemeinen auf Transaktionen auf dem SMP-Bus 20 angewandt wird, mittels des schnellen Schreibprotokolls überschrieben. Obwohl nach der beschriebenen Ausführungsform gewissen Bits der Adresse einer "Fast-Write"-Schreiboperation die spezifische Kodierung bilden, welche die "Fast-Write"-Schreiboperation kennzeichnet, werden auch andere Formate der "Fast-Write"-Schreiboperation betrachtet. Zum Beispiel bezeichnen Steuersignale auf dem Adreßbus 58 (in 2 abgebildet) den Typ der Transaktion, die auf dem Adreßbus 58 übergeben wird. Zusätzliche Kodierungen der Steuersignale können definiert werden, um anzuzeigen, daß eine "Fast-Write"-Schreiboperation durchgeführt wird, anstatt die MSBs der übergebenen Adresse zu verwenden. Darüber hinaus kann anstelle der Verwendung eines Write-Stream-Befehls, um schnelle Schreibvorgänge durchzuführen, ein neuer Befehl definiert werden. Der neue Befehl zeigt ausdrücklich an, daß eine "Fast-Write"-Schreiboperation durchzuführen ist. Der Prozessor 16 kann dafür eingerichtet werden, den Fast-Write-Befehl durch Übergeben einer "Fast-Wrtie"-Schreibtransaktion auf dem Adreßbus 58 durchzuführen.
  • Gemäß 15 ist ein Flußdiagramm 310 dargestellt, das die Verarbeitung von Transaktionen, die von der Systemschnittstelle 24 empfangen werden, entsprechend einer Ausführungsform der Systemsschnittstelle 24 zeigt. Wenn eine Transaktion entdeckt wird, bestimmt die Systemsschnittstelle 24, ob die Transaktion eine Lese- oder Schreibtransaktion ist (Entscheidungskasten 312). Wenn eine Lesetransaktion entdeckt wird, dann wird die Leseverarbeitung von der Systemsschnittstelle 24 in Übereinstimmung mit 13 (Schritt 314) durchgeführt. Alternativ bestimmt die Systemsschnittstelle 24, wenn eine Schreibtransaktion entdeckt wird, ob eine Write-Stream-Transaktion mit einer Adresse innerhalb des LPAfw-Bereiches 304 übermittelt wird (Entscheidungskasten 316). Mit anderen Worten stellt die Systemsschnittstelle 24 fest, ob eine Schreiboperation mit einer Fast-Write-Kodierung durchgeführt wird. Wenn eine nicht-schnelle Schreibtransaktion bzw. Non-Fast-Write-Transaktion entdeckt wird, verarbeitet die Systemsschnittstelle 24 die Schreiboperation wie mit Bezug auf 13 beschrieben (Schritt 348). Wenn eine Write-Stream-Transaktion in den LPAfw-Bereich 304 entdeckt wird, werden die Schritte 320, 322 und 324 durchgeführt.
  • Eine Fast-Write-Transaktion kann entweder im NUMA-Modus (wenn das "xx"-Feld einen anderen SMP-Knoten 12A–12D als den SMP-Knoten 12A–12D, in dem die Fast-Write-Transaktion erzeugt wurde, angibt) oder im COMA-Modus durchgeführt werden. Wie oben erwähnt wird der NUMA-Modus durch das Kodieren einer globalen Adresse in den MMUs 76 ausgewählt, während der COMA-Modus durch das Kodieren einer lokalen, physikalischem Adresse in den MMUs 76 ausgewählt wird. Fast-Write-Transaktionen können speziell vorteilhaft bzw. nützlich bei einem NUMA-Modus sein, bei dem kein MTAG in der Systemsschnittstelle 24 vorhanden ist. Da kein MTAG vorhanden ist, können die Zugriffsrechte des Knotens auf die betroffenen Kohärenzeinheit nicht innerhalb des Knotens bestimmt werden. Daher wird eine Kohärenzaktivität für eine Schreibtransaktion im NUMA-Modus sogar dann durchgeführt, wenn kein anderer Knoten eine Kopie der betroffenen Kohärenzeinheit hält. Fast-Write-Transaktionen lassen es zu, daß diese Kohärenzaktvität gleichzeitig bzw. nebenläufig min der Übertragung der Daten vom einleitenden Prozessor auftritt, wodurch lokale Ressourcen des Knotens schneller freigegeben werden, als wenn dieselbe NUMA-Schreibtransaktion unter Verwendung einer Non-Fast-Write-Kodierung durchgeführt würde.
  • Wie in Schritt 320 abgebildet, reiht die Systemsschnittstelle 24 die Fast-Write-Operation innerhalb der Systemsschnittstelle 24 in eine Warteschlage ein. Nach einer Ausführungsform wird die Fast-Write-Operation in die SMP-Eingangswarteschlange 94 wie in 3 abgebildet eingereiht. Das Ignoriersignal 70 wird unabhängig vom Zustand der betroffenen Kohärenzeinheit innerhalb von MTAG 68 auf dem Adreßbus 58 nicht gesetzt. Umgekehrt erhält eine Non-Fast-Write-Operation, die eine Kohärenzeinheit betrifft, für die das MTAG 68 den Zustand "ungültig", "gemeinsam genutzt" oder "in Besitz" speichert, ein gesetztes Ignoriersignal 70. Nach Erhalt des Schreibzugangs zu einer Kohärenzeinheit gibt die Systemsschnittstelle 24 die Non-Fast-Write-Operation erneut aus, und die Operation kann nun abgeschlossen werden.
  • Da das Ignoriersignal 70 bei einer Fast-Write-Transaktion nicht gesetzt ist, werden die zugehörigen Daten anschließend vom Prozessor 16 auf dem Datenbus 60 (in 2 abgebildet) bereitgestellt. Während des Schritts 322 werden die Daten von der Systemsschnittstelle 24 empfangen und gespeichert. Die Schreiboperation ist damit bezogen auf den anstoßenden bzw. auslösenden Prozessor 16 abgeschlossen.
  • Schritt 324 zeigt an, daß Kohärenzoperationen durchgeführt werden, um die Schreiboperation auf globaler Ebene zu bearbeiten. Es wird darauf hingewiesen, daß Schritt 324 beim Empfang der Schreiboperation eingeleitet werden kann. Daher können die Schritte 322 und 324 parallel durchgeführt werden.
  • Gemäß 16 ist ein Blockdiagramm eines Teils einer Ausführungsform des Computersystems 10 dargestellt, das die Durchführung einer Schreiboperation unter Verwendung des Fast-Write-Protokolls im Computersystem 10 weiter veranschaulicht. 16 stellt die Prozessoren 16A und 16B dar, wenngleich zusätzliche Prozessoren 16 enthalten sein können. Die Prozessoren 16 umfassen jeweils zugehörige Write-Stream-Puffer 330 (wie Wrtte-Stream-Puffer 330A innerhalb von Prozessor 16A und Wrtte-Stream-Puffer 330B innerhalb von Prozessor 16B). Externe Cachespeicher 18 sind als zwischen die Prozessoren 16 und den SMP-Bus 20 geschaltet abgebildet., Die externen Cachespeicher 18 werden jedoch von den Write-Stream-Operationen umgangen. Daher sind die externen Cachespeicher 18 als gestrichelte Elemente abgebildet. Darüber hinaus ist die Systemsschnittstelle 24 an den SMP-Bus 20 angeschlossen abgebildet. Innerhalb der Systemsschnittstelle 24 sind die SMP-Eingangswarteschlange 94 und der Anforderungsagent 100 abgebildet.
  • Die Wrtte-Stream-Puffer 330 sind in den Prozessoren 16 enthalten, um Write-Stream-Operationen vor ihrem Abschluß auf dem SMP-Bus 20 zu speichern. Sowohl die Adresse, auf die von der Write-Stream-Operation geschrieben werden soll, als auch die entsprechenden Daten können gespeichert werden. Wenn die Adresse auf dem SMP-Bus 20 übergeben wurde und die entsprechenden Daten übertragen wurden, ist der Wrtte-Stream-Puffer zum Speichern einer nachfol- genden Write-Stream-Operation verfügbar. Typischerweise sind die Prozessoren 16 dafür eingerichtet, eine kleine Anzahl von ausstehenden Write-Stream-Operationen zu unterstützen. Zum Beispiel kann ein Write-Stream-Puffer 330 in jedem Prozessor 16 enthalten sein. Wenn mehrere Write-Stream-Operationen innerhalb einer relativ kurzen Zeitspanne durchgeführt werden sollen, kann der Prozessor 16 daher die Befehlsausführung anhalten, bis die Write-Stream-Operationen in die Write-Stream-Puffer 330 gespeichert sind.
  • Sogar in Ausführungsformen des Computersystems 10, welche die Adreßsteuerung 52 und die Datensteuerung 54 enthalten, kann ein ähnliches Problem vorliegen. Speicherstellen innerhalb der Adreßsteuerung 52 und der Datensteuerung 54 sind der Write-Stream-Operation zugeordnet, und diese Speicherstellen werden nicht freigegeben, bis die Write-Stream-Operation auf dem SMP-Bus 20 abgeschlossen ist. Darüber hinaus werden in dem Fall, daß eine Write-Stream-Operation ein gesetztes Ignoriersignal vom Systembus 24 erhält (d. h. es ist keine Fast-Write-Operation), anschließende Transaktionen von dieser Adreßsteuerung ebenso ignoriert. Daher können Transaktionen jeder Art durch die Write-Stream-Operation, die nicht das Fast-Write-Protokoll verwenden, behindert werden.
  • Andererseits enthält die Systemsschnittstelle 24 die SMP-Eingangswarteschlange 94. Die SMP-Eingangswarteschlange 94 kann viel größer als die in den Prozessoren 16 enthaltenen Puffer sein und kann dadurch eine beträchtlich größere Anzahl von Transaktionen speichern. Nach einer Ausführungsform enthält die SMP-Eingangswarteschlange 94 128 Speicherstellen für Transaktio nen. Die Speicherstellen innerhalb der Ausgabedatenwarteschlange 90 (in 2 abgebildet) entsprechen den Speicherstellen innerhalb der SMP-Eingangswarteschlange 94 und speichern die Daten, die den Schreiboperationen innerhalb der SMP-Eingangswarteschlange 94 entsprechen. Der Anforderungsagent 100 wählt die Transaktionen aus der SMP-Eingangswarteschlange 94 aus, für die Kohärenzoperationen durchzuführen sind, und übermittelt die Kohärenzoperationen auf dem Netzwerk 14.
  • Wegen der größeren Anzahl von Speicherstellen innerhalb der SMP-Eingangswarteschlange 94 kann darin eine große Anzahl von Fast-Write-Stream-Operationen eingereiht werden. Da die Fast-Write-Stream-Transaktionen von den Prozessoren 16 durch Speichern der Transaktion in die SMP-Eingangswarteschlange 94 und der entsprechenden Daten innerhalb der Ausgabedatenwarte- schlange 90 abgeschlossen werden, können die Prozessoren 16 mit anderen Operationen fortfahren, während die Systemschnittstelle 24 die Write-Stream-Operationen abschließt.
  • Gemäß 17 ist ein Diagramm dargestellt, das Kohärenzaktivitäten, die als Reaktion auf eine Fast-Write-Stream-Operation durchgeführt werden, entsprechend einer Ausführungsform des Computersystems 10 zeigt. Ein Anforderungsagent 100, ein Heimatagent 102 und ein abhängiger Agent 104A als Besitzer (Owner) und ein abhängiger Agent 104B als gemeinsamer Benutzer (Sharing) sind in 18 abgebildet. Der Anforderungsagent 100 übermittelt beim Empfang einer Write-Stream-Transaktion mit einer LPAfw-Adresse eine Write-Stream-Anforderung an den Heimatknoten, der durch die aus der LPAfw-Adresse übersetzten GA bezeichnet ist (Bezugszahl 340). Alternativ kann die Write-Stream-Operation auf dem SMP-Bus 20 unter Verwendung einer globalen Adresse, die das Fast-Write-Protokoll mittels der höchstsignifikanten Bits bezeichnet, übergeben werden. Nach einer Ausführungsform wird die Write-Stream-Anforderung unabhängig vom Kohärenzzustand, der im MTAG 68 innerhalb des anfordernden Knotens gespeichert ist, übermittelt.
  • Beim Empfang einer Write-Stream-Anforderung vom Anforderungsagenten 100 stellt der Heimatagent 102 den Besitzer und jedweden gemeinsamen Benutzer der angeforderten Kohärenzeinheit fest. Der Heimatagent 102 übermittelt eine Anfrage zum Ungültigmachen bzw. eine Invalidate-Anfrage an den abhängigen Agent 104A als den Besitzer und an den/die abhängige(n) Agenten 104B als gemeinsame(n) Benutzer (Bezugszahlen 342 bzw. 344). Auf diese Weise werden Kopien der Kohärenzeinheit, die durch die Write-Stream-Operation aktualisiert wurden, innerhalb aller abhängigen Knoten ungültig gemacht. Die Write-Stream-OperAtion aktualisiert jedes Byte innerhalb der Kohärenzeinheit. Daher sind die von den abhängigen Agenten 104 gehaltenen Kopien beim Abschluß der Write-Stream-Kohärenzoperation ungültig.
  • Die abhängigen Agenten 104 empfangen die Invalidate-Anfragen und übertragen eine Bestätigungsantwort an den Anforderungsagenten 100 (Bezugszahlen 346 und 348). Darüber hinaus machen die abhängigen Agenten 104 ihre Kopien der Kohärenzeinheit ungültig.
  • Beim Empfang der Bestätigungsantworten von jedem der abhängigen Agenten 104 übermittelt der Anforderungsagent 100 einen Kohärenzabschluß mit Daten ein den Heimatagenten 102 (Bezugszahl 350). Die übermittelten. Daten sind die Daten, die vom Prozessor 16, der die Fast-Write-Stream-Transaktion eingeleitet hat, empfangen wurden. Es wird derauf hingewiesen, daß in dem Fall, daß eine Kopie der Kohärenzeinheit, die durch die Fast-Write-Stream-Transaktion aktualisiert wird, im Speicher 22 gespeichert wird, der dem SMP-Knoten 12 entspricht, der den anstoßenden Prozessor 16 enthält, dann wird die Kopie ungültig gemacht (ähnlich zu jeder anderen abhängigen Kopie).
  • Gemäß 18 ist ein Zeitdiagramm dargestellt, das Trnsaktionen zeigt, die auf dem SMP-Bus 20 durchgeführt werden, um eine Write-Stream-Operation in einer Ausführungsform des Computersystems 10 durchzuführen. Sowohl Transaktionen auf dein Adreßbus 58 als auch Transaktionen auf dem Datenbus 60 sind abgebildet.
  • Beim Ausführen eines Write-Stream-Befehls führt ein Prozessor 16 eine Write-Stream-Transaktion auf dem Adreßbus 58 durch (Bezugszahl 360). Die Systemschnittstelle 24 überprüft den Kohärenzzustand der betroffenen Kohärenzeinheit (d. h. der Kohärenzeinheit, welche die Adresse "A" enthält) innerhalb des MTAG 68. Wenn der SMP-Knoten 12 die Schreibberechtigung für die Kohärenzeinheit besitzt (z. B den Zustand "modifiziert" hat), erlaubt die Systemschnittstelle 24, daß die Write-Stream-Operation abgeschlossen wird. Wenn jedoch keine Schreibberechtigung im MTAG 68 gespeichert ist, setzt die Systemschnittstelle 24 das Ignoriersignal wie in 18 dargestellt (Bezugszahl 362). Die Systemschnittstelle 24 fährt mit den Kohärenzoperationen fort, um die Schreibberechtigung für die betroffene Kohärenzeinheit zu erhalten. Beträchtliche Zeit kann zwischen dem Ignorieren der Write-Stream-Transaktion 360 und einer anschließenden Neuausgabe der Write-Stream-Transaktion vergehen (Bezugszahl 364). Die Systemschnittstelle 24 gibt die Write-Stream-Transaktion beim Erhalt der Schreibberechtigung für die betroffene Kohärenzeinheit erneut aus. Beim Erkennen der Neuausgabe überträgt der Prozessor 16 die Daten, die der Write-Stream-Transaktion 360 entsprechen (Bezugszahl 366), in Übereinstimmung mit dem Busprotokoll des SMP-Busses 20. Sobald die Daten übertragen sind, werden die Prozessorressourcen, die verwendet werden, um die Write-Stream-Transaktion zu speichern und durchzuführen, zur Verwendung durch eine andere Transaktion freigegeben. Ein Prozessor 16, der nur eine ausstehende Write-Stream-Transaktion unterstützt, kann nun eine zweite Write-Stream-Operation für eine Adresse B einleiten (Bezugszahl 368).
  • Umgekehrt stellt 19 ein Zeitdiagramm einer Fast-Write-Stream-Operation dar, wie sie von einer Ausführungsform des Computersystems 10 durchgeführt wird. Sowohl die Transaktionen auf dem Adreßbus 58 als auch die Transaktionen auf dem Datenbus 60 sind abgebildet.
  • Ähnlich zu 18 führt ein Prozessor 16 eine Write-Stream-Transaktion 370 auf dem Adreßbus 58 beim Ausführen eines Write-Stream-Befehls durch. Jedoch wird die Write-Stream-Transaktion in 19 unter Verwendung der Fast-Write-Stream-Kodierung durchgeführt. Unabhängig vom Zustand der aktualisierten Kohärenzeinheit im MTAG 68 setzt die Systemschnittstelle 24 nicht das Ignoriersignal 70 (Bezugszahl 372). Anschließend werden die Daten, die der Fast-Write-Stream-Transaktion 370 entsprechen, auf dem Datenbus 60 übertragen. Die zum Speichern und Durchführen der Fast-Write-Stream-Transaktion verwendeten Ressourcen des Prozessors 16 werden schnell freigegeben, wodurch es möglich wird, daß die Ressourcen für anschließende Transaktionen wie eine weitere Write-Stream-Operation verwendet werden (Bezugszahl 376). Vor teilhafterweise bestimmen das Protokoll und der Verkehr auf dem SMP-Bus 20 die Zeitdauer, für die Prozessorressourcen durch die Fast-Write-Stream-Transaktion belegen sind. Umgekehrt belegen Write-Stream-Transaktionen wie in 48 abgebildet Prozessorressourcen für eine Zeitdauer, die durch die Verzögerung der entsprechenden über das Netzwerk 14 durchgeführten Kohärenzoperationen bestimmt wird.
  • Auch wenn in den obigen beispielhaften Ausführungsformen die SMP-Knoten 12 beschriebenen wurden, kann eine Ausführungsform des Computersystems 10 allgemein gesprochen einen oder mehrere Verarbeitungsknoten enthalten. In dem hier verwendeten Sinn enthält ein Verarbeitungsknoten mindestens einen Prozessor und einen zugehörigen Speicher. Darüber hinaus ist eine Schaltung für die Kommunikation mit anderen Verarbeitungsknoten enthalten. Wenn mehr als ein Verarbeitungsknoten in einer Ausführungsform des Computersystems 10 enthalten ist, bilden die zugehörigen Speicher innerhalb der Verarbeitungsknoten einen verteilten, gemeinsam genutzten Speicher. Ein Verarbeitungsknoten kann als lokal oder als entfernt bezeichnet werden. Ein Verarbeitungsknoten ist ein entfernter Verarbeitungsknoten bezogen auf einen bestimmten Prozessor, wenn der Verarbeitungsknoten den betreffenden Prozessor nicht enthält. Umgekehrt ist der Verarbeitungsknoten, der den betreffenden Prozessor enthält, der lokale Verarbeitungsknoten des betreffenden Prozessors. Darüber hinaus bezeichnet der Begriff "Kohärenzoperation", wie er hier benutzt wird, eine Kombination von Kohärenzanforderungen, Kohärenzanfragen, Kohärenzantworten und Kohärenzabschlüssen, die verwendet werden, um einen bestimmten Kohärenzzustand in dem Verarbeitungsknoten zu erhalten bzw. zu erlangen, innerhalb dessen eine Transaktion eingeleitet wird, die veranlaßt, daß der Kohärenzzustand in dem Verarbeitungsknoten erwünscht ist.
  • Entsprechend der vorstehenden Offenbarung wurde ein Computersystem beschrieben, das effiziente Schreiboperationen durchführt. Prozessorressourcen werden bei der Übermittlung der Schreiboperation und der zugehörigen Daten an die Systemschnittstelle freigegeben, bevor ein passender Kohärenzzustand durch den Knoten, der den Prozessor enthält, erlangt wird. Die Reihenfolge der Transaktionen innerhalb des Knotens wird für die Schreiboperationen nicht beibehalten, die Operationen werden jedoch schneller aus dem Prozessor gelöscht. Vorteilhafterweise sind die Prozessorressourcen zur Verwendung durch nachfolgende Transaktionen verfügbar, während die Kohärenzoperationen als Reaktion auf die Schreibtransaktionen durchgeführt werden. Gewöhnlich würden diese Prozessorressourcen durch die Schreibtransaktion belegt. Als ein Ergebnis kann die Leistungsfähigkeit des Computersystems in dem Maße gesteigert werden, daß die schneller freigegebenen Ressourcen für anschließende Transaktion während der Durchführung der entsprechenden Kohärenzoperationen verwendet werden können.

Claims (19)

  1. Verfahren zum Durchführen kohärenter Schreibvorgänge in einem Mehrprozessorcomputersystem mit verteiltem, gemeinsam verwendetem Speicher, wobei das Computersystem eine Mehrzahl von Prozessorknoten aufweist, die durch ein Netzwerk miteinander verbunden sind, jeder Prozessorknoten zumindest einen Prozessor, einen Speicher und eine Systemschnittstelle aufweist, die den Prozessorknoten mit dem Netzwerk verbindet und Kohärenz zwischen den Knoten bereitstellt, wobei das Verfahren aufweist: einen Prozessor innerhalb eines lokalen Prozessorknotens des Mehrprozessorcomputersystems, welcher einen Schreibvorgang (312) an eine Kohärenzeinheit auslöst, wobei die Kohärenzeinheit einen Heimat-Prozessorknoten hat, wobei die Systemschnittstelle des lokalen Prozessorknotens einen Kohärenzvorgang (324) mit dem Heimat-Prozessorknoten in Reaktion auf den Schreibvorgang ausführt, um irgendwelche abhängigen Kopien (Slave-Kopien) der Kohärenzeinheit ungültig zu machen, die Systemschnittstelle das Übertragen von Daten (322), welche dem Schreibvorgang entsprechen, von dem Prozessor zu der Systemschnittstelle vor der Bestätigung erlaubt, daß die abhängigen Kopien ungültig gemacht worden sind, wenn der Schreibvorgang eine spezielle, vorbestimmte Codierung (316) aufweist, die anzeigt, daß der Schreibvorgang ein schneller Schreibvorgang ist, wobei der schnelle Schreibvorgang auf eine gesamte Kohärenzeinheit gerichtet ist, und wobei nach denn Empfang der Bestätigung der Abschluß der Kohärenz an den Heimat-Prozessorknoten übermittelt wird, und wobei die Systemschnittstelle das Übertragen der Daten von dem Prozessor verhindert, bis die Bestätigung empfangen worden ist, wenn der Schreibvorgang eine andere Codierung als die spezielle, vorbestimmte Codierung (318) aufweist.
  2. Verfahren nach Anspruch 1, wobei die spezielle, vorbestimmte Codierung über eine Adresse bereitgestellt wird, die in dem Schreibvorgang enthalten ist.
  3. Verfahren nach Anspruch 2, wobei die Adresse innerhalb eines ersten Adreßbereiches liegt, der innerhalb eines Adreßraumes und des lokalen Prozessorknotens liegt.
  4. Verfahren nach Anspruch 3, wobei der erste Adreßbereich durch einen bestimmten Wert innerhalb einer Mehrzahl der höchstwertigen Bits der Adresse identifiziert wird.
  5. Verfahren nach Anspruch 3, wobei der erste Adreßbereich ein Alias- bzw. Deckname-Bereich für einen zweiten Adreßbereich innerhalb des Adreßraumes ist.
  6. Verfahren nach Anspruch 4, wobei die Codierung, welche sich von der speziellen, vordefinierten Codierung unterscheidet, eine zweite Adresse innerhalb eines zweiten Adreßbereiches aufweist.
  7. Verfahren nach einem der Ansprüche 3 bis 6, wobei der Schreibvorgang ein Datenstromschreibvorgang ist.
  8. Verfahren nach einem der Ansprüche 3 bis 7, welches weiterhin das Übersetzen der Adresse in eine globale Adresse vor dem Durchführen des Kohärenzvorganges aufweist.
  9. Verfahren nach einem der vorstehenden Ansprüche, welches das Erhalten eines Kohärenzzustandes aufweist, der eine Schreiberlaubnis gewährt.
  10. Verfahren nach Anspruch 9, das weiterhin das Übertragen der Daten zu einem Heimatknoten dieser Adresse nach Erhalt der Schreiberlaubnis aufweist.
  11. Verarbeitungsknoten bzw. Prozessorknoten für ein Mehrprozessorcomputersystem mit verteiltem, gemeinsam verwendetem Speicher, welches eine Mehrzahl derartiger Prozessorknoten enthält, die durch ein Netzwerk miteinander verbunden sind, wobei der Prozessorknoten zumindest einen Prozessor, einen Speicher und eine Systemschnittstelle aufweist, welche eine Schnittstelle zwischen dem Prozessorknoten und dem Netzwerk bildet und welche eine Kohärenz zwischen den Knoten bereitstellt, wobei: ein solcher Prozessor (16A) in einem lokalen Prozessorknoten so ausgestaltet ist, daß er einen Schreibvorgang an eine Kohärenzeinheit auslöst, wobei die Kohärenzeinheit einen Heimat-Prozessorknoten hat, die Systemschnittstelle (24) in dem lokalen Prozessorknoten so angeschlossen ist, daß sie den Schreibvorgang empfängt und eine Kohärenzbearbeitung an dem Heimat-Prozessorknoten ausführt in Reaktion auf den Schreibvorgang, um irgendwelche abhängigen Kopien (Slave-Kopien) der Kohärenzeinheit ungültig zu machen, wobei die Systemschnittstelle weiterhin so betreibbar ist, daß sie dem Prozessor erlaubt, Daten entsprechend dem Schreibvorgang von dem Prozessor an die Systemschnittstelle zu übertragen, bevor er die Bestätigung empfangen hat, daß die abhängigen Kopien ungültig gemacht worden sind, wenn der Schreibvorgang einen speziellen, vorbestimmten Code aufweist, welcher anzeigt, daß der Schreibvorgang ein schneller Schreibvorgang ist, wobei der schnelle Schreibvorgang auf eine gesamte Kohärenzeinheit gerichtet ist, und bei Empfang der Bestätigung, den Abschluß der Kohärenz an den Heimatprozessorknoten zu übermitteln, und um den Prozessor daran zu hindern, die Daten zu übertragen, bis die Bestätigung empfangen worden ist, wenn der Schreibvorgang eine andere Codierung aufweist als die spezielle, vorbestimmte Codierung.
  12. Vorrichtung nach Anspruch 11, welche das Erhalten eines Kohärenzzustandes aufweist, der der Kohärenzeinheit, welche durch den Schreibvorgang identifiziert wird, eine Schreiberlaubnis erteilt.
  13. Vorrichtung nach Anspruch 11, wobei die spezielle, vorbestimmte Codierung über eine Adresse bereitgestellt wird, die in dem Schreibvorgang enthalten ist.
  14. Vorrichtung nach Anspruch 13, wobei die Adresse innerhalb eines ersten Adreßbereiches innerhalb eines Adreßraumes liegt, der füür den Prozessor zugänglich ist.
  15. Vorrichtung nach Anspruch 14, wobei der erste Adreßbereich ein Aliasbereich bzw. Decknamebereich für einen zweiten Adreßbereich innerhalb des Adreßraumes ist, und wobei die andere Codierung eine zweite Adresse aufweist, die innerhalb des zweiten Adreßbereiches liegt.
  16. Computersystem mit: einem ersten Prozessorknoten einschließlich einer Vorrichtung gemäß einem der Ansprüche 11 bis 15, und einem zweiten Prozessorknoten mit einem zweiten Prozessor und einer zweiten Systemschnittstelle, wobei der zweite Prozessorknoten als der erwähnte Heimatknoten der Kohärenzeinheit ausgebildet ist, und wobei der zweite Prozessorknoten so angeschlossen ist, daß er von dem ersten Prozessorknoten eine Kohärenzanforderung empfängt, welche dem Kohärenzvorgang entspricht.
  17. Computersystem nach Anspruch 16, wobei die vorbestimmte Codierung eine Adresse innerhalb eines Adreßbereiches eines Adreßraumes aufweist, welche dem ersten Prozessorknoten entspricht.
  18. Computersystem nach Anspruch 17, wobei der Adreßbereich ein Alias- bzw. Decknamenbereich für einen zweiten Adreßbereich innerhalb des Adreßraumes ist.
  19. Computersystem nach einem der Ansprüche 16 bis 18, wobei der erste Prozessorknoten Daten bereitstellt, welche dem Schreibvorgang in den zweiten Prozessorknoten entsprechen, nachdem die Kohärenzanforderung abgeschlossen worden ist.
DE69721643T 1996-07-01 1997-06-27 Multiprozessorsystem ausgestaltet zur effizienten Ausführung von Schreiboperationen Expired - Fee Related DE69721643T2 (de)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US675634 1996-07-01
US08/675,634 US5749095A (en) 1996-07-01 1996-07-01 Multiprocessing system configured to perform efficient write operations

Publications (2)

Publication Number Publication Date
DE69721643D1 DE69721643D1 (de) 2003-06-12
DE69721643T2 true DE69721643T2 (de) 2004-02-26

Family

ID=24711344

Family Applications (1)

Application Number Title Priority Date Filing Date
DE69721643T Expired - Fee Related DE69721643T2 (de) 1996-07-01 1997-06-27 Multiprozessorsystem ausgestaltet zur effizienten Ausführung von Schreiboperationen

Country Status (4)

Country Link
US (1) US5749095A (de)
EP (1) EP0817073B1 (de)
JP (1) JPH10143482A (de)
DE (1) DE69721643T2 (de)

Families Citing this family (101)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH09204403A (ja) * 1996-01-26 1997-08-05 Hitachi Ltd 並列計算機
US6857099B1 (en) * 1996-09-18 2005-02-15 Nippon Steel Corporation Multilevel semiconductor memory, write/read method thereto/therefrom and storage medium storing write/read program
US6088769A (en) * 1996-10-01 2000-07-11 International Business Machines Corporation Multiprocessor cache coherence directed by combined local and global tables
US6094712A (en) * 1996-12-04 2000-07-25 Giganet, Inc. Computer network interface for direct mapping of data transferred between applications on different host computers from virtual addresses to physical memory addresses application data
US5860120A (en) * 1996-12-09 1999-01-12 Intel Corporation Directory-based coherency system using two bits to maintain coherency on a dual ported memory system
US6029204A (en) * 1997-03-13 2000-02-22 International Business Machines Corporation Precise synchronization mechanism for SMP system buses using tagged snoop operations to avoid retries
US6226680B1 (en) 1997-10-14 2001-05-01 Alacritech, Inc. Intelligent network interface system method for protocol processing
US6434620B1 (en) 1998-08-27 2002-08-13 Alacritech, Inc. TCP/IP offload network interface device
US6757746B2 (en) * 1997-10-14 2004-06-29 Alacritech, Inc. Obtaining a destination address so that a network interface device can write network data without headers directly into host memory
US7237036B2 (en) * 1997-10-14 2007-06-26 Alacritech, Inc. Fast-path apparatus for receiving data corresponding a TCP connection
US6687758B2 (en) * 2001-03-07 2004-02-03 Alacritech, Inc. Port aggregation for network connections that are offloaded to network interface devices
US7076568B2 (en) * 1997-10-14 2006-07-11 Alacritech, Inc. Data communication apparatus for computer intelligent network interface card which transfers data between a network and a storage device according designated uniform datagram protocol socket
US8782199B2 (en) 1997-10-14 2014-07-15 A-Tech Llc Parsing a packet header
US7174393B2 (en) 2000-12-26 2007-02-06 Alacritech, Inc. TCP/IP offload network interface device
US8539112B2 (en) 1997-10-14 2013-09-17 Alacritech, Inc. TCP/IP offload device
US6658480B2 (en) * 1997-10-14 2003-12-02 Alacritech, Inc. Intelligent network interface system and method for accelerated protocol processing
US7042898B2 (en) 1997-10-14 2006-05-09 Alacritech, Inc. Reducing delays associated with inserting a checksum into a network message
US8621101B1 (en) 2000-09-29 2013-12-31 Alacritech, Inc. Intelligent network storage interface device
US7089326B2 (en) * 1997-10-14 2006-08-08 Alacritech, Inc. Fast-path processing for receiving data on TCP connection offload devices
US7167927B2 (en) 1997-10-14 2007-01-23 Alacritech, Inc. TCP/IP offload device with fast-path TCP ACK generating and transmitting mechanism
US7133940B2 (en) * 1997-10-14 2006-11-07 Alacritech, Inc. Network interface device employing a DMA command queue
US6697868B2 (en) 2000-02-28 2004-02-24 Alacritech, Inc. Protocol processing stack for use with intelligent network interface device
US6470415B1 (en) 1999-10-13 2002-10-22 Alacritech, Inc. Queue system involving SRAM head, SRAM tail and DRAM body
US6427171B1 (en) 1997-10-14 2002-07-30 Alacritech, Inc. Protocol processing stack for use with intelligent network interface device
US6591302B2 (en) 1997-10-14 2003-07-08 Alacritech, Inc. Fast-path apparatus for receiving data corresponding to a TCP connection
US7284070B2 (en) * 1997-10-14 2007-10-16 Alacritech, Inc. TCP offload network interface device
US7185266B2 (en) 2003-02-12 2007-02-27 Alacritech, Inc. Network interface device for error detection using partial CRCS of variable length message portions
US6427173B1 (en) 1997-10-14 2002-07-30 Alacritech, Inc. Intelligent network interfaced device and system for accelerated communication
US6085295A (en) * 1997-10-20 2000-07-04 International Business Machines Corporation Method of maintaining data coherency in a computer system having a plurality of interconnected nodes
US6341337B1 (en) * 1998-01-30 2002-01-22 Sun Microsystems, Inc. Apparatus and method for implementing a snoop bus protocol without snoop-in and snoop-out logic
US6145059A (en) * 1998-02-17 2000-11-07 International Business Machines Corporation Cache coherency protocols with posted operations and tagged coherency states
US6330643B1 (en) * 1998-02-17 2001-12-11 International Business Machines Corporation Cache coherency protocols with global and local posted operations
US6701416B1 (en) * 1998-02-17 2004-03-02 International Business Machines Corporation Cache coherency protocol with tagged intervention of modified values
US6141733A (en) * 1998-02-17 2000-10-31 International Business Machines Corporation Cache coherency protocol with independent implementation of optimized cache operations
US6347361B1 (en) * 1998-02-17 2002-02-12 International Business Machines Corporation Cache coherency protocols with posted operations
US6560681B1 (en) * 1998-05-08 2003-05-06 Fujitsu Limited Split sparse directory for a distributed shared memory multiprocessor system
US7664883B2 (en) * 1998-08-28 2010-02-16 Alacritech, Inc. Network interface device that fast-path processes solicited session layer read commands
US6526481B1 (en) 1998-12-17 2003-02-25 Massachusetts Institute Of Technology Adaptive cache coherence protocols
US6636950B1 (en) * 1998-12-17 2003-10-21 Massachusetts Institute Of Technology Computer architecture for shared memory access
US6631401B1 (en) 1998-12-21 2003-10-07 Advanced Micro Devices, Inc. Flexible probe/probe response routing for maintaining coherency
US6275905B1 (en) 1998-12-21 2001-08-14 Advanced Micro Devices, Inc. Messaging scheme to maintain cache coherency and conserve system memory bandwidth during a memory read operation in a multiprocessing computer system
US6490661B1 (en) 1998-12-21 2002-12-03 Advanced Micro Devices, Inc. Maintaining cache coherency during a memory read operation in a multiprocessing computer system
US6370621B1 (en) 1998-12-21 2002-04-09 Advanced Micro Devices, Inc. Memory cancel response optionally cancelling memory controller's providing of data in response to a read operation
US6938094B1 (en) 1999-09-17 2005-08-30 Advanced Micro Devices, Inc. Virtual channels and corresponding buffer allocations for deadlock-free computer system operation
US6553430B1 (en) 1999-09-17 2003-04-22 Advanced Micro Devices, Inc. Computer system implementing flush operation
US6714994B1 (en) 1998-12-23 2004-03-30 Advanced Micro Devices, Inc. Host bridge translating non-coherent packets from non-coherent link to coherent packets on conherent link and vice versa
US6950438B1 (en) 1999-09-17 2005-09-27 Advanced Micro Devices, Inc. System and method for implementing a separate virtual channel for posted requests in a multiprocessor computer system
US6888843B2 (en) * 1999-09-17 2005-05-03 Advanced Micro Devices, Inc. Response virtual channel for handling all responses
US6529999B1 (en) 1999-10-27 2003-03-04 Advanced Micro Devices, Inc. Computer system implementing system and method for ordering write operations and maintaining memory coherency
US6557048B1 (en) 1999-11-01 2003-04-29 Advanced Micro Devices, Inc. Computer system implementing a system and method for ordering input/output (IO) memory operations within a coherent portion thereof
US6757793B1 (en) 2000-03-29 2004-06-29 Advanced Micro Devices, Inc. Reducing probe traffic in multiprocessor systems using a victim record table
US6725341B1 (en) 2000-06-28 2004-04-20 Intel Corporation Cache line pre-load and pre-own based on cache coherence speculation
US6826619B1 (en) 2000-08-21 2004-11-30 Intel Corporation Method and apparatus for preventing starvation in a multi-node architecture
US6487643B1 (en) 2000-09-29 2002-11-26 Intel Corporation Method and apparatus for preventing starvation in a multi-node architecture
US8019901B2 (en) * 2000-09-29 2011-09-13 Alacritech, Inc. Intelligent network storage interface system
US6772298B2 (en) 2000-12-20 2004-08-03 Intel Corporation Method and apparatus for invalidating a cache line without data return in a multi-node architecture
US7234029B2 (en) * 2000-12-28 2007-06-19 Intel Corporation Method and apparatus for reducing memory latency in a cache coherent multi-node architecture
US6791412B2 (en) * 2000-12-28 2004-09-14 Intel Corporation Differential amplifier output stage
US20020087775A1 (en) * 2000-12-29 2002-07-04 Looi Lily P. Apparatus and method for interrupt delivery
US6721918B2 (en) 2000-12-29 2004-04-13 Intel Corporation Method and apparatus for encoding a bus to minimize simultaneous switching outputs effect
US20020087766A1 (en) * 2000-12-29 2002-07-04 Akhilesh Kumar Method and apparatus to implement a locked-bus transaction
US6721813B2 (en) * 2001-01-30 2004-04-13 Advanced Micro Devices, Inc. Computer system implementing a system and method for tracking the progress of posted write transactions
US7398376B2 (en) * 2001-03-23 2008-07-08 International Business Machines Corporation Instructions for ordering execution in pipelined processes
US6842849B2 (en) * 2001-05-21 2005-01-11 Arm Limited Locking source registers in a data processing apparatus
US6971098B2 (en) 2001-06-27 2005-11-29 Intel Corporation Method and apparatus for managing transaction requests in a multi-node architecture
US6922833B2 (en) * 2001-10-11 2005-07-26 International Business Machines Corporation Adaptive fast write cache for storage devices
US6715055B1 (en) 2001-10-15 2004-03-30 Advanced Micro Devices, Inc. Apparatus and method for allocating buffer space
US20030121835A1 (en) * 2001-12-31 2003-07-03 Peter Quartararo Apparatus for and method of sieving biocompatible adsorbent beaded polymers
US6973544B2 (en) * 2002-01-09 2005-12-06 International Business Machines Corporation Method and apparatus of using global snooping to provide cache coherence to distributed computer nodes in a single coherent system
US6862647B1 (en) * 2002-01-29 2005-03-01 Advanced Micro Devices, Inc. System and method for analyzing bus transactions
US6598120B1 (en) * 2002-03-08 2003-07-22 International Business Machines Corporation Assignment of building block collector agent to receive acknowledgments from other building block agents
US7496689B2 (en) * 2002-04-22 2009-02-24 Alacritech, Inc. TCP/IP offload device
US7543087B2 (en) * 2002-04-22 2009-06-02 Alacritech, Inc. Freeing transmit memory on a network interface device prior to receiving an acknowledgement that transmit data has been received by a remote device
US7191241B2 (en) * 2002-09-27 2007-03-13 Alacritech, Inc. Fast-path apparatus for receiving data corresponding to a TCP connection
US7337241B2 (en) * 2002-09-27 2008-02-26 Alacritech, Inc. Fast-path apparatus for receiving data corresponding to a TCP connection
US8185602B2 (en) 2002-11-05 2012-05-22 Newisys, Inc. Transaction processing using multiple protocol engines in systems having multiple multi-processor clusters
US20040088262A1 (en) * 2002-11-06 2004-05-06 Alacritech, Inc. Enabling an enhanced function of an electronic device
US6985984B2 (en) * 2002-11-07 2006-01-10 Sun Microsystems, Inc. Multiprocessing systems employing hierarchical back-off locks
US7080213B2 (en) * 2002-12-16 2006-07-18 Sun Microsystems, Inc. System and method for reducing shared memory write overhead in multiprocessor systems
GB2416416B (en) * 2003-04-11 2006-11-22 Sun Microsystems Inc Multi-node computer system implementing global access state dependent transactions
WO2004092968A2 (en) * 2003-04-11 2004-10-28 Sun Microsystems, Inc. Multi-node system with global access states
US6973654B1 (en) * 2003-05-27 2005-12-06 Microsoft Corporation Systems and methods for the repartitioning of data
US6996070B2 (en) * 2003-12-05 2006-02-07 Alacritech, Inc. TCP/IP offload device with reduced sequential processing
JP4085389B2 (ja) * 2003-12-24 2008-05-14 日本電気株式会社 マルチプロセッサシステム、マルチプロセッサシステムにおける一貫性制御装置及び一貫性制御方法
US8248939B1 (en) 2004-10-08 2012-08-21 Alacritech, Inc. Transferring control of TCP connections between hierarchy of processing mechanisms
JP4362454B2 (ja) * 2005-04-07 2009-11-11 富士通株式会社 キャッシュコヒーレンス管理装置およびキャッシュコヒーレンス管理方法
US7730101B2 (en) * 2005-06-10 2010-06-01 Microsoft Corporation Implementing a tree data storage structure in a distributed environment
US7376793B2 (en) * 2005-07-21 2008-05-20 Sun Microsystems, Inc. Cache coherence protocol with speculative writestream
US7738500B1 (en) 2005-12-14 2010-06-15 Alacritech, Inc. TCP timestamp synchronization for network connections that are offloaded to network interface devices
US7631150B2 (en) * 2006-09-29 2009-12-08 Broadcom Corporation Memory management in a shared memory system
US20080082622A1 (en) * 2006-09-29 2008-04-03 Broadcom Corporation Communication in a cluster system
US7698523B2 (en) * 2006-09-29 2010-04-13 Broadcom Corporation Hardware memory locks
US7636816B2 (en) * 2006-09-29 2009-12-22 Broadcom Corporation Global address space management
US8539513B1 (en) 2008-04-01 2013-09-17 Alacritech, Inc. Accelerating data transfer in a virtual computer system with tightly coupled TCP connections
US8341286B1 (en) 2008-07-31 2012-12-25 Alacritech, Inc. TCP offload send optimization
US9306793B1 (en) 2008-10-22 2016-04-05 Alacritech, Inc. TCP offload device that batches session layer headers to reduce interrupts as well as CPU copies
US9063916B2 (en) 2013-02-27 2015-06-23 Oracle International Corporation Compact encoding of node locations
US11169925B2 (en) * 2015-08-25 2021-11-09 Samsung Electronics Co., Ltd. Capturing temporal store streams into CPU caches by dynamically varying store streaming thresholds
US10747298B2 (en) 2017-11-29 2020-08-18 Advanced Micro Devices, Inc. Dynamic interrupt rate control in computing system
US10503648B2 (en) 2017-12-12 2019-12-10 Advanced Micro Devices, Inc. Cache to cache data transfer acceleration techniques
US11210246B2 (en) 2018-08-24 2021-12-28 Advanced Micro Devices, Inc. Probe interrupt delivery

Family Cites Families (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5091846A (en) * 1986-10-03 1992-02-25 Intergraph Corporation Cache providing caching/non-caching write-through and copyback modes for virtual addresses and including bus snooping to maintain coherency
US5222224A (en) * 1989-02-03 1993-06-22 Digital Equipment Corporation Scheme for insuring data consistency between a plurality of cache memories and the main memory in a multi-processor system
US5655096A (en) * 1990-10-12 1997-08-05 Branigin; Michael H. Method and apparatus for dynamic scheduling of instructions to ensure sequentially coherent data in a processor employing out-of-order execution
US5303362A (en) * 1991-03-20 1994-04-12 Digital Equipment Corporation Coupled memory multiprocessor computer system including cache coherency management protocols
US5603005A (en) * 1994-12-27 1997-02-11 Unisys Corporation Cache coherency scheme for XBAR storage structure with delayed invalidates until associated write request is executed
US5613071A (en) * 1995-07-14 1997-03-18 Intel Corporation Method and apparatus for providing remote memory access in a distributed memory multiprocessor system

Also Published As

Publication number Publication date
EP0817073B1 (de) 2003-05-07
EP0817073A2 (de) 1998-01-07
EP0817073A3 (de) 1998-08-19
DE69721643D1 (de) 2003-06-12
JPH10143482A (ja) 1998-05-29
US5749095A (en) 1998-05-05

Similar Documents

Publication Publication Date Title
DE69721643T2 (de) Multiprozessorsystem ausgestaltet zur effizienten Ausführung von Schreiboperationen
DE69722079T2 (de) Ein Mehrrechnersystem mit Anordnung zum Durchführen von Blockkopieroperationen
DE69724354T2 (de) Ein Mehrprozessorrechnersystem mit lokalen und globalen Adressräumen und mehreren Zugriffsmoden
DE69724353T2 (de) Mehrrechnersystem mit einem Drei-Sprung-Kommunikationsprotokoll
DE69722512T2 (de) Mehrrechnersystem mit einem die Anzahl der Antworten enthaltenden Kohärenzprotokoll
DE69729243T2 (de) Multiprozessorsystem mit Vorrichtung zur Optimierung von Spin-Lock-Operationen
DE102009023898B4 (de) Optimierung von gleichzeitigen Zugriffen in einem verzeichnisbasierten Kohärenzprotokoll
DE69531933T2 (de) Busarchitektur in hochgradiger pipeline-ausführung
DE69721891T2 (de) Deterministisches Kohärenzprotokoll für verteilten Multicache-Speicher
DE69727856T2 (de) Multiprozessorsystem mit Konsistenzfehler-Registrierung mit entsprechendem Verfahren
DE69721640T2 (de) Multiprozessor-Rechnersystem und Verfahren zur Steuerung des Verkehrsflusses
DE60204213T2 (de) Level 2 Cache mit lokaler Beibehaltung von Kohärenzblöcken
DE60207210T2 (de) System mit Schnittstellen, einem Schalter und einer Speicherbrücke mit cc-numa (cache-coherent non-uniform memory access)
DE112015004336B4 (de) Konfigurationsbasierte Auswahl eines Cachekohärenz-Protokolls
DE102007030116B4 (de) Snoop-Filter mit ausschließlicher Inhaberschaft
DE69734129T2 (de) Hierarchisches Datenverarbeitungssystem mit symetrischen Multiprozessoren
DE69832943T2 (de) Sequenzsteuerungsmechanismus für ein switch-basiertes Mehrprozessorsystem
DE69233655T2 (de) Mikroprozessorarchitektur mit der Möglichkeit zur Unterstützung mehrerer verschiedenartiger Prozessoren
DE69906585T2 (de) Datenverarbeitungssystem mit nichtuniformen speicherzugriffen (numa) mit spekulativer weiterleitung einer leseanforderung an einen entfernten verarbeitungsknoten
DE102009022151B4 (de) Verringern von Invalidierungstransaktionen aus einem Snoop-Filter
DE60211076T2 (de) Datenübertragung zwischen virtuellen Adressen
DE60219436T2 (de) System mit adressbasierter Intraknotenkohärenz und datenbasierter Interknotenkohärenz
DE69822534T2 (de) Gemeinsame Speicherbenutzung mit variablen Blockgrössen für symmetrische Multiporzessor-Gruppen
DE102007048507B4 (de) Cache-Speichersystem und Verfahren zum Bereitstellen eines Transaktionsspeichers
DE102013201079A1 (de) Mechanismus des Weiterleitungsfortschritts für Speichervorgänge beim Vorhandensein einer Überlastung in einem System, das Belastungen durch Zustandsänderungen begünstigt

Legal Events

Date Code Title Description
8364 No opposition during term of opposition
8339 Ceased/non-payment of the annual fee