-
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 8A–B sind
mit dem Bus 4A der niedrigeren Ebene L1.1 verbunden Buseinrichtungen 8C–D 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 4A–B ist über einen
Repeater 6A–B 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 8A–B 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 4A–B über ihre
jeweiligen Repeater 6A–B 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 8A–D 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 14–16 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 30A–30B 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 30A–30B 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 38A–B ausgestattet.
Die Busgeräte 38A–B 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 40A–B aller
Buseinrichtungen 38A–B 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 40A–B 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 61–65 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 38A–B 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 38C–D 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 98A–B 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 102A–B. Eine Mehrzahl
von PCI-Geräten
kann mit den PCI-Bussen 102A und 102B verbunden
sein, wie z. B. PCI-Karten 104A–B bzw. 104C–D.
Die PCI-Karten 104A–D 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 104A–D 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 120A–C 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 120A–C 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 120A–C 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 120B–C auf
den Reihen 163 bzw. 164 wiedergegeben. Die Reihen 165–167 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.