DE69724355T2 - Erweiterte symmetrische Multiprozessorarchitektur - Google Patents

Erweiterte symmetrische Multiprozessorarchitektur Download PDF

Info

Publication number
DE69724355T2
DE69724355T2 DE69724355T DE69724355T DE69724355T2 DE 69724355 T2 DE69724355 T2 DE 69724355T2 DE 69724355 T DE69724355 T DE 69724355T DE 69724355 T DE69724355 T DE 69724355T DE 69724355 T2 DE69724355 T2 DE 69724355T2
Authority
DE
Germany
Prior art keywords
bus
node
transactions
repeater
level
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
DE69724355T
Other languages
English (en)
Other versions
DE69724355D1 (de
Inventor
Erik E. Palo Alto Hagersten
Mark D. Madison Hill
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 DE69724355D1 publication Critical patent/DE69724355D1/de
Application granted granted Critical
Publication of DE69724355T2 publication Critical patent/DE69724355T2/de
Anticipated expiration legal-status Critical
Expired - Fee Related legal-status Critical Current

Links

Classifications

    • GPHYSICS
    • G06COMPUTING OR CALCULATING; COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F15/00Digital computers in general; Data processing equipment in general
    • G06F15/16Combinations of two or more digital computers each having at least an arithmetic unit, a program unit and a register, e.g. for a simultaneous processing of several programs
    • G06F15/163Interprocessor communication
    • G06F15/173Interprocessor communication using an interconnection network, e.g. matrix, shuffle, pyramid, star, snowflake
    • G06F15/17356Indirect interconnection networks
    • G06F15/17368Indirect interconnection networks non hierarchical topologies
    • G06F15/17381Two dimensional, e.g. mesh, torus

Landscapes

  • Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • Computer Hardware Design (AREA)
  • Theoretical Computer Science (AREA)
  • Mathematical Physics (AREA)
  • Software Systems (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Bus Control (AREA)
  • Memory System Of A Hierarchy Structure (AREA)
  • Multi Processors (AREA)

Description

  • Die vorliegende Erfindung bezieht sich auf erweiterte, symmetrische Mehrprozessor-Architekturen.
  • Mehrprozessor-Computersysteme weisen zwei oder mehr Prozessoren auf, die verwendet werden, um Rechenaufgaben durchzuführen. Eine bestimmte Rechenaufgabe kann auf einem Prozessor ausgeführt werden, während andere Prozessoren damit nicht zusammenhängende Berechnungsaufgaben ausführen. Alternativen können Komponenten einer bestimmten Berechnungsaufgabe zwischen mehreren Prozessoren verteilt werden, um die für das Ausführen der Berechnungsaufgabe erforderliche Zeit insgesamt abzusenken. Allgemein gesprochen ist ein Prozessor eine Einrichtung, die so ausgestaltet ist, daß sie eine Operation mit einem oder mehreren Operanden ausführt, um ein Ergebnis zu erzeugen. Die Operation wird in Reaktion auf eine durch den Prozessor ausgeführte Anweisung ausgeführt.
  • Eine populäre Architektur in kommerziellen Computersystemen mit mehreren Prozessoren ist die symmetrische Mehrprozessorarchitektur (SMP-Architektur). Typischerweise weist ein SMP-Computersystem mehrere Prozessoren auf, die über eine Cachehierarchie mit einem gemeinsam verwendeten Bus verbunden sind. Zusätzlich ist ein Speicher an den Bus angeschlossen, der von den Prozessoren in dem System gemeinsam verwendet wird. Zugriff auf irgendeine bestimmte Speicherstelle innerhalb dieses Speichers erfolgt innerhalb einer ähnlichen Zeit wie der Zugriff auf irgendeine andere bestimmte Speicherstelle. Da auf jede Stelle in dem Speicher in gleichförmiger Weise zugegriffen werden muß, wird diese Struktur oft als eine gleichförmige Speicherarchitektur (UMA) bezeichnet.
  • Prozessoren sind oft mit internen Caches ausgerüstet und einer oder mehrere Caches sind in einem SMP-Computersystem typischerweise in der Cachehierarchie zwischen den Prozessoren und dem gemeinsam verwendeten Bus enthalten. Mehrere Kopien von Daten, die in einer bestimmten Hauptspeicheradresse abgelegt sind, können in diesen Caches gespeichert sein. Um das Modell mit dem gemeinsam verwendeten Speicher aufrechtzuerhalten, in welchem eine bestimmte Adresse zu einem gegebenen Zeitpunkt exakt einen Datenwert speichert, verwenden Computersysteme mit gemeinsam verwendetem Bus eine Cachekohärenz. Allgemein gesprochen ist eine Operation kohärent, wenn die Einflüsse der Operation auf die an einer bestimmten Speicheradresse gespeicherten Daten sich in jeder Kopie dieser Daten innerhalb der Cachehierarchie wiederfinden. Wenn beispielsweise Daten, die an einer bestimmten Speicheradresse gespeichert sind, aktualisiert werden, können die aktualisierten Daten den Caches zugeführt werden, welche Kopien der vorherigen Daten speichern bzw. speicherten. Alternativ können die Kopien der vorherigen Daten in den Caches ungültig gemacht werden, so daß ein nachfolgender Zugriff auf die betreffende Speicherstelle bewirkt, daß die aktualisierte Kopie von dem Hauptspeicher übermittelt wird. Für gemeinsam verwendete Bussysteme wird typischerweise ein Busprotokoll mit "Nachschnüffeln" bzw. "Nachforschung" verwendet. Jede kohärente Transaktion, die auf dem gemeinsam verwendeten Bus durchgeführt wird, wird im Vergleich zu Daten in dem Cache untersucht ("Nachschnüffeln"). Wenn eine Kopie der beeinflußten bzw. geänderten Daten gefunden wird, wird der Zustand der Cachezeile, welche die Daten enthält, in Reaktion auf die kohärente Transaktion aktualisiert.
  • Unglücklicherweise leiden Architekturen mit gemeinsam verwendetem Bus an mehreren Nachteilen, welche ihre Brauchbarkeit in Mehrprozessor-Computersystemen begrenzen. Ein Bus ist in der Lage, eine maximale Bandbreite bzw. Spitzenbandbreite (beispielsweise eine Anzahl von Bytes/Sekunde, die über den Bus übertragen werden können) zu transportieren. Wenn zusätzliche Prozessoren an dem Bus angebracht werden, kann die für die Versorgung der Prozessoren mit Daten und Befehlen erforderliche Bandbreite die maximale Busbandbreite überschreiten. Da einige Prozessoren notgedrungen auf verfügbare Busbandbreite warten müssen, leidet die Leistungsfähigkeit des Computersystems, wenn Bandbreitenerfordernisse der Prozessoren die verfügbare Busbandbreite überschreiten.
  • Außerdem erhöht das Hinzufügen weiterer Prozessoren zu einem gemeinsam verwendeten Bus die kapazitive Last auf dem Bus und kann auch veranlassen, daß die physikalische Länge des Busses erhöht werden muß. Die erhöhte kapazitive Last und die erweiterte Buslänge vergrößert die Verzögerung beim Fortschreiten eines Signals über den Bus. Aufgrund der erhöhten Durchlaufverzögerung können Transaktionen für ihre Ausführung länger benötigen. Daher kann die maximale Bandbreite des Busses absinken, wenn weitere Prozessoren hinzugefügt werden.
  • Diese Probleme werden noch weiter verstärkt durch den fortgesetzten Anstieg der Betriebsfrequenz und der Leistungsfähigkeit von Prozessoren. Die gesteigerte Leistungsfähigkeit, die durch die höheren Frequenzen und durch die fortgeschritteneren Mikroarchitekturen von Prozessoren ermöglicht wird, führt zu höheren Anforderungen an die Bandbreite als im Falle früherer Prozessorgenerationen, selbst bei der gleichen Anzahl von Prozessoren. Daher können Busse, die zuvor eine ausreichende Bandbreite für ein Mehrprozessor-Computersystem bereitgestellt haben, für ein ähnliches Computersystem, welches Prozessoren höherer Leistungsfähigkeit verwendet, unzureichend sein.
  • Ein üblicher Weg der Behandlung des Problems, welches auftritt, wenn weitere Prozessoren und Einrichtungen zu einem gemeinsam verwendeten Bussystem hinzugefügt werden, besteht darin, eine Hierarchie von Bussen vorzusehen. In einem hierarchischen, gemeinsam verwendeten Bussystem sind die Prozessoren und andere Buseinrichtungen unter mehreren Bussen einer niedrigeren Ebene aufgeteilt. Die Busse niedrigerer Ebene sind mit einem oder mehreren Bussen höherer Ebene verbunden. Transaktionen, die ihren Ausgang in einem Bus niedrigerer Ebene haben, werden an den Bus höherer Ebene gesendet und dann durch Repeater zurück an alle Busse niedrigerer Ebene gesendet bzw. geleitet. Demnach sehen alle Buseinrichtungen die Transaktion gleichzeitig und die Transaktionen bleiben geordnet. Der hierarchische, gemeinsam verwendete Bus erscheint logisch als ein großer, gemeinsam verwendeter Bus für alle Einrichtungen. Zusätzlich überwinden die hierarchischen Strukturen die elektrischen Einschränkungen eines einzelnen, großen, gemeinsam verwendeten Busses.
  • Ein Problem bei der obigen hierarchischen, gemeinsam verwendeten Busstruktur besteht doch darin, daß Transaktionen immer zweimal auf dem Ausgangsbus niedrigerer Ebene gesendet werden. Diese Ineffizienz kann die verfügbare Breite auf den Bussen niedrigerer Ebenen stark einschränken. Eine mögliche Lösung bestünde darin, getrennte, unidirektionale Busse für Transaktionen für den Aufwärtsweg zu den höheren Ebenen der Bushierarchie und für Transaktionen auf dem Weg abwärts von höheren Ebenen der Bushierarchie zu verwenden. Diese Lösung erfordert jedoch die zweifache Menge an Bussignalen und die zweifache Anzahl von Anschlußstiften auf der Buspackung. Offensichtlich bringt diese Lösung beträchtliche physikalische Probleme mit sich.
  • Ein Beispiel eines SMP-Computersystems, welches eine traditionelle, hierarchische Busstruktur verwendet, ist in 1 wiedergegeben. Es ist eine Busstruktur auf zwei Ebenen dargestellt. Buseinrichtungen 8AB sind mit dem Bus 4A der niedrigeren Ebene L1.1 verbunden Buseinrichtungen 8CD sind mit dem Bus 4B der niedrigen Ebene L1.2 verbunden. Die Buseinrichtungen können irgendwelche Einrichtungen eines lokalen Bustyps sein, die man in modernen Computersystemen, wie z. B. einer Prozessor/Speichereinrichtung oder einer I/O-Brückeneinrichtung findet. Jeder separate L1-Bus 4AB ist über einen Repeater 6AB mit einem L2-Bus zu einer oberen Ebene verbunden. Gemeinsam bilden jeder Repeater, der L1-Bus und die Busgerätegruppe einen Repeaterknoten 5. Beispielsweise bilden der Repeater 6A, der L1-Bus 4A und die Busgeräte 8AB den Repeaterknoten 5A.
  • Wenn eine Bustransaktion (wie z. B. Lesen eines Speichers) durch ein Busgerät ausgelöst wird, wird die Transaktion von dem L1-Ausgangsbus (4A oder 4B) zu dem L2-Bus 2 gesendet. Die Transaktion wird dann gleichzeitig an beide L1-Busse 4AB über ihre jeweiligen Repeater 6AB gesendet. Auf diese Weise wird die Transaktion von allen Busgeräten 8 gleichzeitig gesehen. Weiterhin stellt die hierarchische Struktur gemäß 1 sicher, daß Bustransaktionen für alle Busgeräte 8 in derselben Reihenfolge erscheinen. Demnach erscheint die hierarchische Busstruktur logisch für die Busgeräte 8AD als ein einzelner, gemeinsam verwendeter Bus.
  • Der Betrieb des Computersystems nach 1 kann durch das Zeitablaufdiagramm 12 veranschaulicht werden, wie es in 2 dargestellt ist. Jede Spalte des Zeitablaufdiagramms 12 entspricht einem entsprechenden Buszyklus. Elf Buszyklen in zeitlicher Ordnung von links nach rechts werden durch die elf Spalten wiedergegeben. Der Zustand des L2-Busses 2, des L1.1-Busses 4A und des L1.2-Busses 4B ist für jeden Buszyklus entsprechenden den jeweiligen Reihen 1416 dargestellt. Während des Buszyklus 1 wird ein ausgehendes Paket (Adresse und Befehl) durch eines der Busgeräte auf den L1-Bus 4 in jedem Repeaterknoten 5 geschickt. In dem Zeitablaufdiagramm 12 sind diese ausgehenden Pakete als P1(o) auf dem L1.1-Bus 4A und P2(o) auf dem L1.2-Bus 4B dargestellt. Da zwei verschiedene Bustransaktionen während desselben Zyklus ausgegeben wurden, hängt die Reihenfolge, in welcher sie auf dem L2-Bus 2 erscheinen, von dem verwendeten Vermittlungsschema ab. Bei der in dem Zeitablaufdiagramm 12 dargestellten Ausführungsform wird die auf dem L1.1-Bus 4A ausgegebene Transaktion zuerst an den L2-Bus 2 gesendet, wie es durch P1 auf dem L2-Bus in dem Buszyklus 2 wiedergegeben wird. Die Transaktion P2(o) wird in einer Schlange in ihrem entsprechenden Repeater 6B angeordnet. Außerdem werden während des Bus zyklus 2 zwei neue Transaktionen auf den Bussen 4 der unteren Ebene ausgegeben, was durch die ausgehenden Bustransaktionen P3(o) und P4(o) auf dem L1.1-Bus 4A bzw. dem L1.2-Bus 4B wiedergegeben wird.
  • Während des Buszyklusses 3 wird die Transaktion P1 als eine eingehende Transaktion auf den L1-Bussen 4 beider Repeaterknoten 5 ausgesendet, wie es durch P1(i) auf den Reihen 15 und 16 wiedergegeben wird. Außerdem wird die zweite ausgehende Transaktion P2(o) aus dem Bustakt 1 auf dem L2-Bus 2 ausgesendet, wie es in Reihe 14 auf dem Zeitablaufdiagramm 12 dargestellt ist. In ähnlicher Weise werden die Bustransaktionen P3 und P4 während der Buszyklen 5 und 6 auf die L1-Busse ausgesendet. Da die Bandbreite des L1-Busses, die verbraucht wird, wenn der Repeater eingehende Transaktionen aussendet, können neue ausgehende Transaktionen nicht vor dem Buszyklus 7 ausgegeben werden. Im Ergebnis wird die volle Bandbreite des L2-Busses 2 nicht ausgenutzt, wie es durch die Lücke in Reihe 14 während der Buszyklen 6 und 7 dargestellt wird.
  • Bei Systemen, die eine größere Anzahl von Prozessoren erfordern, benötigt der obige hierarchische Busaufbau möglicherweise viele Hierarchieebenen. Die mit dem Aussenden jeder Transaktion an das obere Ende der Hierarchie und zurück verbundene Verzögerung und die Verzögerung, die mit der Busvermittlung zusammenhängt, kann den Durchsatz großer hierarchischer Strukturen erheblich beschränken.
  • Aus der obigen Diskussion wird deutlich, daß eine effizientere Architektur für die Verbindung einer großen Anzahl von Geräten in einem Mehrprozessorsystem wünschenswert ist. Die vorliegende Erfindung befaßt sich mit diesem Bedürfnis. Verschiedene entsprechende Aspekte und Merkmale der Erfindung sind in den anhängenden Ansprüchen definiert. Die oben skizzierten Probleme werden durch ein Computersystem gemäß der vorliegenden Erfindung gelöst oder abgemildert.
  • Ausführungsformen der Erfindung beziehen sich auf das Gebiet der Mehrprozessor-Computersysteme und genauer gesagt auf die architektonische Verbindung mehrerer Prozessoren innerhalb eines Mehrprozessor-Computersystems.
  • Eine Ausführungsform der vorliegenden Erfindung geht von der Vorstellung einer erweiterten Multiprozessor-Computerarchitektur aus. Mehrere Multiprozessorknoten sind über unidirektionale Punkt-zu-Punkt-Verbindungen verknüpft. Jeder Mehrprozessor-Verknüpfungsknoten weist eine Schnittstelleneinrichtung für eine obere Ebene auf für die Schnittstellenbildung zu diesen Punkt-zu-Punkt-Verbindungsanschlüssen. Jeder Knoten weist auch einen Bus einer oberen Ebene auf, der die Schnittstelle der oberen Ebene mit einem oder mehreren Repeatern verbindet. Jeder Repeater ist auch mit einem getrennten Bus unterer Ebene verbunden. Eine oder mehrere Buseinrichtungen werden an jedem Bus unterer Ebene angebracht.
  • Jeder Repeater in einem gegebenen Mehrprozessorknoten weist eine interne Schlange und einen Umgehungspfad auf. Jeder Repeater empfängt auch Steuersignale von der Schnittstelle der oberen Ebene. Die Steuersignale werden verwendet, um entweder den Bypasspfad oder die Schlange zum Senden von Transaktionen von dem Bus oberer Ebene zu dem Bus unterer Ebene zu senden. Transaktionen, die aus einem gegebenen Repeaterknoten stammen, werden in der Schlange gespeichert, während Transaktionen, die von einem anderen Mehrprozessorknoten eingehen, über den Umgehungspfad auf den Bus unterer Ebene gesendet werden. Die Punkt-zu-Punkt-Verknüpfungsstruktur zwischen den Schnittstellen der oberen Ebene der Mehrprozessorknoten ermöglicht, daß Transaktionen gleichzeitig zwischen allen Mehrprozessorknoten kommuniziert werden. Demnach ist mit diesen Kommunikationen der oberen Ebene keine Vermittlungsverzögerung verbunden. Die Transaktionsreihenfolge wird auf dieser Schnittstelle der oberen Ebene durch das Befolgen einer streng definierten Transaktionsordnung aufrechterhalten. Es kann jede beliebige Ordnung gewählt werden, jedoch muß eine speziell definierte Reihenfolge konsistent benutzt werden. Beispielsweise kann eine solche Ordnung darin bestehen, daß in einem System, welches drei Konten, Knoten A, Knoten B und Knoten C aufweist, Transaktionen, die von dem Knoten A stammen, gegenüber den Transaktionen, die von dem Knoten B kommen, Priorität haben, und daß Transaktionen, welche von dem Knoten B kommen, gegenüber den Transaktionen, welche von dem Knoten C kommen, Priorität haben. Diese festgelegte Reihenfolge zeigt die Reihenfolge an, in welcher Transaktionen, welche auf der Punkt-zu-Punkt-Verknüpfungsstruktur der oberen Ebene kommuniziert werden, an die Repeater in jedem Prozessorknoten gesendet werden. Die Transaktionen, die auf den Bus der oberen Ebene der Repeaterknoten gesendet werden, von welchem sie nicht stammen, werden durch den Umgehungspfad weiter auf die Busse niedriger Ebene in diesem Knoten gesendet. Dieselbe Transaktion wird jedoch nicht auf dem Bus oberer Ebene in den Repeaterknoten ausgesendet, von welchem sie ausgeht. Stattdessen wird das Steuersignal an die Repeater angelegt, welches anzeigt, daß die Transaktion von den Repeaterschlangen an die Busse unterer Ebene gesendet werden soll. Dies ermöglicht, daß der Bus oberer Ebene in dem Ausgangsknoten für das Aussenden neuer Transaktionen frei bleibt.
  • Aus der oben beschriebenen Betriebsweise für das erweiterte Mehrprozessor-Computersystem kann man erkennen, daß Bustransaktionen, die zwischen Mehrprozessorknoten gesendet werden, nur einmal auf jedem Bus oberer Ebene und dem Bus unterer Ebene jedes Mehrprozessorknotens erscheinen. Dies ermöglicht, daß eine maximale Busbandbreite verwendet wird. Weiterhin stellt die streng definierte Reihenfolge für die Punkt-zu-Punkt-Verbindungen der oberen Ebene sicher, daß immer ein geordnetes Aussenden von Transaktionen erfolgt und daß jedes Busgerät in dem System jede Transaktion gleichzeitig und in derselben Reihenfolge sieht.
  • Die Erfindung wird nun anhand eines Beispiels unter Bezug auf die beigefügten Zeichnungen beschrieben, in welchen gleiche Teile durchgehend durch gleiche Bezugszahlen bezeichnet werden und in denen:
  • 1 ein Blockdiagramm eines symmetrischen Mehrprozessor-Computersystems ist, welches eine hierarchische Busstruktur verwendet,
  • 2 ein Zeitablaufdiagramm ist, welches die Betriebsweise des Computersystems nach 1 zeigt,
  • 3 ein Blockdiagramm eines symmetrischen Mehrprozessor-Computersystems ist, welches eine hierarchische Busstruktur verwendet,
  • 4 ein Zeitablaufdiagramm ist, welches die Betriebsweise des Computersystems nach 3 veranschaulicht,
  • 5 ein Blockdiagramm eines Prozessor/Speicherbusgerätes ist,
  • 6 ein Blockdiagramm eines Busgerätes einer I/O-Brücke ist,
  • 7 ein Blockdiagramm eines erweiterten symmetrischen Mehrprozessor-Computersystems gemäß einer Ausführungsform der vorliegenden Erfindung ist,
  • 8 ein Blockdiagramm eines SMP-Knotens des erweiterten, symmetrischen Mehrprozessor-Computersystems nach 7,
  • 9 ein Diagramm der verwendeten unterschiedlichen Adressierarten ist,
  • 10 ein Zeitablaufdiagramm ist, welches die Betriebsweise des erweiterten symmetrischen Mehrprozessor-Computersystems veranschaulicht.
  • Während die Erfindung verschiedene Modifikationen annehmen kann und für alternative Formen empfänglich ist, werden spezielle Ausführungsformen derselben anhand eines Beispiels in den Figuren dargestellt und werden hier im einzelnen beschrieben. Es versteht sich jedoch, daß die Figuren und deren genaue Beschreibung die Erfindung nicht auf die speziell offenbarte Form beschränken sollen, sondern im Gegenteil die Erfindung alle Modifikationen, Äquivalente und Alternativen abdecken soll, die in den Schutzumfang der vorliegenden Erfindung fallen, wie er durch die anhängenden Ansprüche definiert wird.
  • Gemäß 3 ist ein Blockdiagramm einer Ausführungsform eines Mehrprozessor-Computersystems 20 dargestellt. Das Computersystem 20 weist mehrere Repeaterknoten 30A30B auf, die durch einen Bus der oberen Ebene (L2-Bus) 22 verbunden sind. Elemente, die hier mit einer bestimmten Bezugszahl bezeichnet werden, auf welche ein Buchstabe folgt, werden insgesamt durch die entsprechende Bezugszahl alleine bezeichnet. Beispielsweise werden die Repeaterknoten 30A30B gemeinsam als Geräteknoten 30 bezeichnet. Auch wenn in 3 zwei Repeaterknoten 30 dargestellt sind, kann irgendeine beliebige Anzahl von Repeaterknoten 30 miteinander verbunden bzw. angeschlossen sein, was nur durch die physikalischen/elektrischen Einschränkungen auf dem L2-Bus 22 beschränkt wird. In der dargestellten Ausführungsform weist jeder Repeaterknoten 30 mehrere Busgeräte 38, einen Gerätebus 32 unterer Ebene und einen Repeater 34 auf. Beispielsweise ist der Repeaterknoten 30A mit mehreren Busgeräten 38AB ausgestattet. Die Busgeräte 38AB sind an den Bus (L1-Bus) 32A der unteren Ebene angeschlossen. Der L1-Bus 32A bildet über den Repeater 34A eine Schnittstelle zu dem L2-Bus 22. Das Busgerät 38A ist ein Prozessor/Speichergerät und weist eine Eingangsschlange 40A, einen Multiplexer 42A zusätzlich zu dem Prozessor/Speicherelement 48A auf. Das Prozessor/Speicherelement kann einen Hochleistungsprozessor, einen DRAM-Speicher und einen Hochgeschwindigkeitscachespeicher aufweisen. Der physikalische DRAM-Speicher, der auf jedem Busgerät 38 angeordnet ist, bildet gemeinsam (d. h. in Verbindung mit anderen) den Systemspeicher für das Computersystem 20 nach 3.
  • Das Busgerät 38B ist ein Eingabe/Ausgabe- (I/O-) Busgerät. Ähnlich dem Prozessor/Speichergerät 38A weist auch das I/O-Busgerät 38B bzw. die I/O-Buseinrichtung 38B eine Eingangsschlange 40B und einen Multiplexer 42B zusätzlich zu dem I/O-Element 50 auf. Das I/O-Element 50 kann eine Busbrücke zu einem peripheren Bus, wie z. B. dem Verbindungsbus für peri phere Komponenten (PCI – Peripheral Component Interconnect) aufweisen. Der PCI-Bus kann verwendet werden als Schnittstelle zu peripheren Geräten, wie z. B. einer Grafikschnittstelle, seriellen und parallelen Anschlüssen, Festplattenlaufwerken, Modems, Druckern usw.
  • Während die Ausführungsform in 3 nur zwei Buseinrichtungen 38 in jedem Repeaterknoten 30 zeigt, kann die Anzahl von Buseinrichtungen 38 abhängig von der gewünschten Konfiguration größer oder kleiner sein. Es kann auch irgendeine Mischung aus Prozessor/Speichereinrichtungen und I/O-Einrichtungen vorhanden sein. Die maximale Anzahl von Buseinrichtungen bzw. -geräten, die in einem Repeaterknoten 30 zulässig ist, wird durch die physikalischen/elektrischen Einschränkungen jedes der L1-Busse 32 begrenzt. Weiterhin kann, während hier nur zwei hierarchische Busebenen dargestellt sind, die hier beschriebene Ausführungsform so erweitert werden, daß sie eine größere Anzahl hierarchischer Busebenen hat, falls gewünscht.
  • Allgemein gesprochen stehen die Buseinrichtungen 38 in Kommunikationsverbindung miteinander, indem sie Bustransaktionen senden und empfangen. Bustransaktionen können entweder Speicher- oder I/O-Vorgänge ausführen. Allgemein ist eine Speicheroperation eine Operation, die eine Übertragung von Daten von einer Quelle zu einem Ziel bewirkt. Die Quelle und/oder das Ziel können Speicherstellen innerhalb des Auslösenden sein oder sie können Speicherstellen innerhalb des Systemspeichers sein. Wenn eine Quelle oder ein Ziel eine Speicherstelle innerhalb des Systemspeichers ist, wird die Quelle oder das Ziel über eine Adresse angegeben, die mit der Speicheroperation transportiert wird. Speichervorgänge können Lese- oder Schreibvorgänge sein. Ein Lesevorgang bewirkt die Übertragung von Daten aus einer Quelle außerhalb des Auslösenden zu einem Zielpunkt innerhalb des Auslösenden. Umgekehrt bewirkt eine Schreiboperation die Übertragung von Daten von einer Quelle innerhalb des auslösenden zu einem Ziel außerhalb des Auslösenden. In dem in 3 dargestellten Computersystem 20 kann eine Speicheroperation eine oder mehrere Transaktionen auf den L1-Bussen 32 und dem L2-Bus 22 umfassen. Bustransaktionen werden als bitcodierte Pakete gesendet, welche eine Adresse, einen Befehl und eine Quellenkennung haben. Andere Information kann ebenfalls in jedem Paket codiert sein, wie z. B. die Art der Adressierung oder Maskeninformation.
  • Allgemein gesprochen sind I/O-Vorgänge ähnlich den Speichervorgängen mit der Ausnahme, daß das Ziel eine I/O-Buseinrichtung ist. I/O-Einrichtungen werden verwendet, um mit peripheren Geräten zu kommunizieren, wie z. B. serielle Anschlüsse oder ein Festplattenlaufwerk. Beispielsweise kann ein I/O-Lesevorgang eine Übertragung von Daten von dem I/O-Element 50 zu einem Prozessor in der Prozessor/Speicher-Buseinrichtung 38D veranlassen. In ähnlicher Weise kann ein I/O-Schreibvorgang eine Übertragung von Daten von einem Prozessor in der Buseinrichtung 38D zu dem I/O-Element 50 in der Buseinrichtung 38D veranlassen. In dem in 3 dargestellten Computersystem 20 kann ein I/O-Vorgang eine oder mehrere Transaktionen auf den L1-Bussen 32 und dem L2-Bus 22 bewirken.
  • Die Architektur des Computersystems nach 3 versteht man noch besser, wenn man den Strom typischer Bustransaktionen verfolgt. Beispielsweise wird eine Bustransaktion, welche durch das Bus/Speicherelement 48 zu der Buseinrichtung 38A ausgelöst wird, auf dem ausgehen den Verbindungspfad 44 ausgegeben. Man sieht die Transaktion als ein ausgehendes Paket P1(o) auf dem L1.1-Bus 32A. Jede Buseinrichtung, die mit dem L1.1-Bus 32A verbunden ist, einschließlich der auslösenden Buseinrichtung (in diesem Beispiel 38A), speichert das ausgehende Paket P1(o) auf seiner Eingangsschlange 40. Außerdem sendet der Repeater 34A das Paket P1(o) auf den L2-Bus 22, wo es als Paket P1 erscheint. Die Repeater in jedem der Repeaterknoten 30, von denen das Paket nicht stammt, empfangen das Paket P1 und leiten es als Eingangspaket P1(i) auf ihre jeweiligen L1-Busse 32. Da die in 3 dargestellte Ausführungsform nur zwei Repeaterknoten 30 zeigt, würde der Repeater 34B das Paket P1 auf dem L2-Bus 22 empfangen und es in dem obigen Beispiel als Eingangspaket P1(i) auf dem L1.2-Bus 32B leiten bzw. treiben. Es ist wichtig anzumerken, daß der Repeater 34A auf dem Geräteknoten 30A, von welchem das Paket P1 als Ausgangspaket P1(o) stammte, das Paket P1 nicht zurück auf den L1.1-Bus 32A als Eingangspaket leitet. Stattdessen bringt, wenn die anderen Repeater, z. B. der Repeater 34B, das Paket P1 auf ihre jeweiligen L1-Busse leiten, der Repeater 34A das Eingangssignal 36A vor. Das Eingangssignal 36A warnt jede Buseinrichtung in dem Ausgangsknoten (bzw. weist diese darauf hin), daß sie das in ihrer Eingangsschlange 40 gespeicherte Paket als das aktuelle Eingangspaket behandeln soll. Der Repeater 34B Knoten 30B, von welchem nichts ausging, bringt sein Eingangssignal 36B nicht vor. Demnach umgehen die Einrichtungen 38C und 38D ihre Eingangsschlangen 40 und empfangen das Eingangspaket P1(i) von dem L1.2-Bus 32B. Multiplexer 42 reagieren auf das Eingangssignal und ermöglichen es, daß jede Einrichtung entweder das Paket auf dem L1-Bus 32 oder das Paket am Kopf der Eingangsschlange 40 als das aktuelle Transaktionspaket sieht.
  • In dem obigen Beispiel macht das Speichern des ausgehenden Paketes P1(o) in den Eingangsschlangen 40AB aller Buseinrichtungen 38AB in dem Ausgangsknoten 30A den L1.1-Bus 32A frei, ein weiteres Ausgangspaket auszusenden, während das erste Paket auf dem L1-Bus 32 der anderen Repeaterknoten (30B) ausgesendet wurde, von welchem nichts ausging, und von den Eingangsschlangen 40AB in dem Ausgangsknoten 32A präsentiert wird. Demnach erscheint dieselbe Bustransaktion niemals mehr als ein einziges Mal auf jedem gegebenen Bus, wodurch eine maximale Ausnutzung der Busbandbreite ermöglicht wird.
  • Allgemein gesprochen speichert jede Einrichtung auf einem gegebenen L1-Bus 32 alle ausgehenden Transaktionspakete, die auf diesem Bus in ihren Eingangsschlangen 40 erscheinen. Der Repeater 34 für diesen Repeaterknoten sendet alle ausgehenden Transaktionspakete in derselben Reihenfolge auf den L2-Bus 22, in welcher sie auf dem Ursprungs-L1-Bus 32 erscheinen. Der Repeater für jeden Repeaterknoten 30 treibt L2-Pakete auf seinen L1-Bus 32 als Eingangspakete nur dann, wenn das L2-Paket nicht von diesem Repeaterknoten stammte. Wenn das L2-Paket, welches von einem bestimmten Repeaterknoten (dem Ausgangsknoten) stammt, so bringt dieser Knoten das Eingangssignal 36 vor, anstatt das Paket während des Buszyklus erneut zu treiben bzw. anzulegen, währenddessen die anderen Repeater das Paket als ein Eingangspaket treiben bzw. leiten. Demnach sehen alle Buseinrichtungen 38 in dem Computersystem die Transaktionen gleichzeitig. Die Einrichtungen 38 in dem Ausgangsknoten sehen das Paket von ihren Eingangsschlangen 40 und die Einrichtungen 38 in dem Nicht-Ausgangsknoten sehen das Paket auf ihrem L1-Bus 32 über ihre entsprechenden Umgehungspfade 46. Da die Buseinrichtungen 38 in dem Ausgangsknoten ihre entsprechenden Eingangsschlangen 40 verwenden, um das Paket zu sehen, ist der L1-Bus 32 in dem Ausgangsknoten frei, ein weiteres Ausgangspaket auszusenden. Auf diese Weise kann die volle Bandbreite des L2-Busses 22 ausgenutzt werden.
  • Da alle ausgehenden Transaktionspakete in derselben Reihenfolge ausgesendet werden, wie sie ausgegeben werden (was eine Vermittlung zwischen den Einrichtungen ermöglicht), und auf allen Einrichtungen während desselben Buszyklusses erscheinen, erscheint die hierarchische Busstruktur der L1-Busse 32, der Repeater 34 und der L2-Bus 22 für die Buseinrichtungen 38 als ein einziger großer, logisch gemeinsam verwendeter Bus. Es können jedoch noch viel mehr Buseinrichtungen 38 durch die hierarchische Struktur nach 3 unterstützt werden, als sie auf einem einzelnen, physikalisch gemeinsam verwendeten Bus zulässig wären. In einer Ausführungsform erscheint der Speicher, der physikalisch auf jeder Prozessor/Speicher-Buseinrichtung lokalisiert ist, als ein einziger logischer Speicher, welcher den Systemspeicher bildet. Auf den Systemspeicher kann generell durch alle Buseinrichtungen 38 zugegriffen werden.
  • Die Vermittlungslogik ist in jeder Buseinrichtung 38 und dem Repeater 34 enthalten, um gleichzeitige Busanforderungen zu handhaben. In einer Ausführungsform vermitteln der Repeater 34 und die Buseinrcchtungen 38 auf jedem entsprechenden Knoten 30 für ihren L1-Bus 34 in diesem Knoten. Zusätzlich vermittelt jeder Repeater 34 für den Zugriff auf den L2-Bus 22. Anhängige L1-Transaktionspakete können in Ausgangsschlangen in jeder Buseinrichtung in einer Schlange angeordnet werden. In ähnlicher Weise können anhängige L2-Pakete und anhängige eingehende L1-Pakete in jedem Repeater 34 in einer Schlange angeordnet werden. Verschiedene Vermittlungsschemata können verwendet werden, wie z. B. Ringversuche oder solche auf Prioritätsbasis für jedes Busniveau.
  • Gemäß 4 und weiterhin gemäß 3 kann die Arbeitsweise des Computersystems 20 nach 3 durch das in 4 dargestellte Zeitablaufdiagramm 60 veranschaulicht werden. Jede Spalte des Zeitablaufdiagramms 60 entspricht einem bestimmten Buszyklus. Elf Buszyklen, die zeitlich von links nach rechts ansteigen, werden durch die elf Spalten wiedergegeben. Der Zustand des L2-Busses 22, des L1.1-Busses 32A, des L1.2-Busses 32B, des Eingangssignals 36A und des Eingangssignals 36B ist für jeden Buszyklus entsprechend den jeweiligen Reihen 6165 dargestellt.
  • Während des Buszyklus 1 wird ein Ausgangspaket durch ein Busgerät 38 auf den L1-Bus 32 in jedem Knoten 30 geleitet. In dem Zeitablaufdiagramm 60 sind diese Ausgangspakete als P1(o) auf Reihe 62 (L1.1-Bus) und P2(o) auf Reihe 63 (L1.2-Bus) dargestellt. Da zwei verschiedene Bustransaktionen während desselben Zyklusses ausgegeben wurden, hängt die Reihenfolge, in welcher sie auf dem L2-Bus 22 erscheinen, von dem Vermittlungsschema ab. Für die in dem Zeitablaufdiagramm 60 dargestellte Ausführungsform wird die auf dem L1.1-Bus 32A ausgegebene Transaktion zuerst auf den L2-Bus 22 gesendet, wie es durch P1 auf Reihe 61 (L2-Bus) in dem Buszyklus 2 dargestellt wird. Die Transaktion P2(o) wird in ihrem entsprechenden Repeater in einer Schlange angeordnet. Außerdem werden während des Buszyklus 2 zwei neue Transaktionen auf den Bussen 32 unterer Ebene ausgegeben, wie es durch die Ausgangsbustransaktionen P3(o) und P4(o) auf Reihe 62 (L1.1-Bus) bzw. Reihe 63 (L1.2-Bus) wiedergegeben wird. Es ist wichtig anzumerken, daß alle ausgehenden Transaktionspakete in den Eingangsschlangen 40 für alle Buseinrichtungen 38 auf dem Repeaterknoten in einer Schlange angeordnet werden, von welchem die Transaktion ausging. Beispielsweise stammt die ausgehende Transaktion P3(o) von dem L1.1-Bus 32A und wird demnach in den Eingangsschlangen 40A und 40B der Buseinrichtungen 38A bzw. 38B in dem Ausgangsknoten 30A gespeichert. Die ausgehende Transaktion P3(o) kann ihren Ursprung entweder in der Buseinrichtung 38A oder 38B haben.
  • Während des Buszyklus 3 wird die Transaktion P1 als eingehende Transaktion auf dem L1-Bus 32B des Knotens 30B gesendet, wie es durch P1(i) auf Reihe 63 (L1.2-Bus) wiedergegeben wird. Die Transaktion P1 wird jedoch nicht auf den L1-Bus des Knotens 30A ausgesendet, da dieses der Knoten ist, von welchem die Transaktion P1 ausging. Stattdessen wird das Eingangssignal 36A in dem Knoten 30A vorgebracht, wie es auf Reihe 64 auf dem Zeitablaufdiagramm 60 dargestellt ist. Das Vorbringen des Eingangssignals 36A bewirkt, daß jede Buseinrichtung 38AB auf dem Repeaterknoten 30A die Transaktion P1 als ein Eingangspaket P1(i) von ihrer jeweiligen Eingangsschlange 40 sieht. Demnach ist der L1-Bus 32A in dem Ausgangsknoten 30A frei für das Aussenden einer weiteren ausgehenden Transaktion während desselben Buszyklus, wie es durch P5(o) auf Reihe 62 in dem Zeitablaufdiagramm 60 während des Buszyklus 3 wiedergegeben wird. Außerdem wird während des Buszyklus 3 die zweite ausgehende Transaktion P2(o) von dem Buszyklus 1 auf dem L2-Bus 22 ausgesendet, wie es in Reihe 61 auf dem Zeitablaufdiagramm 60 gezeigt wird.
  • Während des Buszyklus 4 wird die Transaktion P2 als eine Eingangstransaktion auf dem L1-Bus 32A des Knotens 30A ausgesendet, wie es durch P2(i) auf Reihe 62 wiedergegeben wird. Die Transaktion P2 wird jedoch nicht auf den L1-Bus des Knotens 30B ausgesendet, weil dieses der Knoten ist, von welchem die Transaktion P2 ausging. Stattdessen wird das Eingangssignal 36B in dem Knoten 30B freigelegt, wie es auf Reihe 65 des Zeitablaufdiagramms 60 für den Buszyklus 4 dargestellt ist. Das Vorbringen des Eingangssignals 36B bewirkt, daß jede Buseinrichtung 38CD auf dem Knoten 38B die Transaktion P2 als Eingangspaket P2(i) von ihrer jeweiligen Eingangsschlange 40 sieht. Demnach ist der L1-Bus 32B in dem Ausgangsknoten 30B frei für das Aussenden einer weiteren ausgehenden Transaktion während desselben Buszyklus, wie es durch P6(o) auf Reihe 63 in dem Zeitablaufdiagramm 60 während des Buszyklus 4 dargestellt ist. Außerdem wird während des Buszyklus 4 die ausgehende Transaktion P3(o) auf dem L2-Bus 22 als Transaktion P3 ausgesendet, wie es auf Reihe 61 in dem Zeitablaufdiagramm 60 dargestellt ist.
  • Der vorstehend beschriebene Vorgang kann auf jede Bustransaktion angewendet werden, die aus einer Buseinrichtung stammt. Es ist aus dem Zeitablaufdiagramm 60 offensichtlich, daß ein gegebenes Transaktionspaket einmal und nur einmal auf jedem L1-Bus 32 erscheint: entweder als ein Ausgangspaket oder als ein Eingangspaket, jedoch nicht als beides. Daher erscheinen alle Transaktionspakete exakt nur einmal auf jedem Bus in dem Computersystem 20 nach 3. Es ist aus dem Zeitablaufdiagramm 60 außerdem offensichtlich, daß diese Ausführungsform ermöglicht, daß die volle Bandbreite auf dem L2-Bus 22 ausgenutzt wird. Außerdem veranschaulicht das Zeitablaufdiagramm 60, daß jede Buseinrichtung 38 in dem Computersystem 20 jede bestimmte Transak tion während desselben Buszyklus und in derselben Reihenfolge sieht, wie sie auf jeder anderen Buseinrichtung 38 in dem Computersystem 20 erscheint.
  • Gemäß 5 ist eine genaue Darstellung einer Prozessor/Speicher-Buseinrichtung 70 dargestellt. Die Buseinrichtung 70 kann einer der Prozessor/Speicher-Buseinrichtungen 38A, C–D in 3 entsprechen. Die Buseinrichtung 70 umfaßt einen Prozessor 80, der ein Hochleistungsprozessor sein kann. In einer Ausführungsform ist der Prozessor 80 ein SPARC-Prozessor, der mit der Version 9 der SPARC-Prozessorarchitektur konform ist. Es versteht sich jedoch, daß irgendeine beliebige Prozessorarchitektur durch den Prozessor 80 verwendet werden kann.
  • Typischerweise umfaßt der Prozessor 80 interne Befehls- und Datencaches. Daher wird der externe Cache 76 als ein L2-Cache (für Level 2 bzw. Ebene 2, wobei die internen Caches Level 1- bzw. Ebene 1-Caches sind) bezeichnet. Wenn der Prozessor 80 nicht mit internen Caches ausgerüstet ist, so ist der externe Cache 76 ein Level 1-Cache. Es versteht sich, daß die "Level"-Nomenklatur verwendet wird, um die Nähe eines bestimmten Caches zu dem Prozessorkern innerhalb des Prozessors 80 zu kennzeichnen. Level 1 liegt dem Prozessorkern am nächsten, Level 2 ist das nächstnahe usw. Der externe Cache 76 gewährleistet einen schnellen Zugriff auf Speicheradressen, auf die durch den damit verbundenen Prozessor 80 häufig zugegriffen wird. Es versteht sich, daß der externe Cache 26 in irgendeiner von einer Vielfalt spezieller Cacheanordnungen konfiguriert sein kann. Beispielsweise können durch den externen Cache 76 satzassoziative oder direkt abbildende bzw. abgebildete Konfigurationen verwendet werden.
  • Der Speicher 82 ist dafür ausgelegt, Daten- und Befehlscode für die Verwendung durch den Prozessor 80 und andere Buseinrichtungen in dem Computersystem zu speichern. Der Speicher 82 weist vorzugsweise dynamischen Speicher mit wahlweisem Zugriff (DRAM) auf, auch wenn irgendein anderer Speichertyp verwendet werden kann. Gemäß 5 und auch gemäß 3 bildet der Speicher 82 in Verbindung mit ähnlichen Speichern in den anderen Buseinrichtungen und in den anderen Knoten 30 ein gemeinsam verwendetes Speichersystem. Auch wenn das Speichersystem zwischen den Einrichtungen und Knoten physikalisch verteilt sein kann, erscheinen die physikalischen Speicher gemeinsam logisch als ein einzelner, gemeinsam verwendeter Speicher. Demnach kann, wenn ein Prozessor 80 innerhalb einer bestimmten Buseinrichtung 38 auf den Systemspeicher zugreift, der Zugriff von dem Speicher 82 auf einer anderen Buseinrichtung oder auf seiner eigenen Buseinrichtung erfüllt werden, abhängig von der Speicheradresse. Alle Speichertransaktionen erscheinen jedoch auf jeder Buseinrichtung während desselben Buszyklus, wie oben für die Arbeitsweise nach 3 beschrieben wurde. Daher hängen die Transaktionszeiten für Speicheradressen nicht von der physikalischen Stelle des Auslösers oder des Speichers 82 ab.
  • Wenn der Prozessor 80 einen Speicherzugriff ausführt, so kann er die Daten potentiell im Cache aufnehmen. Daher muß zwischen allen Buseinrichtungen 38 in dem Computersystem 20 eine Kohärenz aufrechterhalten werden. Es können normale SMP-Kohärenzprotokolle verwendet werden, wie z. B. MESI, um Kohärenz aufrechtzuerhalten, da die Architektur nach 3 sicherstellt, daß alle Transaktionen näherungsweise zur selben Zeit und in derselben Reihenfolge über alle Buseinrichtungen in dem System 20 hinweg gesehen werden.
  • Nochmals gemäß 3 nimmt die hierarchische L1/L2-Busstruktur die Kommunikation zwischen allen Buseinrichtungen in dem Computersystem 20 auf. In einer Ausführungsform weisen die L1-Busse 32 und der L2-Bus 22 jeweils einen Adreßbus und zugehörige Steuersignale auf, ebenso wie einen Datenbus und zugehörige Steuersignale. Da die Adreß- und Datenbusse voneinander getrennt sind, kann ein Busprotokoll mit aufgespaltener Transaktion verwendet werden. Allgemein gesprochen ist ein Busprotokoll mit aufgespaltener Transaktion ein Protokoll, bei welchem eine Transaktion, die auf dem Adreßbus erscheint, sich von einer gleichzeitigen Transaktion, die auf dem Datenbus erscheint, unterscheiden kann. Transaktionen, welche Adressen und Daten beinhalten, weisen eine Adreßphase auf, in welcher die Adresse und die zugehörige Steuerinformation auf dem Adreßbus transportiert wird, und sie weisen eine Datenphase auf, 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 ausgelöst werden, welche einer bestimmten Adreßphase entspricht. Eine Adreßphase und die entsprechende Datenphase können auf mehreren Wegen in Korrelation gebracht werden. Beispielsweise können Datentransaktionen in derselben Reihenfolge erfolgen, in welcher auch die Adreßtransaktionen erfolgen. Alternativ können Adreß- und Datenphasen einer Transaktion über ein eindeutiges Tag oder eine Quellen-ID identifiziert werden. Der Kürze wegen beziehen sich die hier beschriebenen Bustransaktionen normalerweise auf Adreßtransaktionen. Entsprechend repräsentieren die L1-Busse 32 und der L2-Bus 22 gemäß 3 nur den Adreßbus. Ein Datenbus ist ebenfalls mit allen Buseinrichtungen 38 verbunden. Der Datenbus kann eine normale Busstruktur oder Datenschalter oder eine Kombination aus Busstrukturen und Datenschaltern aufweisen.
  • Bei der Ausführungsform gemäß 5 kann die Buseinrichtung 70 auf einer gedruckten Schaltkreisplatine ausgelegt sein, die in eine Busleiterplatte bzw. Rückwandplatine eingesteckt werden kann, auf welcher der L1-Bus 32 liegt. Auf diese Weise kann die Anzahl von Prozessoren und/oder I/O-Schnittstellen. die in einen Knoten 30 eingeschlossen sind, durch Einsetzen oder Entfernen von Buseinrichtungen variiert werden. Beispielsweise kann das Computersystem nach 3 anfänglich mit einer kleinen Anzahl von Buseinrichtungen 38 ausgestattet sein. Zusätzliche Buseinrichtungen 38 können von Zeit zu Zeit hinzugefügt werden, wenn die Computerleistung, die von den Benutzern des Computersystems gefordert wird, wächst.
  • Die Adreßsteuerung 72 ist mit dem L1-Bus 32 verbunden und die Datensteuerung 84 ist mit dem Datenbus verbunden. Die Adreßsteuerung 72 stellt eine Schnittstelle zwischen dem Cache 76 und dem L1-Bus 32 bereit. In der dargestellten Ausführungsform umfaßt die Adreßsteuerung 72 eine Ausgangsschlange 74 und eine Eingangsschlange 40. Die Ausgangsschlange 72 puffert Transaktionen von dem Prozessor 80, der mit diesen verbunden ist, bis die Adreßsteuerung Zugriff auf den L1-Bus 32 erhält. Die Adreßsteuerung 72 führt die in der Ausgangsschlange 74 gespeicherten Transaktionen in der Reihenfolge aus, in welcher diese Transaktionen in die Eingangsschlange 74 plaziert wurden (d. h. die Ausgangsschlange 74 ist eine FIFO-Schlange). Transaktionen, die von der Adreßsteuerung 72 ausgeführt werden, ebenso wie Transaktionen, die von dem L1-Bus 32 empfan gen werden, die durch den Cache 76 und innerhalb des Prozessors 80 liegende Caches untersucht werden sollen, werden in der Eingangsschlange 40 angeordnet.
  • Ähnlich der Ausgangsschlange 74 ist auch die Eingangsschlange 40 eine FIFO-Schlange. Alle Adreßtransaktionen werden in der Eingangsschlange 40 jeder Buseinrichtung des Ausgangsknotens (selbst innerhalb der Eingangsschlange 40 der Buseinrichtung, welche die Adreßtransaktion auslöst) gespeichert, wie oben erläutert wurde. Für Knoten, die nicht die Ursprungsknoten sind, wird die Eingangsschlange 40 durch den Umgehungspfad 46 umgangen. Die Adreßsteuerung 72 empfängt das Eingangssignal 36, welches erlaubt, den Multiplexer 42 zu steuern, um den Umgehungspfad 46 oder die Eingangsschlange 40 während des entsprechenden Buszyklusses auszuwählen. Wenn ein zusätzliches Puffern erforderlich ist, kann eine zweite Eingangsschlange (nicht dargestellt) am Ausgang des Multiplexers 42 angeordnet sein. Adreßtransaktionen werden demnach allen Buseinrichtungen zum Durchsuchen in der Reihenfolge präsentiert, in welcher sie auf dem L1-Bus 32 erscheinen.
  • Die Datensteuerung 84 leitet Daten zu und von dem Datenbus, dem Speicher 82 und dem Cache 76. Die Datensteuerung 84 kann Ein- und Ausgangsschlangen ähnlich der Adreßsteuerung 72 aufweisen. In einer Ausführungsform verwendet die Datensteuerung 84 mehrere physikalische Einheiten in einer Buskonfiguration mit Byteaufteilung.
  • Der Prozessor 80, wie er in 5 dargestellt ist, umfaßt eine Speicherverwaltungseinheit (MMU) 78. Die MMU 78 führt eine Übersetzung von virtuellen in physikalische Adressen aus, wenn Datenadressen, die durch den Befehlscode erzeugt wurden, auf dem Prozessor 80 ausgeführt werden, ebenso wie Befehlsadressen. Die in Reaktion auf eine Befehlsausführung erzeugten Adressen sind virtuelle Adressen. Mit anderen Worten, die virtuellen Adressen sind die von der CPU erzeugten Adressen. Die virtuellen Adressen werden durch einen Adreßübersetzungsmechanismus geleitet (der in der MMU 78 verkörpert ist), von welcher entsprechende physikalische Adressen erzeugt werden. Die physikalische Adresse kennzeichnet eine Speicherstelle innerhalb des Systemspeichers.
  • Der Adreßübersetzungsmechanismus ist sehr häufig mit einer Zugangskontroll- oder Schutzfunktion verbunden. Beispielsweise kann der Adreßübersetzungsmechanismus verwendet werden, um für eine bestimmte Berechnungsaufgabe den Zugriff auf bestimmte Speicheradressen zu gewähren oder zu versagen. Auf diese Weise werden die 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 seitenweise auf ein Festplattenlaufwerk ausgelagert werden ("paged out"). Wenn ein Teil ausgelagert wird, wird die Übersetzung ungültig gemacht. Beim Zugriff auf diesen Teil durch eine Berechnungsaufgabe erscheint aufgrund der fehlgeschlagenen Übersetzung eine Haltestelle. Die Haltestelle ermöglicht es dem Betriebssystem, die entsprechende Information von dem Festplattenlaufwerk wiederzugewinnen. Auf diese Weise kann mehr virtueller Speicher verfügbar sein als der tatsächliche Systemspeicher hat, der zwischen den Buseinrichtungen physikalisch verteilt ist, wie z. B. der Speicher 82, der für die Busein richtung der Ausführungsform 70 dargestellt ist. Viele andere Benutzungsarten für virtuelle Speicher sind wohlbekannt.
  • Gemäß 6 ist eine Ausführungsform einer I/O-Buseinrichtung 90 dargestellt. Die I/O-Buseinrichtung 90 kann der Buseinrichtung 38B in 3 entsprechen. Die I/O-Buseinrichtung 90 weist eine I/O-Brückensteuerung 92 auf, welche eine Schnittstelle zwischen dem L1-Bus 32 mit einem Zwischengeschoß- bzw. Zwischenebenenbus 96 bildet. In ähnlicher Weise bildet eine I/O-Datensteuerung 94 eine Schnittstelle des Systemdatenbusses mit dem Zwischenebenenbus 96. Mit dem Zwischenebenenbus 96 sind zwei Bussteuerungen 98AB des Typs der peripheren Komponentenverbindung (CI) und ein Videobildpuffer 100 verbunden. Die PCI-Steuerungen 38 bilden eine Schnittstelle des Zwischenebenenbusses 96 zu entsprechenden PCI-Bussen 102AB. Eine Mehrzahl von PCI-Geräten kann mit den PCI-Bussen 102A und 102B verbunden sein, wie z. B. PCI-Karten 104AB bzw. 104CD. Die PCI-Karten 104AD können irgendeinen Typ eines peripheren Geräts unterstützen, wie z. B. eine Multimediaschnittstelle, eine Serienanschlußschnittstelle, eine Videoschnittstelle etc.
  • Die I/O-Brückensteuerung 92 weist eine Adreßsteuerung 93 auf, die der Adreßsteuerung 72 in 5 ähnlich ist. Demnach empfängt die Adreßsteuerung 93 in der I/O-Einrichtung 90 das Eingangssignal 36 und integriert es in eine Eingangsschlange 40 und den Umgehungspfad 46. Daher kann die I/O-Einrichtung 90 an Bustransaktionen entweder als Ausgangseinrichtung oder als Empfangseinrichtung teilhaben. Die I/O-Einrichtung 90 arbeitet auf der hierarchischen L1/L2-Busstruktur gemäß 3 entsprechend dem Zeitablaufdiagramm 60 in 4. Beispielsweise kann die PCI-Karte 104A eine Transaktion auf dem PCI-Bus 102A auslösen. Die Transaktion wird durch die PCI-Steuerung 98A auf den Zwischenebenenbus 96 gesendet und dann die I/O-Brückensteuerung 92 an den L1-Bus 32. Die Busvermittlung wird der Einfachheit halber in diesem Beispiel ignoriert. Wenn die Transaktion auf den L1-Bus 32 gesendet wird, wird sie außerdem in der Eingangsschlange 40 in der Adreßsteuerung 93 gespeichert, die in der I/O-Brückensteuerung 92 lokalisiert ist. In ähnlicher Weise kann eine Einrichtung auf der I/O-Buseinrichtung 90 das Ziel für eine Transaktion sein, die durch eine andere Buseinrichtung 38 ausgelöst wurde. In diesem Fall würde die I/O-Steuerung 92 die eingehende Transaktion entweder von ihrer Eingangsschlange 40 oder von dem Umgehungspfad 46 empfangen, je nachdem, ob die Transaktion von demselben Knoten stammte wie die I/O-Buseinrichtung 90 oder nicht. Das Ziel für die Transaktion kann eine der PCI-Karten 104AD oder der Einzelbildpuffer 100 sein. Demnach hat die I/O-Buseinrichtung 90 an Bustransaktionen in derselben Art und Weise teil, wie es oben für die Prozessor/Speicher-Buseinrichtungen beschrieben wurde.
  • Gemäß 7 ist eine weitere Ausführungsform der Erfindung dargestellt. 7 zeigt ein erweitertes symmetrisches Prozessorsystem (XMP) 130. Drei SMP-Knoten 120AC sind dargestellt. Jeder SMP-Knoten 120 weist eine XMP-Schnittstelle 128 auf. Außerdem befinden sich innerhalb jedes SMP-Knotens 120 zwei Adreßrepeater 34. Die XMP-Schnittstelle 128 und die Repeater 34 koppeln an einen Bus 22 der oberen Ebene. Jeder Repeater 34 ist auch mit einem getrennten Bus 32 unterer Ebene verbunden. Die Buseinrichtungen 38 sind mit Bussen 32 der unteren Ebene ver bunden. Die Buseinrichtungen 38 können eine Prozessor/Speicher-Buseinrichtung ähnlich der Buseinrichtung 70 nach 5 oder eine I/O-Buseinrichtung ähnlich der Buseinrichtung 90 nach 6 aufweisen. Andere Ausführungsformen können andere unterschiedliche Buseinrichtungskonfigurationen aufweisen. Irgendeine Einrichtung vom lokalen Bustyp, wie man sie in modernen Computersystemen findet, kann man sich ebenfalls für die Verwendung mit der vorliegenden Erfindung vorstellen.
  • Jeder SMP-Knoten 120 in 7 kann ähnlich wie das SMP-System, welches in 3 dargestellt wurde, aufgebaut sein. Die SMP-Knoten 120 nach 7 sind jedoch außerdem mit einer XMP-Schnittstelle 128 ausgerüstet, die mit dem Bus 22 der oberen Ebene verbunden ist. Die XMP-Schnittstelle 128 jedes SMP-Knotens 120 ist außerdem mit der XMP-Schnittstelle 128 jedes anderen SMP-Knotens 120 durch Punkt-zu-Punkt-Verbindungen verbunden. Beispielsweise hat die XMP-Schnittstelle 128A des SMP-Knotens 120A eine Punkt-zu-Punkt-Verbindung zu der XMP-Schnittstelle 128B des SMP-Knotens 120B über die Punkt-zu-Punkt-Verknüpfung 142. Die Schnittstelle 128A der oberen Ebene des XMP-Knotens 120A hat außerdem eine getrennte Punkt-zu-Punkt-Verbindung zu der XMP-Schnittstelle 128C des Knotens 120C über die Punkt-zu-Punkt-Verbindung 140. Auf diese Weise hat jeder SMP-Knoten 120 eine getrennte Punkt-zu-Punkt-Verbindung zu jedem anderen SMP-Knoten 120. Jede Punkt-zu-Punkt-Verbindung weist zwei unidirektionale Verbindungen auf. Dieses Netzwerk von Punkt-zu-Punkt-Verbindungen ermöglicht, daß verschiedene SMP-Knoten miteinander verknüpft werden, um ein erweitertes SMP- (XMP-) Computersystem 130 zu bilden. Das Verknüpfungsnetzwerk von Punkt-zu-Punkt-Verbindungen zwischen SMP-Knoten 120 ermöglicht es, daß die hierarchische Busstruktur nach 3 erweitert wird, ohne daß man viele der physikalischen Einschränkungen und Latenzprobleme erhält, die mit tieferen Hierarchien und anderen Architekturen verknüpft sind.
  • Gemäß 8 ist eine genauere Darstellung eines SMP-Knotens 120 wiedergegeben. Der SMP-Knoten 120 kann irgendeinem der SMP-Knoten 120AC nach 7 entsprechen. Der Aufbau und die Arbeitsweise des SMP-Knotens 120 ist derjenigen sehr ähnlich, die oben für das SMP-System nach 3 beschrieben wurde, mit Ausnahme von Modifikationen, wie sie nachstehend noch beschrieben werden. Der SMP-Knoten 120 weist eine XMP-Schnittstelle 128 auf, die eine Schnittstelle zwischen dem L2-Bus 22 des SMP-Knotens 120 und anderen SMP-Knoten in dem XMP-System 130 bereitstellt. Wie in 3 sind zwei Repeaterknoten 34 mit dem L2-Bus 22 verbunden. Jeder Repeaterknoten weist einen Repeater 34, einen L1-Bus 32 und zwei Buseinrichtungen 38 auf. Auch wenn 8 nur zwei Repeaterknoten zeigt, so versteht es sich doch, daß mehr oder weniger Repeaterknoten möglich sind. Weiterhin sind nur zwei Buseinrichtungen für jeden Repeaterknoten dargestellt, jedoch versteht es sich, daß mehr oder weniger Buseinrichtungen 38 in jedem Repeaterknoten unterstützt werden könnten. Außerdem kann in anderen Ausführungsformen der Erfindung der L2-Bus 22 statt eines gemeinsam verwendeten Busses Punkt-zu-Punkt-Verbindungen aufweisen, die getrennt jeden Repeater 34 mit der XMP-Schnittstelle 128 verbinden.
  • Jeder Repeater 34 weist eine interne Schlange 122 und einen Umgehungspfad 124 auf. Jeder Repeater 34 empfängt auch Steuersignale 126 von der XMP-Schnittstelle 128. Die Steuersi gnale 126 werden verwendet, um zu steuern, ob der Umgehungspfad 124 oder der Schlangenpfad 122 in dem Repeater 134 ausgewählt wird. Diese Umgehungs-/Schlangenstruktur ist ähnlich der Umgehungs-/Schlangenstruktur, wie sie in den Buseinrichtungen 38 in 3 dargestellt ist. Wenn eine Transaktion an einen anderen SMP-Knoten in dem XMP-System 130 gesendet werden muß, so wird die Transaktion in der Schlange 122 jedes Repeaters 34 in dem SMP-Ausgangsknoten 120 gespeichert. Außerdem können rein lokale Transaktionen (die nicht an andere Knoten gesendet werden) in der Schlange angeordnet werden. Transaktionen, die von anderen SMP-Knoten eingehen, werden durch die XMP-Schnittstelle 128 auf den L2-Bus 22 gesendet. Für Transaktionen von anderen SMP-Knoten bringt die SMP-Schnittstelle 128 Steuersignale 126 in der Weise vor, daß der Umgehungspfad 124 in jedem Repeater 34 gewählt wird. Demnach werden alle Transaktionen, die ihren Ursprung in fremden SMP-Knoten haben, durch dem Umgehungspfad 124 und die Repeater 34 gesendet und alle Transaktionen, die ihren Ursprung in dem SMP-Knoten 120 haben, werden in den Repeaterschlangen 122 des SMP-Knotens 120 gespeichert.
  • Gemäß den 7 und 8 gleichzeitig ist die Punkt-zu-Punkt-Verknüpfungsstruktur, welche die Punkt-zu-Punkt-Verbindungen 140, 142 und 144 aufweist, eine synchrone Transaktionsstruktur. Demnach kann jeder SMP-Knoten 120 Transaktionen zu nahezu derselben Zeit senden und empfangen, wie jeder andere SMP-Knoten 120. Da die Verknüpfungsstruktur zwischen den SMP-Knoten 120 unidirektionale Punkt-zu-Punkt-Verbindungen aufweist, ist mit dem Senden von Transaktionen zwischen den SMP-Knoten 120 keinerlei Vermittlungsverzögerung verknüpft. Eine Transaktionsreihenfolge wird aufrechterhalten durch Befolgen einer strengen Transaktionsordnung auf dieser Verknüpfungsstruktur der oberen Ebene. Transaktionen, die gleichzeitig auf mehreren Punkt-zu-Punkt-Verknüpfungen zwischen SMP-Knoten 120 gesendet werden, werden entsprechend einer Konvention so geordnet, daß Transaktionen, die von dem SMP-Knoten 120A stammen, als vor den Transaktionen erfolgend definiert werden, die von dem SMP-Knoten 120B stammen, und Transaktionen, die von dem SMP-Knoten 120B stammen, werden als vor den Transaktionen erfolgt bzw. erfolgend betrachtet, die von dem SMP-Knoten 120C herstammen. Beispielsweise kann während eines Transaktionszyklus der SMP-Knoten 120A eine Transaktion an die SMP-Knoten 120B und 120C senden. Während desselben Zyklus kann der SMP-Knoten 120B eine andere Transaktion an die SMP-Knoten 120A und 120C senden und der SMP-Knoten 120C kann noch eine weitere Transaktion an die SMP-Knoten 120A und 120B senden. Demnach können drei getrennte Bustransaktionen während desselben Zyklusses an alle SMP-Knoten gesendet werden, wobei jeweils eine Transaktion von dem SMP-Knoten 120A bzw. 120B bzw. 120C stammt. Die definierte Reihenfolge legt fest, daß die Transaktion, die von dem SMP-Knoten 120A herrührt, an die Repeater in jedem SMP-Knoten 120 vor den Transaktionen, die von den SMP-Knoten 120B und 120C stammen, weitergesendet werden. Als nächstes wird die Transaktion, die von dem Knoten 120B stammt, auf dem L2-Bus 22 jedes SMP-Knotens 120 gesendet und schließlich wird die Transaktion, die von dem SMP-Knoten 120C stammt, an den L2-Bus 22 jedes SMP-Knotens 120 gesendet. Wenn Transaktionen, die von anderen SMP-Knoten herrühren, durch die XMP-Schnittstelle eines bestimmten SMP-Knotens an seinen L2-Bus 22 gesendet werden, bringt die XMP-Schnittstelle 128 Steuersignale 126 vor, so daß der Umgehungspfad 124 in allen Repeatern 34 in diesem SMP-Knoten ausgewählt wird. In dem SMP-Knoten jedoch, von welchem die Transaktion stammte, bringt die XMP-Schnittstelle 128 Steuersignale 126 in der Weise vor, daß die Repeater 34 Schlangen 122 auswählen, um die Transaktion auf den L1-Bussen 32 zu treiben bzw. zu leiten. Demnach bleibt der L2-Bus 22 in dem Ausgangsknoten L2 vollständig frei für das Senden einer neuen Bustransaktion.
  • Aus dem oben beschriebenen Vorgang für die XMP-Architektur der 7 und 8 kann man erkennen, daß Bustransaktionen, die zwischen SMP-Knoten 120 gesendet werden, nur einmal auf dem L2-Bus 22 jedes SMP-Knotens 120 erscheinen. Dies ermöglicht, daß eine maximale Bandbreite ausgenutzt wird. Weiterhin stellt die strenge Ordnung bzw. Reihenfolge, die für die Punkt-zu-Punkt-Verknüpfungsverbindungen der oberen Ebene definiert ist, sicher, daß eine geordnete Transaktion, die gesendet wird, immer ohne irgendwelche Vermittlungsverzögerungen erscheint. Die Punkt-zu-Punkt-Verbindungsstruktur, die oben beschrieben wurde, liefert viel bessere Skalierungs- und Entfernungseigenschaften als eine traditionelle, hierarchische Busstruktur. Es versteht sich, daß die definierte Transaktionsreihenfolge des oberen Niveaus, bei welcher Transaktionen von dem SMP-Knoten 120A stammen, gegenüber gleichzeitigen Transaktionen von dem Knoten 120B das Vorrecht haben und bei welcher Transaktionen, die von dem SMP-Knoten 120B stammen, Priorität gegenüber Transaktionen haben, die gleichzeitig von dem SMP-Knoten 120C stammten, in keiner Weise einschränkend ist. Mit anderen Worten, irgendeine definierte Reihenfolge kann gewählt werden, jedoch ist es notwendig, daß man eine bestimmte festgelegte Reihenfolge hat, um sicherzustellen, daß alle Transaktionen auf allen SMP-Knoten 120 in derselben Reihenfolge gesehen werden.
  • Jede Buseinrichtung 38 und jeder SMP-Knoten 120 kann Speicher enthalten, wie es für das SMP-System nach 3 oben beschrieben wurde. Der in jeder Buseinrichtung 38 und in jedem SMP-Knoten 120 lokalisierte Speicher bildet gemeinsam den Systemspeicher für das XMP-System. Der Adreßraum für den Systemspeicher wird jedoch in verschiedene Bereiche eingeteilt, so daß jeder SMP-Knoten 120 einen Teil des gesamten Adreßraums erhält. Die Größe jedes Adreßraumteils hängt von der Anzahl von SMP-Knoten 120 in dem XMP-System ab. Demnach würde für das XMP-System 130 nach den 7 und 8 jedem SMP-Knoten 120AC ein Drittel des gesamten Adreßraums des Systemspeichers zugeordnet werden. Wenn eine Buseinrichtung 38 in einem bestimmten SMP-Knoten 120 auf einen Speicherbereich innerhalb des Adreßraums zugreift, der diesem betreffenden SMP-Knoten 120 zugeordnet ist, so wird die Transaktion aus dem Speicher innerhalb dieses SMP-Knotens erfüllt, ohne daß die Transaktion auf die anderen SMP-Knoten 120 ausgesendet wird. Daher ist der Transaktionsverkehr auf der Punkt-zu-Punkt-Verknüpfungsstruktur zwischen den SMP-Knoten 120 nur auf diejenigen Transaktionen beschränkt, die nicht innerhalb eines bestimmten SMP-Knotens 120 erfüllt werden können.
  • Um eine Speicherkohärenz zwischen jedem SMP-Knoten 120 in dem XMP-System bereitzustellen, wird jede Cacheleitung in dem Systemspeicher in ihrem Anhänger bzw. Tag mit einem Kohärenzzustand für diesen SMP-Knoten versehen. Diese Kohärenzzustandstags werden kollektiv bzw. insgesamt als MTAG 150 bezeichnet. MTAGs 150 können im Speicher auf jedem Busgerät 38 gespeichert werden, welches Speicher enthält. In anderen Ausführungsformen können die MTAGs in einem SRAM gespeichert werden. Wenn eine Buseinrichtung 38 in einem bestimmten SMP-Knoten 120 eine Transaktion auslöst, so wird zuerst eine Transaktion auf dem betreffenden SMP-Knoten allein versucht. Die auslösende Buseinrichtung untersucht den empfangenen bzw. wiedergewonnenen MTAG-Kohärenzzustand, um zu bestimmen, ob dieser SMP-Knoten gültige Zugriffsrechte für die Transaktionsadresse hat. Wenn der erhaltene Kohärenzzustand die passenden Zugriffsrechte anzeigt, so muß die Transaktion durch die Buseinrichtung erneut ausgegeben werden als eine globale Transaktion. Wenn eine Transaktion durch eine Buseinrichtung als eine globale Transaktion ausgegeben wird, so wird die Transaktion durch die XMP-Schnittstelle 128 in dem SMP-Ausgangsknoten 120 über die Punkt-zu-Punkt-SMP-Knotenverbindung an jeden SMP-Knoten 120 ausgesendet bzw. rundgesendet. Ob eine Transaktion als globale Transaktion vorgesehen ist, kann aus einem bitcodierten Teil des Transaktionspakets bestimmt werden.
  • Allgemein gesprochen zeigt der Kohärenzzustand, der für eine Kohärenzeinheit (beispielsweise eine Cachezeile) an einer bestimmten Speicherzelle (z. B. im Speicher oder Cache) aufrechterhalten wird, die Zugriffsrechte auf die Kohärenzeinheit an diesem SMP-Knoten 120 an. Das Zugriffsrecht zeigt die Gültigkeit der Kohärenzeinheit an, ebenso wie die Lese-/Schreibeerlaubnis, die für die Kopie der Kohärenzeinheit innerhalb desselben SMP-Knotens 120 gewährt wurde. In einer Ausführungsform sind die Kohärenzzustände, die durch das XMP-Computersystem 130 verwendet werden, modifiziert, im Besitz befindlich, gemeinsam verwendet und ungültig. Der Zustand modifiziert zeigt an, daß der SMP-Knoten 120 die entsprechende Kohärenzeinheit aktualisiert hat. Daher haben andere SMP-Knoten 120 keine Kopie der Kohärenzeinheit. Zusätzlich wird, wenn die modifizierte Kohärenzeinheit durch den SMP-Knoten ausgesondert wird, die Kohärenzeinheit in den SMP-Knoten 120 zurückgespeichert, welchem der Adreßraumbereich zugewiesen ist, zu welchem die Kohärenzeinheit gehört. Der Besitzzustand zeigt an, daß der SMP-Knoten 120 für die Kohärenzeinheit verantwortlich ist, daß jedoch andere SMP-Knoten gemeinsam verwendete Kopien haben können. Wiederum wird, wenn die Kohärenzeinheit durch den SMP-Knoten 120 ausgesondert wird, diese Kohärenzeinheit in den SMP-Knoten 120 zurückgespeichert, welchem der Adreßraumbereich zugewiesen ist, zu welchem die Kohärenzeinheit gehört. Der gemeinsam verwendete Zustand zeigt an, daß der SMP-Knoten 120 die Kohärenzeinheit lesen kann, jedoch die Kohärenzeinheit nicht aktualisieren kann, ohne den Besitzzustand erworben zu haben. Zusätzlich können andere SMP-Knoten 120 ebenfalls Kopien der Kohärenzeinheit haben. Schließlich zeigt der ungültig-Zustand an, daß der SMP-Knoten 120 keine Kopie der Kohärenzeinheit hat. In einer Ausführungsform zeigt der "modifiziert"-Zustand eine Schreiberlaubnis an und jeder Zustand außer "ungültig" zeigt eine Leseerlaubnis für die entsprechende Kohärenzeinheit an. Man beachte weiterhin, daß auch irgendein anderes akzeptables Kohärenzschema verwendet werden kann.
  • Anhand des oben beschriebenen Vorgangs kann man erkennen, daß der Punkt-zu-Punkt-Verbindungsbus der oberen Ebene zwischen den SMP-Knoten 120 ein reiner Sende- bzw. Rundsendebus ist und keine Kohärenzprüfungs- oder Filterungsfunktionen ausführt. Sämtliche Untersuchungen bzw. Nachprüfungen der Speicherkohärenz werden innerhalb der individuellen SMP-Knoten 120 ausgeführt, indem die MTAGs verwendet werden, welche in dem Systemspeicher ge speichert sind. Jede global auf dem oberen Punkt-zu-Punkt-Verbindungssystem gesendete Transaktion erscheint gleichzeitig einmal auf allen Bussen 32 der unteren Ebene in jedem SMP-Knoten 120. Ein Nachprüfen und Filtern erfolgt auf dem untersten Niveau auf jedem SMP-Knoten 120, so daß nur Transaktionen, die eine globale Beachtung verlangen, über die oberste Punkt-zu-Punkt-Verbindungsstruktur gesendet werden.
  • In einer anderen Ausführungsform des XMP-Systems 130 der 7 und 8 können Bereiche des Adreßraums des Systemspeichers so zugeordnet werden, daß sie in einem von drei Betriebszuständen arbeiten, wie es in 9 dargestellt ist. Die drei Speicherzustände sind der Replikationsbetrieb, der Migrationsbetrieb und der Normalbetrieb. Der physikalische Speicher, der auf jedem SMP-Knoten 120 liegt, kann den Adreßbereichen zugeordnet werden, die in jedem der drei Betriebszustände arbeiten, wie es in 9 dargestellt ist. Für Systemspeicherbereiche, die im Normalbetrieb arbeiten, werden alle Speichertransaktionen zuerst in dem SMP-Ausgangsknoten versucht, ohne globale Transaktionen zu senden. Transaktionen werden nur global gesendet, wenn das MTAG anzeigt, daß die Speicheradresse in dem SMP-Ausgangsknoten nicht gültig ist. In diesem Fall werden Transaktionen erneut global ausgegeben, wie es oben beschrieben wurde. Man beachte, daß Transaktionen zum ersten Mal global ausgegeben werden, wenn die Transaktionsadresse einem Speicherbereich entspricht, der auf einem fremden SMP-Knoten 120 abgebildet bzw. diesem zugeordnet ist. Transaktionen werden nur lokal in dem Ausgangsknoten versucht, wenn die Speicheradresse einem Speicherbereich entspricht, der diesem SMP-Knoten zugeordnet ist. Daher gibt es im Normalbetrieb zwei Fälle, in welchen eine Transaktion normalerweise global gesendet wird. Ein solcher Fall liegt dann vor, wenn die Transaktionsadresse einem Speicherbereich entspricht, der einem anderen SMP-Knoten zugeordnet ist, und der andere Fall liegt dann vor, wenn das MTAG anzeigt, daß die Speicheradresse, auch wenn sie dem Ausgangsknoten zugeordnet ist, einen ungeeigneten bzw. unzulässigen Kohärenzzustand hat. Der Kohärenzzustand kann ungeeignet bzw. unzulässig sein, wenn beispielsweise die Cachespeicherzeile eingelesen und in dem Cache einer Buseinrichtung auf einem anderen SMP-Knoten modifiziert worden ist. In diesem Fall muß die Transaktion durch die anderen SMP-Knoten nachgeprüft werden.
  • In dem Replikationsbetrieb ist der Replikationsspeicherbereich dem Speicher zugeordnet bzw. auf den Speicher abgebildet, der in jedem SMP-Knoten 120 lokalisiert ist. Demnach wird eine lokale Kopie des Speicherbereichs in jedem SMP-Knoten 120 gespeichert. Daher werden in dem Replikationsbetrieb Transaktionen immer lokal in dem SMP-Ausgangsknoten versucht. Da eine Kopie des Replikationsadreßbereichs in jedem SMP-Knoten 120 liegt, wird eine Transaktion beim ersten Mal niemals global ausgelöst. Eine globale Transaktion tritt nur dann als eine Neuausgabetransaktion auf, wenn das MTAG einen unzulässigen Cachekohärenzzustand liefert. Ein unzulässiger Cachekohärenzzustand kann auftreten, wenn die betreffende Cachezeilenadresse in dem Replikationsspeicherbereich eines anderen SMP-Knotens modifiziert wurde. Der Replikationsbetrieb kann in vorteilhafter Weise für Anwendungen verwendet werden, die zumeist aus dem Lesen eines geteilten Speicherbereichs bestehen. Derartige Anwendungen können Zugriffe auf große Datenbanken umfassen, in welchen die Datenbank in einem Replikationsspeicherbereich gespeichert ist und normalerweise nur Lesetransaktionen ausgeführt werden.
  • Wenn ein Speicherbereich in dem Migrationsbetriebszustand ist, so werden Transaktionen immer global gesendet. Daher gibt es kein Erfordernis, die Cachekohärenzzustände des MTAG im Speicher aufzubewahren. Der Migrationsbetrieb kann in vorteilhafter Weise bei Anwendungen verwendet werden, die eine schwache Lokalität haben, wobei auf Datenstrukturen häufig über die verschiedenen SMP-Knoten 120 hinweg zugegriffen wird. In solchen wandernden Datenstrukturanwendungen ist die Wahrscheinlichkeit eines MTAG-Fehlgriffs sehr hoch, wenn der normale Betrieb verwendet werden würde. Daher können, indem Transaktionen immer global ausgeführt werden, Neuausgabetransaktionen, die für den Normalbetrieb erforderlich wären, in dem Migrationsbetriebszustand verwendet werden. In einer Ausführungsform kann durch eine bitcodierte Nachricht in dem Transaktionspaket angezeigt werden, ob eine gegebene Speicheradresse für einen Bereich in dem Replikations-, Migrations- oder Normalbetrieb ist oder nicht. In einer Ausführungsform kann diese bitcodierte Nachricht in den Bits höchster Signifikanz der durch die MMU erzeugten physikalischen Adresse liegen. Das Betriebssystem kann für das Zuordnen des Betriebszustandes zu den verschiedenen Bereichen von Systemspeicher verantwortlich sein. Das Betriebssystem kann die freien physikalischen Speicherseiten auf sogenannten "Freilisten" verfolgen. Um die Zuordnung von Speicher im Replikationsbetrieb zu vereinfachen, kann das Betriebssystem eine zugeordnete Freiliste für Seiten bereithalten, die in allen Knoten nicht in Gebrauch sind. Diese Seiten stehen zur Verfügung für die Verwendung im Replikationsbetrieb, so daß eine Kopie des Replikationsspeicherbereichs in jedem SMP-Knoten gespeichert werden kann.
  • In einer alternativen Ausführungsform kann der Adreßbetriebszustand in der Adreßsteuerung jeder Buseinrichtung programmierbar sein. In einer solchen Ausführungsform kann ein bitcodiertes Signal in dem Adreßpaket jeder Transaktion enthalten sein und anzeigen, ob die Transaktion global sein soll oder nicht.
  • Wie oben beschrieben, werden Speichertransaktionen, die als globale Transaktionen definiert sind, von der XMP-Schnittstelle 128 des SMP-Ausgangsknotens 120 auf der Punkt-zu-Punkt-Verbindung zu jedem anderen der SMP-Knoten ausgesendet und in den Repeaterschlangen 122 der Adreßrepeater 34 in dem ursprünglichen SMP-Knoten 120 angeordnet. Gewisse Typen von Transaktionen müssen jedoch nicht global an jeden der anderen SMP-Knoten gesendet werden. Beispielsweise können I/O-Transaktionen auf der Punkt-zu-Punkt-Verbindung an nur einen Knoten gesendet werden, wo die adressierte I/O-Buseinrichtung liegt. Außerdem können Rückschreibetransaktionen an nur den einen Knoten gesendet werden, wo der Speicherbereich, in welchen zurückgeschrieben werden soll, liegt. Wenn beispielsweise eine Buseinrichtung 38 auf dem SMP-Knoten 120B nach 7 eine Speichercachezeile entsprechend einem Speicherbereich gelesen hat, welcher dem SMP-Knoten 120A zugeordnet ist, und dann in dieser Cachezeile modifiziert wird, so kann es notwendig sein, die Cachezeile in den SMP-Knoten 120A zurückzuschreiben, bevor durch andere SMP-Knoten auf die Cachezeile zugegriffen werden kann. In einem solchen Fall muß die Rückschreibetransaktion nur über die Punkt-zu-Punkt-Verbindung 142. Demnach werden für Rückschreibe- und I/O-Transaktionen nur die notwendigen Punkt-zu-Punkt-Verbindung verwendet, was die anderen Punkt-zu-Punkt-Verbindungen freimacht, andere I/O- oder Rückschreibetransaktionen während desselben Zyklusses auszuführen. Dies ermöglicht es, daß die volle Bandbreite der Punkt-zu-Punkt-Verbindungen ausgenutzt wird. Es sei angemerkt, daß in anderen Ausführungsformen der Erfindung andere Arten von Transaktionen ebenfalls nur über individuelle Punkt-zu-Punkt-Verbindungen gesendet werden müssen, anstatt global an alle SMP-Knoten 120 aus- bzw. rundgesendet zu werden.
  • Gemäß 10 ist ein Zeitablaufdiagramm 160 gezeigt, welches die Arbeitsweise des oben beschriebenen XMP-Computersystems 130 veranschaulicht. Die in dem Zeitablaufdiagramm 160 dargestellten Transaktionen sind allesamt globale Transaktionen. Demnach kann das Zeitablaufdiagramm 160 Speichertransaktionen zu einem Adreßbereich veranschaulichen, welchem der Migrationsbetriebszustand zugeordnet ist.
  • Jede Spalte des Zeitablaufdiagramms 160 entspricht einem bestimmten Buszyklus. Es sind zehn Buszyklen, in denen die Zeit von links nach rechts fortschreitet, durch die zehn Spalten wiedergegeben. Es wird erneut auf die 7 und 8 Bezug genommen, wonach der Zustand der Verknüpfungsverbindungen 140, 142, 144 der oberen Ebene als eine Gruppe durch die Reihe 161 wiedergegeben wird. Der Zustand des L2-Busses des Knotens 120A wird in Reihe 162 wiedergegeben. In ähnlicher Weise wird der Zustand der L2-Busse auf den Knoten 120BC auf den Reihen 163 bzw. 164 wiedergegeben. Die Reihen 165167 zeigen den Zustand der Umgehungs-/Schlangensteuersignale 126 für jeden Knoten 120. Während des Buszyklus 1 ist ein Ausgangspaket auf dem L2-Bus 22 jedes Knotens 120 vorhanden. Im Zeitablaufdiagramm 160 sind diese Ausgangspakete als P1(o) auf Reihe 162 (L2.1-Bus), als P2(o) auf Reihe 163 (L2.2-Bus) und als P3(o) auf Reihe 164 (L2.3-Bus) dargestellt. Da die Verbindungen der oberen Ebene zwischen den Knoten 120 unidirektionale Verbindungen aufweisen, können alle drei Ausgangspakete während desselben Zyklusses Gegenstand der Kommunikation zwischen jedem der Knoten 120 sein, wie es auf Reihe 161 für den Zyklus 2 angezeigt wird. Außerdem ist während des Zyklusses 2 eine neue Transaktion auf dem L2-Bus 22 jedes Knotens 120 vorhanden, wie es durch P4(o), P5(o) und P6(o) in den Reihen 162, 163 bzw. 164 wiedergegeben wird. Es ist wichtig anzumerken, daß alle ausgehenden Transaktionspakete auf den L2-Bussen 22 in den Repeaterschlangen 122 in jedem Repeater 34 auf dem SMP-Knoten 120 angeordnet werden, in welchen die Transaktion ihren Ausgangspunkt hatte. Beispielsweise stammt die ausgehende Transaktion P4(o) von dem SMP-Knoten 120 und wird demnach in der Repeaterschlange 122 jedes Repeaters 34 in dem Knoten 120 gespeichert.
  • Während des Buszyklusses 3 wurde eine der Transaktionen, die über die Verbindungen des oberen Niveaus in dem Zyklus 2 kommuniziert wurde, an den SMP-Knoten 120 gesendet. Die festgelegte Ordnung bzw. Reihenfolge bestimmt, welche Transaktion als erstes rundgesendet wird. Ein einziges festgelegtes Ordnungsschema muß konsistent verwendet werden, um sicherzustellen, daß die Bustransaktionen an jedem Knoten in derselben Reihenfolge erscheinen. Für die durch das Zeitablaufdiagramm 160 veranschaulichte Ausführungsform besteht das Ordnungsschema darin, daß Transaktionen von dem Knoten 120A das Vorrecht gegenüber Transaktionen aus dem Knoten 120B haben, welche ihrerseits das Vorrecht gegenüber Transaktionen aus dem Knoten 120C haben. Demnach wird im Zyklus 3 die Transaktion P1 als eine eingehende Transaktion auf dem L2-Bus 22 der Knoten 120B und 120C rundgesendet, wie es durch P1(i) auf den Reihen 163 und 164 angezeigt wird. Die Transaktionen P2 und P3 sind in einer Schlange in der XMP-Schnittstelle 128 angeordnet. Die Transaktion P1 wird jedoch nicht auf dem L2-Bus 22 des Knotens 120A rundgesendet, weil es der Knoten ist, von welchem die Transaktion P1 ausging. Stattdessen werden die Steuersignale 126 in dem Knoten 120A vorgebracht, wie es während des Zyklusses 3 in Reihe 165 dargestellt ist. Das Vorbringen des Steuersignals 126 bewirkt, daß jeder Repeaterknoten 34 die Transaktion P1 als Eingangspaket P1(i) aus ihrer jeweiligen Repeaterschlange 122 in den nächsten Zyklus rundsendet. Die Steuersignale 126 in den Knoten 120B und 120C bleiben solange in dem Zyklus 3 nicht vorgebracht, wie es auf den Reihen 166 und 167 dargestellt ist, was den Repeatern 34 in diesen Knoten anzeigt, daß sie den Umleitungspfad 124 des Repeaters anstelle der Repeaterschlange 122 auswählen, um die P1(i)-Transaktionen an die L1-Busse 32 im nächsten Zyklus zu senden. Demnach sieht man während desselben Zyklusses P1(i) in allen Buseinrichtungen 38 in allen Knoten 120. Außerdem bleibt der L2-Bus 22 in dem Ausgangsknoten 120A frei für das Senden einer weiteren ausgehenden Transaktion während des Buszyklusses 3, wie es durch P7(o) auf Reihe 162 in dem Zeitablaufdiagramm 160 während des Buszyklus 3 wiedergegeben wird. Außerdem werden während des Buszyklus 3 die ausgehenden Transaktionen P4(o), P5(o) und P6(o) aus dem Buszyklus 2 gleichzeitig auf die Punkt-zu-Punkt-Verbindungen der oberen Ebene gesendet, wie es in Reihe 161 in dem Zeitablaufdiagramm 160 dargestellt ist.
  • Während des Buszyklusses 4 wird entsprechend der festgelegten Reihenfolge die Transaktion P2 auf dem L2-Bus 22 der Knoten 120A und 120C als Eingangstransaktionen rundgesendet, wie es durch P2(i) auf den Reihen 162 und 164 wiedergegeben wird. Die Transaktionen P3–P6 werden in einer Schlange in der XMP-Schnittstelle 128 angeordnet. Die Transaktion P2 wird jedoch nicht auf den L2-Bus 22 des Knotens 120B gesendet, weil dieses der Knoten ist, von welchem die Transaktion P2 ausging. Stattdessen werden in dem Knoten 120B die Steuersignale 126 vorgebracht, wie es während des Zyklusses 3 auf Reihe 166 dargestellt ist. Das Vorbringen des Steuersignals 126 bewirkt, daß jeder Repeaterknoten 34 die Transaktion P2 als ein Eingangspaket P2(i) von ihrer entsprechenden Repeaterschlange 122 in dem nächsten Zyklus rundsendet. Die Steuersignale 126 in den Knoten 120A und 120C werden in Zyklus 4 nicht vorgebracht, wie es in den Reihen 165 und 167 dargestellt ist, was den Repeatern 34 in diesen Knoten anzeigt, daß sie den Repeaterbypasspfad 124 anstelle der Repeaterschlange auswählen muß, um den Repeaterumleitungspfad 124 auszuwählen anstatt der Repeaterschlange 122, um die P2(i)-Transaktionen auf den L1-Bussen 32 in den nächsten Zyklus zu senden. Demnach wird P2(i) durch alle Buseinrichtungen 38 in allen Knoten 120 während desselben Zyklusses gesehen. Außerdem bleibt der L2-Bus 22 in dem Ausgangsknoten 120B für die Sendung einer weiteren ausgehenden Transaktion während des Buszyklusses 4 frei, wie es durch P8(o) auf Reihe 163 in dem Zeitablaufdiagramm 160 während des Buszyklusses 4 wiedergegeben wird. Außerdem sendet während des Buszyklusses 4 die ausgehende Transaktion P7(o) von dem Buszyklus 3 auf den Punkt-zu-Punkt-Verbindungen des obersten Niveaus, wie es in dem Zeitablaufdiagramm 160 in Zeile 161 dargestellt ist.
  • Der zuvor beschriebene Vorgang kann für jede Bustransaktion angewendet werden, die von einer Buseinrichtung stammte. Man beachte, daß Transaktionen auf den L1-Bussen 32 in jedem Knoten 120 in dem Zeitablaufdiagramm 160 nicht dargestellt sind. Die durch das Zeitablaufdiagramm 160 in 4 dargestellte Betriebsweise kann auf die L2/L1-Busvorgänge innerhalb jedes Knotens angewendet werden. Es ist aus dem Zeitablaufdiagramm 160 offensichtlich, daß ein gegebenes Transaktionspaket auf irgendeinem der L2- oder L1-Busse 22, 32 einmal und nur einmal erscheint, entweder als ausgehendes Paket oder als eingehendes Paket, jedoch nicht als beides. Daher erscheinen alle Transaktionspakete exakt einmal auf jedem Bus in dem XMP-Computersystem 130 nach 7. Es ist weiterhin anhand des Zeitablaufdiagramms 160 offensichtlich, daß diese Ausführungsform es ermöglicht, daß die volle Bandbreite des L2-Busses 22 ausgenutzt wird. Außerdem veranschaulicht das Zeitablaufdiagramm 160, daß jede Buseinrichtung 38 in dem XMP-Computersystem 130 eine bestimmte Transaktion während desselben Buszyklusses und in derselben Reihenfolge sieht, wie sie auf jeder anderen Buseinrichtung 38 in dem XMP-Computersystem 130 erscheint.
  • Zahlreiche Variationen und Modifikationen werden für Fachleute auf diesem Gebiet offensichtlich, wenn sie die obige Offenbarung in vollem Umfang würdigen. Die folgenden Ansprüche sollen so interpretiert werden, daß sie alle derartigen Variationen und Modifikationen umfassen.
  • Besondere und bevorzugte Aspekte der Erfindung sind in den beigefügten unabhängigen und abhängigen Ansprüchen dargelegt. Merkmale der abhängigen Ansprüche können, so wie es angemessen ist, mit denjenigen der unabhängigen Ansprüche gemischt werden.

Claims (16)

  1. Knoten in einem Mehrprozessorcomputersystem mit: einer Schnittstelle (128) der obersten Ebene (top level), welche eingehende Transaktionen empfängt und ausgehende Transaktionen aussendet, wobei die ausgehenden Transaktionen von dem Knoten stammen und die eingehenden Transaktionen nicht aus dem Knoten stammen, einem Bus (22) einer oberen Ebene, einem ersten Repeater (34A), wobei der erste Repeater (34A) mit der Schnittstelle (128) der obersten Ebene durch den Bus (22) der oberen Ebene verbunden ist, und wobei der erste Repeater eine Eingangsschlange (122A) und einen Umgehungs- bzw. Bypass-Pfad (124A) umfaßt, wobei der erste Repeater (34A) die eingehenden Transaktionen von der Schnittstelle (128) der obersten Ebene empfängt und die eingehenden Transaktionen über den Bypass-Pfad (124A) an einen Bus (32A) einer tieferen Ebene übermittelt, und wobei der erste Repeater (34A) die ausgehenden Transaktionen auf dem Bus (22) der oberen Ebene empfängt und die ausgehenden Transaktionen über die Eingangsschlange (122A) an den Bus (32A) der unteren Ebene sendet.
  2. Knoten nach Anspruch 1, wobei die Schnittstelle (128) der obersten Ebene die eingehenden Transaktionen an einer unidirektionalen Punkt-zu-Punkt-Verbindung (140144) mit einem anderen Knoten empfängt, und wobei die Schnittstelle (128) der obersten Ebene die ausgehenden Transaktionen an eine unidirektionale Punkt-zu-Punkt-Verbindung (140144) innerhalb des anderen Knotens sendet.
  3. Knoten nach Anspruch 1, wobei die Schnittstelle (128) der obersten Ebene ein Steuersignal (126A) erzeugt, welches durch den ersten Repeater (34A) empfangen wurde, um zu steuern bzw. zu kontrollieren, wann der erste Repeater (34A) Transaktionen über den Bypass-Pfad (124A) oder über die Eingangsschlange (122A) an den Bus (32A) der unteren Ebene sendet.
  4. Knoten nach Anspruch 1, wobei der erste Repeater (34A) die ausgehenden Transaktionen über die Eingangsschlange (122A) an den Bus (32A) der unteren Ebene näherungsweise zur gleichen Zeit sendet, zu welcher jede der ausgehenden Transaktionen auf einem entsprechenden Bus einer unteren Ebene eines anderen Knotens in dem Multiprozessorcomputersystem gesendet werden.
  5. Knoten nach Anspruch 1, wobei der erste Repeater (34A) die ausgehenden Transaktionen über die Eingangsschlange (122A) an den Bus (32A) der unteren Ebene in derselben Reihenfolge sendet, wie jede der ausgehenden Transaktionen auf einem entsprechenden Bus einer unteren Ebene eines anderen Knotens in dem Mehrprozessorcomputersystem gesendet werden.
  6. Knoten nach Anspruch 1, welcher weiterhin eine Prozessoreinrichtung (38A) aufweist, die mit dem Bus (32A) der unteren Ebene verbunden ist, wobei die Prozessoreinrichtung (38A) dafür ausgestaltet ist, daß sie Transaktionen empfängt, die durch den Repeater (34A) auf dem Bus (32A) der unteren Ebene gesendet werden, und wobei die Prozessoreinrichtung (38A) dafür ausgelegt ist, die ausgehenden Transaktionen auszulösen.
  7. Knoten nach Anspruch 6, wobei die Prozessoreinrichtung (38A) weiterhin einen SPARC-Prozessor und einen Level-two-Cachespeicher aufweist, der mit dem SPARC-Prozessor verbunden ist.
  8. Knoten nach Anspruch 6, welcher weiterhin eine Eingangs/Ausgangs((I/O)-Einrichtung (38B) aufweist, die mit dem Bus (32A) der unteren Ebene verbunden ist, wobei die I/O-Einrichtung (38B) dafür ausgelegt ist, Transaktionen, die durch den Repeater (34A) auf dem Bus der unteren Ebene gesendet werden, zu empfangen.
  9. Knoten nach Anspruch 1, welcher weiterhin einen zweiten Repeater (34B) aufweist, wobei der zweite Repeater (34B) mit der Schnittstelle (128) der obersten Ebene über den Bus (22) der oberen Ebene verbunden ist und mit einem zweiten Bus (32B) der unteren Ebene verbunden ist, und wobei der zweite Repeater (34B) eine zweite Eingangsschlange (122B) und einen zweiten Bypass-Pfad (124B) aufweist.
  10. Knoten nach Anspruch 9, wobei der zweite Repeater (34B) die eingehenden Transaktionen von der Schnittstelle (128) der obersten Ebene empfängt und die eingehenden Transaktionen über den Bypass-Pfad (124B) an den zweiten Bus (32B) der unteren Ebene sendet.
  11. Mehrprozessorcomputersystem mit: einem ersten Multiprozessorknoten (120A), einem zweiten Multiprozessorknoten (120B), der durch zwei unidirektionale Transaktionsverbindungen (142) mit dem ersten Multiprozessorknoten (120A) verbunden ist, wobei die beiden unidirektionalen Transaktionsverbindungen (142) so ausgestaltet sind, daß sie Transaktionen von dem ersten Multiprozessorknoten (120A) an den zweiten Multiprozessorknoten (120B) senden, während gleichzeitig Transaktionen von dem zweiten Muitiprozessor knoten (120B) an den ersten Multiprozessorknoten (120A) gesendet werden, wobei der erste Multiprozessorknoten (120A) aufweist: eine erste Schnittstelle (128A) einer obersten Ebene, welche mit den beiden unidirektionalen Transaktionsverbindungen (142) verbunden ist, einen ersten Bus (22) einer oberen Ebene, einen ersten Repeater (34A), der mit der ersten Schnittstelle (128A) der obersten Ebene über den ersten Bus (22) der oberen Ebene verbunden ist, wobei der erste Repeater (34A) Transaktionen von dem ersten Bus (22) der oberen Ebene über einen Bypass-Pfad (124A) in dem ersten Repeater (34A) auf einen ersten Bus (32A) einer unteren Ebene sendet, wenn die Transaktionen von dem zweiten Multiprozessorknoten (120B) stammten, und wobei der erste Repeater (34A) über eine Eingangsschlange (122A) auf den ersten Bus (32A) der unteren Ebene Transaktionen aussendet, wenn die Transaktionen von dem ersten Multiprozessorknoten (120A) stammten.
  12. Mehrprozessorcomputersystem nach Anspruch 11, wobei die erste Schnittstelle (128A) der obersten Ebene ein erstes Steuersignal (126A) erzeugt, welches von dem Repeater (34A) empfangen wurde, um zu steuern bzw. zu kontrollieren, wann der erste Repeater (34A) Transaktionen an den ersten Bus (32A) der unteren Ebene über den Bypass-Pfad (124A) oder über die Eingangsschlange (122A) sendet.
  13. Mehrprozessorcomputersystem nach Anspruch 12, wobei die Transaktionen, welche von dem ersten Multiprozessorknoten (120A) stammen, in der Eingangsschlange (122A) in dem ersten Repeater (34A) gespeichert werden.
  14. Mehrprozessorcomputersystem nach Anspruch 13, wobei der zweite Mehrprozessorknoten (120B) aufweist: eine zweite Schnittstelle (128B) der obersten Ebene, welche mit den beiden unidirektionalen Transaktionsverbindungen (142) verbunden ist, einen zweiten Bus einer oberen Ebene, einen zweiten Repeater, der mit der zweiten Schnittstelle der obersten Ebene durch den zweiten Bus einer oberen Ebene verbunden ist, einen zweiten Bus einer unteren Ebene, der mit dem zweiten Repeater verbunden ist.
  15. Mehrprozessorcomputersystem nach Anspruch 14, wobei Transaktionen, die ihren Ursprung in dem ersten Mehrprozessorknoten (120A) haben, durch die zweite Schnittstelle (128B) der obersten Ebene empfangen werden und über den zweiten Bus der oberen Ebene an den zweiten Repeater gesendet werden, wobei der zweite Repeater die Transaktionen, welche von dem ersten Mehrprozessorknoten stammen, auf den zweiten Bus der unteren Ebene aussendet, wobei die erste Schnittstelle (128A) der obersten Ebene das erste Steuersignal (126A) vorbringt, so daß der erste Repeater (34A) die Transaktionen, die von dem ersten Multiprozessorknoten (120A) stammen, auf den ersten Bus (32A) der unteren Ebene über die Eingangsschlange (122A) verbreitet, und zwar näherungsweise zur gleichen Zeit, wie jede der Transaktionen, welche von dem ersten Mehrprozessorknoten (120A) stammen, auf den zweiten Bus der unteren Ebene verbreitet werden, und wobei neue Transaktionen, die von dem ersten Mehrprozessorknoten (120A) stammen, auf den ersten Bus (22) der oberen Ebene zum selben Zeitpunkt gesendet werden, zu welchem vorherige Transaktionen, welche von dem ersten Mehrprozessorknoten (120A) stammen, über den zweiten Bus der oberen Ebene gesendet werden.
  16. Mehrprozessorcomputersystem nach Anspruch 11, wobei der zweite Mehrprozessorknoten (120B) aufweist: eine zweite Schnittstelle (128B) der obersten Ebene, welche mit den beiden unidirektionalen Transaktionsverbindungen (142) verbunden ist, einen zweiten Bus einer oberen Ebene, einen Repeater, der mit der zweiten Schnittstelle der obersten Ebene über den zweiten Bus der oberen Ebene verbunden ist, einen zweiten Bus einer unteren Ebene, der mit dem zweiten Repeater verbunden ist, wobei alle Transaktionen zumeist nur einmal auf jedem der Busse, nämlich dem ersten Bus der unteren Ebene, dem zweiten Bus der unteren Ebene, dem ersten Bus der oberen Ebene und dem zweiten Bus der oberen Ebene erscheinen.
DE69724355T 1996-07-02 1997-06-26 Erweiterte symmetrische Multiprozessorarchitektur Expired - Fee Related DE69724355T2 (de)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US675363 1996-07-02
US08/675,363 US5754877A (en) 1996-07-02 1996-07-02 Extended symmetrical multiprocessor architecture

Publications (2)

Publication Number Publication Date
DE69724355D1 DE69724355D1 (de) 2003-10-02
DE69724355T2 true DE69724355T2 (de) 2004-06-24

Family

ID=24710146

Family Applications (1)

Application Number Title Priority Date Filing Date
DE69724355T Expired - Fee Related DE69724355T2 (de) 1996-07-02 1997-06-26 Erweiterte symmetrische Multiprozessorarchitektur

Country Status (4)

Country Link
US (1) US5754877A (de)
EP (1) EP0817092B1 (de)
JP (1) JPH1097513A (de)
DE (1) DE69724355T2 (de)

Families Citing this family (43)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6295281B1 (en) * 1997-05-16 2001-09-25 3Com Corporation Symmetric flow control for ethernet full duplex buffered repeater
US6178529B1 (en) 1997-11-03 2001-01-23 Microsoft Corporation Method and system for resource monitoring of disparate resources in a server cluster
JPH11184806A (ja) * 1997-12-18 1999-07-09 Fujitsu Ltd バス制御装置
US6243825B1 (en) 1998-04-17 2001-06-05 Microsoft Corporation Method and system for transparently failing over a computer name in a server cluster
US6360331B2 (en) 1998-04-17 2002-03-19 Microsoft Corporation Method and system for transparently failing over application configuration information in a server cluster
US6449734B1 (en) 1998-04-17 2002-09-10 Microsoft Corporation Method and system for discarding locally committed transactions to ensure consistency in a server cluster
US6163855A (en) * 1998-04-17 2000-12-19 Microsoft Corporation Method and system for replicated and consistent modifications in a server cluster
JP4099561B2 (ja) * 1998-05-14 2008-06-11 ソニー株式会社 マルチプロセッサおよびそのバス調停方法
US6338122B1 (en) * 1998-12-15 2002-01-08 International Business Machines Corporation Non-uniform memory access (NUMA) data processing system that speculatively forwards a read request to a remote processing node
US6272602B1 (en) 1999-03-08 2001-08-07 Sun Microsystems, Inc. Multiprocessing system employing pending tags to maintain cache coherence
US6467012B1 (en) 1999-07-08 2002-10-15 International Business Machines Corporation Method and apparatus using a distributed system structure to support bus-based cache-coherence protocols for symmetric multiprocessors
US6779036B1 (en) 1999-07-08 2004-08-17 International Business Machines Corporation Method and apparatus for achieving correct order among bus memory transactions in a physically distributed SMP system
US6442597B1 (en) 1999-07-08 2002-08-27 International Business Machines Corporation Providing global coherence in SMP systems using response combination block coupled to address switch connecting node controllers to memory
US6591348B1 (en) 1999-09-09 2003-07-08 International Business Machines Corporation Method and system for resolution of transaction collisions to achieve global coherence in a distributed symmetric multiprocessor system
US6587930B1 (en) 1999-09-23 2003-07-01 International Business Machines Corporation Method and system for implementing remstat protocol under inclusion and non-inclusion of L1 data in L2 cache to prevent read-read deadlock
US6725307B1 (en) * 1999-09-23 2004-04-20 International Business Machines Corporation Method and system for controlling data transfers with physical separation of data functionality from address and control functionality in a distributed multi-bus multiprocessor system
US6457085B1 (en) 1999-11-04 2002-09-24 International Business Machines Corporation Method and system for data bus latency reduction using transfer size prediction for split bus designs
US6523076B1 (en) 1999-11-08 2003-02-18 International Business Machines Corporation Method and apparatus for synchronizing multiple bus arbiters on separate chips to give simultaneous grants for the purpose of breaking livelocks
US6684279B1 (en) 1999-11-08 2004-01-27 International Business Machines Corporation Method, apparatus, and computer program product for controlling data transfer
US6535941B1 (en) 1999-11-08 2003-03-18 International Business Machines Corporation Method and apparatus for avoiding data bus grant starvation in a non-fair, prioritized arbiter for a split bus system with independent address and data bus grants
US6516379B1 (en) 1999-11-08 2003-02-04 International Business Machines Corporation Method and apparatus for transaction pacing to reduce destructive interference between successive transactions in a distributed symmetric multiprocessor system
US6542949B1 (en) 1999-11-08 2003-04-01 International Business Machines Corporation Method and apparatus for increased performance of a parked data bus in the non-parked direction
US6529990B1 (en) 1999-11-08 2003-03-04 International Business Machines Corporation Method and apparatus to eliminate failed snoops of transactions caused by bus timing conflicts in a distributed symmetric multiprocessor system
US7529799B2 (en) 1999-11-08 2009-05-05 International Business Machines Corporation Method and apparatus for transaction tag assignment and maintenance in a distributed symmetric multiprocessor system
US6606676B1 (en) 1999-11-08 2003-08-12 International Business Machines Corporation Method and apparatus to distribute interrupts to multiple interrupt handlers in a distributed symmetric multiprocessor system
US6967950B2 (en) * 2000-08-11 2005-11-22 Texas Instruments Incorporated Pull transfers and transfer receipt confirmation in a datapipe routing bridge
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
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
US6791412B2 (en) * 2000-12-28 2004-09-14 Intel Corporation Differential amplifier output stage
US7234029B2 (en) * 2000-12-28 2007-06-19 Intel Corporation Method and apparatus for reducing memory latency in a cache coherent multi-node architecture
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
US6735654B2 (en) 2001-03-19 2004-05-11 Sun Microsystems, Inc. Method and apparatus for efficiently broadcasting transactions between an address repeater and a client
US6826643B2 (en) 2001-03-19 2004-11-30 Sun Microsystems, Inc. Method of synchronizing arbiters within a hierarchical computer system
US6877055B2 (en) 2001-03-19 2005-04-05 Sun Microsystems, Inc. Method and apparatus for efficiently broadcasting transactions between a first address repeater and a second address repeater
US6889343B2 (en) 2001-03-19 2005-05-03 Sun Microsystems, Inc. Method and apparatus for verifying consistency between a first address repeater and a second address repeater
US6971098B2 (en) 2001-06-27 2005-11-29 Intel Corporation Method and apparatus for managing transaction requests in a multi-node architecture
US8185602B2 (en) 2002-11-05 2012-05-22 Newisys, Inc. Transaction processing using multiple protocol engines in systems having multiple multi-processor clusters
US6996785B1 (en) 2003-04-25 2006-02-07 Universal Network Machines, Inc . On-chip packet-based interconnections using repeaters/routers
US20070226456A1 (en) * 2006-03-21 2007-09-27 Mark Shaw System and method for employing multiple processors in a computer system
US20070286837A1 (en) * 2006-05-17 2007-12-13 Torgerson Peter M Hair care composition comprising an aminosilicone and a high viscosity silicone copolymer emulsion

Family Cites Families (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4240143A (en) * 1978-12-22 1980-12-16 Burroughs Corporation Hierarchical multi-processor network for memory sharing
GB2156554B (en) * 1984-03-10 1987-07-29 Rediffusion Simulation Ltd Processing system with shared data
EP0228559A1 (de) * 1985-12-17 1987-07-15 BBC Brown Boveri AG Fehlertolerante Mehrrechneranordnung
JPH07122864B2 (ja) * 1991-07-22 1995-12-25 インターナショナル・ビジネス・マシーンズ・コーポレイション データ処理システム、データ処理システムに使用するインターフエース回路及びデータ・プロセツサ間の通信方法
US5442758A (en) * 1993-07-19 1995-08-15 Sequent Computer Systems, Inc. Apparatus and method for achieving reduced overhead mutual exclusion and maintaining coherency in a multiprocessor system utilizing execution history and thread monitoring
FR2708766B1 (fr) * 1993-08-03 1995-09-08 Bull Sa Procédé d'analyse d'interblocages dans un système d'exploitation.
US5533103A (en) * 1994-04-28 1996-07-02 Electronic Information Systems, Inc. Calling system and method
US5579512A (en) * 1994-12-30 1996-11-26 Compaq Computer Corporation Systempro emulation in a symmetric multiprocessing computer system
US5655103A (en) * 1995-02-13 1997-08-05 International Business Machines Corporation System and method for handling stale data in a multiprocessor system

Also Published As

Publication number Publication date
DE69724355D1 (de) 2003-10-02
EP0817092A2 (de) 1998-01-07
US5754877A (en) 1998-05-19
JPH1097513A (ja) 1998-04-14
EP0817092A3 (de) 1998-08-26
EP0817092B1 (de) 2003-08-27

Similar Documents

Publication Publication Date Title
DE69724355T2 (de) Erweiterte symmetrische Multiprozessorarchitektur
DE69701078T2 (de) Mikroprozessorarchitektur mit der Möglichkeit zur Unterstützung mehrerer verschiedener Prozessoren
DE69721640T2 (de) Multiprozessor-Rechnersystem und Verfahren zur Steuerung des Verkehrsflusses
DE69722512T2 (de) Mehrrechnersystem mit einem die Anzahl der Antworten enthaltenden Kohärenzprotokoll
DE68924306T2 (de) Mehrprozessorrechneranordnungen mit gemeinsamem Speicher und privaten Cache-Speichern.
DE3856552T2 (de) Multiprozessor-Digitaldatenverarbeitungssystem und Verfahren zum Betreiben dieses Systems
DE60202926T2 (de) Multicomputersystem mit konfigurierbaren Schnittstellen für flexible Systemkonfigurationen
DE68926036T2 (de) Speicherkonfiguration zur Verwendung für Schnittstellenbildung zwischen einer Systemsteuereinheit für ein Multiprozessorsystem und dem Hauptspeicher
DE60006842T2 (de) Multiprozessor-Node-Controller-Schaltung und Verfahren
DE69727856T2 (de) Multiprozessorsystem mit Konsistenzfehler-Registrierung mit entsprechendem Verfahren
DE69327387T2 (de) An einen paketvermittelten Bus gekoppelte Nachschreibsteuerungsschaltung für eine Cachespeichersteuerungsschaltung
DE10394081B4 (de) Verfahren und Vorrichtung zum Einprägen von Schreibdaten in einen Cache-Speicher
DE69128107T2 (de) Busanordnung für Speicherzugriff
DE3687307T2 (de) Computeranordnungen mit cache-speichern.
DE69724354T2 (de) Ein Mehrprozessorrechnersystem mit lokalen und globalen Adressräumen und mehreren Zugriffsmoden
DE69130106T2 (de) Arbitrierung von paketvermittelten Bussen, einschliesslich Bussen von Multiprozessoren mit gemeinsam genutztem Speicher
DE3782335T2 (de) Speichersteuersystem.
DE10262164B4 (de) Computersystem mit einer hierarchischen Cacheanordnung
DE69812685T2 (de) System und verfahren zur spekulativen arbitrierung bei datenübertragung
DE69032276T2 (de) Verfahren und Anordnung zur Verbesserung der Datenspeicherungsgeschwindigkeit eines Computersystems
DE112012004551B4 (de) Mehrkernverknüpfung in einem Netzprozessor
DE112008001957B4 (de) Systeme und Verfahren zum Verbessern der Leistungsfähigkeit eines routfähigen Netzwerks
DE112008002019T5 (de) Auslagern von Eingabe/Ausgabe (I/O)-Virtualisierungsarbeitsgängen an einem Prozessor
DE3934145C2 (de) Platteneinheit-Steuerungsvorrichtung und Informationsverarbeitungssystem, das dieselbe enthält
DE69838701T2 (de) Vorrichtung zum Lese/-Schreibzugriff von Registern in zentraler Verarbeitungseinheit

Legal Events

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