[go: up one dir, main page]
More Web Proxy on the site http://driver.im/

DE3689696T2 - Datenverarbeitungssystem mit einem Hauptprozessor und einem Ko-Prozessor mit gemeinsamen Betriebsmitteln. - Google Patents

Datenverarbeitungssystem mit einem Hauptprozessor und einem Ko-Prozessor mit gemeinsamen Betriebsmitteln.

Info

Publication number
DE3689696T2
DE3689696T2 DE3689696T DE3689696T DE3689696T2 DE 3689696 T2 DE3689696 T2 DE 3689696T2 DE 3689696 T DE3689696 T DE 3689696T DE 3689696 T DE3689696 T DE 3689696T DE 3689696 T2 DE3689696 T2 DE 3689696T2
Authority
DE
Germany
Prior art keywords
coprocessor
main processor
interrupt
input
output device
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Expired - Fee Related
Application number
DE3689696T
Other languages
English (en)
Other versions
DE3689696D1 (de
Inventor
John William Irvin
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
International Business Machines Corp
Original Assignee
International Business Machines Corp
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by International Business Machines Corp filed Critical International Business Machines Corp
Publication of DE3689696D1 publication Critical patent/DE3689696D1/de
Application granted granted Critical
Publication of DE3689696T2 publication Critical patent/DE3689696T2/de
Anticipated expiration legal-status Critical
Expired - Fee Related legal-status Critical Current

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/14Handling requests for interconnection or transfer
    • G06F13/20Handling requests for interconnection or transfer for access to input/output bus
    • G06F13/24Handling requests for interconnection or transfer for access to input/output bus using interrupt
    • G06F13/26Handling requests for interconnection or transfer for access to input/output bus using interrupt with priority control
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/14Handling requests for interconnection or transfer
    • G06F13/20Handling requests for interconnection or transfer for access to input/output bus
    • G06F13/24Handling requests for interconnection or transfer for access to input/output bus using interrupt
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/38Information transfer, e.g. on bus
    • G06F13/382Information transfer, e.g. on bus using universal interface adapter
    • G06F13/387Information transfer, e.g. on bus using universal interface adapter for adaptation of different data processing systems to different peripheral devices, e.g. protocol converters for incompatible systems, open system
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F15/00Digital computers in general; Data processing equipment in general
    • G06F15/16Combinations 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/161Computing infrastructure, e.g. computer clusters, blade chassis or hardware partitioning

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Computer Hardware Design (AREA)
  • Mathematical Physics (AREA)
  • Software Systems (AREA)
  • Multi Processors (AREA)
  • Advance Control (AREA)
  • Bus Control (AREA)

Description

  • Diese Erfindung betrifft ein Datenverarbeitungssystem mit einem Hauptprozessor und einem Coprozessor, die dieselben Betriebsmittel gemeinsam benutzen, wobei der Zugriff des Coprozessors auf ein ausgewähltes Betriebsmittel von dem Prozessor selektiv verhindert wird, der einen Zugriff auf das ausgewählte Betriebsmittel bedient.
  • Die jederzeitige Verfügbarkeit von Mikroprozessoren hat dazu geführt, daß die verschiedenen Charakterisierungen von relativ kleinen Computern, einschließlich der als Personal Computer bekannten Geräte, äußerst umfangreich wurden. Jedoch wird ein durchschnittlicher sogenannter "Personal Computer" mit einer Technik, die gerade ein halbes Jahrzehnt alt ist, im Vergleich zu einem durchschnittlichen, dem Stand der Technik entsprechenden "Personal Computer" vielleicht schon als ein sehr einfaches Gerät angesehen.
  • Viele Einzelpersonen und Unternehmen kaufen Personal Computer und schreiben die Rechnerprogramm-Software entweder selbst oder kaufen sie, um den Computer in der richtigen Form anzuweisen, ausgewählte Aufgaben, wie beispielsweise Textverarbeitungs- und Datenverarbeitungsanwendungen, auszuführen.
  • Da sich diese Personal Computer-Technologie so rasant entwickelt hat, war und ist es dringend erforderlich, einen bestimmten Grad an Kompatibilität bei den Systemkomponenten aufrechtzuerhalten. Somit wurden Standards, entweder offizielle oder de facto, entwickelt, die es in den meisten Fällen möglich machen, daß viele Hardware-Ein-/Ausgabe-(E/A-)Geräte in Systemen verwendet werden können, die dem Stand der Technik entsprechen, obwohl die Geräte vielleicht schon vor mehreren Jahren für den Einsatz in Systemen gekauft wurden, die dem heutigen Standard gemäß als einfach angesehen werden.
  • Die Programm-Software als auch die umfangreichen Datendateien, die gewöhnlich als Folge der Softwareverwendung erstellt werden, stellen jedoch mit der Weiterentwicklung der Hardware-Technologie ein Problem hinsichtlich der Kompatibilität dar. Beispielsweise handelte es sich bei den meisten der ersten Personal Computer um 8-Bit-Geräte, insofern als der Prozessor in der Lage war, ein einzelnes 8-Bit-Byte auf einmal zu verarbeiten. Später entwickelte sich die Technologie dahingehend, daß 16-Bit-Prozessoren verwendet wurden, und in jüngster Zeit entwickelt sie sich sogar in Richtung 32-Bit-Prozessoren. Obwohl Software, die ursprünglich für einen 8-Bit-Prozessor geschrieben wurde, gegebenenfalls mit einem 32-Bit-Prozessorsystem verwendet oder dahingehend modifiziert werden kann, könnte die Anwendung normalerweise so programmiert sein, daß sie weitaus effizienter und leistungsfähiger ausgeführt werden könnte, indem die Software in der ursprünglichen Absicht, auf einem 32-Bit-Prozessor verarbeitet zu werden, geschrieben wird. Natürlich ist das offenkundige Problem bei diesem Ansatz das, daß die umfangreiche Software und die umfangreichen Datenbanken, die für die 8- und 16-Bit-Prozessoren konzipiert sind, bereits bezahlt sind.
  • Dementsprechend ist der Wunsch, bereits vorhandene Software und damit verbundene Datendateien in Verbindung mit moderneren und leistungsfähigeren Datenverarbeitungssystemen zu nutzen, naheliegend. Des weiteren muß die neuere und leistungsfähigere Datenverarbeitungsanlage jedoch so eingesetzt werden, daß man von ihrer höheren Leistungsfähigkeit profitiert. Das heißt, der zusätzliche Kostenaufwand für die neuere und leistungsfähigere Anlage kann nicht gerechtfertigt sein, wenn deren Leistungsfähigkeit durch die ältere und weniger leistungsfähige Software nicht ausgeschöpft werden kann. Infolgedessen, obwohl beim Stand der Technik zusätzliche Prozessoren, die manchmal als Coprozessoren bezeichnet werden, eingesetzt werden, um bestimmte neue Funktionen des Computers (wie beispielsweise numerische oder Gleitkommadezimal-Funktionen) nutzen zu können, haben typische, dem Stand der Technik entsprechende Coprozessoranordnungen den bisherigen Prozessor auf den Platz einer Spezialsteuereinheit (wie beispielsweise einer E/A-Steuereinheit) verwiesen, während der neue, zusätzliche Coprozessor für den erweiterten Funktionsumfang sorgt.
  • Solch ein dem Stand der Technik entsprechendes System mit mehreren Prozessoren ist in der US-Patentschrift 4 453 211 beschrieben, wobei ein erster Prozessor die Steuerung des Systems erhält, während ein zweiter Prozessor, als untergeordneter Prozessor, die gemäß seinem Mikrocode empfangene Instruktion verarbeitet, ein Steuersignal zur Datenübertragung erzeugt und Daten an einen anderen Prozessor oder den Hauptspeicher überträgt.
  • Ebenso umfaßt das System in der europäischen Patentschrift 132 157 einen Hauptprozessorrechner und einen angeschlossenen Prozessor. Jeder Prozessor ist in der Lage, Benutzerprogramme unter einem anderen Betriebssystem auszuführen, und jeder Prozessor ist in der Lage, auf einen Speicher zuzugreifen, aber der Hauptprozessor steuert und führt alle Ein- und Ausgabeoperationen für beide Prozessoren aus.
  • Im Gegensatz zu der vorstehend beschriebenen, dem Stand der Technik entsprechenden Verwendung von Coprozessoren, wurde vorgeschlagen, einen weiteren, weniger hochentwickelten Prozessor (im Vergleich zum Hauptprozessor eines dem Stand der Technik entsprechenden Systems) zu verwenden, um bestehende, weniger leistungsfähige Programme und damit verbundene bestehende Datendateien in den neuesten, leistungsfähigsten Datenverarbeitungssystemen weiterhin nutzen zu können. Bei dieser Konfigurationsart ist der Hauptprozessor in der Lage, leistungsfähige Programme unabhängig vom Coprozessor auszuführen. Der Coprozessor ist so konfiguriert, daß bestehende Programme einer früheren Generation und die damit verbundenen Datendateien im wesentlichen gleichzeitig mit den vom Hauptprozessor ausgeführten Programmen ausgeführt werden können.
  • Bei der soeben beschriebenen Konfiguration kann es zwischen den beiden Prozessoren jedoch zu Problemen hinsichtlich der Belegung von Systembetriebsmitteln kommen. Diese Probleme liegen in der Tatsache begründet, daß möglicherweise grundlegend verschiedene Betriebssysteme in bezug auf die Systemumgebungen, entsprechend der Betrachtungsweise eines jeden Prozessors, eingesetzt werden. Deshalb, obwohl es von großem Vorteil wäre, einen Parallelbetrieb zu gestatten, bei dem ein Coprozessor Anwendungsprogramme mit einem Betriebssystem eines ersten Typs ausführt, während ein Hauptprozessor andere Programme mit einem anderen Betriebssystem ausführt, wäre es äußerst wünschenswert, ein Steuerungsverfahren vorzusehen, um die Belegungsprobleme, die mit der Benutzung derselben E/A-Geräte durch die beiden Prozessoren verbunden sind, sowie die Behandlung von Unterbrechungen in dem System durch die beiden Prozessoren zu lösen.
  • Dementsprechend zielt die Erfindung auf ein Steuerungsverfahren ab, das in einer Coprozessor-Umgebung eingesetzt ist, in der E/A-Einrichtungen von einem Hauptprozessor, der eine bekannte Reihe von Unterstützungscodes verarbeitet, und einem Coprozessor, der gleichzeitig einen Code unbekannter Herkunft, bezogen auf den Hauptspeicher, verarbeitet, gemeinsam benutzt werden.
  • Das System der Erfindung, wie in Anspruch 1 definiert, weist erste Mittel auf, die vom Hauptprozessor dynamisch gesteuert werden können, um den Coprozessor selektiv an dem Versuch zu hindern, auf ein Ein-/Ausgabegerät zuzugreifen, wenn der Hauptprozessor dieses Ein-/Ausgabegerät gerade benutzt, sowie zweite Mittel, um den Hauptprozessor dazu zu benutzen, den versuchsweise erfolgten Zugriff auf das Ein-/Ausgabegerät zu bedienen, wenn das erste Mittel aktiviert wurde, um den direkten Zugriff des Coprozessors auf das Ein-/Ausgabegerät zu verhindern, wobei die gleichzeitige direkte Benutzung des Ein-/Ausgabegeräts durch den Hauptprozessor und den Coprozessor dann erlaubt ist, wenn der ausschließliche Zugriff des Hauptprozessors nicht erforderlich ist.
  • Ferner ist eine Logik mit dem Coprozessor verknüpft, um Unterbrechungen auf dem Weg zu und von der Coprozessorkarte zu verwalten, um eine Interferenz mit der hauptprozessorseitigen Benutzung von Systemkomponenten zu vermeiden.
  • Die vorstehenden und andere Aufgaben, Merkmale, Erweiterungen und Vorteile der Erfindung gehen aus der nachstehenden ausführlicheren Beschreibung einer bevorzugten Ausführungsform der Erfindung deutlich hervor, wie sie in den beiliegenden Zeichnungen veranschaulicht ist.
  • Fig. 1 ist ein Blockdiagramm der Systemkonfiguration einer Architektur eines Datenverarbeitungssystems, bei der sowohl ein Hauptprozessor als auch ein Coprozessor verwendet werden, die gemäß der Methoden dieser Erfindung verwaltet werden.
  • Fig. 2 ist ein Blockdiagramm des Coprozessorteils des Systems von Fig. 1.
  • Fig. 3 ist ein ausführliches Logikdiagramm des Unterbrechungsfilters, das in Fig. 2 gezeigt ist.
  • Fig. 4 ist ein ausführliches Logikdiagramm des E/A-Filters, das in Fig. 2 gezeigt ist.
  • Fig. 5 ist ein Diagramm, welches das Einrichten des E/A-Filters durch den übergeordneten Prozessor veranschaulicht.
  • Fig. 6 ist ein Diagramm, das den Registerinhalt für die in Fig. 3 bis 5 gezeigte Logik veranschaulicht.
  • Fig. 1 zeigt ein Blockdiagramm der Systemkonfiguration einer Architektur eines Datenverarbeitungssystems, bei der sowohl ein Hauptprozessor als auch ein Coprozessor verwendet werden. Ein Hauptprozessor 11 ist über einen Kanal 12 mit einer Speichersteuereinheit 13 verbunden. Bei dem Hauptprozessor 11 kann es sich beispielsweise um einen Mikroprozessor des Typs Motorola 68000 oder Intel 80286 handeln, obgleich der Fachmann versteht, daß es sich bei dem Hauptprozessor 11 eigentlich um jeden beliebigen Universalprozessor beliebiger Größe oder Geschwindigkeit handeln kann, da diese Erfindung keinesfalls auf eine Mikroprozessor-Umgebung beschränkt ist. Bei der Speichersteuereinheit 13 kann es sich beispielsweise um den Typ Intel 8202 handeln, insbesondere wenn es sich bei dem Hauptprozessor um einen Mikroprozessor des Typs Intel 80286 handelt. Ein Kanal 14 verbindet die Speichersteuereinheit 13 mit einem Systemspeicher 15, bei dem es sich typischerweise um einen Speicher mit wahlfreiem Zugriff handelt.
  • Ein E/A-Bus 16 verbindet die Steuereinheit 13 mit einer Vielzahl von E/A-Geräten einschließlich einer Festplatte 17, eines Diskettenlaufwerks 18, eines Druckers 19, eines Bildschirms 20 und einer Tastatur 21. Zusätzlich zu den oben genannten E/A-Geräten 17 bis 21 ist auch eine Coprozessorkarte 22 an den E/A-Bus 16 angeschlossen. Mit Ausnahme der Tastatur ist jedes der E/A-Geräte 17 bis 21 an eine Unterbrechungsleitung innerhalb des E/A- Busses 16 angeschlossen. Die Tastatur-Unterbrechung wird direkt an den Hauptprozessor 11 übertragen und erscheint nicht auf dem E/A-Bus 16.
  • Hinsichtlich eines Blockschaltbildes des Inhalts der Coprozessorkarte 22 wird auf Fig. 2 Bezug genommen. Der Kern 25 der Coprozessorkarte enthält den Prozessor selbst, bei dem es sich beispielsweise um einen Mikroprozessor des Typs Intel 80286 handeln kann, eine Unterbrechungssteuerung, bei der es sich beispielsweise um den Typ Intel 8259 handeln kann, und ein oder mehrere lokale E/A-Einheiten, die beispielsweise einen Zeitgeber enthalten können, von dem eine Uhr und Einrichtungen zur Erzeugung von akustischen Signalen ihre Zeitsignale empfangen. Außerdem wird ein E/A-Filter 26, das vom Hauptprozessor 11 gesteuert werden kann, verwendet, um zu verhindern, daß die Coprozessorkarte 22 auf die anderen, mit dem E/A-Bus 16 verbundenen E/A-Geräte 17 bis 21 zugreift, falls die Notwendigkeit des Hauptprozessors 11, auf diese Geräte zuzugreifen, eine höhere Priorität hat. In einem ähnlichen Sinn wird ein Unterbrechungsfilter 27 bei der Steuerung von Unterbrechungen in Verbindung mit dem Coprozessor verwendet. Das Unterbrechungsfilter 27 kann Unterbrechungsleitungen vom E/A-Bus 16 selektiv blockieren, um deren Antwort durch den Coprozessor zu verhindern. Die Logik des Unterbrechungsfilters 27 kann es dem Hauptprozessor 11 auch ermöglichen, Unterbrechungen durch E/A-Schreibvorgänge auf die Coprozessorkarte 22 zu erzeugen. Dadurch kann es dem Coprozessor gestattet werden, jedwede Unterbrechung direkt zu bedienen, oder der Hauptprozessor 11 kann sich selbst den Befehl zur Bedienung der Unterbrechung und zum erneuten Erzeugen einer Unterbrechung an den Coprozessor geben. Somit ist der Hauptprozessor 11 in der Lage, jedes beliebige E/A-Gerät zu simulieren.
  • Nehmen wir nun Bezug auf Fig. 3, die ein Logikdiagramm des Unterbrechungsfilters 27 der Coprozessorkarte 22 zeigt. Über die gesamte restliche Beschreibung hinweg ist es auch hilfreich, sich hinsichtlich einer Beschreibung des Inhalts der verschiedenen Register und des Speichers, der nachstehend erläutert wird, auf Fig. 6 zu beziehen. Es werden vier Arten von Unterbrechungssituationen, die mit der Coprozessorkarte 22 in Verbindung gebracht werden können, beschrieben. Die erste und vielleicht geläufigste Art der Unterbrechung, die betrachtet werden soll, kommt bei einer Reihe von UND-Gattern 30 über eine Reihe von Busunterbrechungsleitungen 31 an. Zum Zweck dieser Beschreibung ist zu berücksichtigen, daß es sich bei den Ebenen der Unterbrechungen, die über die Busunterbrechungsleitungen 31 an die UND- Gatter 30 übertragen werden können, um die Busunterbrechungen 1 bis 5 handelt. Unter der Annahme, daß eine der Unterbrechungen 1 bis 5 an dem entsprechenden Gatter der UND-Gatter 30 vorhanden ist, wenn dieses eine der UND-Gatter 30 vom Maskenregister 32 richtig konditioniert wurde (wie nachstehend erklärt wird), wird die Unterbrechung durch die UND-Gatter 30, anschließend durch die ODER-Gatter 33 an die Unterbrechungssteuerung 34 und schließlich zur Unterbrechungsleitung des Coprozessors 35 geleitet. Wie vorstehend erwähnt, kann es sich bei der Unterbrechungssteuerung 34 um den Typ Intel 8259 handeln, wenn es sich bei dem Coprozessor 35 um einen Intel 80286 handelt.
  • Damit die vielen UND-Gatter 30 richtig konditioniert sind, um Unterbrechungen durchzulassen, muß das Maskenregister 32 vorher vom Hauptprozessor 11 über den E/A-Teil 16a des Datenbusses 16 geladen werden. Um zu ermöglichen, daß die UND-Gatter 30 in bezug auf jede der möglichen Busunterbrechungen 1 bis 5 richtig (und individuell) konditioniert werden können, wird ein separates Bit im Maskenregister 32 gesetzt, das jeder der Busunterbrechungen 1 bis 5 zugeordnet ist, wenn der Hauptprozessor 11 will, daß der Coprozessor 35 direkt auf eine der Busunterbrechungen 1 bis 5 antwortet. Somit, wenn der Hauptprozessor 11 gerade Betriebsmittel so belegt, daß er es dem Coprozessor 35 nicht gestatten kann, direkt auf eine der Busunterbrechungen 1 bis 5 zu antworten, kann der Hauptprozessor 11 das der bestimmten Unterbrechung zugeordnete Bit im Maskenregister 32 dynamisch deaktivieren, was anzeigt, daß der Hauptprozessor 11 eine Antwort des Coprozessors 35 zu verhindern wünscht. Als ein Beispiel dafür nehmen wir an, daß die Busunterbrechungsebene 3 der Festplatte 17 zugeordnet ist. Nehmen wir weiter an, daß der Coprozessor 35 vor kurzem mit Lese- und/oder Schreibvorgängen auf der Festplatte 17 beschäftigt war. Wenn der Hauptprozessor 11 langsam den Zugriff auf die Festplatte 17 benötigt, kann der Prozessor 11 das der Unterbrechungsebene 3 zugeordnete Bit im Maskenregister 32 von Eins auf Null zurücksetzen, was dazu dient, das eine der Vielzahl von UND-Gattern 30, das der Unterbrechungsebene 3 zugeordnet ist, zu dekonditionieren.
  • Eine andere Art der Unterbrechung in Verbindung mit der Coprozessorkarte 22 ist die abgehende Unterbrechung, die sich von der eingehenden Unterbrechung unterscheidet. In diesem Fall ist es für eine weitere Logik 37 auf der Coprozessorkarte 22 erforderlich, eine Unterbrechung an den Hauptprozessor 11 auszugeben. Solch eine Unterbrechung ist in Fig. 3 als Unterbrechungsebene 6 bezeichnet. Da sich diese Unterbrechung nicht auf den Leitungen 31 befindet, wird sie nicht an die UND-Gatter 30 übertragen. Dies soll auch so sein, da die Unterbrechung für den Hauptprozessor und nicht für den Coprozessor 35 bestimmt war.
  • Eine dritte Art der Unterbrechung in Verbindung mit der Coprozessorkarte 22 ist eine für den Coprozessor 35 bestimmte Unterbrechung, die auf der Coprozessorkarte 22 von einem der lokalen E/A-Einheiten auf dieser Karte ausgeht, die mit dem Block 40 dargestellt sind. Wie vorstehend beschrieben, kann es sich bei einer dieser E/A-Einheiten beispielsweise um einen Zeitgeber handeln, um in periodischen Abständen ein Signal auszugeben, über das eine Uhr aktualisiert wird. In diesem Fall wird die Unterbrechung von den lokalen E/A-Einheiten 40 direkt über die Leitung 36 an den Unterbrechungseingang der Ebene 0 der Unterbrechungssteuerung 34 übertragen, um an den Unterbrechungseingang des Coprozessors 35 übertragen zu werden.
  • Eine vierte Art der Unterbrechung, die von dieser Logik auf der Coprozessorkarte 22 bedient wird, ist eine vom Hauptprozessor 11 simulierte Unterbrechung des Coprozessors 35. Anstatt die Coprozessorkarte 22 über die Leitungen 31 zu erreichen, erreicht diese vom Hauptprozessor 11 simulierte Unterbrechung den Coprozessor über den E/A-Datenbusteil 16a des Datenbusses 16 ein. Solch ein Unterbrechungssignal auf dem E/A-Datenbusteil 16a bewirkt, daß ein Erzwinge-Register 41 ein Unterbrechungssignal, wie beispielsweise jede beliebige der Unterbrechungsebenen 1 bis 7, direkt an die Unterbrechungssteuerung 34 überträgt. Es wird in dieser Beschreibung besonders erwähnt, daß es sich bei der Unterbrechung der Ebene 7 nicht um eine der Unterbrechungsebenen handelt, die je auf den Unterbrechungsleitungen 31 vorkommen. Somit kann die Unterbrechung der Ebene 7 nur vom Register 41 als Antwort auf eine entsprechende Reihe von Signalen auf dem E/A- Datenbusteil 16a des E/A-Busses 16 erzwungen werden. Diese Einrichtung ermöglicht es dem übergeordneten Prozessor, Unterbrechungen für Geräte, wie beispielsweise die Tastatur, vorzusehen, die keine zugeordnete Unterbrechungsleitung im E/A-Bus 16 haben. Die Unterbrechungsebene 6 jedoch kann auch auf diese Weise erzwungen werden, obwohl die Unterbrechung der Ebene 6 auch von der Coprozessorkarte 22 über die Leitungen 31 nach außen übertragen werden kann. Dementsprechend versteht es sich von selbst, daß die Unterbrechung der Ebene 6 von der Coprozessorkarte 22 auf den Leitungen 31 nach außen gesendet und auch vom Erzwinge-Register 41 simuliert werden kann, um an die Unterbrechungssteuerung 34 für den Coprozessor 35 übertragen zu werden. Diese Einrichtung ermöglicht es, daß eine einzige Unterbrechungsebene als ein Zweiwege-Kommunikationspfad zwischen dem Hauptprozessor 11 und dem Coprozessor 35 genutzt werden kann.
  • Bezug wird nun auf Fig. 4 hinsichtlich einer Beschreibung der Logik genommen, wobei dem Coprozessor 35 der direkte Zugriff auf Geräte auf dem E/A-Bus 16, je nach der aktuellen Benutzung dieser E/A-Geräte durch den Hauptprozessor 11, verweigert werden kann. Betrachten wir beispielsweise die Situation, in welcher der Coprozessor 35 Daten von der Festplatte 17 lesen möchte. Der Coprozessor 35 übergibt die Adresse der Festplatte 17 an den Coprozessoradreßbus 45. Diese Adresse wird auch dem Unterbrechungs-RAM 46 über einen Multiplexer 47 zur Verfügung gestellt. Unter der Annahme, daß der Hauptprozessor 11 gerade die Festplatte 17 benutzt, wenn die Adresse der Festplatte 17 an das Unterbrechungs-RAM 46 übertragen wird, wird ein Null-Datenbit von der Adresse im Unterbrechungs-RAM 46 ausgegeben, das der Adresse der Festplatte 17 entspricht. Dieses Null-Datenbit wird über die Datenleitung an die Unterbrechungssteuerlogik 48 übertragen. An diesem Punkt löst die Unterbrechungssteuerlogik 48 das BLOCK R/W-(Block Lesen/Schreiben-) Signal an eine Reihe von Gattern 49 aus, die in Reihe mit den E/A-LESE- und E/A-SCHREIB- Leitungen des Coprozessors 35 geschaltet sind. Dies dient dazu, Lese- und Schreibsignale daran zu hindern, die Coprozessorkarte 22 des Coprozessors 35 zu verlassen. Da der Coprozessor 35 gerade versucht, Daten von einem E/A-Gerät zu lesen, aktiviert der Coprozessor 35 seine E/A-LESE-Leitung. Da die E/A-LESE- und E/A- SCHREIB-Leitungen ebenfalls in die Unterbrechungssteuerlogik 48 eingelesen werden, bewirkt dieses E/A-LESE-Signal in Verbindung mit dem Nullbit vom Unterbrechungs-RAM 46, daß die Unterbrechungssteuerlogik 48 mit einer Leseunterbrechungssequenz beginnt. Die Unterbrechungssteuerlogik 48 gibt sofort ein UNTER- BRECHUNGS-Signal auf der NICHT BEREIT-Leitung an den Coprozessor 35 aus, um den Coprozessor 35 in der Mitte des Zyklus anzuhalten. Zu diesem Zeitpunkt deaktiviert die Unterbrechungssteuerlogik 48 auch das Gatter 50 des E/A-Adreßbusteils 16b und die Gatter 51 des Datenteils 16a des E/A-Busses 16. Mit diesen Maßnahmen wurde der Coprozessor 35 jetzt vollständig vom E/A-Bus 16 getrennt.
  • Als nächstes führt ein Signal auf der Leitung 52 an die Busprioritätslogik 53 dazu, daß die -MASTERLEITUNG abgehängt wird. Dadurch wird jedwede Steuerung des E/A-Busses 16 durch die Coprozessorkarte 22 aufgegeben.
  • Die Unterbrechungssteuerlogik 48 erzeugt auch ein Signal auf der Leitung 55, das in ein UND-Gatter 56 eingegeben wird. Die andere Eingabe in das UND-Gatter 56 kommt von einem Unterbrechungssteuerungsregister 57. Wenn der Hauptprozessor 11 das Unterbrechungssteuerungsregister vorher so gesetzt hat, daß eine Unterbrechung in einer E/A-Unterbrechungssequenz möglich ist, wird ein IRQ 15-Signal (Unterbrechung auf der Ebene 15) von dem UND- Gatter 56 ausgegeben. Als nächstes stellt der Hauptprozessor 11 die Serviceanforderung entweder durch das IRQ 15-Signal oder in anderen Fällen durch Abfragen des Statusregisters 62 des Coprozessors fest.
  • Bei dem von der Unterbrechungssteuerlogik 48 auf der Leitung 55 bereitgestellten Signal handelt es sich ebenfalls um eine Eingabe in ein Paar von UND-Gattern 60 und 61. Bei den anderen Eingaben in die Gatter 60 und 61 handelt es sich jeweils um die E/A-LESE- und E/A-SCHREIB-Leitungen des Coprozessors 35. Somit setzt entweder das UND-Gatter 60 oder das UND-Gatter 61 ein Bit in einem Statusregister 62, wenn das Signal auf der Leitung 55 auftritt. Ein Signal, das auf die Anforderung für entweder einen 8-Bit-Datenbus oder einen 16-Bit-Datenbus hinweist und am Ausgang des Coprozessors 35 anliegt, wird ebenfalls in das Statusregister 62 eingegeben. Somit liest der Prozessor 11, wenn der Hauptprozessor 11 die Serviceanforderung feststellt, das Statusregister 62, dessen Inhalt von den Leitungen 63 durch das Gatter 64 und auf den E/A-Datenbusteil 16a des Datenbusses 16 geleitet wird. Der Hauptprozessor 11 weiß jetzt, daß der Coprozessor 35 versucht hat, Daten von einem E/A-Gerät auf entweder einem 8 Bit breiten oder einem 16 Bit breiten Datenkanal zu lesen. Der Hauptprozessor gibt nun einen Lesevorgang vom Unterbrechungsadreßregister des Coprozessors aus. Wenn dieser Lesevorgang vom Decodierer 70 festgestellt wird, wird eine Ansteuerungsleitung in einem Ansteuerungsbus 75 aktiviert, um die Steuerlogik 48 für die Öffnung der Gatter 65 zu aktivieren, um die Adresse vom Adreßbus 45 des Coprozessors auf den E/A-Datenbusteil 16 a des E/A-Busses 16 zu übertragen. Der Hauptprozessor 11 hat nun die Adresse, von welcher der Coprozessor 35 zu lesen versucht hat. Der Hauptprozessor 11 kann nun die Leseanforderungen entweder direkt an das E/A-Gerät ausgeben oder berechnen, wie die Lesedaten sein sollten. Jedoch leitet der Hauptprozessor 11 die Lesedaten ab, schreibt diese Daten durch eine Reihe von Gattern 66 auf den E/A-Datenbusteil 16a und folglich auf den Datenbus 67 des Coprozessors, der zum Coprozessor 35 führt. Ähnlich wie beim Schreiben der Unterbrechungsadresse auf den E/A-Adreßbusteil 16b schließt auch der Vorgang, die Lesedaten auf den Datenbus 67 des Coprozessors zu schreiben, die Öffnung einer Reihe von Gattern (66) mit ein, um die Übertragung der Daten auf den Bus zu ermöglichen.
  • Da der Coprozessor 35 nun mit den Lesedaten beschrieben wurde, überträgt die Unterbrechungssteuerlogik 48 das NICHT BEREIT-Signal an den Coprozessor 35, um dem Coprozessor 35 zu ermöglichen, fortzufahren. Der Coprozessor 35 empfängt dann die Daten, die auf dem Datenbus 67 gehalten werden, und fährt mit dem Betrieb fort, als ob das eigentliche E/A-Gerät gelesen worden wäre.
  • Bei einem unterbrochenen Schreibvorgang ist der Ablauf ganz ähnlich. In diesem Fall erhält der Hauptprozessor 11 einfach die Unterbrechungsadresse wie bei einer Unterbrechung des Lesevorgangs und gibt dann einen Lesevorgang an das Unterbrechungsdatenregister aus. Wenn dieser Lesevorgang vom Decodierer 70 festgestellt wird, wird eine Ansteuerungsleitung im Ansteuerungsbus 75 aktiviert, um die Steuerlogik 48 für die Öffnung der Gatter 51 zu aktivieren, um die Daten vom Datenbus 67 des Coprozessors auf den E/A-Datenbusteil 16a zu übertragen. Der Hauptprozessor 11 kann dann auf Wunsch die Daten in das E/A-Gerät schreiben. Statt diese Daten in ein E/A-Gerät zu schreiben, kann dieses Verfahren auch befolgt werden, wenn Daten vom Coprozessor 35 zum Hauptprozessor 11 übertragen werden sollen, damit sie vom Hauptprozessor 11 für einen anderen Zweck verwendet werden können. Da es nicht erforderlich ist, auf eine echte E/A-Gerät zu schreiben, stellen Unterbrechungen des Lese- oder Schreibvorgangs eine geeignete Methode dar, den Betrieb der beiden Prozessoren zu synchronisieren (allgemein als Semaphor bekannt) oder Daten zwischen dem Coprozessor 35 und dem Hauptprozessor 11 während der Ausführung des Diagnoseprogramms zu übertragen oder um Parameter oder Parameter-Adressen vom E/A-Betriebssystem des Coprozessors 35 an Dienstprogramme zu übertragen, die im Hauptprozessor 11 ausgeführt werden.
  • Nehmen wir nun Bezug auf Fig. 5. Hier ist die Logik aufgezeigt, um das Unterbrechungs-RAM 46 durch den Hauptprozessor 11 zu laden. Bei dem Unterbrechungs-RAM 46 kann es sich um einen statischen Speicher mit wahlfreiem Zugriff mit n mal 1 Bit handeln. Wie in bezug auf Fig. 4 beschrieben, zeigt der Binärstatus des einzelnen Bits, das bei der bestimmten Adresse steht, der Unterbrechungssteuerlogik 48 an, ob der Coprozessor 35 ein E/A-Gerät auf dem E/A-Bus 16 direkt adressieren kann, wenn das Unterbrechungs-RAM 46 adressiert wird. Zum Zweck dieser Erklärung wird davon ausgegangen, daß eine binäre Null bei der ausgewählten Adresse bedeutet, daß der Coprozessor 35 auf das ausgewählte E/A-Gerät auf dem E/A-Bus 16 nicht direkt zugreifen kann, während ein Binärwert von 1 bedeutet, daß die Unterbrechungssteuerlogik nicht aufgerufen wird und der Coprozessor 31 auf das bestimmte Gerät auf dem E/A-Bus 16, das der Adresse im Unterbrechungs-RAM 46 entspricht, direkt zugreifen kann. Eines der besonders nützlichen und wichtigen Merkmale dieser Erfindung ist das, daß der Hauptprozessor 11 den Status der bestimmten Bits im Unterbrechungs-RAM 46 dynamisch ändern kann.
  • Nehmen wir erneut Bezug auf Fig. 5. Wenn der Hauptprozessor 11 den E/A-Bus 16 steuert, befindet sich die MASTER-Leitung auf einem hohen Pegel. Wenn der Hauptprozessor dann eine bestimmte "Unterbrechungs-RAM-Aktualisierung"-Adresse auf das E/A-Adreßteil 16b des E/A-Busses 16 setzt, erkennt ein Decodierer 70, daß der Hauptprozessor 11 den Status eines der Bits im Unterbrechungs-PAM 46 aktualisieren möchte. Ein Ausgangssignal des Decodierers 70 auf der Leitung 71 schaltet den Multiplexer 47 vom Standardstatus (was in Fig. 4 beschrieben wurde, wobei der Inhalt des Adreßbusses 45 des Coprozessors durch den Multiplexer 47 an das Unterbrechungs-RAM 46 geleitet wird) in einen temporären Status, in dem Daten auf dem E/A-Datenbusteil 16a und dem Datenbus 67 des Coprozessors durch den Multiplexer 47 geleitet werden, um das Unterbrechungs-RAM 46 zu adressieren. (Dies erfordert auch die Aktivierung der Gatter 66, Fig. 4). Mit dem so geschalteten Multiplexer haben nun der E/A-Teil 16a des Busses 16 als auch der Datenbus 67 des Coprozessors durch den Hauptprozessor 11 eine Vielzahl von zumindest m+l Bits daran gelegt. Die m Bits werden durch den Multiplexer 47 geleitet, um einen bestimmten Einzelbit-Speicherplatz im Unterbrechungs-RAM 46 zu adressieren, während das zusätzliche Bit vom Datenbus 67 durch das Gatter 68 an die Datenstation des Unterbrechungs-RAMs 46 geleitet wird. Parallel dazu bewirkt der Hauptprozessor 11 auch, daß sich die E/A-Schreibleitung des E/A-Busses 16 auf einen hohen Pegel bewegt. Da sich das Signal des Decodierers 70 auf der Leitung 71 ebenfalls auf einem hohen Pegel befindet, liefert das UND-Gatter 72 der SCHREIBE-Datenstation des Unterbrechungs-RAMs 46 ein Hochpegel-Ausgangssignal. Auf diese Weise kann der Hauptprozessor 11 entweder eine Null oder eine Eins auf eine bestimmte Adresse im Unterbrechungs-RAM 46 schreiben, die einem bestimmten E/A-Gerät entspricht.
  • Kommen wir noch einmal auf Fig. 3 zurück. Hier wird der Decodierer 80 auf ähnliche Weise verwendet, um bestimmte Bits im Erzwinger-Register 41 und im Maskenregister 32 zu setzen, auf eine binäre Null oder Eins, und um die Bits im Unterbrechungs-RAM 46 zu setzen, wird er auf eine Weise verwendet, die analog zu der gerade vorstehend beschriebenen ist. Dem Fachmann ist daher klar, daß die dynamische Flexibilität, die dieses Verfahren in bezug auf E/A-Unterbrechungen bietet, ebenfalls in bezug auf Unterbrechungssteuerungen geboten ist.
  • Tabelle 1 der nachstehenden Programmier-Entwurfssprache ist eine andere Form der Beschreibung der vorstehend beschriebenen Abläufe zur Ausführung eines unterbrochenen LESE-Vorgangs. Diese Auflistung entspricht dem vorstehend beschriebenen Ablauf in bezug auf Fig. 4.
  • TABELLE 1
  • UNTERBRECHUNG DES_LESEVORGANGS:
  • Unterbrechungs_adresse = UNTERBRECHUNGSADRESSREGISTER ! Unterbrechungsadresse beschaffen
  • Unterbrechungs_adresse mit Unterbrechungs_tabelle vergleichen (Tabelle der Unterbrechungsadressen)
  • Wenn Unterbrechungs_adresse eine semaphore Adresse ist Dann Ausführen;
  • Durchführen aller vom Semaphor angegeben Maßnahmen Unterbrechungs_daten = berechnete Semaphor-Antwort Ausführung Beenden;
  • Andernfalls, wenn Unterbrechungs_adresse ein ,gemeinsam benutztes Gerät ist Dann Ausführen;
  • Wenn Gerät dem Coprozessor zugeordnet werden kann Dann Ausführen;
  • Unterbrechungs_RAM = Gerät dem Coprozessor zuordnen
  • Lese_daten = E/A-Geräteanschluß lesen Ausführung Beenden;
  • Andernfalls (Gerät kann nicht neu zugeordnet werden) Benutzer über unvereinbare Anforderungen benachrichtigen und verlassen.
  • Andernfalls, wenn Unterbrechungs_adresse ein emuliertes Gerät ist
  • Dann Ausführen;
  • Irgendeine aktuelle E/A-Gerät lesen, wenn erforderlich Emulierte Antwort auf Lesevorgang berechnen Lese_daten = berechnete emulierte Antwort auf Lesevorgang
  • Ausführung Beenden;
  • Andernfalls Unterbrechung hätte nicht auftreten sollen. Benutzer benachrichtigen und verlassen
  • Beenden wenn; Beenden wenn, Beenden wenn;
  • Wenn 16-Bit_Markierung = Falsch
  • Dann Ausführen;
  • Höherwertige und niederwertige Bytes der Lese_daten wie von der Adresse benötigt austauschen, so daß der Coprozessor Daten auf den richtigen Busleitungen erhält.
  • Ausführung Beenden;
  • UNTERBRECHUNGSDATENREGISTER = Unterbrechungs_daten;
  • ! Daten an Coprozessor senden
  • UNTERBRECHUNG DES_LESEVORGANGS beenden;
  • Tabelle 2 der nachstehenden Programmier-Entwurfssprache ist eine andere Form der Beschreibung der vorstehend beschriebenen Abläufe zur Ausführung eines unterbrochenen SCHREIB-Vorgangs. Diese Auflistung entspricht dem vorstehend beschriebenen Ablauf in bezug auf Fig. 4.
  • TABELLE 2
  • UNTERBRECHUNG DES_SCHREIBVORGANGS:
  • Unterbrechungs_adresse = UNTERBRECHUNGSADRESSREGISTER Unterbrechungsadresse beschaffen
  • Unterbrechungs_adresse mit Unterbrechungs_tabelle vergleichen
  • (Tabelle der Unterbrechungsadressen)
  • Wenn Unterbrechungs_adresse eine semaphore Adresse ist Dann Ausführen;
  • Schreib_daten = UNTERBRECHUNGSDATENREGISTER lesen Wenn 16-Bit_Daten = Falsch
  • Dann
  • Höherwertige und niederwertige Datenbytes der Schreib_daten austauschen, wenn die Adresse dies erforderlich macht, so daß das richtige Byte verarbeitet wird.
  • Alle vom Semaphor angegebenen Maßnahmen unter Verwendung der Schreib_daten als Parameter durchführen Ausführung Beenden;
  • Andernfalls, wenn Unterbrechungs_adresse ein gemeinsam benutztes Gerät ist
  • Dann Ausführen;
  • Wenn Gerät dem Coprozessor zugeordnet werden kann Dann Ausführen;
  • Unterbrechungs_RAM = Gerät dem Coprozessor zuordnen Schreib_daten = UNTERBRECHUNGSDATENREGISTER Wenn 16-Bit_Daten = Falsch
  • Dann
  • Höherwertige und niederwertige Datenbytes der Schreib_daten wie von der Adresse benötigt austauschen, so daß das richtige Byte verarbeitet wird.
  • E/A-Geräteanschluß beschreiben = Schreib_ daten Ausführung Beenden;
  • Andernfalls (Gerät kann nicht neu zugeordnet werden) Benutzer über unvereinbare Anforderungen benachrichtigen und verlassen.
  • Andernfalls, wenn Unterbrechungs_adresse ein emuliertes Gerät ist
  • Dann Ausführen;
  • Schreib_daten = UNTERBRECHUNGSDATENREGISTER Wenn 16-Bit_Daten = Falsch
  • Dann
  • Höherwertige und niederwertige Datenbytes der Schreib_daten austauschen, wenn die Adresse dies erforderlich macht, so daß das richtige Byte verarbeitet wird.
  • Geeignete Emulationsmaßnahme berechnen Irgendein eigentliches E/A-Gerät, wenn erforderlich, entweder mit Schreib_daten oder mit berechneten Daten beschreiben
  • Ausführung Beenden;
  • Andernfalls
  • Unterbrechung hätte nicht auftreten sollen. Benutzer benachrichtigen und verlassen
  • Beenden wenn; Beenden wenn; Beenden wenn;
  • UNTERBRECHUNG DES_SCHREIBVORGANGS beenden;
  • Tabelle 3 der nachstehenden Programmier-Entwurfssprache ist eine andere Form der Beschreibung der vorstehend beschriebenen Abläufe, um die Verfügbarkeit von E/A-Geräte im Unterbrechungs-RAM zu setzen, damit sie vom Coprozessor 35 benutzt werden können. Diese Auflistung entspricht dem vorstehend beschriebenen Ablauf in bezug auf Fig. 5.
  • TABELLE 3 INITIALISIEREN:
  • Coprozessor anhalten;
  • Unterbrechungs-RAM von der gespeicherten Zuordnungstabelle beschreiben. Benutzer kann gegebenenfalls Menüoption wählen, um Geräte, wie beispielsweise einen Drucker, je nach Bedarf dem Hauptprozessor oder dem Coprozessor zuzuordnen. Wenn der Benutzer eine Auswahl trifft, Zuordnungstabelle ändern, um die aktuelle Zuordnung anzuzeigen.
  • UNTERBRECHUNGSSTEUERUNGSREGISTER = anderer Inhalt + UNTER- BRECHUNG BEI E/A Coprozessor-Unterbrechung bei E/A-Unterbrechung aktivieren
  • Coprozessor starten;
  • INITIALISIERUNG beenden;
  • Tabelle 4 der nachstehenden Programmier-Entwurfssprache ist eine andere Form der Beschreibung des Serviceschleifen-Programms, das im Hauptprozessor ausgeführt wird. Wenn diese Routine feststellt, daß ein Service benötigt wird, werden die Routinen in Tabelle 1 und 2 je nach Bedarf aufgerufen.
  • TABELLE 4
  • SERVICE_SCHLEIFE:
  • Beginnen; Schleife unbegrenzt wiederholen
  • Auf Unterbrechung 15 warten;
  • Markierungen = STATUSREGISTER; Register für Markierungen lesen
  • Wenn (Markierungen & 16-Bit E/A-Bit) < > 0 Dann 16-Bit_Markierung = Richtig; Andernfalls 16-Bit_Markierung = Falsch;
  • Wenn (Markierungen & E/A-Bit des LESE-Vorgangs) < > 0
  • Dann UNTERBRECHUNG DES_LESEVORGANGS;
  • Andernfalls, wenn (Markierungen & E/A-Bit des SCHREIB- Vorgangs) < > 0
  • Dann UNTERBRECHUNG DES_SCHREIBVORGANGS;
  • Andernfalls Eine andere Unterbrechung ist nicht Teil dieser Beschreibung;
  • Beenden wenn;
  • SERVICE_SCHLEIFE beenden; ! Von Anfang an wiederholen.
  • Zusammenfassend ist ein Steuerungsverfahren für eine Hauptprozessor/Coprozessor-Umgebung beschrieben, in der E/A-Einrichtungen von einem übergeordneten Prozessor und einem Coprozessor gemeinsam benutzt werden. Die tatsächliche Verwaltung der gemeinsam benutzten E/A-Betriebsmittel wird dem Coprozessor deutlich gemacht, indem eine Unterbrechungslogik bereitgestellt ist, die in einem Speicher mit wahlfreiem Zugriff integriert ist, der vom übergeordneten Prozessor geladen werden kann, und die Daten in bezug auf die aktuelle Benutzbarkeit eines beliebigen, gemeinsam benutzten E/A-Gerätes durch den Coprozessor enthält. Auch ist eine Logik mit dem Coprozessor verknüpft, um Unterbrechungen auf dem Weg zu und von der Coprozessorkarte zu verwalten.
  • Während bei dem hier beschriebenen System ganz bestimmte Mikroprozessoren und Steuereinheiten als Beispiele verwendet wurden, ist dem Fachmann klar, daß die Grundgedanken dieser Erfindung auch in Systemen Anwendung finden, in denen Prozessoren jedweder Größe, große oder kleine, schnelle oder langsame, eingesetzt werden; die Hardware-Beispiele wurden hier lediglich zum Zweck der Beschreibung verwendet und sind nicht als Einschränkung zu verstehen.

Claims (11)

1. Datenverarbeitungssystem mit einem Hauptprozessor (11), einem Coprozessor (22) und mindestens einem an einen Bus (16) angeschlossenen Ein-/Ausgabe-(E/A-)Gerät (17), wobei der Coprozessor und der Hauptprozessor gleichzeitig in Betrieb sind und das E/A-Gerät selektiv gemeinsam benutzen, und das System folgendes aufweist:
ein Unterbrechungsspeichermittel (46), das bei einer Adresse, die der Adresse des E/A-Gerätes entspricht, Statusdaten in bezug auf die aktuelle Benutzbarkeit des E/A-Gerätes durch den Coprozessor enthält, die vom Hauptprozessor dynamisch geändert werden können, wenn das E/A-Gerät gerade vom Hauptprozessor benutzt wird, der Coprozessor bei dem Versuch, auf das E/A-Gerät zuzugreifen, indem er das Unterbrechungsspeichermittel bei der Adresse adressiert, die der Adresse des E/A-Gerätes entspricht, am direkten Zugriff auf das E/A-Gerät selektiv gehindert wird,
ein Unterbrechungssteuermittel (48), um den Hauptprozessor dazu zu benutzen, den versuchsweise erfolgten Zugriff auf das E/A-Gerät zu bedienen, wenn die Statusdaten des Unterbrechungsspeichermittels geändert wurden, um den direkten Zugriff des Coprozessors auf das E/A-Gerät zu verhindern,
wobei eine gleichzeitige direkte Benutzung des E/A-Gerätes durch den Hauptprozessor und den Coprozessor dann erlaubt ist, wenn ein ausschließlicher Zugriff des Hauptprozessors nicht erforderlich ist.
2. Das System gemäß Anspruch l, wobei es sich bei den in dem Unterbrechungsspeichermittel (46) enthaltenen Statusdaten um ein Statusbit handelt, das vom Hauptprozessor (11) dynamisch geändert werden kann.
3. Das System gemäß Anspruch 2, das außerdem Mittel (48, 49, 50) aufweist, um den Coprozessor (22) von dem Bus (16) zu trennen, wenn das Statusbit anzeigt, daß das Ein-/Ausgabegerät (17) gerade vom Hauptprozessor (11) benutzt wird.
4. Das System gemäß Anspruch 1 oder 2, das außerdem Mittel (55, IRQ 15) aufweist, um ein Unterbrechungssignal an den Hauptprozessor auszugeben, wenn dieses erste Mittel aktiviert worden ist, um den direkten Zugriff des Coprozessors (22) auf das Ein-/Ausgabegerät (17) zu verhindern.
5. Das System gemäß jedem der Ansprüche 2 bis 4, das außerdem Mittel (70, 75, 65) aufweist, die es dem Hauptprozessor (11) gestatten, die Adresse des Ein-/Ausgabegerätes (17) zu lesen.
6. Das System gemäß Anspruch 5, das außerdem Mittel aufweist, um zu veranlassen, daß der Hauptprozessor (11) auf das Ein/Ausgabegerät (17), das der Adresse entspricht, zugreift und Daten von dem Ein-/Ausgabegerät liest oder Daten darauf schreibt.
7. Das System gemäß Anspruch 6, das außerdem Mittel aufweist, um zu veranlassen, daß der Coprozessor (22) vorübergehend wieder an einen Teil des Busses (16) angeschlossen wird, sowie Mittel, um zu veranlassen, daß der Hauptprozessor (11) die Lesedaten von dem Ein-/Ausgabegerät (17) an den Coprozessor (22) überträgt, oder um zu veranlassen, daß der Coprozessor die Daten überträgt, damit sie vom Coprozessor auf den Hauptprozessor geschrieben werden können.
8. Das System gemäß jedem der vorstehenden Ansprüche, das außerdem Mittel (32) aufweist, die vom Hauptprozessor (11) gesteuert werden können, um selektiv zu verhindern, daß eine Unterbrechung den Coprozessor (22) erreicht.
9. Das System gemäß Anspruch 8, das außerdem Mittel (37, 41) aufweist, die vom Hauptprozessor (11) gesteuert werden können, um eine Unterbrechung von Daten auf einem Datenteil des Busses (16) zu erzeugen und um zu veranlassen, daß diese erzeugte Unterbrechung an den Coprozessor (22) übertragen wird.
10. Das System gemäß jedem der vorstehenden Ansprüche, wobei es sich bei dem Ein-/Ausgabegerät (17) um ein echtes oder emuliertes Ein-/Ausgabegerät handeln kann.
11. Verfahren zur Konfiguration eines Systems mit einem Hauptprozessor (11) und mindestens einem Ein-/Ausgabegerät (17), um das Hinzufügen eines Coprozessors (22) zu ermöglichen, der gleichzeitig mit dem Hauptprozessor betrieben werden kann, und wobei beide das Ein-/Ausgabegerät selektiv gemeinsam benutzen, wobei das Verfahren die folgenden Schritte umfaßt:
das Ändern der Statusdaten mittels des Hauptprozessors, die in einem Unterbrechungs-Speichermittel bei einer Adresse enthalten sind, die der Adresse des Ein-/Ausgabegerätes entspricht, und die sich auf die aktuelle Benutzbarkeit des Ein-/Ausgabegerätes durch den Coprozessor beziehen, wenn das Ein-/Ausgabegerät gerade vom Hauptprozessor benutzt wird, um den direkten Zugriff des Coprozessors auf das Ein/Ausgabegerät selektiv zu verhindern, und
der Coprozessor bei dem Versuch, auf das Ein-/Ausgabegerät zuzugreifen, indem er das Unterbrechungsspeichermittel bei der Adresse adressiert, die der Adresse des Ein-/Ausgabegerätes entspricht, an einem direkten Zugriff auf das Ein-/ Ausgabegerät entsprechend den Statusdaten gehindert wird,
die Verwendung des Hauptprozessors zur Bedienung eines versuchsweise erfolgten Zugriffs des Coprozessors auf das Ein/Ausgabegerät, wenn der direkte Zugriff des Coprozessors auf das Ein-/Ausgabegerät selektiv verhindert wurde, und das Gestatten der gleichzeitigen Benutzung des Ein-/Ausgabegerätes durch den Hauptprozessor und den Coprozessor, wenn der direkte Zugriff auf-das Ein-/Ausgabegerät nicht selektiv verhindert wird.
DE3689696T 1985-02-28 1986-01-17 Datenverarbeitungssystem mit einem Hauptprozessor und einem Ko-Prozessor mit gemeinsamen Betriebsmitteln. Expired - Fee Related DE3689696T2 (de)

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
US06/706,802 US4695945A (en) 1985-02-28 1985-02-28 Processor I/O and interrupt filters allowing a co-processor to run software unknown to the main processor

Publications (2)

Publication Number Publication Date
DE3689696D1 DE3689696D1 (de) 1994-04-14
DE3689696T2 true DE3689696T2 (de) 1994-09-22

Family

ID=24839100

Family Applications (1)

Application Number Title Priority Date Filing Date
DE3689696T Expired - Fee Related DE3689696T2 (de) 1985-02-28 1986-01-17 Datenverarbeitungssystem mit einem Hauptprozessor und einem Ko-Prozessor mit gemeinsamen Betriebsmitteln.

Country Status (15)

Country Link
US (1) US4695945A (de)
EP (1) EP0192944B1 (de)
JP (1) JPS61202269A (de)
KR (1) KR900006549B1 (de)
CN (1) CN1008484B (de)
BR (1) BR8600665A (de)
CA (1) CA1236582A (de)
DE (1) DE3689696T2 (de)
ES (1) ES8706986A1 (de)
GB (1) GB2171823B (de)
HK (1) HK19190A (de)
IN (1) IN166350B (de)
MY (1) MY101469A (de)
PH (1) PH23471A (de)
SG (1) SG61789G (de)

Families Citing this family (81)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4814977A (en) * 1983-10-18 1989-03-21 S&C Electric Company Apparatus and method for direct memory to peripheral and peripheral to memory data transfers
US4870614A (en) * 1984-08-02 1989-09-26 Quatse Jesse T Programmable controller ("PC") with co-processing architecture
US4695945A (en) * 1985-02-28 1987-09-22 International Business Machines Corporation Processor I/O and interrupt filters allowing a co-processor to run software unknown to the main processor
US4799150A (en) * 1985-07-29 1989-01-17 Orchid Technology Interface system between a host computer and a peripheral processor with address detection circuitry
US4875186A (en) * 1986-02-28 1989-10-17 Prime Computer, Inc. Peripheral emulation apparatus
US4920481A (en) * 1986-04-28 1990-04-24 Xerox Corporation Emulation with display update trapping
US5088033A (en) * 1986-04-28 1992-02-11 Xerox Corporation Data processing system emulation in a window with a coprocessor and I/O emulation
US5146565A (en) * 1986-07-18 1992-09-08 Intel Corporation I/O Control system having a plurality of access enabling bits for controlling access to selective ports of an I/O device
US5257353A (en) * 1986-07-18 1993-10-26 Intel Corporation I/O control system having a plurality of access enabling bits for controlling access to selective parts of an I/O device
PH24865A (en) * 1987-03-24 1990-12-26 Ibm Mode conversion of computer commands
AU1621988A (en) * 1987-04-23 1988-12-02 Commodore-Amiga, Inc. A method of communicating data between the cpu of a host computer system and the cpu of a co-processor computer system.
US5226122A (en) * 1987-08-21 1993-07-06 Compaq Computer Corp. Programmable logic system for filtering commands to a microprocessor
JPH0679307B2 (ja) * 1987-10-22 1994-10-05 日本電気株式会社 コプロセッサの並行動作制御方式
JPH01147656A (ja) * 1987-12-03 1989-06-09 Nec Corp マイクロプロセッサ
US5027271A (en) * 1987-12-21 1991-06-25 Bull Hn Information Systems Inc. Apparatus and method for alterable resource partitioning enforcement in a data processing system having central processing units using different operating systems
IL88165A (en) * 1987-12-21 1993-01-31 Honeywell Bull Apparatus and method for a data processing system having a peer relationship among a plurality of central processing units
EP0321694B1 (de) * 1987-12-21 1995-06-07 Bull HN Information Systems Inc. Verfahren für ein Datenverarbeitungssystem mit Verwendung von nichtkompatiblen Zentralverarbeitungseinheit/ Betriebssystem- Kombinationen
US5129064A (en) * 1988-02-01 1992-07-07 International Business Machines Corporation System and method for simulating the I/O of a processing system
US4912628A (en) * 1988-03-15 1990-03-27 International Business Machines Corp. Suspending and resuming processing of tasks running in a virtual machine data processing system
US5032982A (en) * 1988-05-18 1991-07-16 Zilog, Inc. Device for timing interrupt acknowledge cycles
JPH01297764A (ja) * 1988-05-25 1989-11-30 Nec Corp プロセッサ
US5101497A (en) * 1988-09-09 1992-03-31 Compaq Computer Corporation Programmable interrupt controller
US5124909A (en) * 1988-10-31 1992-06-23 Hewlett-Packard Company Software program for providing cooperative processing between personal computers and a host computer
JPH02129753A (ja) * 1988-11-10 1990-05-17 Fuji Electric Co Ltd マルチプロセッサシステム
GB2225881A (en) * 1988-12-06 1990-06-13 Flare Technology Limited Co-processor intrude mechanism
GB2225882A (en) * 1988-12-06 1990-06-13 Flare Technology Limited Computer bus structure for multiple processors
US5590363A (en) * 1989-04-18 1996-12-31 Dell Usa, L.P. Circuit for detection of co-processor unit presence and for correction of its absence
US5369767A (en) * 1989-05-17 1994-11-29 International Business Machines Corp. Servicing interrupt requests in a data processing system without using the services of an operating system
CA2009780C (en) * 1989-05-17 1999-07-27 Ernest D. Baker Method and apparatus for the direct transfer of information between application programs running on distinct processors without utilizing the services of one or both operating systems
US5155809A (en) * 1989-05-17 1992-10-13 International Business Machines Corp. Uncoupling a central processing unit from its associated hardware for interaction with data handling apparatus alien to the operating system controlling said unit and hardware
US5077657A (en) * 1989-06-15 1991-12-31 Unisys Emulator Assist unit which forms addresses of user instruction operands in response to emulator assist unit commands from host processor
US5247685A (en) * 1989-11-03 1993-09-21 Compaq Computer Corp. Interrupt handling in an asymmetric multiprocessor computer system
CA2026770A1 (en) * 1989-11-03 1991-05-04 John A. Landry Multiprocessor interrupt control
JPH03210652A (ja) * 1989-11-09 1991-09-13 Internatl Business Mach Corp <Ibm> 透過アクセス方法及び装置
US5170266A (en) * 1990-02-20 1992-12-08 Document Technologies, Inc. Multi-capability facsimile system
SG72613A1 (en) * 1990-11-09 2001-10-16 Samsung Electronics Co Ltd Protected hot key function for microprocessor-based computer system
AU680974B2 (en) * 1993-12-01 1997-08-14 Marathon Technologies Corporation Fault resilient/fault tolerant computing
WO1995025310A1 (en) * 1994-03-14 1995-09-21 Apple Computer, Inc. A peripheral processor card for upgrading a computer
US5640592A (en) * 1994-09-30 1997-06-17 Mitsubishi Kasei America, Inc. System for transferring utility algorithm stored within a peripheral device to a host computer in a format compatible with the type of the host computer
US5574920A (en) * 1994-10-25 1996-11-12 Microsoft Corporation Method for controlling power down of a hard disk drive in a computer
FR2726383A1 (fr) * 1994-10-26 1996-05-03 Trt Telecom Radio Electr Systeme de traitement d'informations comportant au moins deux processeurs
US5732279A (en) * 1994-11-10 1998-03-24 Brooktree Corporation System and method for command processing or emulation in a computer system using interrupts, such as emulation of DMA commands using burst mode data transfer for sound or the like
US5790397A (en) 1996-09-17 1998-08-04 Marathon Technologies Corporation Fault resilient/fault tolerant computing
US6145030A (en) * 1998-03-27 2000-11-07 Intel Corporation System for managing input/output address accesses at a bridge/memory controller
US6526514B1 (en) * 1999-10-11 2003-02-25 Ati International Srl Method and apparatus for power management interrupt processing in a computing system
JP3621315B2 (ja) * 1999-11-22 2005-02-16 Necエレクトロニクス株式会社 マイクロプロセッサシステム
US6772241B1 (en) 2000-09-29 2004-08-03 Intel Corporation Selective interrupt delivery to multiple processors having independent operating systems
US7257816B2 (en) * 2001-03-12 2007-08-14 Mercury Computer Systems, Inc. Digital data processing apparatus and methods with dynamically configurable application execution on accelerated resources
CN100377093C (zh) * 2006-04-07 2008-03-26 浙江大学 嵌入式操作系统输入输出设备软件化方法
TWI324304B (en) * 2006-12-15 2010-05-01 Inventec Corp Method for reading data of input/output port
US7822889B2 (en) 2007-08-27 2010-10-26 International Business Machines Corporation Direct/indirect transmission of information using a multi-tiered full-graph interconnect architecture
US7769891B2 (en) 2007-08-27 2010-08-03 International Business Machines Corporation System and method for providing multiple redundant direct routes between supernodes of a multi-tiered full-graph interconnect architecture
US7793158B2 (en) 2007-08-27 2010-09-07 International Business Machines Corporation Providing reliability of communication between supernodes of a multi-tiered full-graph interconnect architecture
US8014387B2 (en) 2007-08-27 2011-09-06 International Business Machines Corporation Providing a fully non-blocking switch in a supernode of a multi-tiered full-graph interconnect architecture
US7904590B2 (en) 2007-08-27 2011-03-08 International Business Machines Corporation Routing information through a data processing system implementing a multi-tiered full-graph interconnect architecture
US8108545B2 (en) 2007-08-27 2012-01-31 International Business Machines Corporation Packet coalescing in virtual channels of a data processing system in a multi-tiered full-graph interconnect architecture
US7958182B2 (en) 2007-08-27 2011-06-07 International Business Machines Corporation Providing full hardware support of collective operations in a multi-tiered full-graph interconnect architecture
US7809970B2 (en) 2007-08-27 2010-10-05 International Business Machines Corporation System and method for providing a high-speed message passing interface for barrier operations in a multi-tiered full-graph interconnect architecture
US8140731B2 (en) 2007-08-27 2012-03-20 International Business Machines Corporation System for data processing using a multi-tiered full-graph interconnect architecture
US7958183B2 (en) 2007-08-27 2011-06-07 International Business Machines Corporation Performing collective operations using software setup and partial software execution at leaf nodes in a multi-tiered full-graph interconnect architecture
US8185896B2 (en) 2007-08-27 2012-05-22 International Business Machines Corporation Method for data processing using a multi-tiered full-graph interconnect architecture
US7840703B2 (en) 2007-08-27 2010-11-23 International Business Machines Corporation System and method for dynamically supporting indirect routing within a multi-tiered full-graph interconnect architecture
US7769892B2 (en) 2007-08-27 2010-08-03 International Business Machines Corporation System and method for handling indirect routing of information between supernodes of a multi-tiered full-graph interconnect architecture
US7827428B2 (en) 2007-08-31 2010-11-02 International Business Machines Corporation System for providing a cluster-wide system clock in a multi-tiered full-graph interconnect architecture
US7921316B2 (en) 2007-09-11 2011-04-05 International Business Machines Corporation Cluster-wide system clock in a multi-tiered full-graph interconnect architecture
US20090198956A1 (en) * 2008-02-01 2009-08-06 Arimilli Lakshminarayana B System and Method for Data Processing Using a Low-Cost Two-Tier Full-Graph Interconnect Architecture
US8077602B2 (en) 2008-02-01 2011-12-13 International Business Machines Corporation Performing dynamic request routing based on broadcast queue depths
US7779148B2 (en) 2008-02-01 2010-08-17 International Business Machines Corporation Dynamic routing based on information of not responded active source requests quantity received in broadcast heartbeat signal and stored in local data structure for other processor chips
US8417778B2 (en) * 2009-12-17 2013-04-09 International Business Machines Corporation Collective acceleration unit tree flow control and retransmit
US8751655B2 (en) * 2010-03-29 2014-06-10 International Business Machines Corporation Collective acceleration unit tree structure
US8661177B2 (en) * 2011-12-19 2014-02-25 Advanced Micro Devices, Inc. Method and apparatus for controlling system interrupts
WO2013095337A1 (en) * 2011-12-19 2013-06-27 Intel Corporation A system and deterministic method for servicing msi interrupts using direct cache access
US9996488B2 (en) 2013-09-09 2018-06-12 Qualcomm Incorporated I3C high data rate (HDR) always-on image sensor 8-bit operation indicator and buffer over threshold indicator
US10353837B2 (en) 2013-09-09 2019-07-16 Qualcomm Incorporated Method and apparatus to enable multiple masters to operate in a single master bus architecture
US9690725B2 (en) 2014-01-14 2017-06-27 Qualcomm Incorporated Camera control interface extension with in-band interrupt
US9519603B2 (en) * 2013-09-09 2016-12-13 Qualcomm Incorporated Method and apparatus to enable multiple masters to operate in a single master bus architecture
WO2015054548A1 (en) 2013-10-09 2015-04-16 Qualcomm Incorporated ERROR DETECTION CAPABILITY OVER CCIe PROTOCOL
US9684624B2 (en) 2014-01-14 2017-06-20 Qualcomm Incorporated Receive clock calibration for a serial bus
US10067814B2 (en) 2016-04-28 2018-09-04 International Business Machines Corporation Method and system to decrease measured usage license charges for diagnostic data collection
US10769051B2 (en) * 2016-04-28 2020-09-08 International Business Machines Corporation Method and system to decrease measured usage license charges for diagnostic data collection
US20170329730A1 (en) * 2016-05-12 2017-11-16 Wipro Limited Method and unit for handling interrupts in a system

Family Cites Families (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
FR1458370A (fr) * 1964-08-28 1966-03-04 English Electric Leo Marconi C Appareil de commande pour un calculateur électronique digital
GB1448866A (en) * 1973-04-13 1976-09-08 Int Computers Ltd Microprogrammed data processing systems
US4453211A (en) * 1981-04-28 1984-06-05 Formation, Inc. System bus for an emulated multichannel system
US4495569A (en) * 1982-06-28 1985-01-22 Mitsubishi Denki Kabushiki Kaisha Interrupt control for multiprocessor system with storage data controlling processor interrupted by devices
US4494193A (en) * 1982-09-30 1985-01-15 At&T Bell Laboratories Deadlock detection and resolution scheme
US4590556A (en) * 1983-01-17 1986-05-20 Tandy Corporation Co-processor combination
US4591975A (en) * 1983-07-18 1986-05-27 Data General Corporation Data processing system having dual processors
US4695945A (en) * 1985-02-28 1987-09-22 International Business Machines Corporation Processor I/O and interrupt filters allowing a co-processor to run software unknown to the main processor

Also Published As

Publication number Publication date
SG61789G (en) 1990-03-09
CA1236582A (en) 1988-05-10
DE3689696D1 (de) 1994-04-14
MY101469A (en) 1991-11-18
JPS61202269A (ja) 1986-09-08
EP0192944A2 (de) 1986-09-03
ES552464A0 (es) 1987-07-01
HK19190A (en) 1990-03-23
PH23471A (en) 1989-08-07
JPH0221018B2 (de) 1990-05-11
IN166350B (de) 1990-04-14
CN86100690A (zh) 1986-08-27
GB8525990D0 (en) 1985-11-27
US4695945A (en) 1987-09-22
CN1008484B (zh) 1990-06-20
ES8706986A1 (es) 1987-07-01
EP0192944B1 (de) 1994-03-09
GB2171823A (en) 1986-09-03
KR860006743A (ko) 1986-09-15
GB2171823B (en) 1989-06-14
KR900006549B1 (ko) 1990-09-13
EP0192944A3 (en) 1989-04-19
BR8600665A (pt) 1986-10-29

Similar Documents

Publication Publication Date Title
DE3689696T2 (de) Datenverarbeitungssystem mit einem Hauptprozessor und einem Ko-Prozessor mit gemeinsamen Betriebsmitteln.
DE1774296C2 (de) Restruktuierbare Steuereinheit für elektronische Digitalrechner
DE2350884C2 (de) Adreßumsetzungseinheit
DE69723286T2 (de) Echtzeitprogramm-sprachbeschleuniger
DE3587622T2 (de) Emulationseinrichtung in einem Datenverarbeitungssystem.
DE3685876T2 (de) Meister-sklave-mikroprozessorsystem mit einem virtuellen speicher.
DE69630126T2 (de) Historische zustandinformation verwendendes entscheidungsprotokoll für zugriff auf ein geteiltes speichergebiet
DE3689961T2 (de) Verfahren zur Verarbeitung von Unterbrechungen in einem digitalen Rechnersystem.
DE69926365T2 (de) Software-konfigurierbare technik zum priorisieren von unterbrechungen in einem auf einem mikroprozessor basierten system
DE69822221T2 (de) Umleitung von interruptzielen unterstützende transaktionen sowie niveauabhängigeinterruptsemantik
DE69828074T2 (de) Direkt-speicherzugriff / transaktionen auf ein bus mit niedriger pinanzahl
EP0006164B1 (de) Multiprozessorsystem mit gemeinsam benutzbaren Speichern
CH656728A5 (de) Schnittstellenschaltungsanordnung zur verbindung eines prozessors mit einem nachrichtenkanal.
DE2948285A1 (de) Adressensteuersystem fuer softwaresimulation
DE2744531A1 (de) Elektronische datenverarbeitungsanlage
DE2517276A1 (de) Datenverarbeitungssystem
DE102004057756A1 (de) USB &#34;On-the-go&#34;-Steuerung
EP0014850A1 (de) Einrichtung zur Erweiterung des Standard-Makroinstruktionssatzes in einer Datenverarbeitungsanlage
CH615521A5 (de)
EP0500973B1 (de) EEPROM und Verfahren zum Ändern einer Initialisierungsroutine im EEPROM
DE3911721C2 (de)
DE19955776C1 (de) Multitasking-Prozessorsystem
DE8803950U1 (de) Digitalrechner mit Befehlsmodusumwandlung
DE3688136T2 (de) Verfahren zum Testen und Setzen von Daten in einen Datensatz auf einer Platte in eine atomaren Ein/Ausgabeoperation.
DE68922521T2 (de) Sekundärprozessorinitialisierungssystem.

Legal Events

Date Code Title Description
8364 No opposition during term of opposition
8339 Ceased/non-payment of the annual fee