-
Diese
Erfindung bezieht sich auf Unterbrechungs- bzw. Interrupt-Mechanismen
in Mehrfach-Prozessor-Systemen
und auf einen solchen Interrupt-Mechanismus, bei dem der Interrupt
von einem Prozessor an einen anderen Prozessor auf einem unterschiedlichen
Systembus gesendet wird.
-
In
Mehrfach-Prozessor-Systemen, bei denen die mehreren Prozessoren
auf demselben Systembus sind, werden Interrupts zwischen Prozessoren mit
geringer oder ohne Verzögerung
ausgetauscht. Ein Interrupt von einem ersten Prozessor an einen zweiten
Prozessor wird von dem zweiten Prozessor entweder bestätigt (ACK-Signal)
oder nicht bestätigt (NACK-Signal).
Abhängig
davon, ob ein ACK oder ein NACK von dem ersten Prozessor als Zustand
zurück
aus dem zweiten Prozessor empfangen wird, fährt der erste Prozessor fort,
die Interrupt-Daten zu senden oder die Interrupt-Transaktion abzubrechen.
-
Wenn
ein Mehrfach-Prozessor-System mehrere Systembusse hat, sind die
verschiedenen Systembusse durch eine globale Verbindungsstruktur wie
etwa einen Bus oder ein Kommunikationsnetz verbunden. In dieser
Umgebung kann es eine beträchtliche
Verzögerung
zwischen dem Senden der Interrupt-Adresse durch den einleitenden
Prozessor, um die Interrupt-Transaktion zu beginnen, und dem Empfang
des ACK- oder NACK-Zustands durch den einleitenden Prozessor zurück von einem
Zielprozessor auf einem anderen Systembus geben.
-
Wenn
eine Interrupt-Transaktion zu viel Zeit braucht, um abgeschlossen
zu werden, kann der Prozessor, der die Interrupt-Transaktion einleitet,
entweder Verarbeitungszeit bei der Behandlung der Interrupt-Transaktion
vergeuden, die Transaktion erneut einleiten oder die Transaktion
abbrechen.
-
Die
Europäische
Patentanmeldung EP-A-0.398.649 beschreibt ein Datenverarbeitungsnetz
mit Mitteln zum Unterbrechen eines Prozesses, der auf einem entfernt
gelegenen Netzknoten ausgeführt
wird, von einem lokalen Knoten. Die Kommunikationslogik baut eine
zweite Kommunikationsverbindung zwischen dem lokalen Knoten und
dem entfernt gelegenen Konten auf, und eine Interrupt-Anforderung
wird über
diese zweite Kommunikationsverbindung gesendet. Die Interrupt-Logik unterbricht
den entfernt ausgeführten
Prozeß als
Reaktion auf die Interrupt-Anforderung.
-
Verschiedene
Aspekte der Erfindung werden in den beigefügten unabhängigen und abhängigen Ansprüchen dargelegt.
-
In
einer Ausführungsform
dieser Erfindung wird das obige Problem durch Durchführen einer
Interrupt-Transaktion in einem Mehrfach-Prozessor-System zwischen
einem Quellprozessor auf einem lokalen Systembus und einem entfernt
gelegenen Zielprozessor auf einem entfernt gelegenen Systembus gelöst. Der
lokale Systembus ist durch eine Schnittstellensteuerung des lokalen
Knotens mit einer globalen Verbindungsstruktur verbunden, und der
Zielsystembus ist durch eine Schnittstellensteuerung des entfernt
gelegenen Knotens mit der globalen Verbindungsstruktur verbunden.
Der Quellprozessor leitet eine Interrupt-Anforderung auf dem lokalen
Systembus ein. Die Schnittstellensteuerung des lokalen Knotens nimmt
die Interrupt-Anforderung entgegen und sendet einen Igno rierungszustand
an den Quellprozessor, wenn die Interrupt-Anforderung an einen Zielprozessor
auf dem entfernt gelegenen Systembus adressiert ist. In diesem Fall
gibt die Schnittstelle des lokalen Knotens außerdem die Interrupt-Anforderung über die
globale Verbindungsstruktur an die Schnittstellensteuerung des entfernt gelegenen
Knotens weiter. Der Quellprozessor setzt als Reaktion auf den Ignorierungszustand
seinen Interrupt-Transaktions-Prozeß aus. Die Schnittstellensteuerung
des entfernt gelegenen Knotens reagiert auf die Interrupt-Anforderung,
um die Anforderung an den Zielprozessor zu senden. Der Zielprozessor
reagiert auf die Interrupt-Anforderung und gibt ein ACK-(Acknowledge- bzw.
Bestätigungs)-Signal
zurück,
wenn der Zielprozessor bereit ist, die Interrupt-Anforderung zu verarbeiten, und gibt
ein NACK-(Non-Acknowledge- bzw. Nicht-Bestätigungs)-Signal zurück, wenn
der Zielprozessor beschäftigt
ist. Die Schnittstellensteuerung des entfernt gelegenen Knotens
gibt das ACK- oder NACK-Signal über
die globale Verbindungsstruktur an die Schnittstellensteuerung des
lokalen Knotens zurück.
Die Schnittstellensteuerung des lokalen Knotens reagiert auf das
ACK-Signal oder das NACK-Signal, um das ACK- oder NACK-Signal an
den Quellprozessor zu senden. Der Quellprozessor reagiert auf das
ACK-Signal oder das NACK-Signal, um den Interrupt-Transaktions-Prozeß in dem
Quellprozessor aufzuwecken, und sendet als Reaktion auf das ACK-Signal
ein Interrupt-Datenpaket an den Zielprozessor und bricht als Reaktion
auf ein NACK-Signal
die Interrupt-Transaktion ab.
-
Vorzugsweise
hat die Schnittstellensteuerung des lokalen Knotens ein Erkennungs-
bzw. Erfassungs-Modul, das auf die Zieladresse reagiert, um zu erkennen,
daß der
Zielprozessor auf einem entfernt gelegenen Systembus ist. Ein Sende-Modul
bei der Schnittstelle des lokalen Knotens reagiert darauf, daß das Erkennungs-Modul
erkennt, daß der
Zielprozessor auf einem entfernt gelegenen Systembus ist, und sendet
den Ignorierungszustand an den Quellprozessor und leitet die Interrupt-Adresse
an die Schnittstellensteuerung des entfernt gelegenen Knotens weiter.
-
Vorzugsweise
reagiert das Erkennungs-Modul auf die Zieladresse, um zu erkennen,
daß der Zielprozessor
auf dem lokalen Systembus ist. Der Zielprozessor sendet ein ACK-Signal
oder ein NACK-Signal über
den lokalen Systembus an den Quellprozessor, so daß die Interrupt-Transaktion
auf dem lokalen Bus behandelt wird.
-
Vorzugsweise
hat die Schnittstellensteuerung des lokalen Knotens ein Neuaussende-Modul, das
auf ein ACK-Signal oder ein NACK-Signal von dem Zielprozessor über die
Schnittstellensteuerung des entfernt gelegenen Knotens reagiert
und die Interrupt-Anforderung mit der Quelladresse erneut zurück an den
Quellprozessor ausgibt. Ein Bestätigungsmodul
in der Schnittstellensteuerung des lokalen Knotens reagiert auf
das ACK-Signal von dem Zielprozessor, um ein ACK-Signal auf dem
lokalen Systembus zu bestätigen,
und reagiert auf das NACK-Signal von dem Zielprozessor zum Bestätigen eines
NACK-Signals auf dem lokalen Systembus.
-
Der
Quellprozessor hat ein Aufweck-Modul, das auf die Interrupt-Anforderung
reagiert und den Interrupt-Transaktions-Prozeß in dem Quellprozessor aufweckt.
Ein Sende-Modul in dem Quellprozessor reagiert auf das ACK-Signal
und sendet das Interrupt-Datenpaket an den Zielprozessor. Ein Abbruch-Modul
in dem Quellprozessor reagiert auf das NACK-Signal und bricht die
Interrupt-Transaktion
ab.
-
Vorzugsweise
reagiert die Schnittstellensteuerung des lokalen Knotens auf das
Interrupt-Datenpaket
und sendet das Interrupt-Datenpaket zusammen mit einer Interrupt-Transaktions-Abschlußnachricht
an die Schnittstellensteuerung des entfernt gelegenen Knotens. Die
Schnittstellensteuerung des entfernt gelegenen Knotens reagiert
auf das Interrupt-Datenpaket und sendet das Interrupt-Datenpaket
an den Zielprozessor. Die Schnittstellensteuerung des entfernt gelegenen
Knotens reagiert auch auf die Interrupt-Transaktions-Abschlußnachricht und
gibt die Ressourcen der Schnittstellensteuerung des entfernt gelegenen
Knotens frei.
-
Vorzugsweise
reagiert die Schnittstellensteuerung des lokalen Knotens auf das
NACK-Signal und
sendet eine Interrupt-Transaktions-Abschlußnachricht an die Schnittstellensteuerung
des entfernt gelegenen Knotens. Die Schnittstellensteuerung des entfernt
gelegenen Knotens reagiert auf die Interrupt-Transaktions-Abschlußnachricht
und gibt die Ressourcen der Schnittstellensteuerung des entfernt gelegenen
Knotens frei.
-
Der
große
Vorteil und Nutzwert der vorliegenden Erfindung ist die Fähigkeit,
Interrupt-Transaktionen
bei einem entfernt gelegenen Zielprozessor zu behandeln, ohne den
Quellprozessor ungebührlich
zu belasten.
-
Ausführungsformen
der Erfindung werden hier im Anschluß nur als Beispiel beschrieben
unter Bezug auf die beigefügten
Zeichnungen, von denen:
-
1 die
bevorzugte Ausführungsform
des Interrupt-Mechanismus' zur
Behandlung von Interrupt-Transaktionen auf demselben Systembus oder über eine
Verbindungsstruktur zu einem anderen Systembus zeigt.
-
2 ein
Beispiel der Betriebsumgebung für die
vorliegende Erfindung darstellt.
-
3 zusammengesetzt aus den 3A, 3B und 3B die
Operationen darstellt, die von einem Quellprozessor, der Schnittstellensteuerung
eines ersten Knotens, der Schnittstellensteuerung eines zweiten
Knotens und einem Zielprozessor durchgeführt werden, um die Interrupt-Transaktion über eine
globale Verbindungsstruktur gemäß einer bevorzugten
Ausführungsform
der Erfindung zu bewerkstelligen.
-
Die
Betriebsumgebung für
die Erfindung wird in 1 dargestellt. 1 zeigt
ein Mehrprozessorsystem mit einer globalen Verbindungsstruktur,
die drei Knoten mit mehreren Prozessoren an jedem Knoten in einem
Mehrprozessorsystem verbindet. Die mehreren Prozessoren an jedem
Knoten sind durch einen Systembus verbunden. Zum Beispiel sind der
Prozessor 32 und der Prozessor 34 durch den Systembus
0 (SB0) miteinander verbunden. Der Systembus
ist seinerseits mit der globalen Verbindungsstruktur 30 durch
die Schnittstellensteuerung 0 des Knotens verbunden. Die globale
Verbindungsstruktur 30 könnte so einfach wie ein Kreuzschienen-Umschalter
bzw. Cross-Bar Switch oder ein Bus sein oder sie könnte ein
Kommunikationsnetz sein. Jeder der drei Knoten in 1 folgt
dieser selben Struktur mit mehreren an einen Systembus angeschlossenen
Prozessoren, deren Systembus mit einer Schnittstellensteuerung des
Knotens verbunden ist, und die Schnittstellensteuerungen der Knoten sind über die
globale Verbindungsstruktur verbunden.
-
Jeder
der Prozessoren in dem Mehrprozessorsystem hat einen Cachespeicher
und nutzt den Hauptspeicher gemeinsam mit anderen Prozessoren in
dem Mehrprozessorsystem. Für
Zwecke dieser Ausführungsform
sind die in jedem Prozessor verwendeten Register, wie für den Prozessor 32 (P0) abgebildet, ein Interrupt-Abfertigungs-
bzw. Dispatch-Register 36, ein Interrupt-Abfertigungs-Zustandsregister 38,
ein Interrupt-Empfangsregister 40 und ein Interrupt-Empfangs-Zustandsregister 42. Diese
Register sind nur für
den Prozessor 32 (P0) abgebildet,
aber sie sind in jedem der Prozessoren in dem Mehrprozessorsystem
von 1 vorhanden. Die Schnittstellensteuereinrichtungen 44, 46 und 48 der
Knoten sind alle intelligente Einrichtungen, die aus ASICs (Application
Specific Integrated Circuits, anwendungsspezifischen integrierten
Schaltkreisen) hergestellt sind.
-
2 stellt
die bevorzugte Ausführungsform der
Erfindung dar, bei der eine von einem ersten Prozessor eingeleitete
Interrupt-Transaktion entweder als eine lokale Interrupt-Transaktion
auf demselben Systembus oder als eine entfernt ausgeführte Interrupt-Transaktion
durch eine globale Verbindungsstruktur zu einem Zielprozessor an
einem zweiten Systembus bearbeitet wird. Die Operationen beginnen
bei dem Quellprozessor P0, der die Interrupt-Transaktion
(INTR TRAX) in der Operation 10 einleitet. Bei der Transaktion
auf dem lokalen Systembus erkennt die Operation 12, ob
die Interrupt-Transaktion für
einen Prozessor an dem lokalen Systembus oder für einen Prozessor an einem
entfernt gelegenen Systembus ist. Wenn die Interrupt-Transaktion
für einen
lokalen Prozessor ist, verzweigt der Operationsfluß bei "Ja" zu den lokalen Interrupt-Transaktions-Operationen 14.
Wenn die Interrupt-Transaktion für
einen zweiten Prozessor über ein
Kommunikationsnetz zu einem zweiten Systembus ist, verzweigt der
Operationsfluß bei "Nein" von der Entscheidung 12 zur
Aussetzungs- bzw. Suspend-Operation 16. Die Suspend-Operation 16 setzt die
Interrupt-Transaktion bei P0, dem einleitenden Prozessor
für die
Interrupt-Transaktion, aus. Während
die Transaktion bei dem einleitenden Prozessor P0 ausgesetzt
ist, werden entfernt vorgenommene Bestätigungs-/Nicht-Bestätigungs-(NACK)-Operationen 18 durchgeführt. Diese
entfernt ausgeführten ACK/NACK-Operationen umfassen
das Kommunizieren einer Interrupt-Anforderung an einen Zielprozessor über das
Kommunikationsnetz und einen zweiten Systembus, an den der Zielprozessor
angehängt
ist. Der Zielprozessor gibt ein ACK/NACK-Zustandssignal abhängig davon
zurück,
ob er beschäftigt
bzw. belegt ist.
-
Die
Operation 20 erkennt, ob der Rückgabezustand ACK oder NACK
ist. Wenn der Zielprozessor die Interrupt-Anforderung bestätigt, dann
verzweigt der Operationsfluß zur
Operation 22, bei der der einleitende Prozessor P0 auf dem zweiten Bus die Interrupt-Transaktions-Daten
an den Zielprozessor P1 sendet. Die Operationen 22 schließen die Übertragung
der Interrupt-Daten zwischen dem einleitenden Prozessor P0 und dem Zielprozessor P1 ab.
-
Wenn
die Entscheidungsoperation 20 erkennt, daß die Zustandsmeldung
von dem Zielprozessor NACK lautet, dann verzweigt der Operationsfluß zu der
Abbruch-Operation 24. In der Abbruch-Operation 24 bricht
der einleitende Prozessor die Interrupt-Transaktion ab.
-
3, bestehend aus den 3A, 3B und 3C,
stellt die Operationen dar, die von einem einleitenden Prozessor,
P0, einem Zielprozessor, P1, einer
Schnittstellensteuerung 0 des Knotens, der den einleitenden Prozessor
beinhaltet, und einer Schnittstellensteuerung 1 des Knotens, der
den Zielprozessor beinhaltet, durchgeführt werden. 3 ist
in vier Spalten gegliedert, welche die Vorgänge anzeigen, die an dem einleitenden
Prozessor P0, der Schnittstellensteuerung
0 des Knotens an demselben Systembus wie der einleitende Prozessor,
der Schnittstellensteuerung 1 des Knotens an demselben Systembus
wie der Zielprozessor und dem Zielprozessor 1 durchgeführt wurden.
-
In 3A fängt die
Operation bei dem einleitenden Prozessor P0 an,
wobei die Operation 50 eine an den Zielprozessor P1 adressierte Interrupt-Transaktion (INTR
TRAX) einleitet. Die Operation 52 bei P0 lenkt
die Interrupt-Adresse (INTR ADDR), wie sie von dem Interrupt- Abfertigungs-Register versendet
wird, auf den Systembus 0 (SB0). Die Schnittstellensteuerung
0 des Knotens (NIC0) nimmt dann in der Operation 54 die
Interrupt-Adresse (INTR ADDR) entgegen. Die Operation 54 erkennt
außerdem,
daß diese Interrupt-Adresse
für den
Prozessor P1 ist, der in dem Knoten 1 liegt.
-
Als
Reaktion auf das Erkennen der Interrupt-Adresse für einen
anderen Knoten sendet die Operation 56 einen IGNORE-Zustand
auf dem SB0 aus. Der Prozessor P0 nimmt in der Operation 58 den IGNORE-Zustand
als die Antwort an P0, der die Interrupt-Adresse
herausgibt entgegen. Als Reaktion auf den IGNORE-Zustand setzt P0 die Interrupt-Transaktion in Operation 60 aus.
In der Zwischenzeit sendet die Schnittstellensteuerung 0 des Knotens
(NIC0) in Operation 62 eine Interrupt-Anforderung
an NIC1. Wie in 1 gezeigt,
liegt NIC1 bei Knoten 1, die mehrere
Prozessoren einschließlich
des Zielprozessors P1 beinhaltet, die über einen
Systembus SB1 miteinander verbunden sind.
-
Bei
NIC1 empfängt die Operation 64 die
Interrupt-Anforderung für
den Zielprozessor P1. NIC1 lenkt dann
die Interrupt-Adresse, die in der Interrupt-Anforderung enthalten
ist, während
der Operation 66 auf den Systembus SB1.
-
Der
Zielprozessor P1 nimmt die Interrupt-Adresse
von dem Systembus an und identifiziert sich selbst als den Empfänger der
Interrupt-Transaktion. Die Entscheidungsoperation 70 bei
dem Zielprozessor P1 prüft, ob der Prozessor BUSY ist,
d. h. eine Interrupt-Transaktion von einem anderen Prozessor behandelt.
Wenn der Prozessor BUSY ist, verzweigt der Operationsfluß von der
Entscheidungsoperation 70 zu der Sendeoperation 72 in 3C.
Wenn der Zielprozessor NOT BUSY ist, dann verzweigt der Operationsfluß zu der
Sendeoperation 74. Die Operation 74 sendet eine
Bestätigung
(ACK) auf SB1 aus. Die Schnittstellensteuerung
1 des Knotens nimmt diesen Bestätigungszustand
in seiner Operation 76 an. Der Rest des Operationsflusses
als Reaktion auf einen ACK-Zustand ist in 3B abgebildet.
-
Nachdem
NIC1 den ACK-Zustand von dem Zielprozessor
angenommen hat, sendet die Operation 76 in 3B eine
ACK-Antwort an NIC0. In NIC0 empfängt die
Operation 78 die ACK-Antwort.
Als Reaktion auf die ACK-Antwort gibt NIC0 in
Operation 80 die Interrupt-Adresse erneut auf SB0 aus. In dem einleitenden Prozessor P0 nimmt die Operation 82 die Interrupt-Adresse
entgegen und weckt den Interrupt-Transaktions-Prozeß in Prozessor
P0.
-
Nachdem
NIC0 die Interrupt-Adresse erneut ausgegeben
hat, bestätigt
bzw. setzt die Operation 84 in NIC0 den
ACK-Zustand für
den Zielprozessor auf SB0. Der einleitende
Prozessor P0, der in Operation 86 geweckt
wurde, nimmt den ACK-Zustand in Operation 86 entgegen.
Die Operation 88 in dem einleitenden Prozessor sendet dann
das Interrupt-Datenpaket auf dem Systembus SB0 aus.
-
NIC0 nimmt bei der Operation 90 das
Interrupt-Datenpaket entgegen. Die Operation 92 sendet dann
das Interrupt-Datenpaket zusammen mit einer Abschlußnachricht
an NIC1.
-
In
NIC1 empfängt die Operation 94 das
Interrupt-Datenpaket und die Abschlußnachricht. NIC1 sendet
in Operation 96 die Interrupt-Daten auf SB1. Nachdem
die Interrupt-Daten auf SB1 ausgesendet sind,
gibt die Operation 98 die Ressourcen in NIC1 frei,
um die nächste
Transaktion zu behandeln.
-
In
dem Zielprozessor P1 nimmt die Operation 100 die
Interrupt-Daten entgegen, die von NIC1 auf den
Systembus SB1 gegeben wurden. Nachdem das Interrupt-Datenpaket
von dem Zielprozessor P1 entgegengenommen
wurde, ist die von dem einleitenden Prozessor P0 eingeleitete
Interrupt-Transaktion abgeschlossen.
-
3C stellt
den Operationsfluß in
dem Falle dar, daß der
Zielprozessor P1 BUSY ist, und die Operation 72 in 3C einen
NACK-Zustand auf SB1 ausgesendet hat. Operation 102 in
NIC1 nimmt den NACK-Zustand auf dem Systembus
SB1 entgegen. Als Reaktion auf den NACK-Zustand
sendet die Operation 104 eine NACK-Antwort an NIC0.
-
Die
Operation 106 in NIC0 empfängt die NACK-Antwort
und leitet Operation 108 ein. Die Operation 108 gibt
die Interrupt-Adresse erneut auf SB0 aus.
In dem einleitenden Prozessor P0 nimmt die Operation 110 die
Interrupt-Adresse entgegen und weckt als Reaktion darauf die Interrupt-Transaktions-Verarbeitung
bei dem einleitenden Prozessor P0. NIC0 setzt bzw. bestätigt nach der erneuten Ausgabe der
Interrupt-Adresse in der Operation 112 den NACK-Zustand
auf SB0. Dies ist der NACK-Zustand, der
von dem Zielprozessor P1 herrührt. Der
einleitende Prozessor P0 nimmt in der Operation 114 diesen NACK-Zustand
entgegen. Danach bricht der Prozessor P0 die
Interrupt-Transaktion
in der Operation 116 ab. Nachdem die Interrupt-Transaktion
abgebrochen ist, setzt der einleitende Prozessor P0 einen
erneuten Versuch der Interrupt-Transaktion, um ein Auslösen der
Interrupt-Transaktion zu einem späteren Zeitpunkt erneut zu versuchen.
-
Nach
dem Senden des NACK-Zustandes sendet NIC0 in
Operation 120 eine Abschlußnachricht an NIC1.
Die Operation 120 erzeugt schlußendlich die Antwort, nachdem
NIC0 den NACK-Zustand auf SB0 gesetzt
bzw. bestätigt
hat. Diese Antwort ist einfach eine Abschlußnachricht. In der Operation 120 wird
kein Interrupt-Datenpaket gesendet.
-
In
NIC1 wird die Abschlußnachricht von der Operation 122 empfangen.
NIC1 leitet als Reaktion auf die Abschlußnachricht
die Operation 124 ein. Operation 124 gibt alle
Ressourcen frei, die der Interrupt-Transaktion in NIC1 zugeordnet
sind. NIC1 ist dann bereit, die nächste Interrupt-Transaktion
zu verarbeiten.
-
Während die
Erfindung unter Bezug auf eine bevorzugte Ausführungsform genau dargestellt
und beschrieben wurde, versteht es sich für Fachleute auf dem Gebiet,
daß darin
verschiedene sonstige Änderungen
in der Form und den Einzelheiten vorgenommen werden können, ohne
den Schutzumfang der Erfindung zu verlassen.