DE69727856T2 - Multiprozessorsystem mit Konsistenzfehler-Registrierung mit entsprechendem Verfahren - Google Patents

Multiprozessorsystem mit Konsistenzfehler-Registrierung mit entsprechendem Verfahren Download PDF

Info

Publication number
DE69727856T2
DE69727856T2 DE69727856T DE69727856T DE69727856T2 DE 69727856 T2 DE69727856 T2 DE 69727856T2 DE 69727856 T DE69727856 T DE 69727856T DE 69727856 T DE69727856 T DE 69727856T DE 69727856 T2 DE69727856 T2 DE 69727856T2
Authority
DE
Germany
Prior art keywords
agent
coherency
state
request
error
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Expired - Fee Related
Application number
DE69727856T
Other languages
English (en)
Other versions
DE69727856D1 (de
Inventor
Erik E. Palo Alto Hagersten
John R. Londonperry Catenzaro
William A. Windham Nesheim
Monica C. Concord Wong-Chan
Jr. Robert C. Lexington Zak
Paul N. Palo Alto Loewenstein
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Sun Microsystems Inc
Original Assignee
Sun Microsystems Inc
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Sun Microsystems Inc filed Critical Sun Microsystems Inc
Publication of DE69727856D1 publication Critical patent/DE69727856D1/de
Application granted granted Critical
Publication of DE69727856T2 publication Critical patent/DE69727856T2/de
Anticipated expiration legal-status Critical
Expired - Fee Related legal-status Critical Current

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/22Detection or location of defective computer hardware by testing during standby operation or during idle time, e.g. start-up testing
    • G06F11/2205Detection or location of defective computer hardware by testing during standby operation or during idle time, e.g. start-up testing using arrangements specific to the hardware being tested
    • YGENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y10TECHNICAL SUBJECTS COVERED BY FORMER USPC
    • Y10STECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y10S707/00Data processing: database and file management or data structures
    • Y10S707/99951File or database maintenance
    • Y10S707/99952Coherency, e.g. same view to multiple users

Description

  • 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 12A12D 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 12A12D 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 16A16B 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 12A12D 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 32A32D, mehrere Caches 34A34D, mehrere Speicher 36A36D 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 36A36D 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 36B36D 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 42A42D, mehrere Caches 44A44D, mehrere Speicher 46A46D 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 12A12D auf eine Speicheradresse auf NUMA-Weise zugegriffen werden, während von einem anderen SMP-Knoten 12A12D 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) 76A76B 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 12A12D hält die Kohärenzeinheit entweder in dem modifizier ten Zustand oder im Besitzzustand aufrecht. Typischerweise beschafft der besitzende SMP-Knoten 12A12D die Kohärenzeinheit in dem Modifiziert-Zustand (siehe S. 13 unten). Anschließend kann dann der besitzende SMP-Knoten 12A12D beim Bereitstellen einer Kopie der Kohärenzeinheit für einen anderen SMP-Knoten 12A12D in den Besitzzustand übergehen. Der andere SMP-Knoten 12A12D 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 12A12D 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 12A12D 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 12A12D 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 12A12D, 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 12A12D die aktualisierte Kopie der Kohärenzeinheit nicht in den Heimat-SMP-Knoten 12A12D 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 12A12D (des "anfordernden Knotens"), dem Heimatagenten 102 eines zweiten SMP-Knotens 12A12D (des "Heimatknotens") und dem abhängigen Agenten 104 eines dritten SMP-Knotens 12A12D (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 913 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 12A12D der Besitzer der Kohärenzeinheit ist und daß jeder der anderen SMP-Knoten 12A12D 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 912 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 912 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 1012 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 911 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 12A12D, 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 12A12D 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
    Figure 00360001
  • 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
    Figure 00380001
  • 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 12A12D Wenn das Bit gesetzt ist, so wurde eine Antwort von dem entsprechenden SMP-Knoten 12A12D 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
    Figure 00380002
  • 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
    Figure 00390001
  • 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.

Claims (22)

  1. Vorrichtung für das Protokollieren von Fehlern für ein Computersystem mit einem verteilten, gemeinsam verwendeten Speicher, mit: einem Protokollagenten (100; 102), der dafür ausgelegt ist, in Reaktion auf einen Zugriff auf eine Kohärenzeinheit durch einen Verarbeitungsknoten (12A) eine Kohärenzaktion auszuführen, wobei die Kohärenzaktion einen Teil von Kohärenzaktivität aufweist, die verwendet wird, um geeignete Zugriffsrechte zu erhalten, um den Zugriff durchzuführen, und einer Speichereinrichtung (320), die dafür ausgelegt ist, eine Anzeige des Protokollagenten bei Erfassung eines Fehlers durch den Protokollagenten zu speichern.
  2. Vorrichtung nach Anspruch 1, wobei der Protokollagent eine Mehrzahl von Zustandsmaschinen (300, 310) aufweist, und wobei die Mehrzahl von Zustandsmaschinen dafür ausgelegt ist, die Kohärenzaktion in Reaktion auf den Zugriff gleichzeitig mit anderen aus der Mehrzahl von Zustandsmaschinen auszuführen, welche andere Kohärenzaktionen ausführen.
  3. Vorrichtung nach Anspruch 2, wobei die Anzeige weiterhin eine aus der Mehrzahl von Zustandsmaschinen identifiziert und wobei die eine aus der Mehrzahl von Zustandsmaschinen die Kohärenzaktion ausführt, für welche der Fehler erfaßt wird.
  4. Vorrichtung nach Anspruch 3, wobei der Protokollagent einen Heimatagenten (102) aufweist.
  5. Vorrichtung nach Anspruch 3, wobei der Protokollagent einen Anforderungsagenten (100) aufweist.
  6. Vorrichtung nach Anspruch 5, wobei der Anforderungsagent weiterhin dafür ausgelegt ist, Fehler zu protokollieren, die durch einen abhängigen Agenten (104) erfaßt wurden.
  7. Vorrichtung nach Anspruch 2, wobei die eine aus der Mehrzahl von Zustandsmaschinen, welche den Fehler erfaßt, einen eingefrorenen Zustand (304, 314) umfaßt, und wobei der Eintritt in den eingefrorenen Zustand bei Erfassung des Fehlers erfolgt, so daß eine Transaktionsinformation, welche sich auf diesen Zugriff bezieht, erhalten bleibt.
  8. Vorrichtung nach Anspruch 7, wobei die eine aus der Mehrzahl von Zustandsmaschinen über einen Erholungszustand (302, 312) in den eingefrorenen Zustand übergeht, wobei Ressourcen, die durch den Zugriff besetzt wurden, freigegeben werden.
  9. Vorrichtung nach einem der vorstehenden Ansprüche, welche weiterhin eine zweite Speichereinrichtung (322) aufweist, die dafür ausgelegt ist, eine zweite Anzeige zu speichern, welche den Fehler kennzeichnet.
  10. Vorrichtung nach Anspruch 9, wobei der Fehler eine Unterbrechung bzw. eine Auszeit aufweist, während welcher ein vorbestimmtes Zeitintervall von der Auslösung des Zugriffs abläuft, bevor der Zugriff abgeschlossen wird.
  11. Vorrichtung nach Anspruch 9, wobei der Fehler einen Empfang einer unerwarteten Kohärenzaktion durch den Protokollagenten aufweist.
  12. Vorrichtung nach Anspruch 9, welche weiterhin eine dritte Speichereinrichtung (330; 332) aufweist, die dafür ausgelegt ist, Daten zu speichern, welche eine Transaktion kenrnzeichnen, für welche der Fehler erfaßt wird.
  13. Verfahren zum Protokollieren von Fehlern für ein Computersystem mit einem verteilten, gemeinsam verwendeten Speicher, mit: Ausführen einer Kohärenzaktion durch einen Protokollagenten (100; 102) in Reaktion auf einen Zugriff auf eine Kohärenzeinheit durch einen Verarbeitungsknoten (12A), wobei die Kohärenzaktion einen Teil von Kohärenzaktivität aufweist, die verwendet wird, um geeignete Zugriffsrechte zu erwerben, um den Zugriff auszuführen, und Speichern einer Anzeige des Protokollagenten in einer Speichereinrichtung (320) bei Erfassung eines Fehlers durch den Protokollagenten.
  14. Verfahren nach Anspruch 13, welches weiterhin aufweist: Übergehen in einen Erholungszustand (302; 312) innerhalb einer Mehrzahl von Zustandsmaschinen (300; 310), welche den Protokollagenten aufweisen, und zwar in Reaktion auf die Erfassung des Fehlers, wodurch Ressourcen, die durch die Transaktion besetzt wurden, freigegeben werden, und wobei die eine aus der Mehrzahl von Zustandsmaschinen die Kohärenzaktion für den Zugriff bearbeitet, und Übergehen in einen eingefrorenen Zustand (304; 314) innerhalb der Mehrzahl von Zustandsmaschinen, wobei Transaktionsinformation, welche sich auf die Transaktion bezieht, erhalten wird.
  15. Verfahren nach Anspruch 14, welches weiterhin das Übergehen in einen Leerlaufzustand (148; 166) anstelle des eingefrorenen Zustands aufweist, falls mehr als eine maximale Anzahl aus der Mehrzahl von Zustandsmaschinen sich in dem eingefrorenen Zustand befinden.
  16. Verfahren nach Anspruch 15, wobei die maximale Anzahl programmierbar ist.
  17. Verfahren nach Anspruch 15, welches weiterhin einen Übergang in den Leerlaufzustand anstelle des eingefrorenen Zustandes aufweist, falls der Fehler über ein programmierbares Maskenfeld abgeschaltet wird.
  18. Verfahren nach einem der Ansprüche 13 bis 17, welches weiterhin das Speirhern einer Anzeige des Fehlers in einem Register aufweist.
  19. Verfahren nach einem der Ansprüche 13 bis 18, wobei der Protokollagent einen Anforderungsagenten aufweist.
  20. Verfahren nach Anspruch 19, wobei die Erfassung das Empfangen einer Anzeige des Fehlers von einem abhängigen Agenten aufweist.
  21. Computersystem mit: einem ersten Verarbeitungsknoten, welcher eine Vorrichtung entsprechend einem der Ansprüche 1 bis 3 enthält, wobei der Protokollagent ein Anforderungsagent (100) ist, welcher dafür ausgelegt ist, einen ersten Fehler bezüglich einer von dort ausgelösten Kohärenzanforderung zu erfassen und zu protokollieren, und einem zweiten Verarbeitungsknoten, welcher eine Vorrichtung gemäß einem der Ansprüche 1 bis 3 enthält, wobei der Protokollagent ein Heimatagent (102) ist, und welcher dafür ausgelegt ist, einen zweiten Fehler bezüglich einer Kohärenzanforderung, die von dort ausgelöst wurde, zu erfassen und zu protokollieren.
  22. Computersystem nach Anspruch 21, welches weiterhin einen dritten Verarbeitungsknoten aufweist, der einen abhängigen Agenten (104) umfaßt, wobei der abhängige Agent dafür ausgelegt ist, bezüglich einer Kohärenzanforderung, die darin empfangen wird, einen dritten Fehler zu erfassen, und wobei der abhängige Agent dafür ausgelegt ist, eine Anzeige des dritten Fehlers an den Anforderungsagenten zu übermitteln.
DE69727856T 1996-07-01 1997-06-27 Multiprozessorsystem mit Konsistenzfehler-Registrierung mit entsprechendem Verfahren Expired - Fee Related DE69727856T2 (de)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US674276 1991-03-21
US08/674,276 US5862316A (en) 1996-07-01 1996-07-01 Multiprocessing system having coherency-related error logging capabilities

Publications (2)

Publication Number Publication Date
DE69727856D1 DE69727856D1 (de) 2004-04-08
DE69727856T2 true DE69727856T2 (de) 2005-02-10

Family

ID=24706004

Family Applications (1)

Application Number Title Priority Date Filing Date
DE69727856T Expired - Fee Related DE69727856T2 (de) 1996-07-01 1997-06-27 Multiprozessorsystem mit Konsistenzfehler-Registrierung mit entsprechendem Verfahren

Country Status (4)

Country Link
US (1) US5862316A (de)
EP (1) EP0817051B1 (de)
JP (1) JPH10133917A (de)
DE (1) DE69727856T2 (de)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7941610B2 (en) 2006-04-27 2011-05-10 Hewlett-Packard Development Company, L.P. Coherency directory updating in a multiprocessor computing system

Families Citing this family (53)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
ATE254778T1 (de) * 1997-09-05 2003-12-15 Sun Microsystems Inc Nachschlagtabelle und verfahren zur datenspeicherung darin
US6249520B1 (en) * 1997-10-24 2001-06-19 Compaq Computer Corporation High-performance non-blocking switch with multiple channel ordering constraints
US6622264B1 (en) 1999-10-28 2003-09-16 General Electric Company Process and system for analyzing fault log data from a machine so as to identify faults predictive of machine failures
US6947797B2 (en) * 1999-04-02 2005-09-20 General Electric Company Method and system for diagnosing machine malfunctions
US6343236B1 (en) * 1999-04-02 2002-01-29 General Electric Company Method and system for analyzing fault log data for diagnostics
US6405322B1 (en) * 1999-04-13 2002-06-11 Hewlett-Packard Company System and method for recovery from address errors
US20110208567A9 (en) * 1999-08-23 2011-08-25 Roddy Nicholas E System and method for managing a fleet of remote assets
US6536000B1 (en) 1999-10-15 2003-03-18 Sun Microsystems, Inc. Communication error reporting mechanism in a multiprocessing computer system
US6658603B1 (en) 2000-04-17 2003-12-02 International Business Machines Corporation Method and apparatus for efficiently generating and implementing engine error codes and verifying the correctness of the implementation of the engine error codes
US6618823B1 (en) 2000-08-15 2003-09-09 Storage Technology Corporation Method and system for automatically gathering information from different types of devices connected in a network when a device fails
US6826619B1 (en) 2000-08-21 2004-11-30 Intel Corporation Method and apparatus for preventing starvation in a multi-node architecture
US6487643B1 (en) 2000-09-29 2002-11-26 Intel Corporation Method and apparatus for preventing starvation in a multi-node architecture
JP3377994B2 (ja) * 2000-11-14 2003-02-17 三菱電機株式会社 データ配信管理装置およびデータ配信管理方法
US6772298B2 (en) 2000-12-20 2004-08-03 Intel Corporation Method and apparatus for invalidating a cache line without data return in a multi-node architecture
US6791412B2 (en) * 2000-12-28 2004-09-14 Intel Corporation Differential amplifier output stage
US7234029B2 (en) * 2000-12-28 2007-06-19 Intel Corporation Method and apparatus for reducing memory latency in a cache coherent multi-node architecture
US20020087775A1 (en) * 2000-12-29 2002-07-04 Looi Lily P. Apparatus and method for interrupt delivery
US20020087766A1 (en) * 2000-12-29 2002-07-04 Akhilesh Kumar Method and apparatus to implement a locked-bus transaction
US6721918B2 (en) 2000-12-29 2004-04-13 Intel Corporation Method and apparatus for encoding a bus to minimize simultaneous switching outputs effect
US6701464B2 (en) * 2001-03-01 2004-03-02 International Business Machines Corporation Method and system for reporting error logs within a logical partition environment
US7085869B1 (en) * 2001-04-04 2006-08-01 Advanced Micro Devices, Inc. Arrangement for managing transmitted packets requiring acknowledgement in a host channel adapter
US6971098B2 (en) 2001-06-27 2005-11-29 Intel Corporation Method and apparatus for managing transaction requests in a multi-node architecture
US6973643B2 (en) * 2001-08-17 2005-12-06 International Business Machines Corporation Method, system and program for handling errors occurring in function calls
US6993675B2 (en) * 2002-07-31 2006-01-31 General Electric Company Method and system for monitoring problem resolution of a machine
US6810312B2 (en) * 2002-09-30 2004-10-26 General Electric Company Method for identifying a loss of utilization of mobile assets
US8185602B2 (en) 2002-11-05 2012-05-22 Newisys, Inc. Transaction processing using multiple protocol engines in systems having multiple multi-processor clusters
US7069479B2 (en) * 2002-11-07 2006-06-27 International Business Machines Corporation Method and apparatus for obtaining diagnostic data for a device attached to a computer system
US7424653B2 (en) * 2003-05-09 2008-09-09 Hewlett-Packard Development Company, L.P. System and method for error capture and logging in computer systems
CA2433750A1 (en) 2003-06-27 2004-12-27 Ibm Canada Limited - Ibm Canada Limitee Automatic collection of trace detail and history data
US7685573B2 (en) * 2003-07-31 2010-03-23 Sun Microsystems, Inc. Flexible error trace mechanism
US8302111B2 (en) 2003-11-24 2012-10-30 Time Warner Cable Inc. Methods and apparatus for hardware registration in a network device
US7266726B1 (en) * 2003-11-24 2007-09-04 Time Warner Cable Inc. Methods and apparatus for event logging in an information network
US7107411B2 (en) * 2003-12-16 2006-09-12 International Business Machines Corporation Apparatus method and system for fault tolerant virtual memory management
US9213538B1 (en) 2004-02-06 2015-12-15 Time Warner Cable Enterprises Llc Methods and apparatus for display element management in an information network
US7251755B2 (en) * 2004-02-13 2007-07-31 Intel Corporation Apparatus and method for maintaining data integrity following parity error detection
US8078669B2 (en) 2004-02-18 2011-12-13 Time Warner Cable Inc. Media extension apparatus and methods for use in an information network
US7437618B2 (en) * 2005-02-11 2008-10-14 International Business Machines Corporation Method in a processor for dynamically during runtime allocating memory for in-memory hardware tracing
US7418629B2 (en) * 2005-02-11 2008-08-26 International Business Machines Corporation Synchronizing triggering of multiple hardware trace facilities using an existing system bus
US20060184837A1 (en) * 2005-02-11 2006-08-17 International Business Machines Corporation Method, apparatus, and computer program product in a processor for balancing hardware trace collection among different hardware trace facilities
US7437617B2 (en) * 2005-02-11 2008-10-14 International Business Machines Corporation Method, apparatus, and computer program product in a processor for concurrently sharing a memory controller among a tracing process and non-tracing processes using a programmable variable number of shared memory write buffers
US7904760B2 (en) * 2005-07-06 2011-03-08 Cisco Technology, Inc. Method and system for using presence information in error notification
US7500141B2 (en) * 2005-11-29 2009-03-03 International Business Machines Corporation Saving state data in parallel in a multi-processor system
US7805634B2 (en) * 2006-09-16 2010-09-28 International Business Machines Corporation Error accumulation register, error accumulation method, and error accumulation system
US8370818B2 (en) 2006-12-02 2013-02-05 Time Warner Cable Inc. Methods and apparatus for analyzing software interface usage
US8127181B1 (en) * 2007-11-02 2012-02-28 Nvidia Corporation Hardware warning protocol for processing units
US8250308B2 (en) * 2008-02-15 2012-08-21 International Business Machines Corporation Cache coherency protocol with built in avoidance for conflicting responses
US9274909B2 (en) 2013-08-23 2016-03-01 Scaleo Chip Method and apparatus for error management of an integrated circuit system
JP5800058B2 (ja) * 2014-05-26 2015-10-28 富士通株式会社 情報処理装置、制御方法および制御プログラム
JP6724583B2 (ja) * 2016-06-15 2020-07-15 富士通株式会社 情報処理装置、情報処理方法、プログラム及び情報処理システム
US11716558B2 (en) 2018-04-16 2023-08-01 Charter Communications Operating, Llc Apparatus and methods for integrated high-capacity data and wireless network services
EP3864917A4 (de) 2018-10-12 2022-07-06 Charter Communications Operating, LLC Vorrichtung und verfahren zur identifizierung von zellen in drahtlosen netzwerken
US11129171B2 (en) 2019-02-27 2021-09-21 Charter Communications Operating, Llc Methods and apparatus for wireless signal maximization and management in a quasi-licensed wireless system
US11026205B2 (en) 2019-10-23 2021-06-01 Charter Communications Operating, Llc Methods and apparatus for device registration in a quasi-licensed wireless system

Family Cites Families (26)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4674038A (en) * 1984-12-28 1987-06-16 International Business Machines Corporation Recovery of guest virtual machines after failure of a host real machine
US5019971A (en) * 1987-04-13 1991-05-28 Prime Computer, Inc. High availability cache organization
DE68923863T2 (de) * 1989-01-13 1996-03-28 Ibm Ein-/Ausgabecachespeicherung.
JPH02297228A (ja) * 1989-05-11 1990-12-07 Fujitsu Ltd 障害情報格納方式
US5113514A (en) * 1989-08-22 1992-05-12 Prime Computer, Inc. System bus for multiprocessor computer system
US5297269A (en) * 1990-04-26 1994-03-22 Digital Equipment Company Cache coherency protocol for multi processor computer system
US5253359A (en) * 1990-06-11 1993-10-12 Supercomputer Systems Limited Partnership Control and maintenance subsystem network for use with a multiprocessor computer system
US5649090A (en) * 1991-05-31 1997-07-15 Bull Hn Information Systems Inc. Fault tolerant multiprocessor computer system
EP0553743A1 (de) * 1992-01-31 1993-08-04 Motorola, Inc. Cachespeichersteuerungseinrichtung
US5361267A (en) * 1992-04-24 1994-11-01 Digital Equipment Corporation Scheme for error handling in a computer system
US5629950A (en) * 1992-04-24 1997-05-13 Digital Equipment Corporation Fault management scheme for a cache memory
US5426754A (en) * 1992-05-26 1995-06-20 International Business Machines Corporation Cross-interrogate method and means for combined scaler and vector processing system
US5355471A (en) * 1992-08-14 1994-10-11 Pyramid Technology Corporation Multiprocessor cache coherency tester that exercises the coherency logic exhaustively and also detects errors in a processor using an automatic CPU sort
US5428766A (en) * 1992-12-01 1995-06-27 Digital Equipment Corporation Error detection scheme in a multiprocessor environment
US6233702B1 (en) * 1992-12-17 2001-05-15 Compaq Computer Corporation Self-checked, lock step processor pairs
US5418794A (en) * 1992-12-18 1995-05-23 Amdahl Corporation Error determination scan tree apparatus and method
GB2276739A (en) * 1993-03-30 1994-10-05 Ibm System for storing persistent and non-persistent queued data.
US5406504A (en) * 1993-06-30 1995-04-11 Digital Equipment Multiprocessor cache examiner and coherency checker
US5491788A (en) * 1993-09-10 1996-02-13 Compaq Computer Corp. Method of booting a multiprocessor computer where execution is transferring from a first processor to a second processor based on the first processor having had a critical error
US5463768A (en) * 1994-03-17 1995-10-31 General Electric Company Method and system for analyzing error logs for diagnostics
US5608878A (en) * 1994-10-03 1997-03-04 International Business Machines Corporation Dual latency status and coherency reporting for a multiprocessing system
US5581713A (en) * 1994-10-25 1996-12-03 Pyramid Technology Corporation Multiprocessor computer backplane bus in which bus transactions are classified into different classes for arbitration
US5615335A (en) * 1994-11-10 1997-03-25 Emc Corporation Storage system self-test apparatus and method
US5557748A (en) * 1995-02-03 1996-09-17 Intel Corporation Dynamic network configuration
US5581729A (en) * 1995-03-31 1996-12-03 Sun Microsystems, Inc. Parallelized coherent read and writeback transaction processing system for use in a packet switched cache coherent multiprocessor system
US5619644A (en) * 1995-09-18 1997-04-08 International Business Machines Corporation Software directed microcode state save for distributed storage controller

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7941610B2 (en) 2006-04-27 2011-05-10 Hewlett-Packard Development Company, L.P. Coherency directory updating in a multiprocessor computing system

Also Published As

Publication number Publication date
JPH10133917A (ja) 1998-05-22
EP0817051A3 (de) 2001-03-28
DE69727856D1 (de) 2004-04-08
EP0817051A2 (de) 1998-01-07
EP0817051B1 (de) 2004-03-03
US5862316A (en) 1999-01-19

Similar Documents

Publication Publication Date Title
DE69727856T2 (de) Multiprozessorsystem mit Konsistenzfehler-Registrierung mit entsprechendem Verfahren
DE69722512T2 (de) Mehrrechnersystem mit einem die Anzahl der Antworten enthaltenden Kohärenzprotokoll
DE69722079T2 (de) Ein Mehrrechnersystem mit Anordnung zum Durchführen von Blockkopieroperationen
DE69729243T2 (de) Multiprozessorsystem mit Vorrichtung zur Optimierung von Spin-Lock-Operationen
DE69721643T2 (de) Multiprozessorsystem ausgestaltet zur effizienten Ausführung von Schreiboperationen
DE69724354T2 (de) Ein Mehrprozessorrechnersystem mit lokalen und globalen Adressräumen und mehreren Zugriffsmoden
DE69724353T2 (de) Mehrrechnersystem mit einem Drei-Sprung-Kommunikationsprotokoll
DE69906585T2 (de) Datenverarbeitungssystem mit nichtuniformen speicherzugriffen (numa) mit spekulativer weiterleitung einer leseanforderung an einen entfernten verarbeitungsknoten
DE69721891T2 (de) Deterministisches Kohärenzprotokoll für verteilten Multicache-Speicher
DE69531933T2 (de) Busarchitektur in hochgradiger pipeline-ausführung
DE69724355T2 (de) Erweiterte symmetrische Multiprozessorarchitektur
DE10262164B4 (de) Computersystem mit einer hierarchischen Cacheanordnung
DE102009022151B4 (de) Verringern von Invalidierungstransaktionen aus einem Snoop-Filter
DE60215417T2 (de) Netzwerkschaltung
DE112013000891T5 (de) Verbessern der Prozessorleistung für Befehlsfolgen, die Sperrbefehle enthalten
DE60204213T2 (de) Level 2 Cache mit lokaler Beibehaltung von Kohärenzblöcken
DE102013201079A1 (de) Mechanismus des Weiterleitungsfortschritts für Speichervorgänge beim Vorhandensein einer Überlastung in einem System, das Belastungen durch Zustandsänderungen begünstigt
DE102007052853B4 (de) Zeilentauschschema zur Verringerung von Rückinvalidierungen in einem Snoopfilter
DE10316725B4 (de) Datenverwaltungsverfahren für ein Distributed Shared Memory-System
DE112019000629B4 (de) Koordination von cacheoperationen
DE102009023898A1 (de) Optimierung von gleichzeitigen Zugriffen in einem verzeichnisbasierten Kohärenzprotokoll
DE112015004336T5 (de) Konfigurationsbasierte Auswahl eines Cachekohärenz-Protokolls
DE112007001171T5 (de) Verfahren für virtualisierten Transaktionsspeicher bei globalem Überlauf
DE102007030116A1 (de) Snoop-Filter mit ausschließlicher Inhaberschaft
DE4417068A1 (de) Verfahren und Einrichtung zum Betreiben eines Einzel-Prozessor-Computersystems als Mehr-Prozessor-System

Legal Events

Date Code Title Description
8332 No legal effect for de
8370 Indication related to discontinuation of the patent is to be deleted
8339 Ceased/non-payment of the annual fee