-
Die
vorliegende Erfindung bezieht sich auf das Gebiet der Computersysteme
mit mehreren Prozessoren und genauer gesagt auf die Funktion der
Fehlerprotokollierung in Computersystemen mit mehreren Prozessoren.
-
Mehrprozessor-Computersysteme
weisen zwei oder mehr Prozessoren auf, die verwendet werden können, um
Berechnungsaufgaben auszuführen.
Eine bestimmte Berechnungsaufgabe kann auf einem Prozessor ausgeführt werden,
während
andere Prozessoren damit nicht zusammenhängende Berechnungsaufgaben
ausführen.
Alternativ können
Bestandteile einer bestimmten Berechnungsaufgabe zwischen mehreren Prozessoren
verteilt werden, um die Zeitdauer zu verkürzen, die erforderlich ist,
um die Berechnungsaufgabe insgesamt auszuführen. Allgemein gesprochen
ist ein Prozessor eine Einrichtung, die dafür ausgelegt ist, eine Operation
mit einem oder mehreren Operanden auszuführen, um ein Ergebnis zu erzeugen.
Die Operation wird in Reaktion auf eine Anweisung durchgeführt, welche
von dem Prozessor ausgeführt
wird.
-
Eine
populäre
Architektur bei konventionellen Mehrprozessor-Computersystemen ist
die Architektur des symmetrischen Multiprozessors (SMP). Typischerweise
weist ein SMP-Computersystem
mehrere Prozessoren auf, die durch eine Cachehierarchie mit einem
gemeinsam verwendeten Bus verbunden sind. Zusätzlich ist mit dem Bus ein
Speicher verbunden, der von den Prozessoren in dem System gemeinsam
verwendet wird. Ein Zugriff auf irgendeine bestimmte Speicherstelle
innerhalb des Speichers erfolgt in einer ähnlichen Zeitdauer wie der
Zugriff auf irgendeine andere bestimmte Speicherstelle. Da auf jede
Speicherstelle in gleichförmiger Weise
zugegriffen werden kann, wird diese Struktur oft als eine gleichförmige Speicherarchitektur
(UMA) bezeichnet.
-
Prozessoren
haben oft eine Ausgestaltung mit internen Caches und ein oder mehrere
Caches sind typischerweise in der Cachehierarchie zwischen den Prozessoren
und dem gemeinsam verwendeten Bus in einem SMP-Computersystem enthalten.
Mehrere Kopien von Daten, die in einer bestimmten Hauptspeicheradresse
resident sind, können
in diesen Caches gespeichert sein. Um das Modell des gemeinsam verwendeten Speichers
aufrechtzuerhalten bzw. zu pflegen, bei welchem eine bestimmte Adresse
zu einem gegebenen Zeitpunkt exakt einen Datenwert speichert, verwenden
Computersysteme mit gemeinsam verwendetem Bus Cachekohärenz. Allgemein
gesprochen ist eine Operation kohärent, wenn die Wirkungen der
Operation auf an einer bestimmten Speicheradresse gespeicherte Daten
sich in jeder Kopie der Daten innerhalb der Cachehierarchie wiederfinden.
Wenn beispielsweise Daten, welche an einer bestimmten Speicheradresse
gespeichert sind, aktualisiert werden, kann die Aktualisierung den
Caches zugeführt
werden, welche Kopien der vorherigen Daten speicherten. Alternativ
können
die Kopien der vorherigen Daten in den Caches ungültig gemacht
werden, so daß ein
nachfolgender Zugriff auf die bestimmte Speicheradresse bewirkt,
daß die
aktualisierte Kopie von dem Hauptspeicher übertragen wird. Für gemeinsam
verwendete Bussysteme wird typischerweise ein Suchbusprotokoll ("Schnüffel"-Busprotokoll) verwendet.
Jede kohärente
Transaktion, die auf dem gemeinsam verwendeten Bus ausgeführt wird, wird
auf Daten in den Caches untersucht (oder "durchschnüffelt"). Wenn eine Kopie der beeinflußten Daten
gefunden wird, kann der Zustand der Cachezeile, welche die Daten
enthält, in
Reaktion auf die kohärente
Transaktion aktualisiert werden.
-
Unglücklicherweise
leiden gemeinsam verwendete Busarchitekturen an mehreren Nachteilen,
die ihren Nutzen in Mehrprozessor-Computersystemen begrenzen. Ein
Bus ist in der Lage, eine maximale Bandbreite bzw. Spitzenbandbreite
(beispielsweise eine gewisse Anzahl von Bytes/Sekunde, die über den
Bus übertragen
werden können)
zu tragen. Wenn zusätzliche
Prozessoren an dem Bus angebracht werden, kann die Bandbreite, die
erforderlich ist, um die Prozessoren mit Daten und Befehlen zu versorgen,
die Spitzenbandbreite des Busses übersteigen. Da einige Prozessoren
zwangsweise auf verfügbare
Busbandbreite warten müssen,
leidet die Leistungsfähigkeit
des Computersystems, wenn die Bandbreitenertordernisse der Prozessoren
die verfügbare
Busbandbreite überschreiten.
-
Darüber hinaus
erhöht
das Hinzufügen
von mehr Prozessoren zu einem gemeinsam verwendeten Bus die kapazitive
Last auf dem Bus und kann sogar dazu führen, daß die physikalische Länge des
Busses vergrößert wird.
Die erhöhte
kapazitive Last und die erweiterte Buslänge vergrößern die Verzögerung beim
Laufen eines Signals durch den Bus. Aufgrund der erhöhten Durchlaufverzögerung benötigen Transaktionen
möglicherweise
länger
für ihre
Ausführung.
Daher kann die Spitzenbandbreite des Busses noch abnehmen, wenn weitere
Prozessoren hinzugefügt
werden.
-
Diese
Probleme werden noch verstärkt
durch den fortgesetzten Anstieg der Betriebsfrequenz und Leistungsfähigkeit
der Prozessoren. Die erhöhte
Leistungsfähigkeit,
die durch höhere
Frequenzen und fortgeschrittenere Mikroarchitekturen der Prozessoren
bewirkt wird, führt
zu höheren
Anforderungen an die Bandbreite als bei früheren Prozessorgenerationen,
selbst wenn die Zahl der Prozessoren gleich bleibt. Daher können Busse,
die früher
eine ausreichende Bandbreite für
ein Mehrprozessor-Computersystem bereitstellten, für ähnliche
Computersysteme, die Prozessoren mit höherer Leistungsfähigkeit
verwenden, unzureichend sein. Eine weitere Struktur für Multiprozessor-Computersysteme ist
eine verteilte, gemeinsam verwendete Speicherarchitektur. Eine verteilte,
gemeinsam verwendete Speicherarchitektur umfaßt mehrere Knoten, in welchen Prozessoren
und Speicher residieren. Die mehreren Knoten kommunizieren über ein
dazwischengeschaltetes Netzwerk. Insgesamt betrachtet bildet der
Speicher, der in den mehreren Knoten enthalten ist, den gemeinsam verwendeten
Speicher für
das Computersystem. Typischerweise werden Verzeichnisse verwendet,
um zu kennzeichnen, welche Knoten im Cache aufgenommene Kopien von
Daten haben, die einer bestimmten Adresse entsprechen. Kohärenzaktivitäten können durch
Untersuchung der Verzeichnisse erzeugt werden.
-
Gemeinsam
verwendete Speichersysteme sind skalierbar, was die Einschränkungen
der gemeinsam verwendeten Busarchitektur überwindet. Da viele Prozessorzugriffe
innerhalb eines Knotens abgeschlossen werden, haben Knoten typischerweise
wesentlich geringere Bandbreitenerfordernisse an das Netzwerk als eine
gemeinsam verwendete Busarchitektur für ihren gemeinsam verwendeten
Bus bereitstellen muß.
Die Knoten können
mit einer hohen Taktfrequenz und Bandbreite arbeiten und auf das
Netzwerk zugreifen, falls erforderlich. Zusätzliche Knoten können dem
Netzwerk hinzugefügt
werden, ohne die lokale Bandbreite der Knoten zu beeinflussen. Netzwerk
hinzugefügt
werden, ohne die lokale Bandbreite der Knoten zu beeinflussen. Stattdessen
wird nur die Bandbreite des Netzwerks beeinflußt.
-
Da
Computersysteme mit verteiltem, gemeinsam verwendetem Speicher eine
große
Anzahl von Prozessoren unterstützen,
werden diese Computersysteme oftmals verwendet, um sogenannte "aufgabenempfindliche" Anwendungen auszuführen. Aufgabenempfindliche
Anwendungen sind solche Anwendungen, von welchen ein bestimmtes
Geschäft
in hohem Maße
abhängig
ist. Wenn die aufgabenkritische Anwendung nicht verfügbar ist,
wird der Betrieb des Geschäfts
ernsthaft beeinträchtigt.
Dementsprechend muß ein
solches Computersystem ein extrem hohes Maß an Verfügbarkeit und Zuverlässigkeit
haben. Eine Maßnahme
hinsichtlich Verfügbarkeit
und Zuverlässigkeit
besteht in der Fehlertoleranz des Computersystems. Ein Computersystem
ist fehlertolerant, wenn ein Fehler, sei er durch Hardware oder
Software erzeugt, nicht bewirkt, daß das Computersystem seine
Funktion einstellt. Die fehlerhafte Software beendet möglicherweise
die Ausführung.
In ähnlicher
Weise kann die fehlerhafte Hardware deaktiviert werden.
-
Zusätzlich zu
Fehlertoleranz und möglicherweise
anderen Eigenschaften, welche die Verfügbarkeit und Zuverlässigkeit
des Computersystems erhöhen,
ist es wünschenswert,
daß das
Computersystem Fähigkeiten
zur Fehlerprotokollierung bereitstellt. Durch die Protokollierung
von Information, welche einen erfaßten Fehler betrifft, kann
ein Techniker, welcher die Maschine wartet, in der Lage sein, die
Hardware oder Software, welche den Fehler erzeugt, leichter zu lokalisieren.
Ein Fehlerprotokolliersystem für
ein Computersystem mit verteiltem, gemeinsam verwendetem Speicher
ist deshalb wünschenswert.
-
Die
EP-A-516 126 beschreibt ein fehlertolerantes Mehrprozessor-Computersystem.
Das System hat einen Cachespeicher und einen Detektor für Paritätsfehler,
der dafür
ausgelegt ist, Paritätsfehler
in Informationsblöcken
zu erfassen, die von einem Cache gelesen und in diesen geschrieben
werden, und um ein Lese- oder Schreibefehlerflag der Cacheparität auszugeben,
falls ein Paritätsfehler
erfaßt
wird. Ein Steuerungsmerkmal der Erholung von einem Fehler reagiert
auf das Erfassen eines Flags für
das Lesen eines Paritätsfehlers in
der aufsteigenden CPU und eines Flags für einen Schreibparitätsfehler
in der empfangenden CPU, um einen fehlerhaften Block über eine
Systemsteuereinheit an den Hauptspeicher zu übertragen, wo der fehlerhafte Block
korrigiert wird. Der korrigierte Block wird anschließend von
dem Speicher zu der empfangenden CPU übertragen, wenn ein erneuter
Versuch unternommen wird.
-
Die
US-A-5,426,754 offenbart ein System, welches eine Anzahl skalarer
Ausführungselemente (SXEs)
und Vektorausführungselemente
(VXEs) aufweist. Außerdem
ist in dem System ein skalares Kreuzverhör (XI-) Verzeichnis enthalten,
während
für jedes
VXE ein Satz von Vektorspeicherregistereinrichtungen (VSRs) vorgesehen
ist. Das skalare XI-Verzeichnis zeichnet die Cachezeilen auf, in
welche aktuell durch die SXEs gespeichert wird, während die
VSRs die Cachezeilen aufzeichnen, die ihre zugehörigen VXEs gerade für das Speichern
von Daten adressieren. Vektorielle und skalare XI-Anforderungen
werden mit den in den VSRs gespeicherten Adressen verglichen, wodurch
Antworten bzw. Reaktionen, die normalerweise von dem skalaren XI-Verzeichnis
geliefert werden, festgehalten werden können, um zu verhindern, daß die SXEs
ungültige
Daten heranholen.
-
Aspekte
der Erfindung sind in den beigefügten
unabhängigen
Ansprüchen
dargelegt.
-
Die
oben skizzierten Probleme werden durch ein Computersystem gemäß der vorliegenden
Erfindung weitgehend gelöst.
Protokollagenten, die bei der Ausführung der globalen Kohärenzaktivität beteiligt
sind, erfassen Fehler bezüglich
der ausgeführten
Aktivität.
Die Fehler werden durch das Computersystem protokolliert, so daß eine Diagnosesoftware
ausgeführt
werden kann, um den erfaßten
Fehler festzustellen und den Fehler bis zu der fehlerhaften Software
oder Hardware zu verfolgen. Insbesondere wird Information, die den ersten
zu erfassenden Fehler betrifft, protokolliert. Nachfolgende Fehler
können
mehr oder weniger Protokollierung erfahren, je nach programmierbaren
Konfigurationswerten. Zusätzlich
können
diejenigen Fehler, die eine volle Protokollierung erfahren, über Fehlermasken
programmierbar ausgewählt
werden.
-
In
einer Ausführungsform
weisen die Protokollagenten jeweils mehrere unabhängige Zustandsmaschinen
auf. Jede Zustandsmaschine verarbeitet eine Anforderung unabhängig von
anderen Zustandsmaschinen, die andere Anfordenngen bearbeiten. Wenn
die Anforderung, die eine bestimmte Zustandsmaschine verarbeitet,
zu einem Fehler führt,
kann die betreffende Zustandsmaschine in einen eingefrorenen Zustand übergehen.
Information, welche sich auf die Anforderung bezieht, die durch
die Zustandsmaschine gesammelt wird, kann daher für einen
späteren
Zugriff gespeichert werden. Eine Zustandsmaschine friert bei der
Erfassung eines Fehlers ein, wenn nicht bereits eine maximale Anzahl
der mehreren Zustandsmaschinen eingefroren ist und die zuvor erwähnte Fehlermaske
anzeigt, daß eine
volle Fehlerprotokollierung für
den erfaßten
Fehler verwendet wird. Daher bleibt eine minimale Anzahl der mehreren
Zustandsmaschinen selbst bei Anwesenheit einer großen Anzahl
von Fehlern funktionsfähig.
-
Weiterhin
können
die Protokollzustandsmaschinen vor dem Eintritt in einen eingefrorenen
Zustand einen Erholungszustand durchlaufen, in welchem Ressourcen,
die nicht für
Fehlerprotokollierzwecke verwendet werden, aus der fehlerhaften
Anforderung befreit werden. Auf diese Weise können nachfolgende Anforderungen
weiterhin korrekt bearbeitet bzw. bedient werden. Das Computersystem
kann daher ein hohes Maß an
Zuverlässigkeit
und Verfügbarkeit
liefern.
-
Ein
besseres Verständnis
der Erfindung wird beim Lesen der folgenden, veranschaulichenden
Beschreibung und unter Bezug auf die beigefügten Zeichnungen offensichtlich,
von welchen:
-
1 ein Blockdiagramm eines
Mehrprozessor-Computersystems ist,
-
1A ein konzeptionelles Blockdiagramm
ist, welches eine nicht-gleichförmige
Speicherarchitektur zeigt, die durch eine Ausführungsform des in 1 gezeigten Computersystems
unterstützt
wird,
-
1B ein konzeptionelles Blockdiagramm
ist, welches eine Cache-Only-Speicherarchitektur
zeigt, die durch eine Ausführungsform
des in 1 gezeigten Computersystems
unterstützt
wird.
-
2 ein Blockdiagramm einer
Ausführungsform
eines symmetrischen Mehrprozessorknotens ist, der in 1 gezeigt wird.
-
2A ein beispielhafter Verzeichniseintrag
ist, der in einer Ausführungsform
eines in 2 gezeigten
Verzeichnisses gespeichert wird.
-
3 ein Blockdiagramm einer
Ausführungsform
einer Systemschnittstelle ist, die in 1 dargestellt ist.
-
4 ein Diagramm ist, welches
Aktivitäten
zeigt, die in Reaktion auf einen typischen Kohärenzvorgang zwischen einem
Anforderungsagenten, einem Heimatagenten und einem abhängigen Agenten
ausgeführt
werden muß,
-
5 eine beispielhafte Kohärenzoperation
ist, die in Reaktion auf eine Anforderung für das Lesen zum Zwecke des
Besitzes von einem Prozessor ausgeführt wird,
-
6 ein Flußdiagramm
ist, welches eine beispielhafte Zustandsmaschine für eine Ausführungsform eines
in 3 gezeigten Anforderungsagenten
ist.
-
7 ein Flußdiagramm
ist, welches eine beispielhafte Zustandsmaschine für eine Ausführungsform eines
in 3 gezeigten Heimatagenten
zeigt.
-
8 ein Flußdiagramm
ist, welches eine beispielhafte Zustandsmaschine für eine Ausführungsform eines
in 3 dargestellten abhängigen Agenten
zeigt,
-
9 eine Tabelle ist, welche
Anforderungstypen gemäß einer
Ausführungsform
der Systemschnittstelle auflistet,
-
10 eine Tabelle ist, welche
gemäß einer
Ausführungsform
der Systemschnittstelle Forderungstypen auflistet.
-
11 eine Tabelle ist, welche
Antworttypen gemäß einer
Ausführungsform
der Systemschnittstelle auflistet.
-
12 eine Tabelle ist, welche
die Antworttypen gemäß einer
Ausführungsform.
der Systemschnittstelle auflistet.
-
13 eine Tabelle ist, welche
die Kohärenzvorgänge in Reaktion
auf verschiedene Operationen beschreibt, die durch einen Prozessor
gemäß einer
Ausführungsform
der vorliegenden Erfindung ausgeführt werden.
-
14 ein Flußdiagramm
ist, welches eine beispielhafte Zustandsmaschine für einen
Anforderungsagenten einschließlich
Zuständen
für die
Fehlerprotokollierung zeigt.
-
15 ein Flußdiagramm
ist, welches eine beispielhafte Zustandsmaschine für einen
Heimatagenten zeigt, einschließlich
Zuständen
der Fehlerkorrektur.
-
16 ein Flußdiagramm
ist, welches einen Satz von Registern zeigt, die verwendet wurden,
um Information, die sich auf erfaßte Fehler bezieht, zu speichern.
-
17 eine Tabelle ist, welche
Information auflistet, die in einem in 16 gezeigten Fehlerstatusregister gespeichert
ist, und zwar entsprechend einer Ausführungsform des Fehlerzustandsregisters.
-
18 ein logisches Diagramm
ist, welches eine Ausführungsform
eines Fehlerschaltkreises zeigt.
-
Während die
Erfindung an verschiedene Modifikationen und alternative Formen
anpaßbar
ist, werden in den Zeichnungen derselben nur spezifische Ausprägungen beispielhaft
wiedergegeben und werden hier im einzelnen beschrieben. Es sollte
sich verstehen, daß die
Zeichnungen und die genaue Beschreibung derselben nicht die Erfindung
auf die speziell dargestellte Ausführungsform beschränken sollen,
sondern die Erfindung soll im Gegenteil alle Modifikationen, Äquivalente
und Alternativen abdecken, die in den Schutzumfang der vorliegenden
Erfindung fallen, wie er durch die anhängenden Ansprüche definiert
wird.
-
Gemäß 1 ist ein Blockdiagramm
einer Ausführungsform
eines Mehrprozessor-Computersystems 10 dargestellt.
Das Computersystem 10 weist mehrere SMP-Knoten 12A–12D auf,
die über
ein Punkt-zu-Punkt-Netzwerk 44 miteinander verbunden sind.
Elemente, auf die hier mit einer bestimmten Bezugszahl, gefolgt
von einem Buchstaben, Bezug genommen wird, werden gemeinsam nur
durch die Bezugszahl bezeichnet. Beispielsweise werden die SMP-Knoten 12A–12D gemeinsam
als SMP-Knoten 12 bezeichnet. In der dargestellten Ausführungsform
weist jeder SMP-Knoten 12 mehrere
Prozessoren, externe Caches, einen SMP-Bus, einen Speicher und eine
Systemschnittstelle auf. Beispielsweise ist der SMP-Knoten 12A mit mehreren
Prozessoren einschließlich
der Prozessoren 16A–16B ausgestattet.
Die Prozessoren 16 sind mit externen Caches 18 verbunden,
welche weiterhin mit einem SMP-Bus 20 verbunden sind. Zusätzlich sind
ein Speicher 22 und eine Systemschnittstelle 24 mit
dem SMP-Bus 20 verbunden. Weiterhin können ein oder mehrere Eingabe-/Ausgabe-
(I/O-) Schnittstellen 26 mit dem Bus 20 verbunden
sein. I/O-Schnittstellen 26 werden verwendet, um eine Schnittstelle
zu peripheren Geräten
zu bilden, wie z.B. zu seriellen und parallelen Anschlüssen, Festplattenlaufwerken,
Modems, Druckern etc. Andere SMP-Knoten 12B-12D können in ähnlicher Weise
ausgestaltet werden.
-
Allgemein
gesprochen ist das Computersystem so ausgestaltet, daß es Fehler
erfaßt
und protokolliert. Genauer gesagt sind Anforderungsagenten und Heimatagenten,
die in die Kohärenzaktivität einbezogen
sind, so ausgestaltet, daß sie
Fehler erfassen, die sich auf die ausgeführte Kohärenzaktivität beziehen. Die Fehler werden
protokolliert, ebenso wie Information, die sich auf die Aktivität bezieht,
die gerade durchgeführt
wird, wenn der Fehler erfaßt
wird. Zusätzlich
werden Ressourcen innerhalb des Computersystems 10, welche
durch die Transaktion besetzt sind, welche die Kohärenzaktivität ausgelöst haben,
freigesetzt, so daß nachfolgend Transaktionen
und Kohärenzvorgänge fortgeführt werden
können.
Beispielsweise kann die Transaktion, für welche der Fehler erfaßt wird,
innerhalb des lokalen Knotens wieder ausgegeben werden, um den Eintrag
in die Neuausgabeschlange innerhalb der Systemschnittstelle 24,
welcher durch die Transaktion besetzt ist, freizugeben. Darüber hinaus
können
Prozessorressourcen, die durch die Transaktion besetzt sind, freigesetzt werden,
indem man zuläßt, daß die Transaktion
abgeschlossen wird. Die Neuausgabetransaktion kann anzeigen, daß die Transaktion
mit einem Fehler abgeschlossen wurde, so daß der auslösende Prozessor anhalten und
ermöglichen
kann, daß durch
das Betriebssystem, welches das Computersystem 10 steuert,
eine Korrekturaktion ausgeführt
wird. In vorteilhafter Weise werden auf Kohärenz bezogene Fehler erfaßt und durch
das Computersystem 10 nachgebessert. Das Computersystem 10 kann
weiterhin funktionieren trotz des Vorhandenseins derartiger Fehler,
was die Verfügbarkeit
und Zuverlässigkeit
des Systems erhöht.
-
In
einer Ausführungsform
implementieren Anforderungsagenten und Heimatagenten einen eingefrorenen
Zustand innerhalb der mehrfachen unabhängigen Zustandsmaschinen, die
darin enthalten sind. Wenn ein Fehler bezüglich einer Transaktion erfaßt wird,
wird die Zustandsmaschine, welche diese Transaktion handhabt, eingefroren.
Mit anderen Worten, die Zustandsmaschine verarbeitet keine neuen
Transaktionen, bis sie ausdrücklich
durch Software freigegeben wurde. Daher ist Information, welche
sich auf die Transaktion bezieht und von der Zustandsmaschine gesammelt
wurde, für
eine Analyse verfügbar.
Das Debugging bzw. die Fehlersuche nach dem Problem, welches den
Fehler verursachte, kann durch das Vorhandensein der Information
vereinfacht werden. Darüber
hinaus kann ein Eintritt in einen Wiederherstellungs- bzw. Erholungszustand
vor dem Eintritt in den eingefrorenen Zustand erfolgen. Der Erholungszustand
ermöglicht,
daß Aktionen ausgeführt werden,
um Ressourcen freizugeben, die durch die Transaktion besetzt werden,
für welche
der Fehler erfaßt
wurde (falls diese Ressourcen nicht für Debugging- bzw. Fehlersuchzwecke
zweckmäßig sind). Da
mehrere Zustandsmaschinen verwendet werden, können andere Zustandsmaschinen
damit fortfahren, nachfolgende Transaktionen zu verarbeiten, während die
Zustandsmaschinen, welche die Fehler erfaßt haben, im eingefrorenen
Zustand bleiben. Eine programmierbare Eigenschaft der Systemschnittstelle 24 definiert die
maximale Anzahl an Zustandsmaschinen, die gleichzeitig eingefroren
sein können.
Fehler, die erfaßt
werden, nachdem die maximale Anzahl erreicht wurde, werden protokolliert,
jedoch wird die Zustandsmaschine nicht eingefroren. Auf diese Weise
bleibt zumindest eine minimale Zahl von Zustandsmaschinen in Betrieb, selbst
bei Auftreten häufiger
Fehler.
-
Allgemein
gesprochen ist ein Speichervorgang ein Vorgang, welcher eine Übertragung
von Daten von einer Quelle zu einem Ziel verursacht. Die Quelle
und/oder das Ziel können
Speicherstellen innerhalb des Auslösenden sein oder sie können Speicherstellen
innerhalb des Speichers sein. Wenn eine Quelle oder ein Ziel eine
Speicherstelle innerhalb eines Speichers ist, so wird die Quelle
oder das Ziel über
eine Adresse spezifiziert, die mit dem Speichervorgang übermittelt
wird. Speichervorgänge
können
Lese- oder Schreibvorgänge sein.
Ein Lesevorgang bewirkt eine Übertragung
von Daten von einer Quelle außerhalb
des Auslösenden
zu einem Ziel innerhalb des Auslösenden.
Umgekehrt bewirkt ein Schreibvorgang eine Übertragung von Daten von einer
Quelle innerhalb des Auslösenden
zu einem Ziel außerhalb
des Auslösenden
bzw. Initiators. In dem in 1 dargestellten
Computersystem kann ein Speichervorgang eine oder mehrere Transaktionen
auf dem SMP-Bus 20 ebenso
wie einen oder mehrere Kohärenzvorgänge auf
dem Netzwerk 14 enthalten.
-
Überblick über die
Architektur
-
Jeder
SMP-Knoten 12 ist im wesentlichen ein SMP-System, welches
den Speicher 22 als gemeinsam verwendeten Speicher hat.
Prozessoren 16 sind Hochleistungsprozessoren. In einer
Ausführungsform
ist jeder Prozessor 16 ein SPARC-Prozessor, der mit der
Version 9 der SPARC-Prozessorarchitektur
konform ist. Es sei jedoch angemerkt, daß jegliche Prozessorarchitektur
durch die Prozessoren 16 verwendet werden kann.
-
Typischerweise
umfassen Prozessoren 16 interne Befehls- und Datencaches.
Daher werden externe Caches 18 als L2-Caches bezeichnet
bzw. etikettiert (für
Ebene 2 bzw. Level 2, wobei die internen Caches
die Level-1-Caches sind). Wenn Prozessoren 16 nicht mit
internen Caches ausgestattet sind, so sind die externen Caches 18 Level-1-Caches.
Es versteht sich, daß die
Nomenklatur "Level" bzw. "Ebene" verwendet wird,
um die Nähe
eines bestimmten Caches zu dem Prozessorkern innerhalb des Prozessors 16 zu
kennzeichnen. Level 1 liegt dem Prozessorkern am nächsten,
Level 2 ist das nächstnähere, etc.
Externe Caches 18 stellen einen schnellen Zugriff auf Speicheradressen
bereit, auf die durch den damit verbundenen Prozessor 16 häufig zugegriffen
wird. Es versteht sich, daß externe
Caches 18 in irgendeiner Cacheanordnung aus einer Vielfalt
von speziellen Cacheanordnungen ausgestaltet sein können. Beispielsweise
können
bereichsassoziative oder direkt zugeordnete Konfigurationen durch
externe Caches 18 verwendet werden.
-
Der
SMP-Bus 20 paßt
sich der Kommunikation zwischen Prozessoren 16 (über die
Caches 18), dem Speicher 22, der Systemschnittstelle 24 und
dem I/O-Interface 26 an. In einer Ausführungsform umfaßt der SMP-Bus 20 einen
Adreßbus
und zugehörige
Steuersignale, ebenso wie einen Datenbus und zugehörige Steuersignale.
Da die Adreß-
und Datenbusse voneinander getrennt sind, kann ein Busprotokoll
mit aufgespaltener Transaktion auf dem SMP-Bus 20 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 unterscheiden
kann, die auf dem Datenbus erscheint. Transaktionen, welche Adresse
und Daten umfassen, enthalten eine Adreßphase, in welcher die Adresse
und die zugehörige
Steuerinformation auf dem Adreßbus
transportiert wird, und eine Datenphase, in welcher die Daten auf
den Datenbus übertragen
werden. Zusätzliche
Adreßphasen
und/oder Datenphasen für
andere Transaktionen können vor
der Datenphase, die einer bestimmten Adreßphase entspricht, ausgelöst werden.
Eine Adreßphase
und die entsprechende Datenphase können auf eine Anzahl von Arten
korreliert sein. Beispielsweise können Datentransaktionen in
derselben Reihenfolge auftreten, in welcher die Adreßtransaktionen
auftreten. Alternativ können
Adreß-
und Datenphasen einer Transaktion über ein eindeutiges Tag identifiziert
werden.
-
Der
Speicher 22 ist so ausgestaltet, daß er Daten und Befehlscode
für die
Verwendung durch Prozessoren 16 speichert. Der Speicher 22 weist
vorzugsweise einen dynamischen Speicher mit wahlfreiem Zugriff (DRAM)
auf, auch wenn irgendein anderer Speichertyp verwendet werden kann.
Der Speicher 22 bildet in Verbindung mit ähnlichen,
beispielhaften Speichern in den anderen SMP-Knoten 12 ein
verteiltes, gemeinsam verwendetes Speichersystem. Jede Adresse in
dem Adreßraum
des verteilten, gemeinsam verwendeten Speichers ist einem bestimmten
Knoten zugewiesen, der als der Heimatknoten der Adresse bezeichnet
wird. Ein Prozessor innerhalb eines anderen Knotens als dem Heimatknoten
kann auf die Daten unter einer Adresse des Heimatknotens zugreifen
und die Daten möglicherweise
im Cache aufnehmen. Daher wird zwischen den SMP-Knoten 12 ebenso wie unter
den Prozessoren 16 und den Caches 18 innerhalb
eines bestimmten SMP-Knotens 12A–12D aufrechterhalten.
Die Systemschnittstelle 24 stellt Kohärenz zwischen Kno ten bereit, während das
Nachforschen (Schnüffeln)
auf dem SMP-Bus 20 eine Kohärenz zwischen Knoten gewährleistet.
-
Zusätzlich zum
Aufrechterhalten der Zwischenknotenkohärenz erfaßt die Systemschnittstelle 24 Adressen
auf dem SMP-Bus, was eine Datenübertragung
zu oder von einem weiteren SMP-Knoten 12 erfordert.
Die Systemschnittstelle 24 führt den Transfer durch und
stellt die entsprechenden Daten für die Transaktion auf dem SMP-Bus 20 bereit.
In der dargestellten Ausführungsform
ist die Systemschnittstelle 24 mit einem Punkt-zu-Punkt-Netzwerk 14 verbunden.
Es versteht sich jedoch, daß in
alternativen Ausführungsformen
andere Netzwerke verwendet werden könnten. In einem Punkt-zu-Punkt-Netzwerk
existieren individuelle Verbindungen zwischen allen Knoten auf dem
Netzwerk. Ein bestimmter Knoten steht mit einem zweiten Knoten über ein
zugeordnetes Link in direkter Kommunikationsverbindung. Um mit einem
dritten Knoten zu kommunizieren, verwendet der bestimmte Knoten
ein anderes Link als dasjenige, welches verwendet wurde, um mit
einem zweiten Knoten zu kommunizieren.
-
Es
versteht sich, daß,
auch wenn in 1 vier
SMP-Knoten 12 dargestellt sind, Ausführungsformen des Computersystems 10 gedanklich
umfaßt
sind, welche irgendeine beliebige Anzahl von Knoten verwenden.
-
Die 1A und 1B sind konzeptionelle Darstellungen
der verteilten Speicherarchitekturen, welche durch eine Ausführungsform
des Computersystems 10 unterstützt werden. Insbesondere veranschaulichen die 1A und 1B alternative Arten, auf welche jeder
SMP-Knoten 12 von 1 Daten
im Cache aufnehmen und Speicherzugriffe durchführen kann. Einzelheiten bezüglich der
Art und Weise, in welcher das Computersystem 10 solche
Zugriffe unterstützt,
werden nachstehend noch genauer beschrieben.
-
Gemäß 1A ist ein logisches Diagramm,
welches eine erste Speicherarchitektur 30 zeigt, die durch eine
Ausführungsform
des Computersystems 10 unterstützt wird, dargestellt. Die
Architektur 30 umfaßt
mehrere Prozessoren 32A–32D, mehrere Caches 34A–34D,
mehrere Speicher 36A–36D und
ein Verbindungsnetzwerk 38. Die mehreren Speicher 36 bilden
einen verteilten, gemeinsam verwendeten Speicher. Jede Adresse innerhalb
des Adreßraums
entspricht einer Stelle bzw. Position innerhalb eines der Speicher 36.
-
Die
Architektur 30 ist eine nicht-gleichförmige Speicherarchitektur (NUMA).
In einer NUMA-Architektur kann
sich der Zeitaufwand, der erforderlich ist, um auf eine erste Speicheradresse
zuzugreifen, beträchtlich von
dem Zeitaufwand unterscheiden, welcher erforderlich ist, um auf
eine zweite Speicheradresse zuzugreifen. Die Zugriffszeit hängt vom
Ursprung des Zugriffs und von der Stelle in dem Speicher 36A–36D ab,
der die Zugriffsdaten speichert. Wenn beispielsweise der Prozessor 32A auf
eine erste Speicheradresse zugreift, die im Speicher 36A gespeichert
ist, kann die Zugriffszeit beträchtlich
kürzer
sein als die Zugriffszeit für
einen Zugriff auf eine zweite Speicheradresse, die in einem der
Speicher 36B–36D gespeichert
ist. Das heißt,
ein Zugriff von dem Prozessor 32A auf den Speicher 36A kann
lokal abgeschlossen werden (beispielsweise ohne Übertragungen auf dem Netzwerk 38),
während
ein Zugriff des Prozessors 32A auf den Speicher 36B über das Netzwerk 38 durchgeführt wird.
Typischerweise ist ein Zugriff über
ein Netzwerk 38 langsamer als ein Zugriff, der innerhalb
eines lokalen Speichers abgeschlossen wird. Beispielsweise kann
ein lokaler Zugriff in wenigen hundert Nanosekunden abgeschlossen
werden, während
ein Zugriff über
ein Netzwerk möglicherweise
einige wenige Mikrosekunden benötigt.
-
Daten,
die Adressen entsprechen, welche in ferngelegenen Knoten gespeichert
sind, können
in irgendeinem der Caches 34 aufgenommen werden. Wenn jedoch
ein Cache 34 die Daten, die einer solchen ferngelegenen
Adresse entsprechen, verwirft, wird ein nachfolgender Zugriff auf
die ferngelegene Adresse über
eine Übertragung
auf dem Netzwerk 38 abgeschlossen.
-
NUMA-Architekturen
können
ausgezeichnete Eigenschaften hinsichtlich der Leistungsfähigkeit
für Softwareanwendungen
bieten, die Adressen verenden, die primär einem bestimmten lokalen
Speicher entsprechen. Softwareanwendungen, die mehr zufällige Zugriffsmuster
zeigen und die ihre Speicherzugriffe nicht auf Adressen innerhalb
eines bestimmten lokalen Speichers beschränken, können andererseits eine große Menge
an Netzwerkverkehr erfahren, wenn ein bestimmter Prozessor 32 wiederholte
Zugriffe auf ferngelegene Knoten ausführt.
-
Gemäß 1B ist ein Logikdiagramm,
welches eine zweite Speicherarchitektur 40 zeigt, die durch das
Computersystem 10 nach 1 unterstützt wird,
dargestellt. Die Architektur 40 umfaßt mehrere Prozessoren 42A–42D,
mehrere Caches 44A–44D,
mehrere Speicher 46A–46D und
das Netzwerk 48. Die Speicher 46 sind jedoch logisch
zwischen die Caches 44 und das Netzwerk 48 geschaltet.
Die Speicher 46 dienen als größere Caches (beispielsweise
als ein Level-3-Cache), und speichern Adressen, auf welche durch
die entsprechenden Prozessoren 42 zugegriffen wird. Man
sagt, daß die
Speicher 46 die Daten, welche durch einen entsprechenden
Prozessor 42 bearbeitet werden, "anziehen". Im Gegensatz zur NUMA-Architektur,
die in 1A dargestellt
ist, verringert die Architektur 40 die Anzahl von Zugriffen
auf dem Netzwerk 48, indem ferngelegene Daten in dem lokalen
Speicher gespeichert werden, wenn der lokale Prozessor auf die Daten
zugreift.
-
Die
Architektur 40 wird als eine Nur-Cache-Speicherarchitektur
(Cache Only Memory Architecture – COMA) bezeichnet. Mehrere
Stellen innerhalb des verteilten, gemeinsam verwendeten Speichers,
der durch die Kombination von Speichern 46 gebildet wird,
können
Daten entsprechend einer bestimmten Adresse speichern. Es wird keine
dauerhafte Zuordnung einer bestimmten Adresse zu einer besonderen
Speicherstelle zugewiesen. Stattdessen verändert sich die Stelle, welche
Daten entsprechend der betreffenden Adresse speichert, dynamisch
auf der Basis der Prozessoren 32, welche auf die bestimmte
Adresse zugreifen. Umgekehrt ist in der NUMA-Architektur eine bestimmte
Speicherstelle innerhalb der Speicher 46 einer bestimmten
Adresse zugeordnet. Die Architektur 40 stellt sich auf
die Speicherzugriffsmuster ein, die durch Anwendungen ausgeführt werden,
welche darauf ablaufen, und eine Kohärenz wird zwischen den Speichern 46 aufrechterhalten.
-
In
einer bevorzugten Ausführungsform
unterstützt
das Computersystem 10 beide der in den 1A und 1B dargestellten
Speicherarchitekturen. Insbesondere kann von einem SMP-Knoten 12A–12D auf
eine Speicheradresse auf NUMA-Weise zugegriffen werden, während von
einem anderen SMP-Knoten 12A–12D in COMA-Weise
darauf zugegriffen wird. In einer Ausführungsform wird ein NUMA-Zugriff
erfaßt,
wenn gewisse Bits der Adresse auf dem SMP-Bus 20 einen
anderen SMP- Knoten 12 als
den Heimatknoten der dargebotenen Adresse identifizieren. Ansonsten
geht man von einem COMA-Zugriff aus. Weitere Einzelheiten werden nachstehend
geliefert.
-
In
einer Ausführungsform
ist die COMA-Architektur unter Verwendung einer Kombination von
Hardware- und Softwaretechniken implementiert. Die Hardware hält die Kohärenz zwischen
den lokal im Cache aufgenommenen Kopien von Seiten aufrecht und
die Software (beispielsweise das Betriebssystem, welches in dem
Computersystem 10 verwendet wird) ist verantwortlich für das Zuordnen
und die Aufhebung der Zuordnung von in dem Cache aufgenommenen Seiten.
-
2 zeigt Einzelheiten einer
Implementierung eines SMP-Knotens 12A, der im wesentlichen
mit dem in 1 dargestellten
SMP-Knoten 12A übereinstimmt.
Andere Knoten 12 können
in ähnlicher
Weise konfiguriert sein. Es sei angemerkt, daß alternative spezielle Implementierungen
jedes SMP-Knotens 12 nach 1 ebenfalls
möglich
sind. Die Implementierung des SMP-Knotens 12A, der in 2 dargestellt ist, umfaßt mehrere
Unterknoten, wie z.B. die Unterknoten 50A und 50B.
Jeder Unterknoten 50 umfaßt zwei Prozessoren und entsprechende
Caches 18, einen Speicherbereich 56, eine Adreßsteuerung 52 und
eine Datensteuerung 54. Die Speicherbereiche 56 innerhalb
der Unterknoten 50 bilden gemeinsam den Speicher 22 des
SMP-Knotens 12A nach 1.
Andere Teilknoten (nicht dargestellt) sind weiterhin mit dem SMP-Bus 20 verbunden,
um die I/O-Schnittstellen 26 zu
bilden.
-
Wie
in 2 dargestellt, umfaßt der SMP-Bus 20 einen
Adreßbus 58 und
einen Datenbus 50. Die Adreßsteuerung 52 ist
mit dem Adreßbus 58 verbunden
und eine Datensteuerung 54 ist mit dem Datenbus 60 verbunden. 2 veranschaulicht auch die
Systemschnittstelle 24, einschließlich eines Logikblockes 62 der Systemschnittstelle,
einen Übersetzungsspeicher 64,
ein Verzeichnis 66 und ein Speichertag (M-Tag) 68.
Der Logikblock 62 ist sowohl mit dem Adreßbus 58 als
auch mit dem Datenbus 60 verbunden und bringt unter gewissen
Umständen
ein "Ignorieren"-Signal 50 auf
dem Adreßbus 58 vor,
wie unten noch weiter erläutert
wird. Zusätzlich
ist der Logikblock 62 mit dem Übersetzungsspeicher 64,
dem Verzeichnis 66, dem M-Tag 68 und einem Netzwerk 14 verbunden.
-
Für die Ausführungsform
nach 2 ist jeder Teilknoten 50 auf
einer gedruckten Schaltkreisplatine ausgelegt, welche in eine Hauptplatine
eingesetzt werden kann, auf welcher der SMP-Bus 20 angeordnet ist. Auf
diese Weise kann die Anzahl von Prozessoren und/oder I/O-Schnittstellen 26,
die in einem SMP-Knoten 12 enthalten ist, durch Einsetzen
oder Entfernen von Unterknoten 50 variiert werden. Beispielsweise
kann ein Computersystem 10 anfänglich mit einer kleinen Anzahl
von Unterknoten 50 ausgestaltet worden sein. Zusätzliche
Unterknoten 50 können
von Zeit zu Zeit hinzugefügt
werden, wenn die von den Benutzern geforderte Rechenleistung des
Computersystems 10 zunimmt.
-
Die
Adreßsteuerung 52 stellt
eine Schnittstelle zwischen Caches 18 und dem Adreßbereich
des SMP-Busses 20 bereit. In der dargestellten Ausführungsform
umfaßt
die Adreßsteuerung 52 eine
Ausgangsschlange 72 und eine Anzahl von Eingangsschlangen 74.
Die Ausgangsschlange 72 puffert Transaktionen von den Prozessoren,
die damit verbunden sind, bis der Adreßsteuerung 52 Zugriff
auf den Adreßbus 58 gewährt wird.
Die Adreßsteuerung 52 führt die
in der Ausgangsschlange 72 gespeicherten Transaktionen
in der Reihenfolge aus, in welcher diese Transaktionen in der Schlange 72 angeordnet
wurden (d.h. Ausgangsschlange 72 ist eine FIFO-Schlange).
Transaktionen, die durch die Adreßsteuerung 52 ausgeführt werden,
ebenso wie Transaktionen, die von dem Adreßbus 58 empfangen
werden, und die durch Caches 18 und Caches, die sich in
den Prozessoren 16 befinden, untersucht (durchschnüffelt) werden,
werden in der Schlange 74 angeordnet.
-
Ähnlich der
Ausgangsschlange 72 ist auch die Eingangsschlange 74 eine
FIFO-Schlange. Alle Adreßtransaktionen
sind in der Eingangsschlange 74 jedes Unterknotens 50 gespeichert
(selbst innerhalb der Eingangsschlange 74 des Teilknotens 50,
welcher die Adreßtransaktion
auslöst).
Adreßtransaktionen
werden demnach den Caches 18 und den Prozessoren 16 für das Durchsuchen
in der Reihenfolge, in welcher sie auf dem Adreßbus 58 auftreten
bzw. auftraten, dargestellt. Die Reihenfolge, in welcher Transaktionen
auf dem Adreßbus 58 erscheinen,
ist die Reihenfolge für
den SMP-Knoten 12A. Man erwartet jedoch, daß das komplette
System eine globale Speicherordnung hat. Diese Ordnungserwartung
ruft sowohl bei den NUMA- als auch bei den COMA-Architekturen, welche
durch das Computersystem 10 verwendet werden, ein Problem hervor,
da die globale Ordnung mäglicherweise
durch die Reihenfolge der Operationen auf dem Netzwerk 14 bereitgestellt
werden muß.
Wenn zwei Knoten eine Transaktion zu einer Adresse ausführen, definiert
die Reihenfolge, in welcher die entsprechenden Kohärenzvorgänge an dem
Heimatknoten der Adresse erfolgen, die Reihenfolge der beiden Transaktionen,
wie man sie innerhalb jedes Knotens sieht. Wenn beispielsweise zwei Schreibtransaktionen
auf dieselbe Adresse ausgeführt
werden sollen, so sollte die zweite Schreibaktion, die an dem Heimatknoten
der Adresse ankommt, die zweite abzuschließende Schreibtransaktion sein
(d.h. eine Bitposition, welche durch beide Schreibtransaktionen
aktualisiert wird, speichert einen Wert, der durch die zweite Schreibtransaktion
beim Abschließen
beider Transaktionen bereitgestellt wird). Der Knoten jedoch, welcher
die zweite Transaktion ausführt,
kann tatsächlich
das Auftreten der zweiten Transaktion zuerst auf dem SMP-Bus 20 haben.
Das Ignorieren-Signal 70 ermöglicht es, daß die zweite
Transaktion zu der Systemschnittstelle 24 übertragen
wird, ohne daß der
verbleibende Teil des SMP-Knotens 12 auf die Transaktion
reagiert.
-
Daher
verwendet der Logikblock 62 der Systemschnittstelle, um
trotz der Reihenfolgeneinschränkungen,
welche durch die Ausgangsschlangen-/Eingangsschlangen-Struktur der
Adreßsteuerung 52 auferlegt werden,
das Ignorieren-Signal 70. Wenn eine Transaktion auf dem
Adreßbus 58 präsentiert
wird und der Logikblock 62 der Systemschnittstelle erfaßt, daß eine entfernte
Transaktion in Reaktion auf die Transaktion ausgeführt werden
muß, bringt
der Logikblock 62 das Ignorieren-Signal 70 vor. Das Vorbringen
des "Ignorieren"-Signals 70 bezüglich einer
Transaktion bewirkt, daß die
Adreßsteuerung 52 die
Speicherung der Transaktion in den Schlangen 74 verhindert.
Daher können
andere Transaktionen, die nach der ignorierten Transaktion aufgetreten
sind, und welche in dem SMP-Knoten 12A lokal abgeschlossen
werden, bezüglich
der ignorierten Transaktion außer
der Reihenfolge abgeschlossen werden, ohne die Reihenfolgenregeln
in Schlange 74 zu verletzen. Insbesondere können Transaktionen,
welche durch die Systemschnittstelle 24 in Reaktion auf
Kohärenzaktivität auf dem
Netzwerk 14 ausgeführt
werden, im Anschluß an
die ignorierte Transaktion ausgeführt und abgeschlossen werden.
Wenn eine Reaktion von der ferngelegenen Transaktion empfangen wird, kann
die ignorierte Transaktion durch den Logikblock 62 der
Systemschnittstelle auf dem Adreßbus 58 erneut ausgegeben
werden. Die Transaktion wird dadurch in die Schlange 74 verschoben
und kann in der Reihenfolge mit Transaktionen abgeschlossen werden,
die zu der Zeit der Wiederausgabe auftreten.
-
Es
sei angemerkt, daß in
einer Ausführungsform,
wenn eine Transaktion von einer bestimmten Adreßsteuerung 52 ignoriert
worden ist, nachfolgende kohärente
Transaktionen von der betreffenden Adreßsteuerung 52 ebenfalls
ignoriert werden. Transaktionen von einem bestimmten Prozessor 16 können eine
wichtige Reihenfolgenbeziehung relativ zueinander haben, unabhängig von
den Reihenfolgenerfordemissen, die durch die Präsentation auf dem Adreßbus 58 auferlegt
werden. Beispielsweise kann eine Transaktion von einer anderen Transaktion
durch einen Speichersynchronisierbefehl getrennt werden, wie z.B.
den MEMBAR-Befehl, der in der SPARC-Architektur enthalten ist. Der
Prozessor 16 übermittelt
die Transaktionen in der Reihenfolge, in der die Transaktionen relativ
zueinander ausgeführt
werden sollen. Die Transaktionen sind innerhalb der Ausgangsschlange 72 geordnet
und daher müssen
die Transaktionen, die aus einer bestimmten Ausgangsschlange 72 stammen,
in ihrer Reihenfolge ausgeführt
werden. Das Ignorieren aufeinanderfolgender Transaktionen von einer
bestimmten Adreßsteuerung 52 ermöglicht es,
daß die
Reihenfolgenregeln für
eine bestimmte Ausgangsschlange 72 erhalten bleiben. Es
sei weiter angemerkt, daß nicht
alle Transaktionen von einem bestimmten Prozessor geordnet sein
müssen.
Es ist jedoch schwierig, auf dem Adreßbus 58 zu bestimmen,
welche Transaktionen geordnet sein müssen und welche nicht geordnet
sein können.
Daher hält
in dieser Implementierung der Logikblock 62 die Reihenfolge
aller Transaktionen von einer bestimmten Ausgangsschlange 62 aufrecht.
Es sei angemerkt, daß andere
Implementierungen des Unterknotens 50 möglich sind, die Ausnahmen von
dieser Regel zulassen.
-
Die
Datensteuerung 54 leitet die Daten zu und von dem Datenbus r,
dem Speicherbereich 56 und den Caches 18. Die
Datensteuerung 54 kann Ein- und Ausgangsschlangen ähnlich wie
die Adreßsteuerung 52 enthalten.
In einer Ausführungsform
verwendet die Datensteuerung 54 mehrere physikalische Einheiten
in einer byteweise aufgeteilten Buskonfiguration.
-
Prozessoren 16,
wie sie in 2 dargestellt
sind, weisen Speicherverwaltungseinheiten (MMUs) 76A–76B auf.
MMUs 76 führen
eine Übersetzung
von einer virtuellen in eine physikalische Adresse mit den Datenadressen
aus, die durch den Befehlscode erzeugt werden, welcher auf den Prozessoren 16 ausgeführt wird,
ebenso wie mit den Befehlsadressen. Die in Reaktion auf die Befehlsausführung erzeugten
Adressen sind virtuelle Adressen. Mit anderen Worten, die virtuellen
Adressen sind die Adressen, die durch den Programmierer des Befehlscodes
erzeugt werden. Die virtuellen Adressen werden durch einen Adreßübersetzungsmechanismus
(der in den MMUs 76 verkörpert ist) geleitet, aus welchem
entsprechende physikalische Adressen erzeugt werden. Die physikalische
Adresse kennzeichnet eine Speicherstelle innerhalb des Speichers 22.
-
Die
Adreßübersetzung
wird aus vielen Gründen
ausgeführt.
Beispielsweise kann der Adreßübersetzungsmechanismus
verwendet werden, um einer bestimmten Berechnungsaufgabe den Zugriff
auf gewisse 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 Berechnungs aufgabe auf ein Festplattenlaufwerk "ausgelagert" (paged out) werden.
Wenn ein Teil ausgelagert wird, wird die Übersetzung ungültig gemacht.
Beim Zugriff auf den Bereich durch die Berechnungsaufgabe tritt
ein Interrupt wegen der fehlenden Übersetzung auf. Der Interrupt
erlaubt es dem Betriebssystem, die entsprechende Information aus
dem Festplattenlaufwerk wiederzugewinnen. Auf diese Weise kann mehr
virtueller Speicher verfügbar
sein als tatsächlicher
Speicher in dem Speicher 22 vorhanden ist. Viele andere
Verwendungen für
virtuellen Speicher sind wohlbekannt.
-
Gemäß dem in 1 dargestellten Computersystem
in Verbindung mit der Implementierung des SMP-Knotens 12A,
wie in 2 dargestellt,
ist die physikalische Adresse, die durch die MMUs 76 berechnet wird,
eine lokale physikalische Adresse (LPA), welche eine Stelle innerhalb
des Speichers 22 definiert, die zu dem SMP-Knoten 12 gehört, in welchem
der Prozessor 16 liegt. MTAG 68 speichert einen
Kohärenzzustand für jede "Kohärenzeinheit" im Speicher 22.
Wenn eine Adreßtransaktion
auf dem SMP-Bus 20 ausgeführt wird, untersucht der Logikblock 62 der
Systemschnittstelle den Kohärenzzustand,
der in dem MTAG 68 für
die Kohärenzeinheit
gespeichert ist, auf welche zugegriffen wurde. Wenn der Kohärenzzustand
anzeigt, daß der SMP-Knoten 12 ausreichende
Zugriffsrechte auf die Kohärenzeinheit
hat, um den Zugriff durchzuführen,
so wird die Adreßtransaktion
fortgesetzt. Wenn jedoch der Kohärenzzustand
anzeigt, daß die
Kohärenzaktivität vor dem
Abschluß der
Transaktion ausgeführt
werden sollte, so bringt der Logikblock 62 der Systemschnittstelle
das Ignorieren-Signal 70 hervor. Der Logikblock 62 führt Kohärenzoperationen
auf dem Netzwerk 14 aus, um den geeigneten Kohärenzzustand
zu beschaffen. Wenn der geeignete Kohärenzzustand beschafft ist,
gibt der Logikblock 62 die ignorierte Transaktion auf dem
SMP-Bus 20 erneut aus. Im Anschluß daran wird die Transaktion
abgeschlossen.
-
Allgemein
gesprochen zeigt der Kohärenzzustand,
der für
eine Kohärenzeinheit
an einer bestimmten Speicherstelle (beispielsweise einem Cache oder
einem Speicher 22) aufrechterhalten wird, die Zugriffsrechte auf
die Kohärenzeinheit
an dem SMP-Knoten 12 an. Das Zugriffsrecht zeigt die Gültigkeit
der Kohärenzeinheit ebenso
wie auch die Lese-/Schreiberlaubnis an, die für die Kopie der Kohärenzeinheit
innerhalb dieses SMP-Knotens 12 gewährt wird. In einer Ausführungsform
sind die Kohärenzzustände, die
durch das Computersystem 10 verwendet werden, modified,
owned, shared und invalid (modifiziert, im Besitz befindlich, gemeinsam
verwendet und ungültig).
Der modifizierte Zustand zeigt an, daß der SMP-Knoten 12 die
entsprechende Kohärenzeinheit
aktualisiert hat. Daher haben andere SMP-Knoten 12 keine
Kopie der Kohärenzeinheit.
Zusätzlich
wird, wenn die modifizierte Kohärenzeinheit
durch den SMP-Knoten 12 ausgesondert wird, die Kohärenzeinheit
zurück
in den Heimatknoten gespeichert. Der Besitzzustand zeigt an, daß der SMP-Knoten 12 für die Kohärenzeinheit
verantwortlich ist, daß jedoch
andere SMP-Knoten 12 gemeinsam verwendete Kopien haben
können.
Wiederum wird, wenn die Kohärenzeinheit
durch den SMP-Knoten 12 verworfen wird, diese Kohärenzeinheit
in den Heimatknoten zurückgespeichert.
Der Zustand gemeinsam verwendet zeigt an, daß der SMP-Knoten 12 die
Kohärenzeinheit
lesen kann, die Kohärenzeinheit
jedoch nicht aktualisieren kann, ohne sich den Besitzzustand zu
beschaffen. Zusätzlich
können
andere SMP-Knoten 12 ebenfalls Kopien der Kohärenzeinheit
haben. Schließlich
zeigt der Ungültig-Zustand an, daß der SMP-Knoten 12 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.
-
In
dem hier verwendeten Sinn ist eine Kohärenzeinheit eine Anzahl von
aufeinanderfolgenden Bytes eines Speichers, die für Kohärenzzwecke
als eine Einheit behandelt werden. Wenn beispielsweise ein Byte innerhalb
der Kohärenzeinheit
aktualisiert wird, so wird die gesamte Kohärenzeinheit als aktualisiert
betrachtet. In einer speziellen Ausführungsform ist die Kohärenzeinheit
eine Cachezeile, welche 64 durchgehend zusammenhängende Bytes aufweist. Es versteht
sich jedoch, daß eine
Kohärenzeinheit
irgendeine beliebige Anzahl von Bytes aufweisen kann.
-
Die
Systemschnittstelle 24 enthält auch einen Übersetzungsmechanismus,
der den Übersetzungsspeicher 64 verwendet,
um Übersetzungen
von lokalen physikalischen Adressen in globale Adressen (GA) zu speichern.
Gewisse Bits innerhalb der globalen Adresse kennzeichnen den Heimatknoten
für die
Adresse, an welchem Kohärenzinformation
für diese
globale Adresse gespeichert ist. Beispielsweise kann eine Ausführungsform
des Computersystems 10 vier SMP-Knoten 12 verwenden,
wie dasjenige in 1.
In einer solchen Ausführungsform
identifizieren zwei Bits der globalen Adresse den Heimatknoten.
-
Vorzugsweise
werden Bits aus dem am meisten signifikanten Abschnitt der globalen
Adresse verwendet, um den Heimatknoten zu identifizieren. Dieselben
Bits werden in der lokalen physikalischen Adresse verwendet, um
NUMA-Zugriffe zu kennzeichnen. Wenn die Bits der LPA anzeigen, daß der lokale
Knoten nicht der Heimatknoten ist, so ist die LPA eine globale Adresse
und die Transaktion wird im NUMA-Betrieb ausgeführt. Daher ordnet das Betriebssystem
für irgendwelche
Seiten vom NUMA-Typ globale Adressen in MMUs 76 an. Umgekehrt
ordnet das Betriebssystem für
irgendwelche COMA-artigen Seiten LPAs im MMU 76 an. Es sei
angemerkt, daß eine
LPA gleich einer GA sein kann (für
NUMA-Zugriffe ebenso wie für
globale Adressen, deren Heimatknoten innerhalb des Speichers 22 in
dem Knoten liegt, in welchem die LPA dargeboten wird). Alternativ
kann eine LPA in eine GA übersetzt
werden, wenn die LPA Speicherstellen kennzeichnet, die für das Speichern
von Kopien von Daten verwendet werden, welche eine Heimat in einem
anderen SMP-Knoten 12 haben.
-
Das
Verzeichnis 66 eines bestimmten Heimatknotens kennzeichnet,
welche SMP-Knoten 12 Kopien von Daten haben, die einer
gegebenen globalen Adresse entsprechen, welche dem Heimatknoten
zugeordnet ist, so daß die
Kohärenz
zwischen den Kopien aufrechterhalten werden kann. Zusätzlich kennzeichnet
das Verzeichnis 66 des Heimatknotens den SMP-Knoten 12,
welcher die Kohärenzeinheit
besitzt. Daher wird, während
lokale Kohärenz
zwischen Caches 18 und Prozessoren 16 über Nachschnüffeln aufrechterhalten
wird, eine systemweite- (oder globale) Kohärenz unter Verwendung von MTAG 68 und
dem Verzeichnis 66 aufrechterhalten. Das Verzeichnis 66 speichert
die Kohärenzinformation,
die den Kohärenzeinheiten
entspricht, welche dem SMP-Knoten 12A zugeordnet sind (d.h.
für welche
der SMP-Knoten 12A der Heimatknoten ist).
-
Es
sei angemerkt, daß für die Ausführungsform
nach 2 das Verzeichnis 66 und
MTAG 68 Information für
jede Kohärenzeinheit
speichern (d.h. auf Basis einer Kohärenzeinheit). Umgekehrt speichert
der Übersetzungsspeicher 64 Übersetzungen
von lokalen physikalischen in globale Adressen, die für Seiten
definiert sind. Eine Seite enthält
mehrere Kohärenzeinheiten
und hat typischerweise eine Größe von mehreren
Kilobytes oder sogar Megabytes.
-
Die
Software erzeugt dementsprechend Übersetzungen von lokalen physikalischen
Adressen in globale Adressen auf Seitenbasis (seitenweise) (wodurch
eine lokale Speicherseite zum Speichern einer Kopie einer entfernt
gespeicherten globalen Seite zugeordnet wird). Daher werden Blöcke des
Speichers 22 einer bestimmten globalen Adresse ebenfalls
auf Seitenbasis zugeordnet. Wie oben jedoch festgestellt, werden
Kohärenzzustände und
Kohärenzaktivitäten auf
einer Kohärenzeinheit
ausgeführt.
Daher werden, wenn eine Seite im Speicher einer bestimmten globalen
Adresse zugeordnet wird, die Daten, welche der Seite entsprechen, nicht
notwendigerweise an den zugeordneten Speicher übertragen. Stattdessen werden,
wenn Prozessoren 16 auf verschiedene Kohärenzeinheiten
innerhalb der Seite zugreifen, diese Kohärenzeinheiten von dem Besitzer
der Kohärenzeinheit übertragen.
Auf diese Weise werden die Daten, auf welche aktuell durch den SMP-Knoten 12A zugegriffen
wird, in den entsprechenden Speicher 22 übertragen.
Daten, auf welche durch den SMP-Knoten 12A nicht zugegriffen
wird, können
nicht übertragen
werden, wodurch der gesamte Bandbreitenverbrauch auf dem Netzwerk 14 im
Vergleich zu Ausführungsformen,
welche die Datenseite bei Zuordnung der Seite im Speicher 22 übertragen,
reduziert wird.
-
Es
sei angemerkt, daß in
einer Ausführungsform
der Übersetzungsspeicher 64,
das Verzeichnis 66 und/oder das MTAG 68 Cachespeicher
sein können,
welche nur einen Teil der zugehörigen Übersetzung,
des Verzeichnisses bzw. der MTAG-Information speichern. Die Gesamtheit
der Übersetzung,
des Verzeichnisses und der MTAG-Information ist in Tabellen innerhalb
des Speichers 22 oder einem ausgewählten Speicher (nicht dargestellt)
gespeichert. Wenn erforderliche Information für einen Zugriff nicht in dem
entsprechenden Cache gefunden wird, wird durch die Systemschnittstelle 24 auf
die Tabellen zugegriffen.
-
Gemäß 2A ist ein beispielhafter
Verzeichniseintrag 71 dargestellt. Der Verzeichniseintrag 71 kann durch
eine Ausführungsform
des in 2 gezeigten Verzeichnisses 66 verwendet
werden. Andere Ausführungsformen
des Verzeichnisses 66 können
davon abweichende Verzeichniseinträge verwenden. Der Verzeichniseintrag 71 enthält ein Gültigkeitsbit 73,
ein Zurückschreibebit 75,
ein Besitzerfeld 77 und ein Feld 79 für gemeinsame
Verwender. Der Verzeichniseintrag 71 residiert in der Tabelle
der Verzeichniseinträge
und wird über
die globale Adresse, welche die entsprechende Kohärenzeinheit
identifiziert, in der Tabelle lokalisiert. Genauer gesagt wird der
Verzeichniseintrag 71, der zu einer Kohärenzeinheit gehört, in der
Tabelle der Verzeichniseinträge
an einer versetzten Position gespeichert, die aus der globalen Adresse
gebildet wird, welche die Kohärenzeinheit
identifiziert.
-
Das
Gültigkeitsbit 73 zeigt,
wenn es gesetzt ist, an, daß der
Verzeichniseintrag 71 gültig
ist (d.h. der Verzeichniseintrag 71 speichert Kohärenzinformation
für eine
entsprechende Kohärenzeinheit).
Wenn das Gültigkeitsbit 73 gelöscht ist,
so zeigt es an, daß der
Verzeichniseintrag 71 ungültig ist.
-
Das
Besitzerfeld 77 kennzeichnet einen der SMP-Knoten 12 als
den Besitzer der Kohärenzeinheit.
Der besitzende SMP-Knoten 12A–12D hält die Kohärenzeinheit
entweder in dem modifizier ten Zustand oder im Besitzzustand aufrecht.
Typischerweise beschafft der besitzende SMP-Knoten 12A–12D die
Kohärenzeinheit in
dem Modifiziert-Zustand (siehe S. 13 unten). Anschließend kann
dann der besitzende SMP-Knoten 12A–12D beim Bereitstellen
einer Kopie der Kohärenzeinheit
für einen
anderen SMP-Knoten 12A–12D in
den Besitzzustand übergehen.
Der andere SMP-Knoten 12A–12D beschafft die
Kohärenzeinheit
in dem Zustand gemeinsam verwendet. In einer Ausführungsform
weist das Besitzerfeld 77 zwei Bits auf, welche so codiert sind,
daß sie
einen von vier SMP-Knoten 12A–12D als den Besitzer
den Kohärenzeinheit
identifizieren.
-
Das
Feld 79 der gemeinsamen Verwender enthält ein Bit, welches jedem SMP-Knoten
12A-12D zugeordnet
ist. Wenn ein SMP-Knoten 12A–12D eine gemeinsam
verwendete Kopie der Kohärenzeinheit
hält, so
ist das entsprechende Bit innerhalb des Feldes 79 der gemeinsamen
Verwender gesetzt. Umgekehrt ist, wenn der SMP-Knoten 12A–12D keine
gemeinsam verwendete Kopie der Kohärenzeinheit hält, das
entsprechende Bit innerhalb des Feldes 79 der gemeinsamen
Verwender gelöscht.
Auf diese Weise zeigt das Feld 79 der gemeinsamen Verwender
alle gemeinsam verwendeten Kopien der Kohärenzeinheit an, welche innerhalb des
Computersystems 10 nach 1 existieren.
-
Das
Zurückschreibebit 75 zeigt,
wenn es gesetzt ist, an, daß der
SMP-Knoten 12A–12D,
welcher über das
Besitzerfeld 77 als der Besitzer der Kohärenzeinheit
identifiziert worden ist, die aktualisierte Kopie der Kohärenzeinheit
in den Heimat-SMP-Knoten 12 geschrieben hat. Wenn das Bit 75 gelöscht ist,
so zeigt es an, daß der
besitzende SMP-Knoten 12A–12D die aktualisierte
Kopie der Kohärenzeinheit
nicht in den Heimat-SMP-Knoten 12A–12D geschrieben hat.
-
Gemäß 3 ist ein Blockdiagramm
einer Ausführungsform
der Systemschnittstelle 24 dargestellt. Wie in 3 dargestellt, enthält die Systemschnittstelle 24 das
Verzeichnis 66, den Übersetzungsspeicher 64 und
das MTAG 68. Der Übersetzungsspeicher 64 ist
als eine Übersetzungseinheit 80 von
globalen Adressen in lokale physikalische Adressen (GA2LPA) und
eine Übersetzungseinheit 82 von
lokalen physikalischen Adressen in globale Adresse (LPA2GA) dargestellt.
-
Die
Systemschnittstelle 24 enthält auch Eingangs- und Ausgangsschlangen
für das
Speichern von Transaktionen, die auf dem SMP-Bus 20 oder
Netzwerk 14 ausgeführt
werden sollen. Insbesondere enthält die
Systemschnittstelle 24 für die dargestellte Ausführungsform
eine Eingangskopfzeilenschlange 84 und eine Ausgangskopfzeilenschlange 86 zum
Puffern von Kopfzeilenpaketen zu und von dem Netzwerk 14.
Kopfzeilenpakete kennzeichnen eine Operation, die ausgeführt werden
soll, und spezifizieren die Anzahl und das Format jeglicher Datenpakete,
die möglicherweise
folgen. Die Ausgangskopfzeilenschlange 86 puffert Kopfzeilenpakete,
die auf dem Netzwerk 14 gesendet werden sollen und die
Eingangskopfzeilenschlange 84 puffert Kopfzeilenpakete,
die von dem Netzwerk 14 empfangne wurden, bis die Systemschnittstelle
die empfangenen Kopfzeilenpakete verarbeitet. In ähnlicher
Weise werden Datenpakete in der Eingangsdatenschlange 88 und der
Ausgangsdatenschlange 90 gepuffert, bis die Daten auf den
SMP-Datenbus 60 bzw. das Netzwerk 14 übertragen
werden.
-
Die
SMP-Ausgangsschlange 92, die SMP-Eingangsschlange 94 und
die SMP-I/O-Eingangsschlange (PIQ) 96 werden
verwendet, um Adreßtransaktionen
zu und von dem Adreßbus 58 zu
Puffern. Die SMP-Ausgangsschlange 92 puffert Transaktionen,
die durch die Systemschnittstelle auf dem Adreßbus 58 präsentiert werden
sollen. Neuausgabetransaktionen, die in Reaktion auf den Abschluß von Kohärenzaktivität bezüglich einer
ignorierten Transaktion in einer Schlange angeordnet werden sollen,
werden in der SMP-Ausgangsschlange 92 gepuffert. Zusätzlich werden
Transaktionen, die in Reaktion auf Kohärenzaktivität erzeugt werden, welche von
dem Netzwerk 14 empfangen wird, in der SMP-Ausgangsschlange 92 gepuffert.
Die SMP-Eingangsschlange 94 speichert kohärenzbezogene
Transaktionen, die durch die Systemschnittstelle 24 bedient werden
sollen. Umgekehrt speichert die SMP PIQ 96 I/O-Transaktionen,
die an eine I/O-Schnittstelle transportiert werden sollen, welche
in einem anderen SMP-Knoten 12 residiert. I/O-Transaktionen
werden generell als nicht kohärent
betrachtet und erzeugen daher keine Kohärenzaktivitäten.
-
Die
SMP-Eingangsschlange 94 und die SMP PIQ 96 empfangen
Transaktionen, die in einer Schlange angeordnet werden sollen, von
einem Transaktionsfilter 98. Der Transaktionsfilter 98 ist
mit dem MTAG 68 und dem SMP-Adreßbus 58 verbunden.
Wenn der Transaktionsfilter 98 auf dem Adreßbus 58 eine
I/O-Transaktion erfaßt,
welche eine I/O-Schnittstelle auf einem anderen SMP-Knoten 12 identifiziert,
so ordnet der Transaktionsfilter 98 die Transaktion in
der SMP PIQ 96 an. Wenn eine kohärente Transaktion an eine LPA-Adresse
von dem Transaktionsfilter 98 erfaßt wird, so wird der entsprechende
Kohärenzzustand
aus dem MTAG 68 untersucht. Entsprechend dem Kohärenzzustand
kann der Transaktionsfilter 98 ein "Ignorieren"-Signal 70 ausgeben und kann
eine Transaktion in der SMP-Eingangsschlange 94 anordnen.
Das "Ignorieren"-Signal 70 wird vorgebracht
und eine Kohärenztransaktion
in einer Schlange angeordnet, wenn MTAG 68 anzeigt, daß durch den
SMP-Knoten 12A unzureichende Zugriffsrechte auf die Kohärenzeinheit
zum Durchführen
der kohärenten Transaktion
gehalten werden. Umgekehrt wird das "Ignorieren"-Signal 70 zurückgenommen
und es wird eine Kohärenztransaktion
nicht erzeugt, wenn MTAG 68 anzeigt, daß durch den SMP-Knoten 12A ausreichende Zugriffsrechte
gehalten werden.
-
Transaktionen
von der SMP-Eingangsschlange 94 und der SMP PIQ 96 werden
durch einen Anforderungsagenten innerhalb der Systemschnittstelle 24 bearbeitet.
Vor der Aktion durch den Anforderungsagenten 100 übersetzt
die LPA2GA Übersetzungseinheit 82 die
Adresse der Transaktion (wenn es eine LPA-Adresse ist) von der lokalen
physikalischen Adresse, die auf dem SMP-Adreßbus 58 vorliegt,
in die entsprechende globale Adresse. Der Anforderungsagent 100 erzeugt
dann ein Kopfzeilenpaket (Header-Paket), welches eine bestimmte
Kohärenzanforderung
spezifiziert, die an den Heimatknoten, welcher durch die globale
Adresse gekennzeichnet ist, übertragen
werden soll. Die Kohärenzanforderung
wird in der ausgehenden Kopfzeilenschlange 86 angeordnet.
Anschließend
empfängt
man eine Kohärenzerwiderung
in der Eingangskopfzeilenschlange 84. Der Anforderungsagent 100 verarbeitet
die Kohärenzerwiderungen
aus der Eingangskopfzeilenschlange 84, wobei er möglicherweise
Neuausgabetransaktionen von der SMP-Ausgangsschlange 94 erzeugt (wie
nachstehend beschrieben).
-
Weiterhin
ist in der Systemschnittstelle 24 ein Heimatagent 102 und
ein abhängiger
Agent (Slave Agent) 104 enthalten. Der Heimatagent 102 verarbeitet
Kohärenzanforderungen,
die von der Eingangskopfzeilenschlange 84 empfangen wurden.
Für die
Kohärenzinformation,
welche in dem Verzeichnis 66 bezüglich einer bestimmten globalen
Adresse gespeichert ist, bestimmt der Heimatagent 102,
ob ein Kohärenzbefehl
an einen oder mehrere abhängige
Agenten in anderen SMP-Knoten 12 gesendet
werden soll. In einer Ausführungsform
blockiert der Heimatagent 102 die Kohärenzinformation, welche der
betroffenen Kohärenzeinheit entspricht.
Mit anderen Worten, nachfolgende Anforderungen, welche die Kohärenzeinheit
beinhalten, werden nicht ausgeführt,
bis die Kohärenzaktivität, welche
der Kohärenzanforderung
entspricht, abgeschlossen ist. Gemäß einer Ausführungsform
empfängt
der Heimatagent 102 einen Kohärenzabschluß von dem Anforderungsagenten,
welcher die Kohärenzanforderung
ausgelöst
hat (über
die Eingangskopfzeilenschlange 84). Der Kohärenzabschluß zeigt
an, daß die
Kohärenzaktivität abgeschlossen
ist. Nach dem Empfang des Kohärenzabschlusses
entfernt der Heimatagent 102 den Block auf der Kohärenzinformation,
welche der betroffenen Kohärenzeinheit
entspricht. Es sei angemerkt, daß, da die Kohärenzinformation
bis zum Abschluß der
Kohärenzaktivität blockiert
wird, der Heimatagent 102 die Kohärenzinformation gemäß der Kohärenzaktivität aktualisieren
kann, welche unmittelbar dann ausgeführt wird, wenn die Kohärenzanforderung
empfangen wird.
-
Der
abhängige
Agent 104 empfängt
Kohärenzbefehle
von Heimatagenten anderer SMP-Knoten 12 über eine
Eingangskopfzeilenschlange 84. In Reaktion auf einen bestimmten
Kohärenzbefehl
kann der abhängige
Agent 104 eine Kohärenztransaktion
in der SMP-Ausgangsschlange 92 anordnen. In einer Ausführungsform
kann die Kohärenztransaktion
bewirken, daß die
Caches 18 und die Caches, welche innerhalb der Prozessoren 16 liegen,
die betroffene Kohärenzeinheit
ungültig
machen. Wenn die Kohärenzeinheit
in den Caches modifiziert wird, werden die modifizierten Daten an
die Systemschnittstelle 24 übertragen. Alternativ kann
die Kohärenztransaktion
bewirken, daß die
Caches 18 und die Caches, welche innerhalb der Prozessoren 16 liegen,
den Kohärenzzustand
der gemeinsam zu verwendenden Kohärenzeinheit verändern. Wenn
der abhängige
Agent 104 in Reaktion auf einen Kohärenzbefehl seine Aktivität zum Abschluß gebracht
hat, sendet der abhängige
Agent 104 eine Kohärenzerwiderung
an den Anforderungsagenten, welcher die Kohärenzanforderung entsprechend
dem Kohärenzbefehl
ausgelöst
hat. Die Kohärenzerwiderung
wird in einer Schlange in der Ausgangskopfzeilenschlange 86 angeordnet.
Vor der Durchführung
von Aktivitäten
in Reaktion auf eine Kohärenzanforderung,
wird die globale Adresse, die in der Kohärenzanforderung empfangen wird, über die GA2LPA-Übersetzungseinheit 80 in
eine lokale physikalische Adresse übersetzt. Gemäß einer
Ausführungsform
enthält
das Kohärenzprotokoll,
welches von den Anforderungsagenten 100, den Heimatagenten 102 und den
abhängigen
Agenten 104 durchgesetzt wird, eine Politik des Ungültigmachens
von Schreiben bzw. Schreibvorgängen.
Mit anderen Worten, wenn ein Prozessor 16 innerhalb eines
SMP-Knotens 12 eine Kohärenzeinheit
aktualisiert, werden jegliche Kopien der Kohärenzeinheit, die in anderen
SMP-Knoten 12 gespeichert sind, ungültig gemacht. Es können jedoch
in anderen Ausführungsformen
auch andere Schreibstrategien bzw. Politikansätze verwendet werden. Beispielsweise
kann eine Politik der Schreibaktualisierung verwendet werden. Gemäß einer
Schreibaktualisierungspolitik werden, wenn eine Kohärenzeinheit
aktualisiert wird, die aktualisierten Daten an jede der Kopien der
Kohärenzeinheit übermittelt,
welche in jedem der SMP-Knoten 12 gespeichert
ist.
-
Gemäß 4 ist als nächstes ein
Diagramm dargestellt, welches eine typische Kohärenzaktivität zeigt, die zwischen dem Anforderungsagenten 100 eines
ersten SMP-Knotens 12A–12D (des "anfordernden Knotens"), dem Heimatagenten 102 eines
zweiten SMP-Knotens 12A–12D (des "Heimatknotens") und dem abhängigen Agenten 104 eines
dritten SMP-Knotens 12A–12D (des "abhängigen Knotens" bzw. "Sklavenknotens") in Reaktion auf
eine bestimmte Transaktion auf dem SMP-Bus 20 innerhalb
des SMP-Knotens 12 durchgeführt, welcher dem Anforderungsagenten 100 entspricht.
Spezielle Kohärenzaktivitäten, welche
gemäß einer
Ausführungsform
des Computersystems 10, wie es in 1 dargestellt ist, verwendet werden,
werden unten unter Bezug auf die 9–13 noch weiter beschrieben.
Die Bezugszahlen 100, 102 und 104 werden
verwendet, um durchgehend während
des verbleibenden Teils dieser Beschreibung Anforderungsagenten,
Heimatagenten und abhängige
Agenten zu kennzeichnen. Es versteht sich, daß, wenn ein Agent mit einem
anderen Agenten kommuniziert, die beiden Agenten oftmals in verschiedenen
SMP-Knoten 12A-12D
residieren.
-
Nach
Empfang einer Transaktion von dem SMP-Bus 20 bildet der
Anforderungsagent 100 eine Kohärenzanforderung, welche für die Transaktion
angemessen ist, und sendet die Kohärenzanforderung an den Heimatknoten,
welcher der Adresse der Transaktion entspricht (Bezugszahl 110).
Die Kohärenzanforderung zeigt
das Zugriffsrecht an, welches durch den Anforderungsagenten 100 gefordert
wird, ebenso wie die globale Adresse der betroffenen Kohärenzeinheit.
Das angeforderte Zugriffsrecht ist ausreichend, um das Auftreten der
Transaktion zu ermöglichen,
welches in dem SMP-Knoten 12, welcher dem Anforderungsagenten 100 entspricht,
versucht wird.
-
Nach
Empfang der Kohärenzanforderung
greift der Heimatagent 102 auf das zugehörige Verzeichnis 66 zu
und bestimmt, welche SMP-Knoten 12 Kopien der betroffenen
Kohärenzeinheit
speichern. Zusätzlich stellt
der Heimatagent 102 den Besitzer der Kohärenzeinheit
fest. Der Heimatagent 102 kann eine Kohärenzanforderung an die abhängigen Agenten 104 jedes
der Knoten erzeugen, welche Kopien der betroffenen Kohärenzeinheit
speichern, ebenso wie an den abhängigen
Agenten 104 desjenigen Knotens, der den im Besitz befindlichen
Kohärenzzustand
für die
betroffene Kohärenzeinheit
hat (Bezugszahl 112). Die Kohärenzbefehle zeigen den neuen
Kohärenzzustand
der betroffenen Kohärenzeinheit
in dem empfangenden SMP-Knoten 12 an. Während die Kohärenzanforderung
aussteht, blockiert der Heimatagent 102 die Kohärenzinformation,
welche der betroffenen Kohärenzeinheit
entspricht, so daß nachfolgende
Kohärenzanforderungen,
welche die betoffene Kohärenzeinheit
umfassen, durch den Heimatagenten 102 nicht ausgelöst werden.
Der Heimatagent 102 aktualisiert zusätzlich die Kohärenzinformation,
um den Abschluß der
Kohärenzanforderung
wiederzugeben.
-
Der
Heimatagent 102 kann zusätzlich eine Kohärenzerwiderung
an den Anforderungsagenten 100 senden (Bezugszahl 114).
Die Kohärenzerwiderung
kann die Anzahl von Kohärenzantworten
anzeigen, die von den abhängigen
Agenten 104 herrühren.
Alternativ können
gewisse Transaktionen ohne Wechselwirkung mit den abhängigen Agenten 104 abgeschlossen
werden. Beispielsweise kann eine I/O-Transaktion, die eine I/O-Schnittstelle 26 in
dem SMP-Knoten 12 zum Ziel hat, welcher den Heimatagenten 102 enthält, durch
den Heimatagenten 102 abgeschlossen werden. Der Heimatagent 102 kann
eine Transaktion für
den zugehörigen SMP-Bus 20 (Bezugszahl 116)
in einer Schlange anordnen und dann eine Erwiderung senden, welche
anzeigt, daß die
Transaktion abgeschlossen ist.
-
Ein
abhängiger
Agent 104 kann in Reaktion auf eine Kohärenzanforderung von dem Heimatagenten 102 eine
Transaktion zur Darstellung auf dem zugehörigen SMP-Bus 20 (Bezugszahl 118)
in einer Schlange anordnen. Zusätzlich
senden abhängige
Agenten 104 eine Kohärenzerwiderung
an den Anforderungsagenten 100 (Bezugszahl 120).
Die Kohärenzerwiderung
zeigt an, daß der
in Reaktion auf eine bestimmte Kohärenzanforderung empfangene
Kohärenzbefehl
durch diesen abhängigen
Agenten abgeschlossen worden ist. Die Kohärenzerwiderung wird durch abhängige Agenten 104 übermittelt,
wenn der Kohärenzbefehl
abgeschlossen worden ist, oder zu einem solchen Zeitpunkt vor dem
Abschluß des
Kohärenzbefehls,
zu welchem der Kohärenzbefehl
mit Sicherheit auf dem entsprechenden SMP-Knoten 12 abgeschlossen
wird und zu welchem vor dem Abschluß des Kohärenzbefehls keine Zustandsänderungen
der betroffenen Kohärenzeinheit
mehr ausgeführt
werden.
-
Wenn
ein Anforderungsagent 100 eine Kohärenzerwiderung von jedem der
betroffenen abhängigen Agenten 104 empfangen
hat, sendet der Anforderungsagent 100 einen Kohärenzabschluß an den
Heimatagenten 102 (Bezugszahl 122). Nach dem Empfang
des Kohärenzabschlusses
entfernt der Heimatagent 102 die Blockierung von der entsprechenden
Kohärenzinformation.
Der Anforderungsagent 100 kann eine Wiederausgabetransaktion
zur Durchführung
auf dem SMP-Bus 20 in einer Schlange anordnen, um die Transaktion innerhalb
des SMP-Knotens 12 abzuschließen (Bezugszahl 124).
-
Es
sei angemerkt, daß jeder
Kohärenzanforderung
durch den Anforderungsagenten 100, welcher die Kohärenzanforderung
ausgibt, ein eindeutiges Tag zugeordnet wird. Nachfolgende Kohärenzbefehle,
Kohärenzerwiderungen
und Kohärenzabschlüsse enthalten
das Tag. Auf diese Weise kann Kohärenzaktivität, welche eine bestimmte Kohärenzanforderung
betrifft, durch jeden der involvierten Agenten identifiziert werden. Weiterhin
sei angemerkt, daß nicht
kohärente
Operationen in Reaktion auf nicht kohärente Transaktionen (beispielsweise
I/O-Transaktionen) ausgeführt
werden können.
Nicht kohärente
Operationen betreffen womöglich nur
den anfordernden Knoten und den Heimatknoten. Weiterhin kann durch
den Heimatagenten 102 für
jede Kohärenzanforderung
ein anderes eindeutiges Tag zugeordnet werden. Das andere Tag kennzeichnet
den Heimatagenten 102 und wird anstelle des Tags des Anfordernden
für den
Kohärenzabschluß verwendet.
-
Gemäß 5 ist ein Diagramm, welches
Kohärenzaktivität für eine beispielhafte
Ausführungsform
eines Computersystems 10 in Reaktion auf eine Transaktion
für das
Lesen zum Zwecke des Besitzens auf dem SMP-Bus 20 zeigt,
dargestellt. Eine Transaktion des Lesens zum Zwecke des Besitzens
wird durchgeführt, wenn
für bestimmte
Daten durch einen Prozessor 16 ein Cachefehlgriff erfaßt wird
und der Prozessor 16 einen Schreibzugriff auf die Kohärenzeinheit
anfordert. Ein Cachefehlgriff beim Speichern kann beispielsweise
eine Transaktion des Lesens zum Zwecke des Besitzens erzeugen.
-
Ein
Anforderungsagent 100, ein Heimatagent 102 und
mehrere abhängige
Agenten 104 sind in 5 dargestellt.
Der Knoten, welcher die Transaktion des Lesens zum Zwecke des Besitzens
von dem SMP-Bus 20 empfängt,
speichert die betroffene Kohärenzeinheit
in dem ungültigen
Zustand (d.h. die Kohärenzeinheit
ist nicht in dem Knoten gespeichert). Das Anhängsel "i" in
dem Anforderungsknoten 100 kennzeichnet den ungültigen Zustand.
Der Heimatknoten speichert die Kohärenzeinheit in dem gemeinsam
verwendeten Zustand und Knoten, welche mehreren abhängigen Agenten 104 entsprechen,
speichern die Kohärenzeinheit
ebenso in dem gemeinsam verwendeten Zustand. Das Anhängsel "s" in dem Heimatagenten 102 und
den abhängigen Agenten 104 zeigt
den gemeinsam verwendeten Zustand an diesem Knoten an. Der Vorgang
des Lesens zum Zwecke des Besitzens bewirkt eine Übertragung
der angeforderten Kohärenzeinheit
an den anfordernden Knoten. Der anfordernde Knoten empfängt die
Kohärenzeinheit
in dem modifizierten Zustand.
-
Nach
dem Empfang der Transaktion des Lesens zum Zwecke des Besitzens
von dem SMP-Bus 20 sendet
der Anforderungsagent 100 eine Kohärenzanforderung des Lesens
zum Zwecke des Besitzens an den Heimatknoten der Kohärenzeinheit
(Bezugszahl 130). Der Heimatagent 102 in dem empfangenden
Heimatknoten erfaßt
den gemeinsam verwendeten Zustand für einen oder mehrere andere
Knoten. Da die abhängigen
Agenten sich jeweils in dem gemeinsam verwendeten Zustand befinden
und nicht in dem Besitzzustand, kann der Heimatknoten die angeforderten
Daten direkt zuführen.
Der Heimatagent 102 sendet eine Datenkohärenzerwiderung
an den Anforderungsagenten 100, einschließlich der
Daten, welcher angeforderten Kohärenzeinheit
(Bezugszahl 132) entsprechen. Zusätzlich zeigt die Datenkohärenzerwiderung
die Anzahl der Bestätigungen
an, welche von den abhängigen
Agenten oder anderen Knoten empfangen werden müssen, bevor der Anforderungsagent 100 den
Besitz der Daten übernimmt.
Der Heimatagent 102 aktualisiert das Verzeichnis 66,
um anzuzeigen, daß der
anfordernde SMP-Knoten 12A–12D der Besitzer
der Kohärenzeinheit
ist und daß jeder
der anderen SMP-Knoten 12A–12D ungültig ist.
Wenn die Blockierung der Kohärenzinformation, welche
die Kohärenzeinheit
betrifft, nach dem Empfang eines Kohärenzabschlusses von dem Anforderungsagenten
aufgehoben wird, stimmt das Verzeichnis 66 mit dem Zustand
der Kohärenzeinheit
an jedem SMP-Knoten 12 überein.
-
Der
Heimatagent 102 sendet Kohärenzbefehle zum Ungültigmachen
an jeden der abhängigen
Agenten 104, welche gemeinsam verwendete Kopien der betroffenen
Kohärenzeinheit
behalten (Bezugszahlen 134A, 134B und 134C).
Der Kohärenzbefehl
zum Ungültigmachen
bewirkt, daß der
empfangende abhängige Agent
die entsprechende Kohärenzeinheit
innerhalb des Knotens ungültig
macht und daß er
eine Kohärenzerwiderung
der Bestätigung
an den anfordernden Knoten sendet, welche den Abschluß des Ungültigmachens anzeigt.
Jeder abhängige
Agent 104 vollendet das Ungültigmachen der Kohärenzeinheit
und sendet anschließend
eine Kohärenzerwiderung
der Bestätigung
(Bezugszahlen 136A, 136B und 136C). In
einer Ausführungsform
enthält
jede der Bestätigungserwiderungen
einen Wert der Gesamtzahl von Erwiderungen, die durch den Anforderungsagenten 100 bezüglich der
Kohärenzeinheit
empfangen werden müssen.
-
Im
Anschluß an
das Empfangen jeder der bestätigenden
Kohärenzantworten
von den abhängigen Agenten 104 und
der Datenkohärenzantworten
von dem Heimatagenten 102 sendet der Anforderungsagent 100 einen
Kohärenzabschluß an den
Heimatagenten 102 (Bezugszahl 138). Der Anforderungsagent 100 macht
die Kohärenzeinheit
innerhalb seines lokalen Speichers gültig und der Heimatagent 102 hebt
die Blockierung auf der entsprechenden Kohärenzinformation auf. Es sei
angemerkt, daß die
Datenkohärenzantwort 132 und
die Bestätigungskohärenzantworten 136 in
irgendeiner beliebigen Reihenfolge empfangen werden können, unter
anderem je nach der Anzahl der ausstehenden Transaktionen innerhalb
jedes Knotens.
-
Gemäß 6 ist ein Flußdiagramm 140 dargestellt,
welches eine beispielhafte Zustandsmaschine für die Verwendung durch die
Anforderungsagenten 100 zeigt. Die Anforderungsagenten 100 können mehrere
unabhängige
Kopien der Zustandsmaschine enthalten, welche durch das Flußdiagramm 140 repräsentiert
wird, so daß mehrere
Anforderungen gleichzeitig bearbeitet werden können.
-
Nach
dem Empfang einer Transaktion von der SMP-Eingangsschlange 94 tritt
der Anforderungsagent 100 in einen Anforderungsbereitschaftszustand 142 ein.
In dem Anforderungsbereitschaftszustand 142 sendet der
Anforderungsagent 100 eine Kohärenzanforderung an den Heimatagenten 102,
der in dem Heimatknoten residiert, welcher durch die globale Adresse
der betroffenen Kohärenzeinheit
identifiziert wird. Nach dem Senden der Kohärenzanforderung geht der Anforderungsagent 100 in
einen aktiven Anforderungszustand 144 über. Während des aktiven Anforderungszustandes 144 empfängt der
Anforderungsagent 100 Kohärenzantworten von abhängigen Agenten 104 (und
optional auch vom Heimatagenten 102). Wenn alle Kohärenzanforderungen
empfangen worden sind, geht der Anforderungsagent 100 in
einen neuen Zustand über,
je nach der Art der Transaktion, welche die Kohärenzaktivität ausgelöst hat. Zusätzlich kann der aktive Anforderungszustand 142 einen
Zeitgeber verwenden, um zu erfassen, daß Kohärenzantworten innerhalb einer
vorbestimmten Zeitperiode nicht empfangen worden sind. Wenn der
Zeitgeber vor dem Empfang der Anzahl von Antworten abläuft, welche
durch den Heimatagenten 102 angegeben wurden, so geht der
Anforderungsagent 100 in einen Fehlerzustand über (nicht
dargestellt). Weiterhin können
gewisse Ausführungsformen
eine Antwort verwenden, welche anzeigt, daß eine Leseübertragung fehlgeschlagen ist.
Wenn eine solche Antwort empfangen wird, geht der Anforderungsagent 100 in
den Anforderungsbereitschaftszustand 142 über, um
den Lesevorgang erneut zu versuchen.
-
Wenn
Antworten ohne Fehler oder Zeitablauf empfangen werden, so ist der
Zustand, in welchen der Anforderungsagent 100 für Lesetransaktionen übergehen
soll, der Leseabschlußzustand 146.
Es sei angemerkt, daß für Lesetransaktionen
eine der empfangenen Antworten die Daten enthalten kann, welche
der angeforderten Kohärenzeinheit
entsprechen. Der Anforderungsagent 100 gibt die Lesetransaktion
auf dem SMP-Bus 20 erneut aus und sendet weiterhin den
Kohärenzabschluß an den
Heimatagenten 102. Anschließend geht der Anforderungsagent 100 in
einen Leerlaufzustand 148 über. Eine neue Transaktion
kann dann unter Verwendung der in 6 dargestellten
Zustandsmaschine durch den Anforderungsagenten 100 bedient bzw.
bearbeitet werden.
-
Umgekehrt
werden der aktive Schreibzustand 150 und der ignorierte
Neuausgabezustand für
das Schreiben 152 für
Schreibtransaktionen verwendet. Das "Ignorieren"-Signal 70 wird für gewisse
Schreibtransaktionen in dem Computersystem 10 nicht vorgebracht,
selbst wenn Kohärenzak tivität auf dem
Netzwerk 14 ausgelöst
wurde. Beispielsweise werden I/O-Schreibtransaktionen nicht ignoriert.
Die Schreibdaten werden in die Systemschnittstelle 24 übertragen
und darin gespeichert. Der aktive Schreibzustand 150 wird
verwendet für
nicht ignorierte Schreibtransaktionen, um eine Übertragung von Daten zu der
Systemschnittstelle 24 zu ermöglichen, wenn die Kohärenzantworten
vor der Datenphase der Schreibtransaktion auf dem SMP-Bus 20 empfangen
wurden. Wenn entsprechende Daten empfangen wurden, geht der Anforderungsagent 100 in
den Schreibabschlußzustand 154 über. Während des
Schreibabschlußzustandes 154 wird
die Kohärenzabschlußantwort
an den Heimatagenten 102 übermittelt. Anschließend geht
der Anforderungsagent 100 in den Leerlaufzustand 148 über.
-
Ignorierte
Schreibtransaktionen werden durch einen Übergang in einen Neuausgabezustand 152 des ignorierten
Schreibens gehandhabt. Während
des Neuausgabezustandes 132 des ignorierten Schreibens
gibt der Anforderungsagent 100 die ignorierte Schreibtransaktion
erneut auf dem SMP-Bus 20 aus. Auf diese Weise können die
Schreibdaten von dem Ausgangsprozessor 16 übertragen
werden und die entsprechende Schreibtransaktion durch den Prozessor 16 freigegeben
werden. Je nachdem, ob die Schreibdaten mit dem Kohärenzabschluß übertragen
werden sollen oder nicht, geht der Anforderungsagent 100 entweder
in den aktiven Zustand 156 des ignorierten Schreibens oder
in den Abschlußzustand 158 des
ignorierten Schreibens über.
Der aktive Zustand 156 des ignorierten Schreibens wird, ähnlich wie
der aktive Schreibzustand 150, verwendet, um eine Datenübertragung
von dem SMP-Bus 20 abzuwarten. Während des Abschlußzustandes 158 des
ignorierten Schreibens wird der Kohärenzabschluß an den Heimatagenten 102 übersendet.
Anschließend geht
der Anforderungsagent 100 in den Leerlaufzustand 148 über. Von
dem Leerlaufzustand 148 geht der Anforderungsagent 100 nach
dem Empfang einer Transaktion von der SMP-Eingangsschlange 94 in den
Anforderungsbereitschaftszustand 142 über.
-
Gemäß 7 ist ein Flußdiagramm 160 dargestellt,
welches eine beispielhafte Zustandsmaschine für den Heimatagenten 102 zeigt.
Die Heimatagenten 102 können
mehrere unabhängige
Kopien der durch das Flußdiagramm 160 repräsentierten
Zustandsmaschine umfassen, um das Verarbeiten mehrerer anhängiger Anforderungen
an den Heimatagenten 102 zu ermöglichen. Die mehreren anhängigen Anforderungen
beeinflussen bzw. betreffen jedoch gemäß einer Ausführungsform
nicht dieselbe Kohärenzeinheit.
-
Der
Heimatagent 102 empfängt
Kohärenzanforderungen
in einem Empfangszustand 162 für Anforderungen. Die Anforderung
kann entweder als eine kohärente
Anforderung oder als eine sonstige Transaktionsanforderung klassifiziert
werden. Andere Transaktionsanforderungen umfassen gemäß einer
Ausführungsform z.B.
I/O-Lese- und I/O-Schreibanforderungen, Interruptanforderungen und
administrative Anforderungen. Die nicht kohärenten Anforderungen werden
während
eines Zustandes 164 durch Senden einer Transaktion auf dem
SMP-Bus 20 gehandhabt. Ein Kohärenzabschluß wird anschließend übermittelt.
Nach Empfang des Kohärenzabschlusses
führen
I/O-Schreibe- und
angenommene Interrupttransaktionen zu einer Übermittlung einer Datentransaktion
auf dem SMP-Bus 20 in dem Heimatknoten (d.h. in einem Nur-Daten-Zustand 165). Wenn
die Daten übertragen
worden sind, geht der Heimatagent 102 in den Leerlaufzustand 166 über. Alternativ
be wirken I/O-Lese-, administrative und zurückgewiesene unterbrochene Transaktionen
einen Übergang
in den Leerlaufzustand nach Empfang des Kohärenzabschlusses.
-
Umgekehrt
geht der Heimatagent 102 nach Empfang einer Kohärenzanforderung
in einen Prüfzustand 168 über. Der
Prüfzustand 168 wird
verwendet, um zu erfassen, ob Kohärenzaktivität für die von der Kohärenzanforderung
betroffene Kohärenzeinheit
abläuft.
Wenn Kohärenzaktivität abläuft (d.h.
die Kohärenzinformation
blockiert ist), so bleibt der Heimatagent 102 in dem Prüfzustand 168,
bis die im Ablauf befindliche Kohärenzaktivität abgeschlossen ist. Der Heimatagent 102 geht
anschließend
in einen Einstellzustand 170 über.
-
Während des
Einstellzustandes 170 stellt der Heimatagent 102 den
Zustand des Verzeichniseintrages, welcher die Kohärenzinformation
speichert, welche der betroffenen Kohärenzeinheit entspricht, auf
blockiert ein. Der blockierte Zustand verhindert, daß nachfolgende
Aktivitäten
auf der betroffenen Kohärenzeinheit fortschreiten,
was das Kohärenzprotokoll
des Computersystems 10 vereinfacht. In Abhängigkeit
von der Lese- oder Schreibenatur der Transaktion, welche der empfangenen
Kohärenzanforderung
entspricht, geht der Heimatagent 102 in den Lesezustand 172 oder
in den Schreiberwiderungszustand 174 über.
-
Im
Lesezustand 172 gibt der Heimatagent 102 Kohärenzbefehle
an abhängige
Agenten 104 aus, die bezüglich der Lesetransaktion aktualisiert
werden müssen.
Der Heimatagent 102 bleibt im Lesezustand 172, bis
ein Kohärenzabschluß von dem
Anforderungsagenten 100 empfangen wurde, woraufhin der
Heimatagent 102 in den Zustand 176 zum Löschen des
blockierten Zustands übergeht.
In Ausführungsformen,
in welchen eine Kohärenzanforderung
zum Lesen möglicherweise
fehlschlägt,
stellt der Heimatagent 102 den Zustand des betroffenen
Verzeichniseintrags in dem Zustand vor der Kohärenzanforderung wieder her,
nachdem ein Kohärenzabschluß empfangen
wurde, welcher das Fehlschlagen der Lesetransaktion angezeigt hat.
-
Während des
Schreibzustandes 184 übermittelt
der Heimatagent 102 eine Kohärenzerwiderung an den Anforderungsagenten 100.
Der Heimatagent 102 bleibt in einem Schreiberwiderungszustand 174,
bis ein Kohärenzabschluß von dem
Anforderungsagenten 100 empfangen wurde. Wenn Daten mit
dem Kohärenzabschluß empfangen
wurden, geht der Heimatagent 102 in den Datenschreibzustand 178 über. Alternativ
geht der Heimatagent 102 in den Zustand 176 zum
Löschen
des Blockierungszustandes über,
nachdem ein Kohärenzabschluß empfangen
wurde, der keine Daten enthält.
-
Der
Heimatagent 102 gibt während
des Datenschreibzustandes 178 eine Schreibtransaktion auf
dem SMP-Bus 20 aus, um die empfangenen Schreibdaten zu übertragen.
Beispielsweise führt
ein Stromschreibvorgang (der nachstehend beschrieben wird) zu einer
Datenübertragung
von Daten an den Heimatagenten 102. Der Heimatagent 102 sendet
die empfangenen Daten zum Speichern an den Speicher 22.
Anschließend geht
der Heimatagent 102 in den Zustand 176 zum Löschen des
blockierten Zustandes über.
-
Der
Heimatagent 102 löscht
den blockierten Zustand der Kohärenzinformation,
welche von der Kohärenzanforderung
in dem Zustand 176 zum Löschen des blockierten Zustandes
betroffen ist. Auf die Kohärenzinformation
kann anschließend
zugegriffen werden. Der Zustand, den man in der nicht blockierten
Kohärenzinformation
findet, gibt die Kohärenzaktivität wieder,
welche durch die zuvor empfangene Kohärenzanforderung ausgelöst wurde.
Nach dem Löschen
des blockierten Zustands der entsprechenden Kohärenzinformation geht der Heimatagent 102 in
den Leerlaufzustand 166 über. Aus dem Leerlaufzustand 166 geht
der Heimatagent 102 beim Empfang einer Kohärenzanforderung
in den Anforderungsempfangszustand 162 über.
-
Gemäß 8 ist ein Flußdiagramm 180 wiedergegeben,
welches eine beispielhafte Zustandsmaschine für abhängige Agenten 104 darstellt.
Der abhängige
Agent 104 empfängt
während
eines Empfangszustandes 182 Kohärenzbefehle. In Reaktion auf
einen Kohärenzbefehl
kann der abhängige
Agent 104 eine Transaktion für die Präsentation auf dem SMP-Bus 20 in
einer Schlange anordnen. Die Transaktion bewirkt eine Zustandsveränderung
in den Caches 18 und in den internen Caches der Prozessoren 16 gemäß dem empfangenen
Kohärenzbefehl.
Der abhängige
Agent 104 ordnet die Transaktion während des Zustandes 184 für das Senden
von Anforderungen in einer Schlange an.
-
Während des
Zustandes 186 für
das Senden von Antworten übermittelt
der abhängige
Agent 104 eine Kohärenzantwort
an den Anforderungsagenten 100, welcher die Transaktion
ausgelöst
hat. Es sei angemerkt, daß gemäß verschiedenen
Ausführungsformen
der abhängige
Agent 104 von dem Zustand 184 des Sendens von
Anforderungen in den Zustand 186 des Sendens von Antworten übergehen
kann, und zwar nach dem in-der-Schlange-Anordnen der Transaktion
für den
SMP-Bus 20 oder nach dem erfolgreichen Abschluß der Transaktion
auf dem SMP-Bus 20. Im Anschluß an die Übermittlung der Kohärenzantwort
geht der abhängige Agent 104 in
einen Leerlaufzustand 188 über. Aus dem Leerlaufzustand 188 kann
der abhängige
Agent 104 beim Empfang eines Kohärenzbefehls in den Empfangszustand 182 übergehen.
-
Gemäß den 9–12 sind
verschiedene Tabellen wiedergegeben, welche beispielhafte Typen
von Kohärenzanforderungen,
Typen von Kohärenzbefehlen,
Typen von Kohärenzantworten
und Typen von Kohärenzabschlüssen auflisten.
Die in den Tabellen der 9–12 dargestellten Typen können durch
eine Ausführungsform
des Computersystems 10 verwendet werden. Andere Ausführungsformen
können
andere Sätze von
Typen verwenden.
-
9 ist eine Tabelle 190,
welche die Typen von Kohärenzanforderungen
auflistet. Eine erste Spalte 192 listet einen Code für jeden
Anforderungstyp auf, der in 13 unten
verwendet wird. Eine zweite Spalte 194 listet die Kohärenzanforderungstypen
auf und eine dritte Spalte 196 zeigt die Herkunft der Kohärenzanforderung
an. Ähnliche
Spalten werden in den 10–12 für Kohärenzbefehle, Kohärenzantworten
und Kohärenzabschlüsse verwendet.
Ein "R" zeigt den Anforderungsagenten 100 an,
ein "S" zeigt den abhängigen Agenten 104 an,
und ein "N" zeigt den Heimatagenten 102 an.
-
Eine
Anforderung des Lesens zum Zwecke des gemeinsamen Verwendens wird
ausgeführt,
wenn eine Kohärenzeinheit
in einem bestimmten SMP-Knoten nicht vorhanden ist und die Natur
bzw. Art der Transaktion von dem SMP-Bus 20 zu der Kohärenzeinheit
anzeigt, daß ein
Lesezugriff auf die Kohärenzeinheit
gewünscht
wird. Beispielsweise kann eine im Cache aufnehmbare Lesetransaktion
zu einer Anforderung des Lesens zum Zwecke des gemeinsamen Verwendens
führen.
-
Allgemein
gesprochen ist eine Anforderung des Lesens zum Zwecke des gemeinsamen
Verwendens eine Anforderung nach einer Kopie der Kohärenzeinheit
in dem gemeinsam verwendeten Zustand. In ähnlicher Weise ist eine Anforderung
des Lesens zum Zwecke des Besitzens eine Anforderung nach einer
Kopie der Kohärenzeinheit
in dem Besitzzustand. Kopien der Kohärenzeinheit in anderen SMP-Knoten
sollten in den ungültigen
Zustand geändert
werden. Eine Anforderdung des Lesens zum Zwecke des Besitzens kann
beispielsweise in Reaktion auf einen Cachefehlgriff einer im Cache
aufnehmbaren Schreibtransaktion ausgeführt werden.
-
Lesestrom
und Schreibstrom sind Anforderungen für das Lesen oder Schreiben
einer vollständigen Kohärenzeinheit.
Diese Vorgänge
werden typischerweise für
Blockkopiervorgänge
verwendet. Prozessoren 16 und Caches 18 nehmen
keine Daten im Cache auf, die in Reaktion auf eine Lesestrom- oder
Schreibstromanforderung bereitgestellt werden. Stattdessen wird
die Kohärenzeinheit
im Falle einer Lesestromanforderung für den Prozessor 16 in
Form von Daten bereitgestellt oder die Daten werden im Falle einer
Schreibstromanforderung in den Speicher 22 geschrieben.
Es sei angemerkt, daß Anforderungen
des Lesens zum Zwecke des gemeinsamen Verwendens, des Lesens zum
Besitzen und Lesestromanforderungen als COMA-Operationen ausgeführt werden
können
(beispielsweise RTS, RTO und RS), oder als NUMA-Operationen (beispielsweise RTSN,
RTON und RSN).
-
Eine
Anforderung zum Zurückschreiben
wird ausgeführt,
wenn eine Kohärenzeinheit
in den Heimatknoten der Kohärenzeinheit
geschrieben werden soll. Der Heimatknoten antwortet mit der Erlaubnis,
die Kohärenzeinheit
zurückzuschreiben.
Die Kohärenzeinheit
wird dann mit dem Kohärenzabschluß an den
Heimatknoten geleitet.
-
Die
Anforderung zum Ungültigmachen
wird ausgeführt,
um zu bewirken, daß Kopien
einer Kohärenzeinheit
in anderen SMP-Knoten ungültig
gemacht werden. Ein beispielhafter Fall, bei welchem die Anforderung
zum Ungültigmachen
erzeugt wird, ist eine Schreibestromtransaktion in eine gemeinsam
verwendete oder im Besitz befindliche Kohärenzeinheit. Die Schreibestromtransaktion
aktualisiert die Kohärenzeinheit
und demnach werden Kopien der Kohärenzeinheit in anderen SMP-Knoten ungültig gemacht.
-
I/O-Lese-
und -Schreibanforderungen werden in Reaktion auf I/O-Lese- und -Schreibtransaktionen
gesendet. I/O-Transaktionen sind nicht kohärent (d.h. die Transaktionen
sind nicht im Cache aufgenommen und Kohärenz wird für die Transaktionen nicht aufrechterhalten).
I/O-Blocktransaktionen übertragen
einen größeren Abschnitt
von Daten als normale I/O-Transaktionen. In einer Ausführungsform
werden 64 Informationsbytes in einer Block-I/O-Operation übertragen,
während
8 Bytes in einer Nicht-Block-I/O-Transaktion übertragen werden.
-
Spülanforderungen
(Flush Requests) bewirken, daß Kopien
der Kohärenzeinheit
ungültig
gemacht werden. Modifizierte Kopien ("modified") werden an den Heimatknoten zurückgeliefert.
Interruptanforderungen werden verwendet, um einer bestimmten Einrichtung
in einem entfernt gelegenen SMP-Knoten Interrupts zu signalisieren.
Der Interrupt kann einem bestimmten Prozessor 16 präsentiert
werden, welcher in Reaktion auf den Interrupt ein Interruptdienst-Unterprogramm
ausfüh ren
kann, das unter einer vordefinierten Adresse gespeichert ist. Administrative
Pakete werden verwendet, um gewisse Typen von Rückstellsignalen zwischen den
Knoten zu senden.
-
10 ist eine Tabelle, die
beispielhafte Typen von Kohärenzbefehlen
auflistet. Ähnlich
wie Tabelle 190, sind in Tabelle 198 die Spalten 192, 194 und 196 enthalten.
Ein Befehl des Lesens zum gemeinsamen Verwenden wird an den Besitzer
einer Kohärenzeinheit übermittelt,
was bewirkt, daß der
Besitzer die Daten an den anfordernden Knoten sendet. In ähnlicher
Weise bewirken Befehle des Lesens zum Zwecke des Besitzens und des
Lesestroms, daß der
Besitzer der Kohärenzeinheit
Daten an den anfordernden Knoten sendet. Zusätzlich bewirkt ein Befehl des
Lesens zum Besitzen, daß der
Besitzer den Zustand der Kohärenzeinheit
in dem Besitzerknoten auf ungültig
verändert.
Befehle für
den Lesestrom und für
das Lesen zum gemeinsamen Verwenden bewirken eine Zustandsveränderung
in Besitz (aus modified) in dem besitzenden Knoten.
-
Befehle
zum Ungültigmachen
bewirken nicht die Übertragung
der entsprechenden Kohärenzeinheit. Stattdessen
veranlaßt
ein Befehl zum Ungültigmachen,
daß Kopien
der Kohärenzeinheit
ungültig
gemacht werden. Schließlich
werden administrative Befehle in Reaktion auf administrative Anforderungen übermittelt. Es
versteht sich, daß jeder
der Befehle durch den Heimatagenten 102 ausgelöst wird,
und zwar in Reaktion auf eine Anforderung von einem Anforderungsagenten 100.
-
11 ist eine Tabelle 200,
welche beispielhafte Antworttypen auflistet, die durch eine Ausführungsform
des Computersystems 10 verwendet werden. Ähnlich wie
in den 9 und 10 weist 11 Spalten 192, 194 und 196 für die Kohärenzantworten
auf.
-
Eine
Datenantwort ist eine Antwort, welche die angeforderten Daten enthält. Der
besitzende abhängige
Agent stellt typischerweise die Daten für Kohärenzanforderungen bereit. Heimatagenten
können
jedoch auch Daten für
I/O-Leseanforderungen bereitstellen.
-
Die
Bestätigungsantwort
zeigt an, daß ein
Kohärenzbefehl,
welcher mit einer bestimmten Kohärenzanforderung
verknüpft
ist, abgeschlossen ist. Abhängige
Agenten stellen typischerweise Bestätigungsantworten bereit, jedoch
stellen Heimatagenten Bestätigungsantworten
(zusammen mit Daten) bereit, wenn der Heimatknoten der Besitzer
der Kohärenzeinheit
ist.
-
Antworten "abhängig nicht
in Besitz" (slave
not owned), "Adresse
nicht zugeordnet" (address
not mapped) und Fehlerantworten werden durch den abhängigen Agenten 104 übermittelt,
wenn ein Fehler erfaßt
wird. Die Antwort "abhängig nicht
in Besitz" wird
gesendet, wenn ein abhängiger
durch den Heimatagenten 102 als der Besitzer der Kohärenzeinheit
identifiziert wird und der Abhängige
die Kohärenzeinheit
nicht mehr besitzt. Die Antwort "Adresse
nicht zugeordnet" (address
not mapped) wird gesendet, wenn der Abhängige einen Befehl empfängt, für welchen
keine Einrichtung auf dem entsprechenden SMP-Bus 20 den
Besitz beansprucht. Andere Fehlerzustände, welche durch den abhängigen Agenten
erfaßt
werden, werden über
die Fehlerantwort angezeigt.
-
Zusätzlich zu
den Fehlerantworten, die für
den abhängigen
Agenten 104 verfügbar
sind, kann auch der Heimatagent 102 Fehlerantworten bereitstellen.
Die negative Bestätigung
(NACK-Negative Acknowledge) und
die negative Reaktion (NOPE – Negative
Response) werden von dem Heimatagenten 102 verwendet, um anzuzeigen,
daß die
entsprechende Anforderung keine Bedienung durch den Heimatagenten 102 erfordert. Die
NACK-Transaktion kann verwendet werden, um anzuzeigen, daß die entsprechende
Anforderung durch den Heimatknoten zurückgewiesen wird. Beispielsweise
empfängt
eine Interruptanforderung ein NACK, wenn der Interrupt durch den
empfangenden Knoten zurückgewiesen
wird. Eine Bestätigung
(ACK – Acknowledge) wird übermittelt,
wenn der Interrupt durch den empfangenden Knoten angenommen wird.
Die Transaktion NOPE wird verwendet, um anzuzeigen, daß eine entsprechende
Spülanforderung
für eine
Kohärenzeinheit übermittelt
wurde, welche von dem anfordernden Knoten nicht gespeichert wird.
-
12 ist eine Tabelle, welche
beispielhafte Kohärenzabschlußtypen gemäß einer
Ausführungsform des
Computersystems 10 zeigt. Ähnlich wie die 9–11 weist 12 Spalten 192, 194 und 196 für Kohärenzabschlüsse auf.
-
Ein
Abschluß ohne
Daten wird als ein Signal von dem Anforderungsagenten 100 an
den Heimatagenten 102 verwendet, daß eine bestimmte Anforderung
abgeschlossen ist. In Reaktion darauf hebt der Heimatagent 102 die
Blockierung der entsprechenden Kohärenzinformation auf. Zwei Typen
von Datenabschlüssen sind
enthalten, welche unterschiedlichen Transaktionen auf dem SMP-Bus
entsprechen. Ein Typ einer Neuausgabetransaktion beinhaltet nur
eine Datenphase auf dem SMP-Bus 20. Diese Neuausgabetransaktion kann
in einer Ausführungsform
für I/O-Schreibe- und Interrupttransaktionen
verwendet werden. Der andere Typ einer Neuausgabetransaktion beinhaltet
sowohl eine Adreß-
als auch eine Datenphase. Kohärente Schreibvorgänge, wie
z.B. Schreibe Strom und Schreibe Zurück, können die Neuausgabetransaktion
einschließlich
sowohl der Adreß- als auch der Datenphase
verwenden. Schließlich
ist ein Abschluß,
der ein Versagen anzeigt, für
Leseanforderungen, die den angeforderten Zustand nicht erhalten
können,
eingeschlossen.
-
Gemäß 13 ist eine Tabelle 210
wiedergegeben, welche Kohärenzaktivität in Reaktion
auf verschiedene Transaktionen auf dem SMP-Bus 20 zeigt.
Die Tabelle 210 zeigt Transaktionen, welche zu Anforderungen führen, die
an andere SMP-Knoten 12 gesendet werden. Transaktionen,
die innerhalb eines SMP-Knotens abgeschlossen werden, sind nicht
dargestellt. Ein "–" in einer Spalte
zeigt an, daß bezüglich dieser
Spalte in dem in einer bestimmten Reihe betrachteten Fall keine
Aktivität
ausgeübt
wird. Eine Transaktionsspalte 212 ist enthalten, welche
die Transaktion anzeigt, die auf dem SMP-Bus von dem Anforderungsagenten 100 empfangen
wird. Die Spalte MTAG 214 zeigt den Zustand des MTAG für die Kohärenzeinheit
an, auf welche durch die Adresse, welche der Transaktion entspricht,
zugegriffen wird. Die dargestellten Zustände umfassen die oben beschriebenen
MOSI-Zustände
und einen n-Zustand. Der "n"-Zustand zeigt an,
daß auf die
Kahärenzeinheit
im NUMA-Betrieb für
den SMP-Knoten zugegriffen wird, in welchem die Transaktion ausgelöst wird.
Daher wird keine lokale Kopie der Kohärenzeinheit in dem Speicher
der anfordernden Knoten gespeichert. Stattdessen wird die Kohärenzeinheit
von dem Heimat-SMP-Knoten (oder einem Besitzerknoten) übertragen
und wird an den anfordemden Prozessor 16 oder Cache 18 gesendet
ohne Speicherung in dem Speicher 22.
-
Eine
Anforderungsspalte 216 listet die Kohärenzanforderungen auf, welche
an den Heimatagenten gesendet werden, der durch die Adresse der
Transaktion identifiziert wird. Nach dem Empfang der Kohärenzanforderung,
die in Spalte 216 aufgelistet ist, überprüft der Heimatagent 102 den
Zustand der Kohärenzeinheit für den anfordernden
Knoten, wie er in dem Verzeichnis 66 aufge zeichnet ist.
Die D-Spalte 218 listet den aktuellen Zustand der Kohärenzeinheit
auf, welche für
den anfordernden Knoten aufgezeichnet wurde, und die D'-Spalte 220 listet
den Zustand der Kohärenzeinheit
auf, der für
den anfordernden Knoten, so wie er durch den Heimatagenten 102 in
Reaktion auf die empfangene Kohärenzanforderung
aktualisiert wurde, aufgezeichnet wurde. Zusätzlich kann der Heimatagent 102 einen
ersten Kohärenzbefehl
für den
Besitzer der Kohärenzeinheit
und zusätzliche
Kohärenzbefehle
für irgendwelche
Knoten erzeugen, welche gemeinsam verwendete Kopien der Kohärenzeinheit
halten. Der Kohärenzbefehl,
welcher an den Besitzer gesendet wird, ist in Spalte 222 dargestellt.
Während
der Kohärenzbefehl,
der an die gemeinsam verwendenden Knoten gesendet wird, in Spalte 224 dargestellt
ist. Weiterhin kann der Heimatagent 102 eine Kohärenzantwort
an den anfordernden Knoten senden. Die Antworten des Heimatagenten
sind in Spalte 226 wiedergegeben.
-
Der
abhängige
Agent 104 in dem SMP-Knoten, welcher als der Besitzer der
Kohärenzeinheit
gekennzeichnet wurde, sendet eine Kohärenzantwort, wie es in Spalte 228 dargestellt
ist. Abhängige
Agenten 104 in den Knoten, die als gemeinsam verwendende
Knoten angezeigt sind, reagieren auf die Kohärenzbefehle, welche in Spalte 224 dargestellt
sind, mit den Kohärenzantworten,
die in Spalte 230 dargestellt sind, und zwar im Anschluß an das
Durchführen
von Zustandsveränderungen,
welche durch den empfangenen Kohärenzbefehl angezeigt
werden.
-
Nach
Empfang der passenden Anzahl von Kohärenzantworten sendet der Anforderungsagent 100 einen
Kohärenzabschluß an den
Heimatagenten 102. Die für verschiedenen Transaktionen
verwendeten Kohärenzabschlüsse sind
in Spalte 232 dargestellt.
-
Als
ein Beispiel zeigt eine Reihe 234 die Kohärenzaktivität in Reaktion
auf eine Transaktion des Lesens zum gemeinsamen Verwenden auf dem
SMP-Bus 20, für
welche der entsprechende MTAG-Zustand ungültig ist. Der entsprechende
Anforderungsagent 100 sendet eine Kohärenzanforderung des Lesens
zum gemeinsamen Verwenden an den Heimatknoten, welcher durch die
globale Adresse identifiziert wird, die mit der Transaktion des
Lesens zum gemeinsamen Verwenden verknüpft ist. Für den in Reihe 234 dargestellten
Fall zeigt das Verzeichnis des Heimatknotens an, daß der anfordernde
Knoten die Daten im ungültigen
Zustand speichert. Der Zustand in dem Verzeichnis des Heimatknotens
für den
anfordernden Knoten wird in gemeinsam verwendet aktualisiert und
der Kohärenzbefehl
des Lesens zum gemeinsamen Verwenden wird durch den Heimatagenten 102 an
den Knoten gesendet, welcher durch das Verzeichnis als der Besitzer
angezeigt wird. An gemeinsame Verwender werden keine Befehle gesendet,
da die Transaktion versucht, den gemeinsam verwendeten Zustand zu
erhalten. Der abhängige
Agent 104 in dem Besitzerknoten sendet die Daten, welche
der Kohärenzeinheit
entsprechen, an den anfordernden Knoten. Nach Empfang der Daten
sendet der Anforderungsagent 100 innerhalb des anfordernden
Knotens einen Kohärenzabschluß an den
Heimatagenten 102 innerhalb des Heimatknotens. Die Transaktion
ist deshalb abgeschlossen.
-
Es
sei angemerkt, daß der
Zustand, der in der D-Spalte 218 dargestellt ist, möglicherweise
nicht mit dem Zustand in der MTAG-Spalte 214 zusammenpaßt. Beispielsweise
zeigt eine Reihe 236 eine Kohärenzeinheit in der MTAG-Spalte 214 in
dem ungültigen
Zustand. Der entsprechende Zustand in der D-Spalte 218 kann jedoch
modifiziert, im Besitz befindlich oder gemeinsam verwendet sein.
Derartige Situationen treten auf, wenn eine vorherige Kohärenzanforderung
von dem anfordernden Knoten nach der Kohärenzeinheit innerhalb des Computersystems
noch aussteht, wenn der Zugriff auf das MTAG 68 für die aktuelle
Transaktion auf die Kohärenzeinheit
auf dem Adreßbus 58 ausgeführt wird.
Aufgrund des Blockierens von Verzeichniseinträgen während eines bestimmten Zugriffs
wird jedoch die offene Anforderung vor dem Zugriff auf das Verzeichnis 66 durch
die aktuelle Anforderung abgeschlossen. Aus diesem Grund hängen die
erzeugten Kohärenzbefehle von
dem Verzeichniszustand ab (der dem MTAG-Zustand zum Zeitpunkt entspicht,
zu welchem auf das Verzeichnis zugegriffen wird). Für das in
Reihe 236 dargestellte Beispiel kann, da das Verzeichnis
anzeigt, daß die
Kohärenzeinheit
nunmehr in dem anfordernden Knoten residiert, die Anforderung des
Lesens zum gemeinsamen Verwenden abgeschlossen werden, indem einfach
die Lesetransaktion auf dem SMP-Bus 20 in dem anfordernden
Knoten erneut ausgegeben wird. Daher bestätigt der Heimatknoten die Anforderung,
einschließlich
einer Antwortzahl Eins, und der anfordernde Knoten kann im Anschluß daran
die Lesetransaktion erneut ausgeben. Es sei weiterhin angemerkt,
daß, auch
wenn Tabelle 210 viele Arten von Transaktionen auflistet, zusätzliche
Transaktionen entsprechend verschiedenen Ausführungsformen des Computersystems 10 verwendet
werden können.
-
Fehlerprotokollierung
-
Gemäß 14 ist ein Flußdiagramm 300 dargestellt,
welches eine beispielhafte Zustandsmaschine des Anforderungsagenten
zeigt, die in einer Ausführungsform
des Computersystems 10, welche Fehlerprotokollierung verwendet,
durch den Anforderungsagenten 100 verwendet werden kann.
Mehrere Kopien der beispielhaften Zustandsmaschine können durch
Anforderungsagenten 100 für das gleichzeitige Verarbeiten
mehrerer Kohärenzanforderungen
verwendet werden. Das Flußdiagramm 300 zeigt
Zustände 142, 144, 146, 148, 150, 152, 154, 156 und 158 auf, ähnlich wie
das Flußdiagramm 140 (in 6 dargestellt). Zusätzlich umfaßt das Flußdiagramm 300 einen
Wiederholungszustand 302 und einen eingefrorenen Zustand 304.
-
Zusätzlich zu
den Übergängen in
den Zustand 146 des abgeschlossenen Lesens, den Zustand 150 des
aktiven Schreibens und des Ignoriert-Zustandes 152 der
Schreibneuausgabe ist der aktive Anforderungszustand 144 so
ausgestaltet, daß er
bei Erfassung eines Fehlers bezüglich
der aktiven Anforderung in einen Erholungszustand 302 übergeht.
Der Fehler kann einer von mehreren verschiedenen Typen sein. Ein
erster Fehlertyp wird als ein Zeitablauffehler bezeichnet. Der Anforderungsagent 100 implementiert
einen Fehler für jede
Zustandsmaschine, die darin enthalten ist und die schrittweise auf
regelmäßiger Basis
heraufgesetzt wird, während
die Zustandsmaschine sich in ihrem aktiven Anforderungszustand 144 befindet.
Wenn der Zähler
einen definierten, programmierbaren Maximalwert erreicht, bevor
die Zustandsmaschine aus dem aktiven Anforderungszustand 144 heraus
und in einen anderen übergeht,
so geht die Zustandsmaschine in einen Wiedererholungszustand 302 über. Der
Maximalwert wird derart ausgewählt,
daß er
beträchtlich
länger
ist als eine Kohärenzanforderung
benötigt,
wenn das Computersystem 10 ordnungsgemäß arbeitet. Daher könnte, wenn der
Zeitablauffehler auftritt, irgendein Bestandteil des Computersystems 10 möglicherweise
fehlerhaft funktionieren.
-
Ein
zweiter Typ eines Fehlers, der durch den Anforderungsagenten 100 erfaßt wird,
besteht aus Fehlern, die durch einen abhängigen Agenten 104 übermittelt
werden. Beispielsweise listet die Tabelle 200 eine ERR-Kohärenzanforderung,
eine ANM-Kohärenzerwiderung
und eine SNO-Kohärenzantwort
auf. Wenn diese Kohärenzantworten
durch einen Anforderungsagenten 100 von einem abhängigen Agenten 104 empfangen werden,
so ist die entsprechende Transaktion fehlerhaft. Schließlich erfaßt der Anforderungsagent 100 einen dritten
Fehlertyp. Der dritte Fehlertyp umfaßt das Empfangen einer unerwarteten
Antwort für
eine Transaktion oder einen Paritätsfehler nach dem Zugriff auf
die LPA2GA-Übersetzung 82.
Nach der Erfassung der zweiten und dritten Fehlertypen wird ein Übergang
von dem aktiven Anforderungszustand 144 in den Wiedererholungszustand 302 ausgeführt.
-
Beim Übergang
in den Erholungszustand 302 versucht der Anforderungsagent 100,
so viele Ressourcen wie möglich
aus der fehlerhaften Transaktion freizugeben, so daß die Ressourcen
auf andere Transaktionen gerichtet werden können. Gewisse Ressourcen werden
möglicherweise
nicht freigegeben (beispielsweise die Zustandsmaschine selbst),
so daß Information,
welche die Transaktion betrifft, möglicherweise zu einem späteren Zeitpunkt
für Diagnosezwecke
zugänglich
ist.
-
In
einer besonderen Ausführungsform
führt der
Anforderungsagent 100 während
des Erholungszustandes 302 die folgenden Aktionen aus:
-
- (i) Neuausgabe einer kohärenten Transaktion, für welche
das Ignorieren-Signal vorgebracht wurde. Die Neuausgabetransaktion
umfaßt
eine Adreßcodierung,
welche einen Fehler anzeigt, so daß der auslösende Prozessor in ein Unterprogramm
des Betriebssystems läuft.
- (ii) Neuausgabe einer I/O-Lesetransaktion mit einem Datenpaket,
welches das I/O-Lesen
als mit einem Fehler abgeschlossen anzeigt, und
- (iii) Neuausgabe einer Interrupttransaktion, welche anzeigt,
daß der
Interrupt, der an einer NACK-Erwiderung von dem entsprechenden abhängigen Agenten
empfangen wurde.
-
Durch
Ausführen
derartiger Aktivitäten,
wenn die entsprechende Transaktion zu einem Fehler führt, kann
der auslösende
Prozessor über
den Fehler informiert werden. Es sei angemerkt, daß Transaktionen,
die sich von den oben aufgelisteten unterscheiden, möglicherweise
keine Erholungsaktivität
erfordern. Beispielsweise besetzt eine Transaktion möglicherweise
keine Ressourcen. Zusätzlich
kann der SMP-Knoten 12A–12D, in welchem der
Fehler erfaßt
wurde, mit seinem Betrieb fortfahren trotz der Anwesenheit des erfaßten Fehlers.
-
Aus
dem Erholungszustand 302 geht die Zustandsmaschine des
Anforderungsagenten entweder in den Leerlaufzustand 148 oder
in den eingefrorenen Zustand 304 über. Wenn die Zustandsmaschine
des Anforderungsagenten feststellt, daß sie nicht einfrieren darf,
so geht der Anforderungsagent mit seiner Zustandsmaschine in den
Leerlaufzustand 148 über.
Im Anschluß daran kann
die Zustandsmaschine des Anforderungsagenten eine neue Transaktion
akzeptieren und mit der Ausführung
von Kohärenzanforderungen
beginnen. Andererseits geht die Zustandsmaschine des Anforderungsagenten,
welche durch das Flußdiagramm 300 repräsentiert
wird, in den eingefrorenen Zustand 304 über, wenn die Zustandsmaschine
des Anforderungsagenten feststellt, daß sie einfrieren kann.
-
Verschiedene
Faktoren können
festlegen, ob die in 14 dargestellte
Zustandsmaschine des Anforderungsagenten bei Erfassung eines Fehlers
und der nachfolgenden Ausführung
von Erholungsschritten einfrieren kann. In einer Ausführungsform
wird eine maximale Anzahl von eingefrorenen Zustandsmaschinen von Anforderungsagenten
definiert. Wenn die Anzahl anderer Zustandsmaschinen von Anforderungsagenten,
welche zu dem Zeitpunkt eingefroren sind, zu welchem eine Zustandsmaschine
eines Anforderungsagenten bereit ist, aus dem Erholungszustand 302 überzugehen,
gleich der maximalen Anzahl eingefrorener Zustandsmaschinen von
Anforderungsagenten ist, so geht die Zustandsmaschine in den Leerlaufzustand 148 über. Zusätzlich enthält die Ausführungsform
eine programmierbare Maske, die es ermöglicht, daß gewisse erfaßbare Fehler
bewirken, daß die
Zustandsmaschine des Anforderungsagenten einfriert, während andere
erfaßbare
Fehler dies nicht tun. Wenn die programmierbare Maske anzeigt, daß der erfaßte Fehler
maskiert ist, so geht die Zustandsmaschine des Anforderungsagenten
in den Leerlaufzustand 148 über. Ansonsten geht die Zustandsmaschine
des Anforderungsagenten in den eingefrorenen Zustand 304 über.
-
Wenn
die Zustandsmaschine des Anforderungsagenten in den eingefrorenen
Zustand 304 eingetreten ist, bleibt die Zustandsmaschine
des Anforderungsagenten in diesem Zustand, bis sie ausdrücklich freigegeben
wird. In einer Ausführungsform
wird eine Zustandsmaschine eines Anforderungsagenten freigegeben,
indem ein entsprechendes Bit in einem Steuerregister (wird nachstehend
beschrieben) aktualisiert wird. Die durch die Zustandsmaschine des
Anforderungsagenten gehaltene Information, welche sich auf die Transaktion
bezieht, kann dabei durch Software (beispielsweise das Betriebssystem
oder eine Diagnosesoftware) untersucht werden. Bei Abschluß der Untersuchung
kann die Software das Steuerregister möglicherweise aktualisieren,
um zu ermöglichen,
daß die
Zustandsmaschine des Anforderungsagenten erneut Transaktionen ausführt. Wenn
sie freigegeben wird, geht die Zustandsmaschine des Anforderungsagenten
in den Leerlaufzustand 148 über.
-
Gemäß 15 ist ein Flußdiagramm 310 dargestellt,
das eine beispielhafte Zustandsmaschine des Heimatagenten zeigt,
die durch den Heimatagenten 102 in einer Ausführungsform
des Computersystems 10 verwendet werden kann, das eine
Fehlerprotokollierung implementiert. Mehrere Kopien der beispielhaften
Zustandsmaschine können
durch den Heimatagenten 302 für gleichzeitig ablaufende Verarbeitung
mehrerer Kohärenzbefehle
verwendet werden. Das Flußdiagramm 310 umfaßt Zustände 162, 164, 165, 166, 168, 170, 172, 174, 176 und 178, ähnlich dem
Flußdiagramm 160 (in 7 dargestellt). Zusätzlich umfaßt das Flußdiagramm 310 einen
Erholungszustand 312 und einen eingefrorenen Zustand 314.
-
Die
Zustände
innerhalb des Flußdiagramms 310 sind
so ausgelegt, daß sie
bei Erfassung eines Fehlers bezüglich
der Transaktion, für
welche Kohärenzaktivität ausgeführt wird,
in den einge frorenen Zustand 314 übergehen, wenn ein Einfrieren
zum Zeitpunkt des Übergangs
(Bogen 316) zulässig
ist. Ansonsten wird ein Übergang
in den Leerlaufzustand 166 ausgeführt (Bogen 318). Ähnlich wie
der Anforderungsagent 100 weist der Heimatagent 102 eine
programmierbare maximale Anzahl eingefrorener Zustandsmaschinen
des Heimatagenten auf. Bei Erfassung eines Fehlers kann eine Zustandsmaschine
des Heimatagenten einfrieren, wenn die Anzahl eingefrorener Agenten
geringer ist als die Maximalzahl. Zusätzlich definiert eine programmierbare Maske
die Fehler, welche ein Einfrieren bewirken. Die Zustandsmaschine
des Heimatagenten geht in den programmierbaren Zustand 314 über, wenn
die programmierbare Maske anzeigt, daß der erfaßte Fehler ein einfrierbarer
Fehler sei.
-
Die
durch den Heimatagenten 102 erfaßten Fehler sind gemäß einer
Ausführungsform
von mehreren Typen. Ein erster Typ ist der Zeitablauffehler, ähnlich dem
Zeitablauffehler, der oben beschrieben wurde. Ein zweiter Typ von
Fehler ist der Empfang eines unerwarteten Kohärenzvorgangs, entweder eine
unerwartete Anforderung oder ein unerwarteter Abschluß. Eine
unerwartete Anforderung wird erfaßt, falls eine Anforderung empfangen
wird, die einen Transaktionstyp invalid hat (d.h. der Typ ist keiner
von denjenigen, die in der in 9 dargestellten
Tabelle 190 aufgelistet sind). Ein unerwarteter Abschluß ist ein
Abschluß,
der für
eine Transaktion erhalten wurde, welche innerhalb des Heimatagenten 102 nicht
mehr anhängig
ist. Ein dritter Fehlertyp umfaßt
das Erfassen eines Paritätsfehlers,
während
auf das Verzeichnis zugegriffen wird, das Erfassen einer Anforderung
nach einer Adresse, die mit anderen Knoten nicht gemeinsam verwendbar
ist, und das Zugreifen auf einen Verzeichniseintrag, welcher anzeigt,
daß ein
Fehler für
den Knoten erfaßt
wurde.
-
Im
Gegensatz zu der Zustandsmaschine des Anforderungsagenten, welche
in 14 dargestellt wurde,
werden viele Übergänge aufgrund
eines Fehlers direkt in einen eingefrorenen Zustand 314 oder
in den Leerlaufzustand 166 vorgenommen. Mit anderen Worten,
der Erholungszustand 312 wird für diese Übergänge nicht verwendet. Da der
Heimatagent 102 oftmals nicht in Transaktionen auf dem
SMP-Bus 20 innerhalb des lokalen Knotens involviert ist,
gibt es typischerweise keine Ressourcen innerhalb der Systemschnittstelle 24 und
der Prozessoren 16, die aufgrund des erfaßten Fehlers
freigegeben werden müssen.
Transaktionen, die über
den Sendezustand 164 bedient werden, verursachen jedoch
eine Transaktion auf dem SMP-Bus 20 innerhalb des Heimatknotens.
Die Transaktionen sind I/O-Transaktionen, Interrupttransaktionen
und administrative Transaktionen. Bei Erfassung eines Fehlers für diese
Typen von Übergängen wird
ein Übergang
in den Erholungszustand 312 ausgeführt. Aus dem Erholungszustand 312 gibt
die Zustandsmaschine des Heimatagenten die Transaktion auf dem SMP-Bus 20 innerhalb
des Heimatknotens erneut aus, und zwar in einer Art und Weise, die
dem Betrieb des in 14 gezeigten
Erholungszustandes 312 ähnlich
ist. Im Anschluß daran wird
ein Übergang
entweder in den eingefrorenen Zustand 314 oder den Leerlaufzustand 166 auf
der Basis der Einfrierbarkeit der Zustandsmaschine, wie sie oben
erläutert
wurde, ausgeführt.
-
Gemäß 16 ist ein Blockdiagramm
von Registern, welches durch eine Ausführungsform der Systemschnittstelle 24 verwendet
wird, um eine Fehlerprotokollierung zu unterstützen, dargestellt. Andere Ausführungsformen
können
verschiedenartige oder ähnliche
Register verwenden.
-
16 zeigt ein Agentenzustandsregister 320,
ein Fehlerzustandsregister 322, ein Konfigurationsregister 324 des
Anforderungsagenten, ein Konfigurationsregister 326 des
Heimatagenten sowie einer Agenteneinfriermaske 328, ein
Maschinenregister 330 eines Anforderungsagenten und ein
Zustandsmaschinenregister 332 eines Heimatagenten.
-
Das
Agentenzustandsregister 320 speichert Information, welche
die Agentenzustandsmaschinen betrifft, welche erfaßte Fehler
haben. Die Agentenzustandsregister 320 umfassen ein erstes
Heimatfeld 334 und ein erstes Anforderungsfeld 336,
welche eine Anzeige der ersten Zustandsmaschine des Heimatagenten
und der ersten Zustandsmaschine des Anforderungsagenten umfaßt, um jeweils
Fehler zu erfassen. Mit anderen Worten, das erste Heimatfeld 334 speichert
eine Anzeige der Zustandsmaschine des Heimatagenten, welche einen
Fehler erfaßt
hatte, während
alte Zustandsmaschinen des Heimatagenten noch immer normal funktionieren.
In einer Ausführungsform
sind 16 Kopien der Zustandsmaschine des Heimatagenten und 16 Kopien der
Zustandsmaschine des Anforderungsagenten innerhalb desselben Heimatagenten 102 bzw.
Anforderungsagenten 100 enthalten. Daher weisen das erste
Heimatfeld 334 und das erste Anforderungsfeld 336 jeweils
vier Bits auf und speichern eine Nummer, welche der entsprechenden
Zustandsmaschine zugeordnet ist, die den ersten Fehler erfaßt hat.
-
Das
Agentenzustandsregister 320 enthält weiterhin ein eingefrorenes
Heimatfeld 338 und ein eingefrorenes Anforderungsfeld 340.
Das eingefrorene Heimatfeld 338 enthält ein Bit für jede Zustandsmaschine des
Heimatagenten. Das Bit wird gesetzt, wenn die entsprechende Zustandsmaschine
des Heimatagenten eingefroren ist. Das Bit ist gelöscht, wenn
die entsprechende Zustandsmaschine des Heimatagenten nicht eingefroren
ist (d.h. normal funktioniert). In ähnlicher Weise enthält das eingefrorene
Anforderungsfeld 340 ein Bit für jede Zustandsmaschine des
Anforderungsagenten, welche den gefrorenen/nicht gefrorenen Zustand
der Zustandsmaschine anzeigt. In der beispielhaften Ausführungsform
weisen das Feld 338 für "eingefrorene Heimat" und das Feld 340 für "eingefrorene Anforderung" jeweils 16 Bits
auf.
-
Die
Software kann auf das Agentenzustandsregister 320 zugreifen,
um zu bestimmen, welche Zustandsmaschine des Heimatagenten und/oder
Zustandsmaschine des Anforderungsagenten den ersten Fehler erfaßt hat,
der in dem Computersystem aufgetreten ist. Diese Information kann
insofern zweckmäßig sein, als
es, wenn ein erster Fehler aufgetreten ist, wahrscheinlicher ist,
daß zusätzliche
Fehler auftreten werden, die möglicherweise
ein indirektes Ergebnis des ersten Fehlers sind oder in irgendeiner
Weise mit dem ersten Fehler zusammenhängen. Deshalb können durch
Untersuchung der Zustände,
die sich auf den ersten Fehler beziehen, diagnostische Abläufe schneller
das Problem bestimmen, welches zu dem erfaßten Fehler geführt hat.
Zusätzlich
kann Software bestimmen, welche Zustandsmaschinen des Heimatagenten
und Zustandsmaschinen des Anforderungsagenten eingefroren sind,
indem das Feld 338 für "Heimat eingefroren" und das Feld 340 für "Anforderung eingefroren" untersucht werden.
Weiterhin kann Software eine Zustandsmaschine aus dem eingefrorenen
Zustand freigeben (d.h. die mit einem Kreisbogen markierte Freigabe
in den 14 und 15), indem das entsprechende
Bit innerhalb des entsprechenden "Eingefroren"-Feldes
aktualisiert wird. In einer Ausführungsform
umfaßt
die Systemschnittstelle 24 eine binäre 1, welche in einem bestimmten
Bit in Reaktion auf einen Softwarebefehl gespeichert ist und löscht das
betreffende Bit in Reaktion darauf, wodurch die entsprechende Zustandsmaschine
freigegeben wird.
-
Das
Fehlerzustandsregister 322 wird verwendet, um einen allgemeinen
Fehlerzustand für
einen bestimmten SMP-Knoten 12A–12D zu speichern. 17, die nachfolgend beschrieben
wird, zeigt den Zustand an, der für die die beispielhafte Ausführungsform
in dem Fehlerzustandsregister 322 gespeichert ist.
-
Der
Anforderungsagent 100 ist so ausgestaltet, daß er das
Konfigurationsregister 324 des Anforderungsagenten verwendet.
Ein Feld 342 für
die Einfrierbegrenzung, ein Bit 344 für das Zählereinfrieren und ein Bit 346 für das Einschalten
des Einfrierens, ein Feld 348 für die Zeitablaufgrenze und
ein Feld 350 für
die I/O-Begrenzung sind in der Ausführungsform des in 16 dargestellten Konfigurationsregisters
des Anforderungsagenten enthalten. Das Feld 342 für die Einfrierbegrenzung
codiert eine Maximalzahl von Zustandsmaschinen des Anforderungsagenten,
die gleichzeitig eingefroren sein können. Auf diese Weise wird
zumindest eine minimale Zahl von Zustandsmaschinen des Anforderungsagenten
weiterhin Anforderungen bedienen, selbst wenn eine große Anzahl
von Fehlern aufgetreten ist. Der Wert des Feldes 342 für die Einfrierbegrenzung wird
daher verwendet, um zu bestimmen, ob eine Zustandsmaschine eines
Anforderungsagenten aus dem Erholungszustand 302 in den
Einfrierzustand 304 oder in den Freilaufzustand 348 übergeht.
Das Bit 344 zur Zählereinfrierung
wird verwendet, um die Zeitablaufzähler einzufrieren, welche durch
jede der Zustandsmaschinen des Anforderungsagenten implementiert
wurden, um Zeitablauffehler zu erfassen. Wenn das Bit 344 der
Zählereinfrierung
gesetzt ist, zählen
die Zeitablaufzähler
nicht mehr weiter. Daher werden Zeitablauffehler nicht erfaßt, wenn
das Bit 344 der Zählereinfrierung
gesetzt ist. Das Bit 346 zum Einschalten des Einfrierens gibt die Zustandsmaschinen
des Anforderungsagenten dafür
frei, in Reaktion auf einen Zeitablauffehler in den eingefrorenen
Zustand 302 einzutreten. Wenn das Bit 346 für das Freigeben
bzw. Freischalten des Einfrierens gelöscht: ist, so bewirken Zeitablauffehler
keinen Übergang
in den Einfrierzustand 302.
-
Das
Zeitablaufbegrenzungsfeld 348 codiert die Zeitablaufgrenze
für Transaktionen
(d.h. die Anzahl von Zyklen, die verstreichen dürfen, bevor ein Zeitablauffehler
erfaßt
wird). In einer Ausführungsform
weist das Begrenzungsfeld 348 des Zeitablaufs drei Bits
auf, die codiert sind, wie es nachstehend in Tabelle 1 dargestellt ist:
-
Tabelle
1: Codierung des Begrenzungsfeldes 348 für den Zeitablauf
-
Oft
ist es wünschenswert,
den Grenzwert des Zeitablaufs auf einen Wert zu setzen, der es dem
Anforderungsagenten ermöglicht,
vor Hardware auf niedrigerer Ebene (beispielsweise den Prozessoren 16 oder
anderer Hardware innerhalb der SMP-Knoten 12) in den Zeitablauf
zu gehen. Eine solche Hardware niedrigerer Ebene schaltet oftmals
ab, wenn ein Zeitablauffehler auftritt, jedoch ist eine großzügigere Fehlerhandhabung erwünscht. Eine
Richtlinie zum Berechnen des Zeitablaufs kann beispielsweise die
folgende sein:
TO ⇐ (Zeitablauf
der unteren Ebene × Anzahl
der nicht einfrierbaren Anforderungsagenten) / (Anzahl der Subknoten
in einem Knoten × maximale
Zahl offener Transaktionen pro Knoten)
-
Diese
Gleichung ermöglicht
es, daß Zeitabläufe von
Anforderungsagenten im ungünstigsten
Fall ohne Erzeugen eines Zeitablaufs auf niedrigerem Niveau erfolgen
(d.h. wenn die maximale Anzahl von Transaktionen offen ist, alle
Transaktionen in dem Anforderungsagenten 100 den Zeitablauf überschreiten
und die maximale Anzahl von Anforderungsagenten eingefroren ist).
Wenn beispielsweise 8 der 16 Anforderungsagenten eingefroren sein
können
(wie es in dem Feld 342 für den Einfriergrenzwert codiert
ist), 16M Zyklen verstreichen, bevor eine Zeitablaufüberschreitung
der Hardware auf niedrigerer Ebene auftritt, und es 16 Subknoten in
einem Knoten gibt, von welchem 7 Transaktionen gleichzeitig offen
bzw. anhängig
sein können,
so sollte der Grenzwert für
die Zeitüberschreitung
weniger als 1,14M Zyklen oder gleich diesem Wert sein. Daher kann
für eine
solche Konfigurierung eine Codierung von 1M Zyklen geeignet sein.
-
Schließlich codiert
das Feld 350 der I/O-Begrenzung die maximale Anzahl von
Zustandsmaschinen des Anforderungsagenten, welche gleichzeitig I/O-Anforderungen
bedienen können.
Wenn eine I/O-Transaktion in der SMP PIQ 96 in einer Schlange
angeordnet ist und die maximale Anzahl von I/O-Anforderungen durch
die Zustandsmaschinen des Anforderungsagenten gleichzeitig bedient
werden, so wird die I/O-Transaktion nicht ausgelöst, bis eine der anhängigen I/O-Transaktionen
abgeschlossen ist.
-
Ähnlich dem
Konfigurationsregister 324 des Anforderungsagenten enthält auch
das Konfigurationsregister 326 des Heimatagenten ein Feld 342 der
Einfrierbegrenzung, ein Bit 344 des Zählereinfrierens, ein Bit 346 der
Einfrierfreischaltung, ein Feld 348 für die Grenze der Zeitüberschreitung
und ein Feld 350 für
die I/O-Begrenzung. Diese Felder codieren jedoch Eigenschaften der
Zustandsmaschine des Heimatagenten, wenn sie in dem Konfigurationsregister 326 des
Heimatagenten enthalten sind. Zusätzlich ist ein Feld 352 des DC-Maßes enthalten.
Das Feld 352 des DC-Maßes codiert
die Größe (in Bytes)
der Cachezeilenmaße
des Verzeichnisses. In einer Ausführungsform weist das Feld 352 der
DC-Maße 2 Bits
auf, die codiert sind, wie es in Tabelle 2 unten wiedergegeben ist.
-
Tabelle
2: Codierung des Feldes der DC-Größe
-
Das
Maskenregister 328 des Agenteneinfrierens speichert die
zuvor erwähnten
Masken, welche es erlauben, daß der
Anforderungsagent 100 und der Heimatagent 102 so
konfiguriert werden, daß sie
bei Erfassung gewisser Fehler einfrieren, während sie bei Erfassung anderer
Fehler nicht einfrieren. In einer Ausführungsform enthält jede
Maske ein Bit für
jeden der Fehler, welcher durch den entsprechenden Agenten erfaßt wird.
Wenn das Bit gesetzt ist, so friert eine Zustandsmaschine innerhalb
des betreffenden Agenten bei Erfassung des entsprechenden Fehlers
ein. Alternativ friert der Agent bei Erfassung eines Fehlers, für welchen
das betreffende Bit gelöscht
ist, nicht ein. Das Maskenregister 328 des Agenteneinfrierens
beinhaltet ein Fehlermaskenfeld 354 für die Anforderung und ein Fehlermaskenfeld 356 für die Heimat,
entsprechend dem Anforderungsagenten 100 bzw. dem Heimatagenten 102.
-
Jeder
Zustandsmaschine des Anforderungsagenten ist ein Zustandsmaschinenregister 330 des
Anforderungsagenten zugeordnet zum Speichern von Information, welche
dadurch bediente Transaktionen betrifft. Das Zustandsmaschinenregister 330 des
Anforderungsagenten enthält
ein Adreßfeld 358,
ein Feld 360 für
empfangene Antworten, ein Fehlercodefeld 362, ein Feld 364 für ursprüngliche
Transaktionen, ein SNO-Bit 366 und ein Zustandsfeld 368.
Das Adreßfeld 358 speichert
die Adresse der Transaktion, mit welcher der Fehler verknüpft ist.
Das Feld 360 für
empfangene Antworten enthält
ein Bit für
jeden SMP-Knoten 12A–12D Wenn das
Bit gesetzt ist, so wurde eine Antwort von dem entsprechenden SMP-Knoten 12A–12D empfangen.
Das Fehlercodefeld 362 speichert einen Code, welcher den
erfaßten
Fehler anzeigt. In einer Ausführungsform weist
das Fehlercodefeld 362 3 Bits auf, die codiert sind, wie
es in der nachstehenden Tabelle 3 wiedergegeben ist.
-
Tabelle
3: Codierung des Fehlercodefeldes 362
-
Das
Feld 364 für
ursprüngliche
Transaktion speichert eine Angabe der Transaktion, wie sie von dem SMP-Bus 20 empfangen
wurde. Das SNO-Bit 366 wird gesetzt, wenn eine SNO-Antwort von
dem abhängigen, besitzenden
Agenten 104 empfangen wird. Schließlich zeigt das Zustandsfeld 368 den
Zustand an, in welchem sich die Zustandsmaschine des Anforderungsagenten
befand, als der Fehler erfaßt
wurde.
-
In ähnlicher
Weise ist jeder Zustandsmaschine des Heimatagenten ein Zustandsmaschinenregister 332 des
Heimatagenten zugeordnet. Das Zustandsmaschinenregister 332 des
Heimatagenten enthält
ein Adreßfeld 358,
ein Feld 370 eines ursprünglichen Verzeichnisses, ein
Fehlercodefeld 372, ein Anforderungsfeld 374,
ein Feld 376 der Herkunfts-ID und ein Feld 378 des
Herkunftsknotens. Das Feld 370 des ursprünglichen
Verzeichnisses speichert den Verzeichniseintrag, welcher der Adresse
entspricht, die in dem Adreßfeld 358 gespeichert
ist. Der gespeicherte Verzeichniseintrag ist der Zustand des Verzeichniseintrags
vor der Auslösung
des Vorgangs, für
welchen der Fehler erfaßt
wurde. Das Fehlercodefeld 372 speichert eine Anzeige des
erfaßten
Fehlers. In einer Ausführungsform
weist das Fehlercodefeld 372 3 Bits auf, die codiert sind,
wie es nachstehend in Tabelle 4 wiedergegeben wird.
-
Tabelle
4: Codierung des Fehlercodefeldes 372
-
Das
Anforderungsfeld 374 zeigt die von einem Anforderungsagenten 100 ursprünglich empfangene Anforderung.
Das Feld 376 der Herkunfts-ID speichert die Transaktions-ID
der Transaktion, welche die Auslösung
der Anforderung veranlaßt
hat, welche durch die Zustandsmaschine des Heimatagenten bedient
wird. Schließlich
speichert das Feld 378 des Herkunftsknotens den Knoten,
von welchem die Anforderung empfangen wurde.
-
Gemäß 17 ist eine Tabelle wiedergegeben,
welche die Inhalte des Fehlerzustandsregisters 322 in einer
Ausführungsform
auflistet. Tabelle 380 listet die Felder des Registers (Spalte 382)
und eine Beschreibung des Feldes (Spalte 384) auf. Ein
Feld NIAC_HW wird verwendet, um Hardwarefehler zu speichern, die in
der Systemschnittstelle 24 selbst erfaßt wurden. Ein Bit IDQ_PTR_ERROR
zeigt, wenn es gesetzt ist, an, daß ein Paritätsfehler innerhalb eines von
dem Netzwerk 14 empfangenen Pakets erfaßt wurde. Der Paritätsfehler
wird auf einem Feld erfaßt,
das anzeigt, welcher Eintrag innerhalb der Eingangsdatenschlange 92 die damit übertragenen
Daten speichern soll. Ein GA2LPA_VIOLA_Bit zeigt an, daß beim Zugriff
auf den GA2LPA-Cache durch einen abhängigen Agenten eine Verletzung
erfaßt
wurde. Eine Verletzung wird erfaßt, wenn der Betrieb, für welchen
der abhängige
Agent auf den GA2LPA-Cache zugreift, von der GA2LPA- Übersetzung nicht zugelassen
ist (d.h. ein Schreiben auf eine Nur-Lese-Kohärenzeinheit). Das Bit GA2LP_PERR ist
gesetzt, wenn ein Paritätsfehler
beim Zugriff auf den GA2LPA-Cache erfaßt wurde. Ein NETWORK_ERROR-Bit
ist gesetzt, wenn ein Fehler auf dem Netzwerk 14 erfaßt wurde.
-
Ein
AGENT_ ERROR-Bit ist gesetzt, wenn irgendeines der Bits innerhalb
des Feldes 338" Heimat
eingefroren" oder
des Feldes 340 "Anforderung
eingefroren" gesetzt
ist. Ein Feld HO-ME_LOG
wird verwendet, um diejenigen Fehler zu protokollieren, für welche
die entsprechende Zustandsmaschine des Heimatagenten nicht einfriert
(über das
Fehlermaskenfeld 356 der Heimat). Ein Bit innerhalb des
HOME_LOG-Feldes entspricht jedem der Fehler, welche durch die Zustandsmaschinen
des Heimatagenten erfaßt
wurden. Wenn ein Fehler erfaßt
wird und ein Einfrieren nicht erfolgt, so wird das entsprechende
Bit innerhalb des Feldes HOME_LOG gesetzt. In ähnlicher Weise protokolliert
das Feld REQ_LOG Fehler, die nicht bewirken, daß die erfassende Zustandsmaschine
des Anforderungsagenten einfriert.
-
Das
Bit ADM_ERR wird gesetzt, wenn eine nicht erwartete administrative
Anforderung empfangen wird. Das Bit HOME_CERR wird gesetzt, wenn
eine eingefrorene oder im Leerlauf befindliche Zustandsmaschine
des Heimatagenten einen Kohärenzabschluß empfängt. In ähnlicher
Weise wird das REQ_ RERR-Bit gesetzt, wenn eine eingefrorene oder
im Leerlauf befindliche Zustandsmaschine des Anforderungsagenten eine
Kohärenzerwiderung
empfängt.
Schließlich
werden die Bits ECC_PCE, ECC_PUE, ECC_CCE und ECC_CUE gesetzt, wenn
ein ECC-Fehler auf dem SMP-Bus 20 bezüglich der in Tabelle 380 aufgelisteten Transaktionen
erfaßt
wird.
-
Gemäß 18 ist ein beispielhafter
Zählerschaltkreis 390 dargestellt.
Der Zählerschaltkreis 390 kann als
der Zeitüberschreitungszähler für die Zustandsmaschinen
des Anforderungsagenten und/oder des Heimatagenten verwendet werden.
Der Zählerschaltkreis 390 enthält einen
Zählerspeicher 392,
der ein Zählerfeld 394 und Übertragsbit 396 ebenso
wie einen Multipllexer 398 hat. Der Multiplexer 398 wählt den
Takteingang für
den Zählerschaltkreis
aus einer schnellen Taktleitung 400 und einer langsamen
Taktleitung 402 aus. Das Übertragsbit 396 gewährleistet
die Auswahlsteuerung für
den Multiplexer 398.
-
Wenn
der Zählerschaltkreis 390 zurückgesetzt
wird, werden sowohl das Zählerteld 394 als
auch das Übertragsbit 396 gelöscht. Der
schnelle Takt wird über
den Multiplexer 398 ausgewählt und der in dem Zählerteld 394 gespeicherte
Zählwert
beginnt mit dem schrittweisen Heraufsetzen mit einer Geschwindigkeit
eines Schrittes pro Zyklus des schnellen Taktes. Wenn der Zählerwert
im Zählerfeld 394 überläuft, wird
das Übertragsbit 396 gesetzt.
Das Zählerteld 394 kehrt
zu einem gelöschten
Zustand zurück.
Da das Übertragsbit 396 nunmehr
gesetzt ist, wird der langsame Takt auf der langsamen Taktleitung 402 verwendet,
um den Zählerschaltkreis 390 schrittweise
heraufzuzählen.
-
Der
Zählerschaltkreis 390 implementiert
in vorteilhafter Weise die Zählertunktion,
welche eine kleine Anzahl von Bits verwendet, aber dennoch die Grobkörnigkeit
behält,
um eine Erfassung der ersten von mehreren Zeitüberschreitungen zu ermöglichen,
welche zeitlich relativ nahe beieinander auftreten können. Der Zähler zählt unter
Verwendung zunächst
des schnellen Takts, gefolgt von einer langsameren Zählung unter Verwendung
des langsamen Takts. Da das langsame Zählen nicht beginnt, bevor nicht
ein Überlauf
des Zählers
unter Verwendung des schnellen Takts aufgetreten ist, beginnen Vorgänge, welche
zeitlich relativ nahe beieinander ausgelöst werden, mit dem Zählen unter
dem langsamen Takt bei verschiedenen Zeiten. Der zuerst ausgelöste Vorgang
beginnt mit dem Zählen
auf dem langsamen Zähler
zuerst, gefolgt von dem zweiten, etc. Daher hatte der erste Vorgang
eine Zeitüberschreitung
vor dem zweiten Vorgang etc. Wann immer ein Übertragsbit 396 anfänglich gesetzt
ist, wird ein Extraimpuls auf dem langsamen Takt erzeugt, um die
Grobkörnigkeit
beizubehalten, welche durch Verwendung des schnelleren Takts erzeugt
wurde. Auf diese Weise bleibt der Zähler, der mit dem langsameren
Takt zuerst zu zählen
begann, vor irgendwelchen Zählern,
welche im Anschluß das
Zählen
mit dem langsameren Takt beginnen. Indem auf den langsameren Takt
umgeschaltet wird, kann eine kleinere Anzahl von Bits verwendet
werden, um durch eine konstante Anzahl von Taktzyklen hindurch zu
zählen,
als es erforderlich wäre,
wenn durchgehend der schnellere Takt verwendet würde.
-
Beispielsweise
kann der schnelle Takt mit einer Periode von vier Taktzyklen ausgelegt
sein (wobei der Takt, welcher den Taktzyklus definiert, der durch
die Systemschnittstelle 24 zugeführte Takt ist). Wenn ein Zeitüberschreitungswert
von näherungsweise
1 Mzyklen erwünscht
ist, so würde
der Zählerschaltkreis
18 Bits erfordern (d.h. 218 ≅ 250 Kzyklen × 4 Takte/schnelle
Taktperiode). Bei einer Verwendung des langsamen Taktschaltkreises 390 und
eines langsamen Taktes mit einer Periode von 2000 Zyklen weist jedoch
das Zählerteld 394 möglicherweise
nur 9 Bits auf (d.h. 29 = 512 × (2000
Takte/langsame Taktperiode + 4 Takte/schnelle Taktperiode)).
-
Auch
wenn die SMP-Knoten 12 in den obigen beispielhaften Ausführungsformen
beschrieben worden sind, kann allgemein gesprochen eine Ausführungsform
des Computersystems 10 ein oder mehrere Verarbeitungsknoten
aufweisen. In dem hier verwendeten Sinne enthält ein Verarbeitungsknoten
zumindest einen Prozessor und zumindest einen entsprechenden Speicher.
Zusätzlich
ist eine Schaltung zum Kommunizieren mit anderen Verarbeitungsknoten
darin enthalten. Wenn in einer Ausführungsform des Computersystems 10 mehr als
ein Verarbeitungsknoten enthalten ist, bilden die entsprechenden
Speicher innerhalb der Verarbeitungsknoten einen verteilten, gemeinsam
verwendeten Speicher. Ein Verarbeitungsknoten kann als entfernt
bzw. ferngelegen oder lokal bezeichnet werden. Ein Verarbeitungsknoten
ist ein entfernter Verarbeitungsknoten bezüglich eines bestimmten Prozessors,
wenn der Verarbeitungsknoten den betreffenden Prozessor nicht enthält. Umgekehrt
ist der Prozessorknoten, welcher den betreffenden Prozessor enthält, der
lokale Verarbeitungsknoten des betreffenden Prozessors.
-
Es
versteht sich, daß der
Anforderungsagent 100 und der Heimatagent 102 beschrieben
worden sind als solche, die eine Fehlerprotokollierung durchführen. Jeder
Protokollagent kann jedoch eine ähnliche
Fehlerprotokollfunktion durchführen.
Allgemein gesprochen ist ein Protokollagent eine Zustandsmaschine
oder besteht aus mehreren Zustandsmaschinen, die eine Kohärenzaktion
in Reaktion auf eine Transaktion durchführen, für welche Kohärenzaktivität notwendig
ist. Eine Kohärenzaktion
weist einen Teil der Kohärenzaktivität auf, die
verwendet wird, um die geeigneten Zugriffsrechte zu erhalten, um
eine bestimmte Transaktion durchzuführen. Die Kohärenzaktion
wird durch einen einzelnen Verarbeitungsknoten durchgeführt, der
in der Kohärenzaktivität enthalten
ist.
-
Gemäß der vorstehenden
Offenbarung ist ein Computersystem beschrieben worden, welches Fehlerprotokollierung
bezüglich
der darin ausgeführten
Kohärenzaktivität ausführt. Die
Fehler werden für
spätere
Diagnosezugriffe protokolliert, jedoch bleibt das Computersystem
in Funktion. In vorteilhafter Weise zeigt das Computersystem ein
hohes Maß an
Verfügbarkeit
und Zuverlässigkeit,
was es ermöglicht,
daß Anwendungen mit
kritischen Aufgaben darauf ausgeführt werden.
-
Zahlreiche
Variationen und Modifikationen sind für Fachleute auf dem Gebiet
offensichtlich, wenn sie die obige Offenbarung vollständig würdigen.
Beispielsweise können,
auch wenn verschiedene Blöcke
und Komponenten, die hier dargestellt sind, in Form von Hardwareausführungsformen
beschrieben wurden, alternative Ausführungsformen sämtliche
oder einen Teil der Hardwarefunktionalität in Software implementieren.