DE3687426T2 - Mehrprozessorsystem-architektur. - Google Patents
Mehrprozessorsystem-architektur.Info
- Publication number
- DE3687426T2 DE3687426T2 DE8686105844T DE3687426T DE3687426T2 DE 3687426 T2 DE3687426 T2 DE 3687426T2 DE 8686105844 T DE8686105844 T DE 8686105844T DE 3687426 T DE3687426 T DE 3687426T DE 3687426 T2 DE3687426 T2 DE 3687426T2
- Authority
- DE
- Germany
- Prior art keywords
- processor
- bus
- mailbox
- interrupt
- state
- 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
Links
- 238000000034 method Methods 0.000 claims description 18
- 230000008878 coupling Effects 0.000 claims description 3
- 238000010168 coupling process Methods 0.000 claims description 3
- 238000005859 coupling reaction Methods 0.000 claims description 3
- 230000004044 response Effects 0.000 claims description 3
- 230000015654 memory Effects 0.000 description 45
- 238000012360 testing method Methods 0.000 description 19
- 230000007246 mechanism Effects 0.000 description 16
- 238000012545 processing Methods 0.000 description 12
- 230000002093 peripheral effect Effects 0.000 description 11
- 230000008569 process Effects 0.000 description 11
- 239000013598 vector Substances 0.000 description 8
- 230000008901 benefit Effects 0.000 description 4
- 238000010586 diagram Methods 0.000 description 4
- 230000005540 biological transmission Effects 0.000 description 3
- 230000011664 signaling Effects 0.000 description 3
- 230000003936 working memory Effects 0.000 description 3
- 230000002457 bidirectional effect Effects 0.000 description 2
- 230000000737 periodic effect Effects 0.000 description 2
- 230000009467 reduction Effects 0.000 description 2
- 238000012546 transfer Methods 0.000 description 2
- 238000010276 construction Methods 0.000 description 1
- 230000001186 cumulative effect Effects 0.000 description 1
- 238000011161 development Methods 0.000 description 1
- 238000011156 evaluation Methods 0.000 description 1
- 230000006870 function Effects 0.000 description 1
- 239000011159 matrix material Substances 0.000 description 1
- 238000004377 microelectronic Methods 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 238000012544 monitoring process Methods 0.000 description 1
- 230000008520 organization Effects 0.000 description 1
- 230000002265 prevention Effects 0.000 description 1
- 238000013468 resource allocation Methods 0.000 description 1
- 230000008054 signal transmission Effects 0.000 description 1
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F15/00—Digital computers in general; Data processing equipment in general
- G06F15/16—Combinations of two or more digital computers each having at least an arithmetic unit, a program unit and a register, e.g. for a simultaneous processing of several programs
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F15/00—Digital computers in general; Data processing equipment in general
- G06F15/16—Combinations of two or more digital computers each having at least an arithmetic unit, a program unit and a register, e.g. for a simultaneous processing of several programs
- G06F15/163—Interprocessor communication
- G06F15/167—Interprocessor communication using a common memory, e.g. mailbox
Landscapes
- Engineering & Computer Science (AREA)
- Computer Hardware Design (AREA)
- Theoretical Computer Science (AREA)
- Software Systems (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Multi Processors (AREA)
- Computer And Data Communications (AREA)
Description
- Die vorliegende Erfindung bezieht sich auf eine Mehrprozessor-Systemarchitektur und insbesondere auf den Dialogmechanismus, der Prozessoren befähigt, miteinander zu kommunizieren.
- Verschiedene Arten von Mehrprozessor-Systemarchitekturen sind vorgeschlagen worden. Die Bus-Dialogarchitekturen sind unter den am häufigsten benutzten, und im Hinblick auf die Leistung sind sie komplex und teuer. Die verschiedenen Prozessoren sind miteinander und an einen oder mehrere Speicher über einen Dialogbus angeschlossen, der im Time-Sharing zugänglich ist. Ein Beispiel einer Bus-Systemarchitektur ist in dem US-Patent Nr. 4 404 628 offenbart.
- Der Dialogbus bildet die Gruppe von Leitungen, die jeden Prozessor in die Lage versetzen, mit einem oder mehreren gemeinsam benutzten Speichern und mit einem oder mehreren gemeinsamen Peripheriegeräten zu kommunizieren. Der Dialogmechanismus zwischen Prozessoren und Peripheriegeräten ist im allgemeinen vom direkten Typ, d. h. der Prozessor wählt durch geeignete Befehle eine periphere Einheit aus, und wenn sie frei oder verfügbar ist, so sendet der Prozessor die geeigneten Anweisungen zu ihr. Der Prozessor arbeitet daher als Haupteinheit (Master) in bezug auf die periphere Einheit, die als Nebeneinheit (Slave) antwortet. Die peripheren Einheiten können den Dialog mit dem Master-Prozessor durch Unterbrechungsmechanismen starten, d. h. die periphere Einheit, die einem Prozessor Information mitzuteilen hat, erzeugt ein Unterbrechungssignal auf einer Unterbrechungsleitung, die nicht Teil des Systembusses ist. In geeigneter Zeit trägt der Prozessor, der die Unterbrechung empfängt, wenn die ablaufenden Operationen vervollständigt oder aufgegeben worden sind, der Unterbrechung Rechnung, indem mit geeigneten Anweisungen die Unterbrechungseinheit getestet wird, um die Natur und die Gründe einer solchen Unterbrechung zu identifizieren.
- Dieser Dialogmechanismus zwischen Prozessoren und peripheren Einheiten ist wirksam, aber er beinhaltet die Zuordnung verschiedener Rollen eines Masters und eines Slaves zu dem Prozessor und der entsprechenden peripheren Einheit. Im Falle des Dialogs zwischen Prozessoren, die sowohl eine Zentraleinheit (oder CPU) als auch Steuerprozessoren für periphere Einheiten "I/O- Prozessoren" sein können, deren Betrieb aber auch in autonomerweise und mit gleichen Rechten beabsichtigt ist und die daher als Master arbeiten sollen, ist die Verwendung eines unterschiedlichen Dialogmechanismus bevorzugt, der nicht den Rollentausch der Prozessoren bei dem Dialogprozeß erfordert. Der verwendete Mechanismus ist der Dialog über ein Postfach (Mailbox).
- In einem gemeinsam benutzten Speicher, auf den durch verschiedene Prozessoren zugegriffen werden kann, werden Speicherbereiche oder "Postfächer" definiert, von denen jedes einem Prozessor zugeordnet ist, auf das aber durch alle Prozessoren zugegriffen werden kann. Ein Prozessor A, der mit einem Prozessor B zu kommunizieren wünscht, schreibt einfach eine Nachricht in das Postfach des Prozessors B. Wie kann nun der Prozessor B wissen, daß eine Nachricht für ihn in dem Postfach vorliegt und wie kann der Prozessor A wissen, daß die Nachricht empfangen worden ist?
- Eine im Stand der Technik verfolgte Lösung war der Aufruf (Polling), d. h. die periodische Überprüfung des Inhalts des Postfaches. Mit anderen Worten liest der Prozessor B periodisch sein Postfach aus, um das Vorliegen von an ihn adressierten Nachrichten zu überprüfen. In gleicher Weise liest der Prozessor A das Postfach des Prozessors B aus, um zu überprüfen, ob die gesendete Nachricht aus dem Postfach ausgelesen worden ist bzw. er überprüft periodisch alternativ das Vorliegen einer Antwortnachricht in seinem eigenen Postfach. Dieses Verfahren erforderte einen großen Zeitaufwand und daher ergab sich eine Herabminderung der Systemleistung im wesentlichen aus zwei Gründen: Erstens hat jeder Prozessor einen Teil seiner Zeit für Aufrufoperationen zur Verfügung zu stellen, und zweitens erforderten die Aufrufoperationen Speicher-Ausleseoperationen und daher die Belegung des gemeinsamen Busses, so daß zwei grundsätzliche Systemmittel benutzt wurden (Speicher und Bus), was ihre mögliche Benutzung durch andere Prozessoren verhindert.
- Ein Verfahren zur Signalisierung des Vorliegens der Nachricht sehr ähnlich dem Unterbrechungsmechanismus ist daher dem Dialogprozeß über das Postfach zugeordnet worden. Ein solches Verfahren ist als Melde(Notify)- Verfahren definiert. Das bereits erwähnte US-Patent offenbart ein Ausführungsbeispiel eines solchen Mechanismus.
- Kurz gesagt, erzeugt der Prozessor A nach dem Einschreiben einer Nachricht in das Postfach des Prozessors B ein Meldesignal, das durch den Prozessor B (beispielsweise in einem Flip-Flop) empfangen und gespeichert wird. Die gleiche "Warnsignal"-Lösung, die den Zugriff zu einem gemeinsamen Speicher steuert, ist in der US-A 3 483 520 beschrieben, obgleich dies dort durch die Zwischenschaltung einer zentralen Steuerung erfolgt.
- Somit hat der Prozessor B keine Speicher- Aufrufoperationen durchzuführen, um das Vorliegen von an ihn adressierten Nachrichten zu überprüfen, sondern er hat nur periodisch den Melde-Flip-Flop-Status zu überprüfen, ohne die dem System gemeinsamen Systemmittel zu benutzen. Mit dieser Art von Lösung wurde das Problem einer besseren Auswertung der gemeinsamen Systemmittel nur teilweise gelöst.
- Tatsächlich kann der Prozessor A, wenn er wissen will, ob die Nachricht empfangen worden ist, zwei Alternativen folgen: Er kann weiterfahren, den gemeinsamen Speicher zu testen, um zu überprüfen, ob das B-Postfach ausgelesen worden ist, oder er kann warten auf eine Antwortnachricht von dem Prozessor B, die mit einem Mechanismus des Postfach-Schreibens und der Meldung ähnlich dem bereits beschriebenen ausgeführt werden kann. Die zweite Alternative ist z. B. aus der US-A-3 483 520 bekannt, welche bereits erwähnt wurde.
- In beiden Fällen liegt es auf der Hand, daß die Bezugnahme auf gemeinsame Systemmittel und der Betrieb eines oder beider Prozessoren erforderlich ist.
- Ein weiterer zu betrachtender Aspekt ist die Behandlung auf dem Programmpegel der gemeldeten Nachrichten und das Problem der Eliminierung von Überlappungen in dem Zugriff auf gemeinsam benutzte Systemmittel (in dem Fall, wo auf sie durch verschiedene Prozessoren zugegriffen werden kann), wie beispielsweise die Postfächer.
- Bei der Bearbeitung von Arbeitsprogrammen in Mehrprozessorsystemen werden oftmals Vorrechtsoperationen benutzt. In bezug auf die Meldeoperationen bedeutet das Vorrechts-"Konzept", daß eine in das Postfach des Prozessors A durch einen Prozessor B geschriebene Nachricht gelöscht werden kann, wenn der empfangende Prozessor diese noch nicht berücksichtigt hat und durch eine neue Nachricht durch den sendenden Prozessor B ersetzt werden kann. Dies kann erforderlich werden, wenn während der Entwicklung der verschiedenen Programme es nachfolgend als geeignet festgestellt wird, zuerst bestimmte Operationen anstatt von anderen Operationen auszuführen, die zuvor den Gegenstand der Meldenachricht gebildet haben. Diese Vorrechtsoperationen sind im Stand der Technik durchgeführt worden, indem der sendende Prozessor die bereits in das Postfach eingeschriebene Nachricht ausgelesen hat, um zu überprüfen, daß die Nachricht noch nicht durch den empfangenden Prozessor in Betracht gezogen worden ist und daß diese daher gelöscht und durch eine andere Nachricht ersetzt werden kann.
- Es liegt auf der Hand, daß zur Durchführung einer solchen Überprüfungsoperation der Zugriff zu dem Speicher erforderlich ist und somit andere Einheiten an der Benutzung der gemeinsam benutzten Systemmittel (Bus und Speicher) gehindert werden. Bezüglich der Überlappungsverhinderung beim Zugriff auf gemeinsame Systemmittel beinhaltet die gemeinhin verfolgte Lösung die Verwendung eines "Test- und Setz"-Befehls.
- Ein Speicherplatz ist an jedes gemeinsame Systemmittel, beispielsweise ein Postfach angeschlossen. In einen solchen Speicherplatz wird eine binäre Information eingeschrieben, die anzeigt, ob das Systemmittel verfügbar oder verriegelt ist. Ein Prozessor, der den Zugriff auf ein Systemmittel (Postfach) wünscht, um eine Nachricht einzuschreiben, muß zu allererst überprüfen, daß kein Prozessor das Systemmittel zu dem gleichen Augenblick benutzt. Zu diesem Zweck führt er, bevor er auf das Systemmittel Zugriff nimmt, eine nicht-teilbare Lese- und Schreib-Operation (Test und Setz) des an das Systemmittel angeschlossenen Speicherplatzes durch. Durch diese Operation liest er den vorliegenden Inhalt des Speicherplatzes aus, und unmittelbar danach schreibt er eine Information betreffend ein verriegeltes Systemmittel ein. Diese Operation ist nur in Systemen möglich, wo der Befehl "Testen und Setzen" sich unter denen befindet, die ausgeführt werden können, und sie erfordert die Verwendung gemeinsamer Systemmittel (Speicher und Bus), wodurch ihre gleichzeitige Benutzung durch andere Einheiten verhindert wird.
- Alle dieser Speicher-Zugriffsoperationen, auch wenn sie aus verschiedenen Gründen notwendig sind, verursachen eine große Einschränkung und Verminderung der Systemleistung. Diese Beschränkungen werden durch die Mehrprozessor-Systemarchitektur der vorliegenden Erfindung vermieden, bei der der Systembus physikalisch und logisch in zwei voneinander unabhängige Teile getrennt ist, die aber miteinander verbunden werden können. Jeder Teil bildet einen autonomen (oder logischen) Systembus für jeden Prozessor. Ferner werden den Meldesignalen äquivalente Unterbrechungssignale für jeden Prozessor durch wenigstens ein Flip-Flop erzeugt, das durch einen Prozessor für Lese- und Setz-Operationen über seinen eigenen Systembus adressierbar ist und durch den anderen Prozessor für Rückstelloperationen durch den Systembus dieses letztgenannten Prozessors adressierbar ist, wobei Unterbrechungssignale zu dem empfangenden Prozessor über Kopplungsmittel übertragen werden, die nicht durch die beiden Busse vorgegeben sind.
- Eine Organisation eines Mehrprozessorsystems basierend auf zwei unabhängigen Systembussen, die miteinander über ein Busfenster verbunden werden können, ist aus der US-A-3 940 743 bekannt. Die Übertragung der Unterbrechungssignale zwischen einem an einen der Busse angeschlossenen Prozessor und einem an den anderen Bus angeschlossenem Prozessor beinhaltet jedoch die Verwendung beider Busse. Daher wird, auch wenn Registereinrichtungen in dem Busfenster vorgesehen sind, die das Auslesen des Status eines Prozessors durch den anderen Prozessor gestatten, ohne daß Zugriff zu dem Bus des einen Prozessors genommen wird, das Problem der Verwendung gemeinsamer Systemmittel bei dem Unterbrechungs- und Notifikations-Verfahren nur teilweise vermieden. Das gleiche Konzept der Auslesbarkeit eines Unterbrechungs-Statusregisters ist in der WO-A-82/02442 offenbart.
- In diesem Fall ist jedoch das System mit einem einzigen Bus versehen, was zu einem unvermeidlichen Wettbewerb zwischen den Prozessoren bei irgendeiner Operation führt, die die Verwendung des Busses erfordert, welche Unterbrechungs-Transferoperationen und das Lesen der Unterbrechungs-Statusregister einschließt.
- Im Gegensatz hierzu werden mit der Architektur gemäß der vorliegenden Erfindung große Vorteile in kumulativer Weise erzielt: - jegliche Speicher-Aufrufoperation zur Überprüfung des Vorliegens von Meldenachrichten wird vermieden; - jeder Prozessor kann den Status der gesendeten Meldenachrichten kennen, ohne daß er Zugriff zu gemeinsamen Speicher-Systemmitteln braucht, wobei nur der eigene lokale Bus benutzt wird; - jeder Prozessor kann eine Vorrechts- oder Meldeoperation von neuen Nachrichten ausführen, ohne die vorhergehende Überprüfung des Inhalts des Postfachs; - ein Nachrichten-Bestätigungssignal wird geliefert, ohne daß umgekehrte Meldeoperationen erforderlich sind; und erforderlichenfalls - werden Überlappungsprobleme gelöst, ohne daß die Ausführung von Test- und Setz-Operationen erforderlich ist.
- Mit anderen Worten wird die Verwendung der gemeinsamen Systemmittel auf ein Minimum reduziert mit dem Vorteil einer erhöhten Systemleistung und mittels sehr einfacher Schaltkreiselemente.
- Diese und andere Merkmale und Vorteile der Erfindung gehen klar aus der folgenden Beschreibung eines bevorzugten Ausführungsbeispieles hervor, wobei die beigeschlossenen Zeichnungen zeigen:
- Fig. 1 die EDP-Systemarchitektur gemäß der Erfindung in einem Blockdiagramm im Falle von zwei Prozessoren.
- Fig. 2 die Zuordnung bestimmter Speicherbereiche im Blockformat zu speziellen Funktionen der gemeinsamen Systemmittel (Postfach) und von Verriegelungsregistern der gemeinsamen Systemmittel.
- Fig. 3 das Schaltungsdiagramm einer bevorzugten Ausführungsform einer Logikeinheit, die die Melde- und Unterbrechungssignale erzeugt, welche in der EDP-Architektur gemäß Fig. 1 verwendet werden.
- Fig. 4 ein zweites bevorzugtes Ausführungsbeispiel einer Logikeinheit, die die Melde- und Unterbrechungssignale erzeugt, welche in der EDP-Architektur gemäß Fig. 1 verwendet werden.
- Fig. 1 zeigt in einem Blockdiagramm die EDP- Systemarchitektur, die Gegenstand der Erfindung ist. Das System wird im wesentlichen gebildet durch einen ersten Prozessor bzw. eine CPU1, die als Zentraleinheit arbeitet und durch einen zweiten Prozessor bzw. einen I/OP2, der als periphere Steuereinheit arbeitet. Vorzugsweise bestehen die Prozessoren aus integrierten Einheiten, die z. B. durch die Firma Motorola unter den Codes 68010 und 68000 entsprechend vertrieben werden.
- Die CPU1 ist an einen Adressenbus ABUS1 und an einen Datenbus DATABUS1 angeschlossen, die einen Systembus für die Zentraleinheit bilden, während die CPU2 an einen Adreßbus ABUS2 und an einen Datenbus DATABUS2 angeschlossen ist, die einen lokalen Bus für den Ein/Ausgabe-Prozessor I/OP2 bilden. Ein Oszillator 3 liefert einige Zeittaktimpulse T an beide Prozessoren und die anderen Systemeinheiten.
- Ein Arbeitsspeicher 4 bzw. Hauptspeicher MM ist an die Busse DATABUS1 und ABUS1 angeschlossen. Neben dem Speicher 4 sind eine Fließkommaeinheit (FPU) 5 und eine Buserweiterungseinheit 6 zur Verbindung mit dem Systembus von anderen logischen Einheiten oder peripheren Schnittstelleneinheiten an den Bus ABUS1 und DATABUS1 angeschlossen. Die Auswahl des Arbeitsspeichers 4, der Fließkommaeinheit 5, der Erweiterungseinheit 6 und anderer möglicher Einheiten wird in bekannter Weise durch die CPU1 unter Verwendung von Zeittakt- und Steuersignalen zusammen mit geeigneten Adreßcodes bewirkt. Zu diesem Zweck ist ein Decodierer 7, der Vorzugsweise durch eine oder mehrere PAL (programmierbare Logikmatrix) gebildet wird, mit seinen Eingängen an den Bus ABUS1 angeschlossen und liefert an seinem Ausgang Auswahlsignale S1, . . ., SN, von denen jedes eine von verschiedenen an den Systembus angeschlossenen Einheiten auswählt. Der Betrieb, der an den Systembus der CPU1 angeschlossenen Einheiten, ist immer nebengeordnet zu den durch die CPU über den Bus gesendeten Anweisungen (vorausgesetzt, daß ein direkter Speicher- Zugriffsmechanismus nicht vorliegt).
- Einheiten, wie beispielsweise die Einheiten 4, 5 und 6 können eine Intervention der CPU1 nur durch Unterbrechungssignale (INT) anfordern. Diese Signale werden durch eine Unterbrechungs-Logikeinheit 8 gesammelt, welche diese nach einer rangmäßig geordneten Priorität und in einer sich gegenseitig ausschließenden Weise zu der CPU1 überträgt. Die Logikeinheit 8 empfängt ein Bestätigungssignal von der CPU1 und sendet ein solches Signal zu der Unterbrechungseinheit.
- Die CPU1, die Busse ABUS1, DATABUS1 und die Einheiten 3, 4, 5, 6, 7, 8 bilden ein Datenverarbeitungssystem, das in der Lage ist, autonom gemäß einer im Stand der Technik bekannten Architektur zu arbeiten. Eine weitere detaillierte Erläuterung ist daher nicht für das Verständnis erforderlich.
- In gleicher Weise steuert der Prozessor I/OP2 den Ein/Ausgabebus, der durch die Kanäle ABUS2 und DATABUS2 gebildet wird. Verschiedene Einheiten sind an den Ein/Ausgang des I/OP2 angeschlossen, namentlich: Ein Festwertspeicher bzw. ROM 9, der Auslöseprogramme enthält, ein Arbeitsspeicher bzw. RAM 10, eine Steuereinheit 11 für die Dialogleitungen 12, 13, eine Steuereinheit 14 für eine Magnetbandeinheit 15, beispielsweise ein "fliegendes Band", eine Steuereinheit 16 für einen Drucker 17, eine Steuereinheit 18 für eine Magnetplatteneinheit 19 und ein Decodierer 20, der vorzugsweise durch eine oder mehrere PAL's gebildet wird, die am Ausgang Auswahlanweisungen Z1, . . ., ZN, für die verschiedenen Einheiten liefern, die an den Ein/Ausgabebus angeschlossen sind.
- Der Betrieb, der an den I/O-Bus angeschlossenen Einheiten ist immer nebengeordnet in bezug auf die durch den Prozessor I/OP2 über den Bus gesendeten Anweisungen.
- Einheiten, wie beispielsweise die Einheiten 11, 14, 16, 18 können nur die Intervention des Steuerprozessors I/OP2 durch ein Unterbrechungssignal anfordern, wobei dieser Prozessor als System-Zentraleinheit arbeitet. Diese Signale (INT) werden durch eine Unterbrechungs- Logikeinheit 21 empfangen, die sie gemäß einer rangmäßig geordneten Priorität und in einer sich gegenseitig ausschließenden Weise zu dem I/OP2 überträgt. Die Logikeinheit 21 empfängt ein Unterbrechungs- Bestätigungssignal und sendet ein solches Signal zu der Unterbrechungseinheit.
- Der I/OP2, die Busse ABUS2, DATABUS2 und ebenfalls die Einheiten 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20 bilden ein Datenverarbeitungssystem, das in der Lage ist, autonom gemäß einer im Stand der Technik bekannten Architektur zu arbeiten. Eine weitere detaillierte Erläuterung ist daher für das Verständnis nicht erforderlich.
- Die charakteristischen Elemente der Systemarchitektur gemäß der Erfindung seien nun in Einzelheiten betrachtet. Sie bestehen in der Verbindung der zwei zuvor erwähnten Systeme und dem Dialogmechanismus zwischen den zwei Prozessoren CPU1 und I/OP2.
- Der Adreßkanal ABUS2 ist mit dem Adreßkanal ABUS1 über einen Einwegkanal 22 (von dem ABUS2 zu dem ABUS1) verbunden, der durch eine Gruppe von Gattern bzw. "Treibern" 23 gesteuert wird, die durch ein Auswahlsignal X1 freigegeben werden. Der Datenbus DATABUS2 ist mit dem Datenbus DATABUS1 über einen Zweiwegkanal 24 verbunden, der durch eine Gruppe von bidirektionalen Gattern bzw. "Sender/Empfänger" 25 gesteuert wird, die durch eine Auswahlanweisung X2 freigegeben werden und die die effektive Signalübertragung freigeben sowie durch eine Anweisung R/W, welche entsprechend ihrem Logikpegel die Übertragungsrichtung definiert. Die Anweisungen X1, X2 werden indirekt durch den Prozessor I/OP2 durch die Einheit 26 erzeugt, während die Anweisung R/W direkt durch den Prozessor I/OP2 erzeugt wird. Es liegt daher auf der Hand, daß der die Gatter 23, 25 steuernde Prozessor I/OP2 auf den Systembus Zugriff nehmen kann, um eine Adressierung und Lese/Schreiboperationen bezüglich des Speichers 4 auszuführen, der als gemeinsames Systemmittel von beiden Prozessoren CPU1 und I/OP2 benutzt wird.
- Es ist offensichtlich erforderlich, die Konflikte und Überlappungen bei dem Zugriff auf den Systembus und auf den Speicher 4 zu lösen. Zu diesem Zweck ist eine Konflikt-Lösungseinheit 26 vorgesehen, die das Buszugriffs-Anforderungssignal BR1 von dem Prozessor I/OP2 und andere Signale BR2, BRN von anderen möglichen Einheiten empfängt, die über den Systembus zu dem gemeinsamen Speicher Zugriff zu nehmen wünschen. Das Signal BR1 wird durch den I/OP2 über den Decodierer 20 erzeugt und von der Einheit 20 zu einem geeigneten Eingang (Signal BR) der CPU1 übertragen. Die meisten der gegenwärtig auf dem Markt befindlichen Mikroprozessoren und insbesondere der Mikroprozessor 68010, der im bevorzugten Ausführungsbeispiel der Erfindung benutzt wird, sind mit einem für diesen Zweck vorgesehenen Eingang versehen.
- Die CPU1 antwortet mit einem Bus-Gewährungssignal BG (Busgewährung) und gestattet den tatsächlichen Buszugriff und das Ende der ablaufenden Operation. Das Signal BG wird durch die Einheit 26 zu der anfordernden Einheit geleitet, in diesem Fall zu dem I/OP2 (Signal BG1) gemäß einer Prioritätslogik. Die Einheit 26 wird durch einen integrierten Schaltkreis (Motorola Code 68452) und durch logische Schaltkreise gebildet, die durch den Systemtakt T getaktet werden und welche beim Empfang des Signales BG und nach der Feststellung, daß der Bus tatsächlich verfügbar ist, in geeigneter Folge und Länge ein Signal BACK erzeugen, das zu der CPU1 gesendet wird und ferner eine Auswahl- und Freigabeanweisung X1 der Gatter 23 und eine Auswahl- und Freigabeanweisung X2 der Gatter 25 erzeugen. Auf diese Weise können die CPU1 und der Prozessor I/OP den Systembus und den Arbeitsspeicher gemeinsam (im Time Sharing) benutzen. Auf der anderen Seite kann die CPU1 weder den I/OP-Bus (d. h. ABUS2 und DATABUS 2) benutzen, noch kann sie die an diesen Bus angeschlossenen Einheiten steuern.
- Es sei nun betrachtet, wie der Dialog zwischen den zwei Prozessoren CPU1 und I/OP2 stattfindet.
- Unter Bezugnahme auf Fig. 2 enthält der Speicher 4 zwei Zonen 30, 31, die mit Mailbox CPU und Mailbox I/OP bezeichnet sind und die als Dialogeinrichtungen benutzt werden. Ein Speicherplatz 32, 33 ist an jede Zone entsprechend angeschlossen, wobei der Speicherplatzinhalt den Status des Postfaches (Mailbox) definiert. An einem solchen Speicherplatz definiert wenigstens eine Zelle, die mit L bezeichnet ist, mit dem Logikpegel des darin enthaltenen Bits (genannt Verriegelungsbit), ob das angeschlossene Systemmittel (Postfach) verfügbar ist oder nicht, d. h. ob kein Prozessor eine Lese/Schreiboperation in dem Postfach ausführt oder ob ein Prozessor bereits Operationen in der gleichen Speicherzone ausführt und er nicht wünscht, daß andere Prozessoren den Inhalt des Postfaches überlappen und modifizieren.
- Wenn der Prozessor I/OP2 einen Dialog mit der CPU1 wünscht, so testet er den Speicherplatz 32 mit einer "Test und Setz"-Operation, d. h. mit einer nicht teilbaren Lese/Schreiboperation. Das Bit L ist jedoch auf den Logikpegel 1 gesetzt. Wenn aber durch eine Ausleseoperation der Prozessor I/OP feststellt, daß sich L bereits auf dem Logikpegel 1 befand und daher kein Systemmittel verfügbar war, so enthält er sich jeglicher weiterer Operation bezüglich des CPU-Postfaches. Wenn andererseits festgestellt wird, daß L=0 ist, so wird das Systemmittel durch Anhebung von L auf 1 verriegelt und der I/OP2 adressiert das CPU-Postfach durch das Einschreiben einer Nachricht für die CPU1. Am Ende dieser Operationen wird durch Heruntersetzen des Verriegelungsbits L auf den Logikpegel 0 das Systemmittel durch den I/OP2 für Lese/Schreiboperationen verfügbar gemacht, die durch CPU1 ausgeführt werden.
- Ähnliche Operationen werden durch die CPUI ausgeführt, um die an sie adressierte Nachricht zu lesen bzw. zu löschen und um Nachrichten für den I/OP2 in das I/OP-Postfach zu schreiben.
- Da der Arbeitsspeicher 4 eine passive Einheit ist, können die Prozessoren 1 und 2 prüfen, ob an sie adressierte Nachrichten nur durch Speicher-Aufrufoperationen vorliegen, d. h. durch periodische Tests mit der daraus folgenden Verriegelung des Speichers 4 und des Systembusses, wodurch die Ausführung anderer Operationen verhindert wird.
- Um diesen Nachteil zu vermeiden, ist gemäß der Erfindung eine direkte Prozessor-Melde-Hardware vorgesehen, deren Status sowohl durch den die Meldung aufnehmenden Prozessor als auch durch den die Meldung abgebenden Prozessor festgestellt werden kann. Ferner erfordern sowohl das Setzen als auch die Rückstellung der Melde- Hardware ebenso wie die Festellung ihres Status durch den meldenden Prozessor die begrenzte Benutzung des lokalen Busses, d. h. des Systembusses für die CPU1 und des I/O- Busses für den I/OP-Prozessor, und daher überlappen sie nicht mit Operationen auf dem Systempegel, sondern nur mit Operationen auf lokalem Pegel, wie beispielsweise die zentrale Verarbeitung oder die Ein/Ausgabe. Die Melde- Hardware besteht unter Bezugnahme auf Fig. 1 aus einer Melde-Logikeinheit 27, die wahlweise über Kanäle 28, 29 entsprechend an den DATABUS1 und den DATABUS2 angeschlossen werden kann. Die Einheit 27 wird durch Auswahlsignale/Anweisungen 51, 52, 53, Z1, Z2, Z3 gesteuert, die von den Decodierern 7 und 20 kommen und zwei (oder mehr) Melde- bzw. Unterbrechungssignale NOTIFY, INTIOP erzeugen, welche zu der Unterbrechungs- Logikeinheit 21 und 8 entsprechend gesendet werden.
- Fig. 3 zeigt in einem detaillierten Diagramm die einfachere Verwirklichung der Melde-Logikeinheit 27. Diese besteht aus zwei J-K-Flip-Flops 40, 41 und aus zwei "Dreizustands-Treibern" 42, 43. Das Flip-Flop 40 empfängt an seinem Setzeingang ein Auswahlsignal Z1, das von dem Decodierer 20 kommt, und es wird durch dieses Signal gesetzt. Am direkten Ausgang Q des Flip-Flops 40 wird daher ein Signal INTIOP erzeugt, das zu der Unterbrechungs-Logikeinheit 8 der CPU1 (Fig. 1) gesendet wird. Der direkte Ausgang des Flip-Flops 40 ist an einen Eingang des Treibers 42 angeschlossen, dessen Ausgang über den Bus 29 (der in diesem Fall durch nur eine Leitung gebildet wird) an den DATABUS2 angeschlossen ist. Der Treiber 42 wird durch ein Signal Z3 freigegeben, das von dem Decodierer 20 kommt. Die J-K-Eingänge des Flip- Flops 40 werden permanent auf dem Logikpegel "0" und "1" entsprechend gehalten, so daß bei einem Empfang eines Taktsignales am Eingang CK das Flip-Flop 40 zurückgesetzt wird. Der Takteingang des Flip-Flops 40 empfängt das Anweisungssignal 52, das von dem Decodierer 20 kommt.
- In gleicher Weise wird dem Flip-Flop 41 an seinem Setzeingang ein Setzsignal 51 zugeführt, das von dem Decodierer 7 kommt, und der Takteingang CK erhält ein Rückstellsignal Z2 zugeführt, das von dem Decodierer 20 kommt. Der Ausgang Q des Flip-Flops 41 ist über den Treiber 43 und den Bus 28 (in diesem Fall nur durch eine Leitung gebildet) an den DATABUS1 angeschlossen. Der Treiber 43 wird durch ein Signal 53 freigegeben, das von dem Decodierer 7 kommt. Der Ausgang Q des Flip-Flops 41 ist ferner über eine Leitung 44 an einen Eingang eines Unterbrechungsnetzwerkes 21 angeschlossen. Wenn das Flip- Flop 41 gesetzt ist, so wird ein Unterbrechungssignal NOTIFY über die Leitung 44 zu dem Netzwerk 21 und von dem Netzwerk zu dem Prozessor I/OP2 gesendet.
- Der Betrieb der Logikeinheit 27 und des Systems mit zwei Prozessoren, in dem die Einheit enthalten ist, ist sehr einfach. Wenn der I/OP2 eine Nachricht zu der CPU1 zu senden wünscht oder wenn er die Bearbeitung eines Prozesses in der CPU1 wünscht (beispielsweise einen Rechenprozeß), so führt er in der Reihenfolge folgende Operationen aus:
- 1. Überprüfung über die Test- und Setz-Operation, ob das CPU1-Postfach verfügbar ist (Verriegelungsbit = Null) und demzufolge Systemmittelbelegung, wenn es verfügbar ist.
- 2. Schreiben der Nachricht in das CPU1-Postfach.
- 3. Verfügbarmachung des CPU1-Postfaches durch Rückstellung des Verriegelungsbits. Die Operationen
- 1. 2. 3. erfordern den Zugriff auf den CPU1-Bus und auf den Speicher 4, d. h. die gleichzeitige Verriegelung des gesamten Systembusses und des gemeinsamen Systemmittelspeichers 4.
- 4. Setzen des Flip-Flops 4 durch Erzeugung eines geeigneten Adreßcodes nur auf dem Bus ABUS2, welcher nach Decodierung durch den Decodierer 20 das Signal Z1 erzeugt. Das Signal INTIOP wird daher erzeugt, welches durch das Netzwerk 26 und gemäß den vorgegebenen Prioritäten zu der CPU1 als Unterbrechungscode mit einem vorgegebenen Prioritätspegel PL (Fig. 1) übertragen wird. Die Operation erfordert nur die Belegung des I/O-Busses, und sie berührt nicht den CPU-Bus und den gemeinsamen Systemmittelspeicher. An dieser Stelle berücksichtigt der unterbrochene Prozessor CPU1, nachdem er alle Operationen, die einen höheren Prioritätspegel als der Unterbrechungs-Prioritätspegel aufweisen, ausgeführt hat, die Unterbrechung und führt einen Unterbrechungs-Bearbeitungsprozeß aus, der folgende Operationen beinhaltet.
- 5. Überprüfung über eine Test- und Setzoperation, ob das CPU1-Postfach verfügbar ist (Verriegelungsbit = 0) und demzufolge Systemmittelverriegelung, wenn es tatsächlich verfügbar ist.
- 6. Auslesung der Nachricht aus dem CPU1-Postfach.
- 7. Löschen der Nachricht.
- 8. Verfügbarmachung des CPU1-Postfaches durch Rückstellung des Verriegelungsbits u
- 9. Rückstellung des Flip-Flops 40 durch Erzeugung eines geeigneten Adreßcodes nur auf dem Bus ABUS1, welcher nach Decodierung durch den Decodierer 7 das Signal S2 erzeugt.
- 10. Betrieb gemäß den Befehlen bzw. der Information, die in der empfangenden Nachricht enthalten ist.
- Alle diese Operationen erfordern nur die Belegung des CPU-Busses und berühren nicht den I/OP-Bus, so daß der I/OP2 in autonomer Weise weiterfahren kann mit der Bearbeitung anderer Prozesse unter Verwendung aller Systemmittel, die an den I/OP-Bus angeschlossen sind. Insbesondere kann der Prozessor I/OP2 es erfordern, eine weitere Nachricht zu dem CPU1 zu senden und zu überprüfen, ob das CPU1-Postfach verfügbar ist oder nicht. Zu diesem Zweck muß der I/OP2 keine Speicher- Aufrufoperationen ausführen, die die Beteiligung des CPU1-Busses und des Speichers nach sich ziehen, sondern er hat nur auf dem Bus ABUS2 einen Adreßcode zu erzeugen, der nach Decodierung durch den Decodierer 20 das Signal Z3 erzeugt. Dieses Signal gibt das Gatter 42 frei und gestattet das Lesen des Status des Flip-Flops 40 über den DATABUS 2. Wenn das Flip-Flop 40 gesetzt ist, so bedeutet dies, daß die Unterbrechung noch nicht beachtet worden ist oder daß das Auslesen des Postfaches durch die CPU1 noch nicht vervollständigt worden ist. Um sodann zu überprüfen, ob die Postfach-Auslesung ausgeführt worden ist, hat der I/OP2 nur Aufrufoperationen des Status des
- Flip-Flops 40 durchzuführen, was auf einem lokalen Pegel erfolgt mit der einzigen Belegung des I/OP2-Busses und ohne Überlappung mit CPU1-Operationen.
- Wenn andererseits das Flip-Flop 40 zurückgestellt ist, so ist die Unterbrechung mit Sicherheit beachtet worden und das Postfach ausgelesen worden und daher in der Lage, neue Nachrichten aufzunehmen. Der I/OP2 kann daher Zugriff auf das CPU1-Postfach nehmen und eine neue Nachricht einschreiben, wobei sicher ist, daß Aufrufoperationen nicht erforderlich sind und die Test- und Setzoperation (Operation 1) mit Sicherheit erfolgreich ist.
- Mit anderen Worten bietet die Möglichkeit der Überprüfung des Status des Flip-Flops 40 dem I/OP2 eine wesentliche Information, die in vielfältiger Weise benutzt werden kann.
- Zunächst ist ersichtlich, daß wenn die Regel respektiert wird, gemäß der ein Postfach neue Nachrichten nicht empfangen kann, bevor die zuvor Empfangenen betrachtet worden sind, die Test- und Setz-Operationen 1) und 5) nicht notwendig werden.
- Der Dialogmechanismus zwischen verschiedenen Prozessoren über ein Postfach und Meldung (oder Unterbrechung) kann daher auch für die Systeme benutzt werden, wo die Prozessoren die Bearbeitung von unteilbaren Test- und Setzoperationen nicht freigeben.
- Tatsächlich ist klar, daß wenn das Flip-Flop 40 zurückgestellt ist, der I/OP2 das Postfach verfügbar vorfindet, da die CPU keinen Grund hat, mit einem leeren Postfach zusammenzuarbeiten, das kein Melde- bzw. Unterbrechungssignal enthält u
- Aus dem gleichen Grund ist, wenn eine Unterbrechungsbzw. Meldenachricht empfangen ist, die CPU1 sicher, daß der meldende Prozessor I/OP2 nicht erneut auf das Postfach Zugriff nimmt und Nachrichten einschreibt, bevor er die bereits in dem Postfach abgespeicherte Nachricht berücksichtigt hat u
- In diesem Sinn wird die Systemleistung weiter verbessert, da nicht nur der Status des Flip-Flops 40 durch eine Aufrufoperation auf dem lokalen Buspegel festgestellt werden kann, sondern ebenfalls bestimmte Operationen (Testen und Setzen und dem entsprechende Rückstellung des Verriegelungsbits), die die Verwendung von Systemmitteln auf dem Systempegel erfordern, vollständig vermieden werden.
- Alternativ ist es möglich, Vorrechts-Operationen auszuführen, d. h. den Ersatz einer bereits in dem Postfach gespeicherten Nachricht mit einer Prioritätsnachricht. Um diese Operation möglich zu machen, ohne daß Fehler hervorgerufen werden, genügt es, das Verfahren zu ändern, durch welches die CPU1 die Unterbrechung handhabt, so daß die unter der Nummer 9) bereits angegebene Operation der Operation vorausgeht, die bereits unter der Nummer 8) angegeben wurde.
- Mit anderen Worten genügt es, daß die CPU1 das Flip-Flop 40 unmittelbar vor dem Verriegelungsbit L zurückstellt. Wenn diese Bedingung verwirklicht wird, so ist es klar, daß der Prozessor I/OP2, wenn er einmal eine Nachricht in das CPU1-Postfach abgespeichert hat, und das Flip-Flop 40 gesetzt hat, eine Aufrufoperation des Flip-Flops 40 ausführen kann, ohne auf den CPU1-Bus und den Speicher Zugriff zu nehmen.
- In den Fällen, wo es erforderlich ist, daß die bereits gesendete Nachricht gelöscht und durch eine andere ersetzt wird, testet der Prozessor I/OP2 den Status des Flip-Flops 40. Wenn das Flip-Flop 40 zurückgestellt worden ist, so ist die Nachricht bereits durch die CPU1 berücksichtigt worden, und das CPU1-Postfach bereits ausgelesen worden oder im Begriff ausgelesen zu werden. In diesem Fall kann die Vorrechts-Operation nicht ausgeführt werden, und der Prozessor I/OP2 kann, nachdem er getestet hat, daß das CPU1-Postfach tatsächlich verfügbar ist, nur die neue Nachricht darin speichern.
- Wenn sich andererseits das Flip-Flop 40 noch im gesetzten Status befindet, so ist die Nachricht noch nicht berücksichtigt worden oder befindet sich im Ausleseverfahren. Der Status des Verriegelungsbits zeigt an, welche Alternative vorliegt. Der I/OP2 kann daher den Status des Verriegelungsbits überprüfen durch eine Test- und Setzoperation.
- Wenn das Systemmittel verfügbar ist (L=0), so liegt die Nachricht mit Sicherheit in dem Postfach vor, und es ist keine Leseoperation erforderlich, um dieses Vorliegen zu überprüfen. Die Nachricht kann daher durch eine neue Nachricht ersetzt werden.
- Wenn das Systemmittel nicht verfügbar ist, so ist die Nachricht durch die CPU1 im Begriff ausgelesen zu werden, und die Vorrechts-Operation ist nicht möglich. Es liegt auf der Hand, daß die Möglichkeit der Ausführung einer Vorrechts-Operation überprüft werden kann, ohne jegliche Speicher-Aufrufoperation und somit ohne die Benutzung gemeinsamer Systemmittel.
- Es ist bereits ausgeführt worden, daß zum Ermöglichen der Vorrechts-Operation ohne Fehler das Flip-Flop 40 vor dem Verriegelungsbit L zurückgestellt sein muß. Tatsächlich genügt es nicht, daß das Verriegelungsbit L nicht vor dem Flip-Flop 40 zurückgestellt ist. Diese beiden Operationen können daher gleichzeitig auftreten, und zu diesem Zweck kann das Signal S2 aus der gemeinsamen Decodierung eines Adreßcodes erhalten werden, der das CPU1-Postfach adressiert und durch eine Rückstell- bzw. Schreibanweisung. Mit anderen Worten kann das Decodiernetzwerk 7 zusätzlich zu den auf dem Bus ABUS1 vorliegenden Signalen eine Anweisung R/W1 am Ausgang der CPU1 empfangen, die die Art der auszuführenden Operation vorgibt. Diese Anweisung ist sowohl in Fig. 1 als auch in Fig. 2 dargestellt.
- Die zuvor gemachten Betrachtungen in bezug auf das Flip- Flop 40 sind offensichtlich auch für das Flip-Flop 41 gültig, d. h. für den Mechanismus der Nachrichtenmeldung an den Prozessor I/OP2 durch den Prozessor CPU1. Es liegt auf der Hand, daß die Melde-Logikeinheit 27, wie sie anhand von Fig. 3 offenbart ist, nur eine einfachere Ausführung einer Meldelogik gemäß der Erfindung bildet und daß verschiedene Änderungen gemacht werden können, ohne daß von dem Rahmen der Erfindung abgewichen wird.
- Fig. 4 zeigt ein bevorzugtes Ausführungsbeispiel der Logikeinheit 27, die zwei weitere Faktoren berücksichtigt.
- Es wäre in der Tat geeignet, daß der Unterbrechungs- Meldemechanismus selbst die Unterbrechungsbehandlung- Programmadresse liefert und daß ein Prozessor Unterbrechungs/Meldesignale auf unterschiedlichen Pegeln entsprechend dem Typ und der Dringlichkeit der Meldenachricht liefert. Diese beiden Konzepte müssen geklärt werden, bevor Fig. 4 betrachtet wird.
- Die Antwort eines Prozessors auf ein Unterbrechungssignal kann, wie bekannt, in zwei Arten stattfinden, d. h. die Unterbrechungsbehandlung kann in zwei verschiedenen Weisen auftreten.
- In einer ersten Weise, die als "Autovektor"-Behandlung definiert ist, stoppt der Prozessor sowohl die ablaufenden Operationen, und das ablaufende Programm rettet den Informationssatz, der zur Wiederaufnahme des unterbrochenen Programmes zu einem geeigneten Zeitpunkt erforderlich ist und springt in autonomer Weise zu einem Unterbrechungs-Bearbeitungsprogramm, dessen Beginn an einer vorgegebenen Adresse festgelegt ist, die dem Prozessor bekannt ist. In der vorangegangenen Beschreibung wurde bezug auf diese Art von Unterbrechungsbearbeitung genommen u
- Die Autovektor-Bearbeitung ist sehr strikt und erfordert im allgemeinen lange und komplizierte Programme, wobei ein Teil davon erforderlich ist, um die Art und den besonderen Grund der Unterbrechung festzustellen.
- Alternativ kann die Bearbeitung einer Unterbrechung in einer "vektoriellen" Weise stattfinden, um eine höhere Flexibilität in der Zuteilung der Unterbrechungsbearbeitung bzw. der Programme zu erhalten. In diesem Fall erzeugt der unterbrochene Prozessor, wenn er die empfangene Unterbrechung berücksichtigt, ein Signal INTACK als Bestätigung der Unterbrechung und fragt mit diesem Signal bei der Unterbrechungseinheit an, um über die Programmadresse der Unterbrechungsbearbeitung informiert zu werden, die für diese spezielle Unterbrechung benutzt werden muß. Mit einer solchen Unterbrechungsunterscheidung ergibt sich das folgende Konzept:
- Eine Einheit kann einen Prozessor aus vollständig verschiedenen Gründen unterbrechen. Beispielsweise ist die wesentliche Unterscheidung zwischen einer Unterbrechung bekannt, die gesendet wird, da ein Zeichen oder im allgemeineren eine Gruppe von Daten zu übertragen ist (Unterbrechung definiert als "I/O- Übertragungsunterbrechung") und zwischen einer Unterbrechung, die gesendet wird, da signalisiert werden muß, daß bestimmte Operationen, wie beispielsweise ein Zeilendruck oder die Ausführung eines Papiervorschubes im Falle von Druckern oder die Spursuche im Falle von Platteneinheiten vervollständigt worden sind. Die letzte Art von Unterbrechung ist als "I/O- Beendigungsunterbrechung" bezeichnet.
- Es ist klar, daß verschiedene Unterbrechungsanforderungen erzeugt werden können, sowohl durch Erzeugung unterschiedlicher Unterbrechungssignale als auch durch Charakterisierung eines gemeinsamen Signales mit einem Unterbrechungsvektor. Eine Vielzahl von im Markt erhältlichen Mikroprozessoren gestatten die Handhabung der verschiedenen Arten von Unterbrechungen gemäß dieser beiden Mechanismen. Unter diesen Prozessoren sind die Mikroprozessoren 68000 und 68010, die bei dem Ausführungsbeispiel des offenbarten Systems bevorzugt werden.
- Der Mikroprozessor 68000 (oder 68010) ist mit drei Eingängen IPLEV versehen, um einen 3-Bit- Unterbrechungscode zu empfangen, welcher ihn in die Lage versetzt, bis zu 7 verschiedene Unterbrechungspegel zu identifizieren, wobei drei Ausgänge FCO den Prozessorstatus und die Art des ablaufenden Zyklus nach draußen zu signalisieren gestatten. Insbesondere ist, wenn sich die drei Ausgänge auf dem Logikpegel 1 befinden, der ablaufende Zyklus ein Zyklus der Unterbrechungsbestätigung. Durch eine logische UND- Operation mit den drei Ausgängen kann ein Signal (INTACK) der Unterbrechungsbestätigung erzeugt werden.
- Der Mikroprozessor 68000 (oder 68010) ist ferner mit einem Eingang VPA (Fig. 1) versehen, um ein eindeutiges Signal zugeführt zu erhalten, welches bei einem Logikpegel 0 während eines Unterbrechungs- Bestätigungszyklus anzeigt, daß die Unterbrechung vom "Autovektor"-Typ ist.
- Die nunmehr betrachtete Fig. 4 zeigt in Einzelheiten ein bevorzugtes Ausführungsbeispiel der Melde-Logikeinheit 27 zusammen mit den an sie angeschlossenen Systemelementen. Die verschiedenen Busse ABUS1, DATABUS1, ABUS2, DATABUS2, die Adreßdecodierer 7, 20 und die Unterbrechungs- Logikeinheit sind daher dargestellt. Die Logikeinheit 27 umfaßt einen integrierten Schaltkreis CIO, eine Ein/Ausgabe-Steuerung 49, drei Flip-Flops 50, 51, 52 und zwei Treibergatter 53, 54. Der CIO-Schaltkreis 49 wird durch die Firma ZILOG hergestellt und ist im Markt unter dem Code Z8536 erhältlich.
- Er besteht im wesentlichen aus drei programmierbaren Zeittaktzählern, drei Daten-Ein/Ausgabe-Gattern und internen Steuerregistern. Die konstruktiven Einzelheiten und die verschiedenen Operationen, die ein solcher Schaltkreis ausführen kann, werden nicht näher betrachtet, da sie leicht dem technischen Handbuch der Firma ZILOG "Z8036 Z-CIO/Z8536-DIO/Counter Timer and Parallel I/O Unit", ZILOG 1982, entnommen werden können.
- Es sei jedoch vermerkt, daß der Schaltkreis mit einem bidirektionalen 8-Bit-Ein/Ausgabe-Gatter 55 für den Datenaustausch mit dem Bus DATABUS, mit drei Steuereingängen 56, 57, 58 für den Empfang einer Schreibanweisung W, einer Ausleseanweisung R und einer Auswahlanweisung GSLCIO, mit zwei Eingängen A1, A0 für den Empfang von Register-Auswahlsignalen (drei Ein/Ausgabe-Gatterregister und Steuerregister), mit einem Anschluß für die Ausgabe eines Unterbrechungssignales INT, und mit einem Eingang für den Empfang eines Unterbrechungs-Bestätigungssignales (INTACK) versehen ist. Der CIO-Schaltkreis 49 ist ferner mit drei Anschlußregistern versehen, die mit der Außenwelt kommunizieren. Solche Register können gesteuert werden, um externe Information zu empfangen oder binäre Information auszugeben. Die verschiedenen Registerzellen können individuell gesteuert werden, um Ein/Ausgabeelemente zu bilden.
- Daneben können die Zellen, wenn sie gesetzt sind, um Signale von draußen zu empfangen, ferner gesteuert werden, so daß beim Empfang eines Signales auf einem vorbestimmten Pegel oder beim Empfang eines Umschaltsignales (vom Pegel 0 auf 1 oder vom Pegel 1 auf 0) der CIO-Schaltkreis 49 ein Unterbrechungssignal erzeugt.
- An jedes Element (Eingangszelle) kann ein Unterbrechungs- Adreßvektor angeschlossen werden, der in einem Steuerregister innerhalb des Schaltkreises CIO 49 gespeichert ist und der über den Anschluß 55 ausgelesen werden kann.
- Für die Zwecke der vorliegenden Erfindung zeigt der CIO- Schaltkreis 49 in Fig. 4 sechs Zellen (zu einem Anschlußregister gehörend), die mit 61 bis 66 entsprechend beziffert sind.
- Der CIO-Schaltkreis 49 empfängt von geeigneten Ausgängen des Decodierers 7 ein Auswahlsignal CSLCIO, eine Schreibanweisung W und eine Ausleseanweisung R. Die Auswahleingänge A0, A1 sind an zwei Leitungen des Adreßbusses ABUS1 angeschlossen. Somit kann der CIO- Schaltkreis 49 adressiert und gesteuert werden durch geeignete Adreßcodes über den Bus ABUS1 und den Decodierer 7, um eine Schreiboperation (Informationsspeicherung), eine Ausleseoperation (Informationsauslesung über das Gatter 55 und den Bus DATABUS1) und eine Voreinstellung für den Betrieb in geeigneter Weise auszuführen.
- Insbesondere ist der Schaltkreis CIO-49 so gesetzt, daß die Zellen 61, 63, 65 als Ausgangszellen und die Zellen 62, 64, 66 als Eingangszellen arbeiten und daß bei einer Umschaltung eines Signales von 0 auf 1 an den Zelleingängen 64, 66 ein Unterbrechungssignal erzeugt wird.
- Ferner sind zwei unterschiedliche Unterbrechungsvektoren mit vorbestimmter relativer Priorität an die Zellen 64, 66 (PRIORITÄTSCODIERTER VEKTORMODUS) angeschlossen. Der Setzeingang des Flip-Flops 50 ist mit dem Ausgang der Zelle 61 verbunden, und der direkte Ausgang Q ist an die Zelle 62 angeschlossen, die als Eingang arbeitet sowie an den Eingang der Unterbrechungs-Logikeinheit, an den der Ausgang Q ein Melde-Signal NOTIFY liefert.
- Die Flip-Flops 51, 52 sind mit ihren Takteingängen an den Ausgang der Zellen 63, 65 entsprechend angeschlossen, und der Ausgang Q ist entsprechend an die Zellen 64, 66 sowie über Treiber 53, 54 an den Bus DATABUS2 angeschlossen.
- Geeignete Ausgänge des Decodierers 20 sind entsprechend an den Takteingang des Flip-Flops 50 und an den Setzeingang der Flip-Flops 51, 52 angeschlossen, die mit den Signalen Z1, Z2, Z3 entsprechend gespeist werden. Ein viertes Signal Z4 am Ausgang des Decodierers 20 gibt die Treibergatter 53, 54 frei.
- Wenn der Schaltkreis CIO-49 einmal gesetzt ist durch geeignete Anweisungen, so ist der Betrieb der Meldeeinheit 27 sehr einfach. Wenn die CPU1 ein Meldesignal an den Prozessor I/OP2 zu senden hat, so wählt sie den CIO-Schaltkreis mit einer geeigneten Adresse aus und steuert die Erzeugung eines Impulses mit dem Logikpegel 1 am Ausgang der Zelle 61. Dieser Impuls setzt das Flip-Flop 50, welches ein Melde/Unterbrechungssignal an einen Eingang des Unterbrechungsnetzwerkes 21 sendet. Dieses erzeugt, wie bereits erwähnt, beim Fehlen eines Unterbrechungssignales auf einem höheren Pegel einen Unterbrechungscode IPLEV, der zu dem Prozessor I/OP2 gesendet wird. Wenn der I/OP2 die Unterbrechung in Betracht zieht, so erzeugt er einen Code FC (mit allen Bits auf dem Logikpegel 1), der zu der Einheit 21 gesendet wird, die durch Decodierung ein Unterbrechungs-Bestätigungssignal INTACK erzeugt, welches an den Eingang VPA des Prozessors I/OP2 angelegt wird und anzeigt, daß die gerade bestätigte Unterbrechung eine Autovektor-Unterbrechung ist. Der Prozessor I/OP2 fährt daher in autonomer Weise mit der Unterbrechungsbearbeitung fort, indem er die Nachricht für ihn aus dem Speicher-Postfach ausliest. Letztlich erzeugt er über einen geeigneten, an den Bus ABUS2 angelegten Adreßcode und über den Decodierer 20 das Signal Z1, welches das Flip-Flop 50 zurückstellt.
- Während dieses gesamten Zeitintervalles kann die CPU1 den Status der Meldeoperation überprüfen, indem sie den CIO- Schaltkreis 49 adressiert und auswählt für die Bearbeitung einer Ausleseoperation aus der Zelle 62. Diese Operation erfordert klar den Zugriff auf den CPU- Bus und hindert daher den I/OP2 an der Verwendung der gemeinsamen Systemmittel. Die erforderliche Zeit für die Ausführung einer solchen Operation, die nur eine Ausleseoperation darstellt, ist jedoch sehr kurz im Vergleich zu einer Speicher-Aufrufoperation für den Erhalt der gleichen Information. Diese letzte Operation erfordert tatsächlich eine Routinenbearbeitung, deren erster Schritt eine Test- und Setzoperation ist und, falls dieser erfolgreich ist, zumindest das Auslesen eines Briefkasten-Speicherplatzes und die nachfolgende Zurückstellung des Verriegelungsbits.
- In gleicher Weise kann der Prozessor I/OP2 Meldesignale an die CPU1 senden, indem er einen geeigneten Code auf dem Bus ABUS2 erzeugt. Die Erzeugung des Signales Z2 setzt das Flip-Flop 51, und die Erzeugung des Signales Z3 setzt das Flip-Flop 52. Die Signalumschaltung am Ausgang der Flip-Flops 51-52 wird entsprechend an den Eingangszellen 64 bzw. 66 des Schaltkreises CIO-49 empfangen, der ein Unterbrechungssignal INT erzeugt. Dieses durch die Unterbrechungseinheit 8 empfangene Signal wird mit geeigneter Prioritätsbeobachtung im Falle gleichzeitig vorliegender Unterbrechungssignale in codierter Form IPLEV zu der CPU1 übertragen. Die CPU antwortet im geeigneten Zeitpunkt mit einem Bestätigungscode FC, der durch die Einheit 8 in ein Unterbrechungs-Bestätigungssignal INTACK decodiert wird. Dieses durch den Schaltkreis CIO-49 empfangene Signal setzt diesen in die Lage, einen Unterbrechungsvektor entsprechend der bestätigten Unterbrechung über das Gatter 55 auf den Bus DATABUS1 zu übertragen. Je nachdem, ob die Unterbrechung durch das Flip-Flop 51 hervorgerufen wird und daher beispielsweise auf das Erfordernis einer Datenübertragung zurückzuführen ist oder durch das Flip- Flop 52 hervorgerufen wird und daher beispielsweise auf die Beendigung irgendeiner ausgeführten Anweisung zurückzuführen ist, wird ein unterschiedlicher Unterbrechungsvektor zu der CPU1 gesendet.
- Die CPU1 kann daher direkt auf die Bearbeitungsroutine dieser speziellen Unterbrechung Zugriff nehmen, kann aus dem Postfach die Nachricht auslesen, welche die Unterbrechungsparameter enthält und wenn die Nachricht einmal ausgelesen und gelöscht ist, kann die CPU1 das Flip-Flop 51 bzw. 52 zurückstellen, indem der Schaltkreis CIO-49 ausgewählt und gesteuert wird, um einen Rückstellimpuls an der Ausgangszelle 63 bzw. 65 zu erzeugen.
- Während dieses Zeitintervalles kann der I/OP2 den Status (unerledigt oder berücksichtigt) der gemeldeten Nachrichten überprüfen, indem ein Signal Z4 erzeugt wird, das die Treibergatter 53 und 54 freigibt für die Übertragung des Status der Flip-Flops 51, 52 auf den Bus DATABUS2.
- Diese Operation erfordert nicht den Zugriff auf den Bus CPU1 oder auf gemeinsame Systemmittel und wird in einem sehr kurzen Maschinenzyklus erledigt, da Warteintervalle nicht erforderlich sind (wie sie im allgemeinen im Fall des Speicherlesens auftreten), da die geforderte Information sofort verfügbar ist. Das Ausführungsbeispiel gemäß Fig. 4 zeigt daher, daß die Meldelogik 27 sowohl für die Verwendung von "Autovektor"- als auch für "Vektor"-Mechanismen aufgebaut werden kann und daß jede Meldeeinheit unterschiedliche Meldungsarten bzw. Pegel erzeugen kann, ohne daß die Vorteile verloren gehen, die in bezug auf das Ausführungsbeispiel in Fig. 3 offenbart worden sind.
- Es liegt ferner auf der Hand, daß, während ein System mit zwei Prozessoren offenbart worden ist, wobei jeder Prozessor einen eigenen Bus, einen Bus und wenigstens an einen solchen Bus angeschlossene Speicher besitzt, die gemeinsame Systemmittel bilden, auf die durch beide Prozessoren zugegriffen werden kann, das gleiche erfinderische Konzept in Systemen verwendet werden kann, wo mehr als zwei Prozessoren benutzt werden, wobei geeignete Änderungen vorgenommen werden müssen, die an dieser Stelle dem Fachmann auf der Hand liegen. In der vorangegangenen Beschreibung wurde nicht Bezug auf den Zeittakt des Prozessors und die Dialogeinzelheiten genommen, die in weitem Maße von der Art der verwendeten Prozessoren abhängen und für das Verständnis der vorliegenden Erfindung nicht wesentlich sind.
- Bezüglich dieser Einzelheiten und mit Bezugnahme auf die Mikroprozessoren 68000 und 68010, die durch die Firma Motorola und ferner durch die Firma Mostek hergestellt werden, sei auf das Handbuch "MOSTEK 1982/1983 MICROELECTRONIC DATA BOOK", Mai 1982, Seite VI-1 bis VI-50 verwiesen.
Claims (5)
1. Mehrprozessor-Systemarchitektur, in der ein
erster (1) und ein zweiter (2) Prozessor mit
mindestens einem ersten (ABUS1, DATABUS1) bzw.
einem zweiten (ABUS2, DATABUS2) autonomen Bus
versehen sind und die beiden Busse selektiv
miteinanderverbunden werden können und die beiden
Prozessoren miteinander einerseits über
Anweisungen kommunizieren, welche in Postfächern
einer mit einem der Busse verbundenen
Speichereinrichtung (4) gespeichert sind, und
andererseits über Unterbrechungssignale (INTIOP,
NOTIFY) kommunizieren, mit:
- einem Unterbrechungssignalgenerator (27)
zum Erzeugen eines ersten
Unterbrechungssignals (INTIOP) sowie eines zweiten
Unterbrechungssignals (NOTIFY), der Anschlüsse
(28, 29) zum ersten und zweiten Bus
aufweist, und
- bei Anwesenheit des ersten
Unterbrechungssignals durch vom zweiten Prozessor dem
zweiten Bus zugeführte Signale in einen
ersten Zustand gesetzt wird,
- bei Abwesenheit des ersten
Unterbrechungssignals durch vom ersten Prozessor dem
ersten Bus zugeführte Signale in einen
zweiten Zustand gesetzt wird,
- bei Anwesenheit des zweiten
Unterbrechungssignals durch vom ersten Prozessor dem
ersten Bus zugeführte Signale in einen
dritten Zustand gesetzt wird, und
- bei Abwesenheit des zweiten
Unterbrechungssignals durch vom zweiten Prozessor dem
zweiten Bus zugeführte Signale in einen
vierten Zustand gesetzt wird;
- einer vom ersten Bus getrennten ersten
Koppeleinrichtung (8), welche das erste
Unterbrechungssignal (INTIOP) ohne Zugriff zum
ersten Bus dem ersten Prozessor (1)
zuleitet;
- einer vom zweiten Bus getrennten zweiten
Koppeleinrichtung (21), welche das zweite
Unterbrechungssignal (NOTIFY) ohne Zugriff
zum zweiten Bus dem zweiten Prozessor (2)
zuleitet.
2. Systemarchitektur nach Anspruch 1 mit vom ersten
Prozessor (1) über den ersten Bus gesteuerten
ersten Mitteln (43) zum Lesen des Zustands
(dritten oder vierten) des Generators über den
ersten Bus und die Verbindung des Generators
(27) mit dem ersten Bus.
3. Systemarchitektur nach Anspruch 2 mit vom
zweiten Prozessor über den zweiten Bus
gesteuerten zweiten Mitteln (42) zum Lesen des Zustands
(ersten oder zweiten) des Generators über den
zweiten Bus und die Verbindung des Generators
mit dem zweiten Bus.
4. In einer Systemarchitektur nach Anspruch 3 ein
Kommunikationsverfahren zwischen dem ersten und
dem zweiten Prozessor bestehend aus folgenden
Schritten:
- der erste Prozessor verifiziert, daß sich
der Generator im vierten Zustand befindet,
- in ein an den zweiten Prozessor
angeschlossenes Postfach schreibt der erste Prozessor
eine für den zweiten Prozessor bestimmte
Anweisung ein, ohne das Postfach zu
verriegeln,
- der erste Prozessor setzt den Generator in
den dritten Zustand gefolgt von der
Erzeugung des zweiten Unterbrechungssignals,
- Aus lesen des an den zweiten Prozessor
angeschlossenen Postfachs durch den zweiten
Prozessor, ohne das Postfach zu verriegeln
als Antwort auf das zweite
Unterbrechungssignal,
- der Generator wird vom zweiten Prozessor in
den vierten Zustand gesetzt.
5. In einer Systemarchitektur nach Anspruch 3, ein
Verfahren zum Nachrichtenaustausch zwischen dem
ersten und zweiten Prozessor sowie zum
Überschreiben von Nachrichten mit folgenden
Schritten:
a) Feststellung durch den ersten Prozessor,
daß ein mit dem zweiten Prozessor
verbundenes Postfach zugängig ist sowie
Verriegelung dieses Postfachs,
b) der erste Prozessor schreibt in dieses
Postfach eine für den zweiten Prozessor
bestimmte Nachricht ein,
c) der erste Prozessor gibt das mit dem
zweiten Prozessor verbundene Postfach frei,
d) der Generator wird vom ersten Prozessor in
den dritten Zustand gesetzt, gefolgt von
der Erzeugung des zweiten
Unterbrechungssignals,
e) der zweite Prozessor verifiziert, daß das
an den zweiten Prozessor angeschlossene
Postfach zugängig ist und verriegelt dieses
bei Eingang des zweiten
Unterbrechungssignals,
f) Aus lesen des Postfachs durch den zweiten
Prozessor,
g) der Generator wird vom zweiten Prozessor in
den vierten Zustand gesetzt,
h) das Postfach wird gleichzeitig mit oder
nach dem vorherigen Schritt (g) vom zweiten
Prozessor freigegeben,
i) der erste Prozessor verifiziert zu
irgendeinem Zeitpunkt nach dem Schritt (d), daß
sich der Generator im dritten Zustand
befindet, und wenn dies der Fall ist,
j) der erste Prozessor verifiziert, daß das
Postfach entsperrt ist, und wenn dies der
Fall ist,
k) der erste Prozessor überschreibt die
bereits vorhandene Nachricht mit einer
neuen Nachricht und
l) der erste Prozessor entriegelt das Postfach
und gibt es frei.
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
IT20599/85A IT1184553B (it) | 1985-05-07 | 1985-05-07 | Architettura di sistema a piu' processori |
Publications (2)
Publication Number | Publication Date |
---|---|
DE3687426D1 DE3687426D1 (de) | 1993-02-18 |
DE3687426T2 true DE3687426T2 (de) | 1993-07-29 |
Family
ID=11169369
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
DE8686105844T Expired - Fee Related DE3687426T2 (de) | 1985-05-07 | 1986-04-28 | Mehrprozessorsystem-architektur. |
Country Status (7)
Country | Link |
---|---|
US (1) | US4862354A (de) |
EP (1) | EP0201020B1 (de) |
JP (1) | JPS61286961A (de) |
KR (1) | KR920006616B1 (de) |
CA (1) | CA1254663A (de) |
DE (1) | DE3687426T2 (de) |
IT (1) | IT1184553B (de) |
Families Citing this family (77)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
AU597980B2 (en) * | 1986-05-30 | 1990-06-14 | Honeywell Bull Inc. | Apparatus and method for interprocessor communication |
US5142683A (en) * | 1987-03-09 | 1992-08-25 | Unisys Corporation | Intercomputer communication control apparatus and method |
JPS63284660A (ja) * | 1987-05-16 | 1988-11-21 | Nec Corp | プロセッサ間通信方式 |
US5280589A (en) * | 1987-07-30 | 1994-01-18 | Kabushiki Kaisha Toshiba | Memory access control system for use with a relatively small size data processing system |
US5136718A (en) * | 1987-09-04 | 1992-08-04 | Digital Equipment Corporation | Communications arrangement for digital data processing system employing heterogeneous multiple processing nodes |
US5367688A (en) * | 1987-09-04 | 1994-11-22 | Digital Equipment Corporation | Boot system for distributed digital data processing system |
US4969090A (en) * | 1987-09-11 | 1990-11-06 | Beehive International | Program routine vectoring circuit for selectively using either stored interupt instructions or incoming interupt handling instructions |
JPH02128267A (ja) * | 1988-11-09 | 1990-05-16 | Fujitsu Ltd | 共有メモリによる通信方式 |
EP0376003A3 (de) * | 1988-12-29 | 1991-12-18 | International Business Machines Corporation | Mehrrechnersystem mit Zwischenprozessor-Datenkommunikationseinrichtungen |
US5210828A (en) * | 1988-12-29 | 1993-05-11 | International Business Machines Corporation | Multiprocessing system with interprocessor communications facility |
EP0429780B1 (de) * | 1989-11-29 | 1997-11-12 | Kabushiki Kaisha Toshiba | Zum Anschluss einer Erweiterungseinheit geeignetes Rechnersystem |
EP0443876A3 (en) * | 1990-02-23 | 1992-01-02 | Kabushiki Kaisha Toshiba | Computer system capable of connecting expansion unit |
US5491799A (en) * | 1992-01-02 | 1996-02-13 | Amdahl Corporation | Communication interface for uniform communication among hardware and software units of a computer system |
US6343363B1 (en) | 1994-09-22 | 2002-01-29 | National Semiconductor Corporation | Method of invoking a low power mode in a computer system using a halt instruction |
US5581770A (en) * | 1992-06-04 | 1996-12-03 | Mitsubishi Denki Kabushiki Kaisha | Floating interruption handling system and method |
EP0645026B1 (de) * | 1992-06-12 | 1997-11-12 | The Dow Chemical Company | Transparente schnittstelle fur prozesssteuerungsrechner |
US5613135A (en) * | 1992-09-17 | 1997-03-18 | Kabushiki Kaisha Toshiba | Portable computer having dedicated register group and peripheral controller bus between system bus and peripheral controller |
JPH06214969A (ja) * | 1992-09-30 | 1994-08-05 | Internatl Business Mach Corp <Ibm> | 情報通信方法および装置 |
DE69316559T2 (de) * | 1992-12-03 | 1998-09-10 | Advanced Micro Devices Inc | Servoregelkreissteuerung |
US5574862A (en) * | 1993-04-14 | 1996-11-12 | Radius Inc. | Multiprocessing system with distributed input/output management |
EP0640929A3 (de) * | 1993-08-30 | 1995-11-29 | Advanced Micro Devices Inc | Zwischenprozessorkommunikation durch RAM-Postamt. |
JPH07105023A (ja) * | 1993-09-20 | 1995-04-21 | Internatl Business Mach Corp <Ibm> | データ処理システム内でスプリアス割込みを検出するための方法及び装置 |
CA2123447C (en) * | 1993-09-20 | 1999-02-16 | Richard L. Arndt | Scalable system interrupt structure for a multiprocessing system |
US5673415A (en) * | 1993-12-03 | 1997-09-30 | Unisys Corporation | High speed two-port interface unit where read commands suspend partially executed write commands |
US5680624A (en) * | 1993-12-21 | 1997-10-21 | Object Licensing Corporation | Object oriented interrupt system |
US5555430A (en) * | 1994-05-31 | 1996-09-10 | Advanced Micro Devices | Interrupt control architecture for symmetrical multiprocessing system |
US5574863A (en) * | 1994-10-25 | 1996-11-12 | Hewlett-Packard Company | System for using mirrored memory as a robust communication path between dual disk storage controllers |
GB9505724D0 (en) * | 1995-03-21 | 1995-05-10 | Newbridge Networks Corp | ATM without traffic shaping |
GB2308902B (en) * | 1996-01-04 | 2000-03-29 | Motorola Inc | Peripheral module and microprocessor system |
EP0813710B1 (de) * | 1996-01-09 | 2001-08-22 | Koninklijke Philips Electronics N.V. | Verfahren und system zum synchronisieren von gleichzeitigen sequentiellen prozessen mit hilfe von intra-prozess-korrigier- und inter-prozess-adaptier- operationen |
US5778236A (en) * | 1996-05-17 | 1998-07-07 | Advanced Micro Devices, Inc. | Multiprocessing interrupt controller on I/O bus |
US6151638A (en) * | 1997-06-25 | 2000-11-21 | Unisys Corp. | System and method for performing external procedure calls from a client program to a server program to a server program and back to the client program while both are running in a heterogenous computer |
US6141697A (en) * | 1997-06-25 | 2000-10-31 | Unisys Corp. | System and method for performing external procedure calls in heterogeneous computer systems utilizing program stacks |
US6192418B1 (en) * | 1997-06-25 | 2001-02-20 | Unisys Corp. | System and method for performing external procedure calls from a client program to a server program while both are operating in a heterogenous computer |
US6289391B1 (en) * | 1997-06-25 | 2001-09-11 | Unisys Corp. | System and method for performing external procedure calls from a server program to a client program while both are running in a heterogeneous computer |
US6131113A (en) * | 1998-02-24 | 2000-10-10 | International Business Machines Corporation | Managing a shared resource in a multi-processor system |
US7233977B2 (en) * | 1998-12-18 | 2007-06-19 | Emc Corporation | Messaging mechanism employing mailboxes for inter processor communications |
US6295573B1 (en) | 1999-02-16 | 2001-09-25 | Advanced Micro Devices, Inc. | Point-to-point interrupt messaging within a multiprocessing computer system |
US6205508B1 (en) | 1999-02-16 | 2001-03-20 | Advanced Micro Devices, Inc. | Method for distributing interrupts in a multi-processor system |
US6442597B1 (en) | 1999-07-08 | 2002-08-27 | International Business Machines Corporation | Providing global coherence in SMP systems using response combination block coupled to address switch connecting node controllers to memory |
US6779036B1 (en) | 1999-07-08 | 2004-08-17 | International Business Machines Corporation | Method and apparatus for achieving correct order among bus memory transactions in a physically distributed SMP system |
US6467012B1 (en) | 1999-07-08 | 2002-10-15 | International Business Machines Corporation | Method and apparatus using a distributed system structure to support bus-based cache-coherence protocols for symmetric multiprocessors |
US6389526B1 (en) | 1999-08-24 | 2002-05-14 | Advanced Micro Devices, Inc. | Circuit and method for selectively stalling interrupt requests initiated by devices coupled to a multiprocessor system |
US6591348B1 (en) | 1999-09-09 | 2003-07-08 | International Business Machines Corporation | Method and system for resolution of transaction collisions to achieve global coherence in a distributed symmetric multiprocessor system |
US6725307B1 (en) | 1999-09-23 | 2004-04-20 | International Business Machines Corporation | Method and system for controlling data transfers with physical separation of data functionality from address and control functionality in a distributed multi-bus multiprocessor system |
US6587930B1 (en) | 1999-09-23 | 2003-07-01 | International Business Machines Corporation | Method and system for implementing remstat protocol under inclusion and non-inclusion of L1 data in L2 cache to prevent read-read deadlock |
US6457085B1 (en) | 1999-11-04 | 2002-09-24 | International Business Machines Corporation | Method and system for data bus latency reduction using transfer size prediction for split bus designs |
US7529799B2 (en) | 1999-11-08 | 2009-05-05 | International Business Machines Corporation | Method and apparatus for transaction tag assignment and maintenance in a distributed symmetric multiprocessor system |
US6529990B1 (en) | 1999-11-08 | 2003-03-04 | International Business Machines Corporation | Method and apparatus to eliminate failed snoops of transactions caused by bus timing conflicts in a distributed symmetric multiprocessor system |
US6523076B1 (en) | 1999-11-08 | 2003-02-18 | International Business Machines Corporation | Method and apparatus for synchronizing multiple bus arbiters on separate chips to give simultaneous grants for the purpose of breaking livelocks |
US6542949B1 (en) | 1999-11-08 | 2003-04-01 | International Business Machines Corporation | Method and apparatus for increased performance of a parked data bus in the non-parked direction |
US6516379B1 (en) | 1999-11-08 | 2003-02-04 | International Business Machines Corporation | Method and apparatus for transaction pacing to reduce destructive interference between successive transactions in a distributed symmetric multiprocessor system |
US6535941B1 (en) | 1999-11-08 | 2003-03-18 | International Business Machines Corporation | Method and apparatus for avoiding data bus grant starvation in a non-fair, prioritized arbiter for a split bus system with independent address and data bus grants |
US6684279B1 (en) | 1999-11-08 | 2004-01-27 | International Business Machines Corporation | Method, apparatus, and computer program product for controlling data transfer |
US6606676B1 (en) | 1999-11-08 | 2003-08-12 | International Business Machines Corporation | Method and apparatus to distribute interrupts to multiple interrupt handlers in a distributed symmetric multiprocessor system |
US6606677B1 (en) * | 2000-03-07 | 2003-08-12 | International Business Machines Corporation | High speed interrupt controller |
FR2817058B1 (fr) * | 2000-11-21 | 2003-01-24 | St Microelectronics Sa | Dispositif et procede de traitement des interruptions dans une transmission d'informations sur un bus |
US7233998B2 (en) * | 2001-03-22 | 2007-06-19 | Sony Computer Entertainment Inc. | Computer architecture and software cells for broadband networks |
US20050071828A1 (en) * | 2003-09-25 | 2005-03-31 | International Business Machines Corporation | System and method for compiling source code for multi-processor environments |
US7475257B2 (en) | 2003-09-25 | 2009-01-06 | International Business Machines Corporation | System and method for selecting and using a signal processor in a multiprocessor system to operate as a security for encryption/decryption of data |
US7444632B2 (en) * | 2003-09-25 | 2008-10-28 | International Business Machines Corporation | Balancing computational load across a plurality of processors |
US7496917B2 (en) * | 2003-09-25 | 2009-02-24 | International Business Machines Corporation | Virtual devices using a pluarlity of processors |
US7389508B2 (en) * | 2003-09-25 | 2008-06-17 | International Business Machines Corporation | System and method for grouping processors and assigning shared memory space to a group in heterogeneous computer environment |
US7318218B2 (en) | 2003-09-25 | 2008-01-08 | International Business Machines Corporation | System and method for processor thread for software debugging |
US7549145B2 (en) * | 2003-09-25 | 2009-06-16 | International Business Machines Corporation | Processor dedicated code handling in a multi-processor environment |
US7523157B2 (en) * | 2003-09-25 | 2009-04-21 | International Business Machines Corporation | Managing a plurality of processors as devices |
US7478390B2 (en) * | 2003-09-25 | 2009-01-13 | International Business Machines Corporation | Task queue management of virtual devices using a plurality of processors |
US7415703B2 (en) * | 2003-09-25 | 2008-08-19 | International Business Machines Corporation | Loading software on a plurality of processors |
US7516456B2 (en) * | 2003-09-25 | 2009-04-07 | International Business Machines Corporation | Asymmetric heterogeneous multi-threaded operating system |
US8555395B2 (en) * | 2004-02-03 | 2013-10-08 | Media Rights Technologies, Inc. | Method and system for providing a media change notification on a computing system |
US8510491B1 (en) * | 2005-04-05 | 2013-08-13 | Oracle America, Inc. | Method and apparatus for efficient interrupt event notification for a scalable input/output device |
US7831778B2 (en) * | 2006-03-30 | 2010-11-09 | Silicon Image, Inc. | Shared nonvolatile memory architecture |
TWI386846B (zh) * | 2006-03-30 | 2013-02-21 | Silicon Image Inc | 利用共享式非揮發性記憶體初始化多個處理元件之方法、系統及快閃記憶體元件 |
US8677034B2 (en) * | 2006-04-28 | 2014-03-18 | Hewlett-Packard Development Company, L.P. | System for controlling I/O devices in a multi-partition computer system |
DE102007063291A1 (de) * | 2007-12-27 | 2009-07-02 | Robert Bosch Gmbh | Sicherheitssteuerung |
US10684965B2 (en) | 2017-11-08 | 2020-06-16 | Advanced Micro Devices, Inc. | Method to reduce write responses to improve bandwidth and efficiency |
TWI703501B (zh) * | 2018-08-23 | 2020-09-01 | 慧榮科技股份有限公司 | 具有分散式信箱架構的多處理器系統及其溝通方法 |
Family Cites Families (10)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US3483520A (en) * | 1966-04-20 | 1969-12-09 | Gen Electric | Apparatus providing inter-processor communication in a multicomputer system |
US3940743A (en) * | 1973-11-05 | 1976-02-24 | Digital Equipment Corporation | Interconnecting unit for independently operable data processing systems |
US4038644A (en) * | 1975-11-19 | 1977-07-26 | Ncr Corporation | Destination selection apparatus for a bus oriented computer system |
US4402046A (en) * | 1978-12-21 | 1983-08-30 | Intel Corporation | Interprocessor communication system |
IT1126475B (it) * | 1979-12-03 | 1986-05-21 | Honeywell Inf Systems | Apparato di comunicazione tra piu' processori |
US4420806A (en) * | 1981-01-15 | 1983-12-13 | Harris Corporation | Interrupt coupling and monitoring system |
US4449182A (en) * | 1981-10-05 | 1984-05-15 | Digital Equipment Corporation | Interface between a pair of processors, such as host and peripheral-controlling processors in data processing systems |
US4543627A (en) * | 1981-12-14 | 1985-09-24 | At&T Bell Laboratories | Internal communication arrangement for a multiprocessor system |
US4590556A (en) * | 1983-01-17 | 1986-05-20 | Tandy Corporation | Co-processor combination |
JPS59218560A (ja) * | 1983-05-26 | 1984-12-08 | Fuji Electric Co Ltd | 割込コントロ−ル方式 |
-
1985
- 1985-05-07 IT IT20599/85A patent/IT1184553B/it active
-
1986
- 1986-04-25 CA CA000507547A patent/CA1254663A/en not_active Expired
- 1986-04-28 EP EP86105844A patent/EP0201020B1/de not_active Expired - Lifetime
- 1986-04-28 DE DE8686105844T patent/DE3687426T2/de not_active Expired - Fee Related
- 1986-05-05 US US06/859,593 patent/US4862354A/en not_active Expired - Fee Related
- 1986-05-07 KR KR1019860003591A patent/KR920006616B1/ko not_active IP Right Cessation
- 1986-05-07 JP JP61104584A patent/JPS61286961A/ja active Pending
Also Published As
Publication number | Publication date |
---|---|
KR860009352A (ko) | 1986-12-22 |
EP0201020A3 (en) | 1989-06-14 |
US4862354A (en) | 1989-08-29 |
EP0201020B1 (de) | 1993-01-07 |
KR920006616B1 (ko) | 1992-08-10 |
DE3687426D1 (de) | 1993-02-18 |
CA1254663A (en) | 1989-05-23 |
JPS61286961A (ja) | 1986-12-17 |
EP0201020A2 (de) | 1986-12-17 |
IT1184553B (it) | 1987-10-28 |
IT8520599A0 (it) | 1985-05-07 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
DE3687426T2 (de) | Mehrprozessorsystem-architektur. | |
DE3685876T2 (de) | Meister-sklave-mikroprozessorsystem mit einem virtuellen speicher. | |
DE3882977T2 (de) | Verfahren und anordnung zur implementierung von mehrverriegelungsanzeigen in einem multiprozessordatenverarbeitungssystem. | |
DE3882989T2 (de) | Verfahren und anordnung zur verwaltung von mehrverriegelungsanzeigen in einem multiprozessordatenverarbeitungssystem. | |
DE2755897C2 (de) | ||
DE68913914T2 (de) | Multiprozessorsystem mit Vervielfältigung von globalen Daten. | |
DE68928772T2 (de) | Datenverarbeitungssystem mit sich um Zugriff auf verteilte Betriebsmittel bewerbenden Einheiten und mit auf den Status der verteilten Betriebsmittel reagierender Schiedsrichtereinheit | |
DE69228582T2 (de) | Vorrichtung zur Vermeidung von Prozessorblockierungen in einem Multiprozessorsystem | |
DE69023018T2 (de) | Prozessor-Unterbrechungssteuerung. | |
DE69128107T2 (de) | Busanordnung für Speicherzugriff | |
DE2719203C2 (de) | Einrichtung zur Reststatusberichterstattung während verketteter Ein- und Ausgabeoperationen | |
DE3152435C2 (de) | ||
DE3882988T2 (de) | Verfahren und anordnung zur einleitung von vorgängen in einem multiprozessordatenverarbeitungssystem mit verwendung von mehrverriegelungsanzeigen. | |
DE3888353T2 (de) | Unterbrechungsknoten zum vorsehen von unterbrechungsanforderungen auf einem anstehenden bus. | |
DE3485980T2 (de) | Datenverarbeitungsapparat zur verbindung mit einem gemeinsamen uebertragungsbus in einem datenverarbeitungssystem. | |
DE2719253B2 (de) | Schnittstellenschaltung für Datenverarbeitungsanlagen | |
DE68915074T2 (de) | Integrierte Zeitgeberschaltung mit mehreren Kanälen und zugeordnetem Bedienungsprozessor. | |
DE2750721A1 (de) | Ein/ausgabe-system | |
DE68920929T2 (de) | Zeitgeberkanal mit mehreren Zeitgeberreferenzmerkmalen. | |
DE3882991T2 (de) | Anordnung und methode zur erzielung von unterbrechungen mit einem "pended bus". | |
DE3502147C2 (de) | ||
DE68919018T2 (de) | Zeitgeberkanal mit Übereinstimmungserkennungsmerkmalen. | |
DE68922545T2 (de) | Zugeordneter Dienstprozessor mit Übertragungsmöglichkeiten zwischen Kanälen. | |
EP0006164A1 (de) | Multiprozessorsystem mit gemeinsam benutzbaren Speichern | |
DE69122142T2 (de) | Steuerungsanlage für ein Mehrprozessorsystem |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
8364 | No opposition during term of opposition | ||
8339 | Ceased/non-payment of the annual fee |