DE3854859T2 - Unterbrechungsabwicklung in einem parallelen Datenverarbeitungssystem - Google Patents

Unterbrechungsabwicklung in einem parallelen Datenverarbeitungssystem

Info

Publication number
DE3854859T2
DE3854859T2 DE3854859T DE3854859T DE3854859T2 DE 3854859 T2 DE3854859 T2 DE 3854859T2 DE 3854859 T DE3854859 T DE 3854859T DE 3854859 T DE3854859 T DE 3854859T DE 3854859 T2 DE3854859 T2 DE 3854859T2
Authority
DE
Germany
Prior art keywords
instruction
instructions
registers
interrupt
interrupt signal
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
DE3854859T
Other languages
English (en)
Other versions
DE3854859D1 (de
Inventor
Gregory Frederick Grohoski
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
Application granted granted Critical
Publication of DE3854859D1 publication Critical patent/DE3854859D1/de
Publication of DE3854859T2 publication Critical patent/DE3854859T2/de
Anticipated expiration legal-status Critical
Expired - Fee Related legal-status Critical Current

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3861Recovery, e.g. branch miss-prediction, exception handling
    • G06F9/3863Recovery, e.g. branch miss-prediction, exception handling using multiple copies of the architectural state, e.g. shadow registers
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3885Concurrent instruction execution, e.g. pipeline or look ahead using a plurality of independent parallel functional units

Landscapes

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

Description

  • Diese Erfindung bezieht sich auf die Unterbrechungsabwicklung in einem parallelen Datenverarbeitungssystem.
  • Traditionell führen Prozessoren Befehle seriell aus, das heißt, jeweils ein Befehl zu einem bestimmten Zeitpunkt. Um die Leistung zu erhöhen und die Ausführungsgeschwindigkeit von Datenverarbeitungssystemen zu verbessern, wurde die Parallelverarbeitung realisiert. Bei der Parallelverarbeitung können Befehle gleichzeitig ausgeführt werden. Es ist jedoch wünschenswert, daß die gleichzeitig ausgeführten Befehle so ausgeführt werden, daß sie wie seriell ausgeführte Befehle aussehen. Der Einsatz mehrerer Ausführungseinheiten in einem Datenverarbeitungssystem ermöglicht die gleichzeitige Ausführung von Befehlen, wenn mehrere Befehle in einem bestimmten Zeitraum oder Zyklus zur gleichzeitigen Ausführung an mehrere Ausführungseinheiten verteilt oder zugeteilt werden können. Ein Befehlsverteiler muß feststellen, welche Befehle an welche Ausführungseinheiten verteilt werden müssen. Ein Beispiel eines solchen Verteilers wird im IBM Technical Disclosure Bulletin, Band 29, Nr. 1, Juni 1986, unter dem Titel "Branch- Processing Instruction Cache" auf den Seiten 357-359 beschrieben. Diese Beschreibung erläutert einen Mechanismus zum Holen von Befehlen, der die Fähigkeit hat, Verzweigungsbefehle zu verarbeiten, während gleichzeitig andere Befehle geholt werden.
  • Ein Problem der parallelen gleichzeitigen Verarbeitung von Befehlen ist die Abwicklung einer durch einen Befehl erzeugten Unterbrechung in einer Form, bei der das Aussehen einer seriellen Befehlsausführung beibehalten wird.
  • In einem Artikel mit dem Titel "Implementation of Precise Interrupts in Pipelined Processors", der auf den Seiten 36-44 der Conference Proceedings des 12th Annual International Symposium on Computer Architecture, Juni 1985, Boston, erscheint, wird eine Technik beschrieben, die bei bestimmten Unterbrechungssignaltypen, die bei der Verarbeitung von Befehlen im Pipeline-Verfahren auftreten können, eine Wiederherstellung ermöglicht. Befehle können in jeder beliebigen Reihenfolge abgeschlossen werden, es wird jedoch für jeden Befehl ein Datensatz erstellt, der genügend Zustandsinformationen enthält, um ein präzises Wiederherstellen eines bestimmten Zustandes zu ermöglichen, wenn ein solches Unterbrechungssignal auftritt.
  • Es ist eine Aufgabe der vorliegenden Erfindung, einen verbesserten Mechanismus zur Abwicklung von Unterbrechungen bereitzustellen, während gleichzeitig die gleichzeitige Ausführung von Befehlen möglich ist.
  • Gemäß der vorliegenden Erfindung wird ein Datenverarbeitungssystem zur Ausführung einer Befehlssequenz bereitgestellt, wobei das Datenverarbeitungssystem folgendes umfaßt: eine Vielzahl von Prozessoren, die jeweils Befehle ausführen; Mittel zum Verteilen jedes Befehls an einen der Prozessoren; Steuermittel, die die gleichzeitige Ausführung der verteilten Befehle in der Vielzahl von Prozessoren, unabhängig von der Position der einzelnen Befehle in der Befehlssequenz, steuern, wobei die Steuermittel Unterbrechungsabwicklungs-Mittel enthalten, um ein Befehlsunterbrechungssignal zu empfangen, und um die Vielzahl von Prozessoren und die Verteilmittel in einen Zustand zurückzuversetzen, der vorhanden war, als der Befehl, der das Unterbrechungssignal verursachte, zu einem früheren Zeitpunkt ausgeführt wurde, um die Befehlssequenz ab dem Befehl, der das Unterbrechungssignal verursachte, erneut auszuführen; wobei das System dadurch gekennzeichnet ist, daß das Steuermittel folgendes umfaßt: ein oder mehrere Sicherungsregister, die mit den entsprechenden Prozessor-Registern in mindestens einem der genannten Prozessoren verbunden werden können, wobei die genannten Sicherungsregister so angeordnet sind, daß sie die vorherigen Inhalte der Prozessor-Register speichern, falls die Inhalte der Prozessor-Register während der Befehlsausführung aktualisiert werden; ein Speichermittel zum Speichern von Einträgen, die sich auf Befehle beziehen, die von dem Verteilermittel ausgegeben wurden, wobei jeder Eintrag so angeordnet ist, daß er Adreßinformationen für eine Vielzahl von Befehlen enthält, die gleichzeitig von dem Verteilermittel ausgegeben werden, und eine Angabe darüber, ob während der Ausführung der genannten Vielzahl von Befehlen die Inhalte der Prozessor-Register geändert wurden, wobei die Adreßinformation eine Basisadresse umfaßt, die die Adresse eines ersten der Vielzahl von Befehlen anzeigt, und ein Offset-Feld, das die Position eines jeden Befehls der Vielzahl von Befehlen in bezug auf den ersten Befehl anzeigt, der ein Unterbrechungssignal erzeugen könnte; das Unterbrechungsabwicklungs-Mittel reagiert hierbei auf den Empfang eines Unterbrechungssignals, auf das Speichermittel zuzugreifen, um die Adresse des Befehls zu holen, der das Unterbrechungssignal verursacht hat, indem die Daten des Offset-Felds als Offsets zu der Basisadresse verwendet werden, und um dann diese Adresse an einen der Prozessoren zu senden; das Unterbrechungsabwicklungs-Mittel bewirkt hierdurch außerdem, daß Inhalte in den Sicherungsregistern ihren jeweiligen Prozessor-Registern zur Verfügung gestellt werden, wenn der Eintrag in dem Speichermittel anzeigt, daß diese Prozessor-Registerinhalte während der Ausführung der Vielzahl von Befehlen verändert wurden.
  • Wie im folgenden beschrieben wird, umfaßt ein Ausführungsbeispiel der Erfindung ein Datenverarbeitungssystem zum Ausführen einer Befehlssequenz, das mehrere Prozessoren enthält, von denen jeder Befehle ausführt. Außerdem ist eine Verteilervorrichtung enthalten, um jeden Befehl an einen der Prozessoren zu verteilen. Ein Steuergerät ist enthalten, um die gleichzeitige Ausführung der verteilten Befehle in den Prozessoren zu steuern, unabhängig von den Positionen der Befehle in der Sequenz. Das Steuergerät hat die Fähigkeit, ein Befehlsunterbrechungssignal zu empfangen. Bei Empfang des Befehlsunterbrechungssignals stellt das Steuergerät fest, von welcher Befehlsausführung die Befehlsunterbrechung erzeugt wurde. Das Steuergerät hat die Fähigkeit, die Prozessoren und die Verteilervorrichtung in den Zustand zurückzusetzen, der vorhanden war, als der Befehl, der das Befehlsunterbrechungssignal erzeugte, zuerst ausgeführt wurde, um den Befehl, der die Unterbrechung verursachte, erneut auszuführen.
  • In dem bevorzugten Ausführungsbeispiel hat das Steuergerät die Fähigkeit, eine Vorgeschichte darüber zu führen, welche Befehle an welche Prozessoren verteilt wurden. Das Steuergerät führt außerdem einen Datensatz mit den Inhalten der ausgewählten Register. Bei Auftreten eines Unterbrechungssignals kann das Steuergerät den Zustand dieser Register und den Zustand der Prozessoren feststellen, der zu dem Zeitpunkt vorhanden war, als der Befehl zum erstenmal ausgeführt wurde. Das Steuergerät reinitialisiert dann alle Prozessoren mit der Information, die gespeichert wurde, um die Prozessoren und den Befehlsverteiler in den Zustand zu versetzen, der vorhanden war, als der Befehl, durch den die Unterbrechung verursacht wurde, zuerst ausgeführt wurde.
  • Die vorliegende Erfindung soll weiter beispielhaft unter Bezugnahme auf das Ausführungsbeispiel der Erfindung beschrieben werden, auf das in den beiliegenden Zeichnungen Bezug genommen und das in diesen Zeichnungen dargestellt wird; es zeigt:
  • Figur 1 ein Blockdiagramm eines parallelen Datenverarbeitungssystems;
  • Figur 2 ein Blockdiagramm, das einen Teil des Datenverarbeitungssystems der Figur 1 erläutert;
  • Figur 3 ein Blockdiagramm, das Teile des Programmzähler- Stacks und der Verzweigungsausführungseinheit erläutert;
  • Figur 4 ein Diagramm, das die Inhalte des Eintrags im Programmzähler-Stack erläutert;
  • Figur 5 eine Erläuterung der Inhalte der Befehlsregister und des Stack-Registers im Zyklus 0;
  • Figur 6 eine Erläuterung der Inhalte der Befehlsregister und der Stack-Register im Zyklus 1;
  • Figur 7 eine Erläuterung der Inhalte der Befehlsregister und der Stack-Register im Zyklus 2;
  • Figur 8 eine Erläuterung der Inhalte der Befehlsregister und der Stack-Register im Zyklus 3;
  • Figur 9 eine Erläuterung der Inhalte der Befehlsregister und der Stack-Register im Zyklus 4;
  • Figur 10 eine Erläuterung der Inhalte der Befehlsregister und der Stack-Register im Zyklus 5;
  • Figur 11 eine Erläuterung der Inhalte der Befehlsregister und der Stack-Register im Zyklus 6;
  • Figur 12 ein Flußdiagramm, das die gleichzeitige Ausführung der Stack-Hinzufügefunktion und der Stack-Entfernungsfunktion erläutert;
  • Figur 13 ein Flußdiagramm, das die Stack-Hinzufügefunktion erläutert; und
  • Figur 14 ein Flußdiagramm, das die Stack-Entfernungsfunktion erläutert.
  • Die beschriebene Anordnung stellt einen Mechanismus für die parallele und gleichzeitige Ausführung mehrerer Befehle bereit, wobei Unterbrechungen so verarbeitet werden können, daß die Befehlsausführung als serielle Befehlsausführung erscheint.
  • Figur 1 ist ein Blockdiagramm, das eine Datenverarbeitungseinheit erläutert, mit einem Speicher 10, der mit einem Speicher-Controller 12 und einem Befehlspuffer 14 verbunden ist. Mit dem Befehlspuffer 14 ist ein Programmzähler-Stack und eine Befehlsverteillogik 16 verbunden. Mehrere Ausführungseinheiten 18A bis 18D sind ihrerseits mit dem Programmzähler- Stack und der Befehlsverteillogik 16 verbunden. Die Ausführungseinheiten 18A bis 18D sind mit einem Informationsbus 20 verbunden, der die Informationen im gesamten Datenverarbeitungssystem verteilt.
  • Figur 2 ist ein Blockdiagramm, das die Befehlspuffer 14 zeigt, die über die Busleitungen 1 mit der Befehlsausgabelogik 17 verbunden sind. Die Befehlsausgabelogik 17 ist weiter über die Busse 2 und 3 mit dem Programmzähler-Stack 15 verbunden. Die Befehlsausgabelogik 17 und der Programmzähler- Stack 15 bilden den Block 16 der Figur 1. Ebenfalls dargestellt sind die Befehlseinheiten 18A, 18B, 18C und 18D. Für den Fachmann dürfte klar sein, daß die Anzahl der enthaltenen Ausführungseinheiten entsprechend der Anzahl der gleichzeitig auszuführenden Befehle variieren kann. In dem bevorzugten Ausführungsbeispiel führt die Ausführungseinheit 18A Verzweigungsbefehle aus. Die Ausführungseinheit 18B führt arithmetische Festpunktbefehle aus. Die Ausführungseinheit 18C führt arithmetische Gleitpunktbefehle aus. In diesem bevorzugten Ausführungsbeispiel sind nur die Ausführungseinheiten 18A bis 18C funktionsfähig.
  • Der Befehlspuffer 14 speichert eine große Gruppe von Befehlen, die er von dem Speicher 10 (Figur 1) empfängt. Die Befehlsausgabelogik 17 lädt die Befehle aus dem Befehlspuffer 14 in die verfügbaren Ausführungseinheiten 18A bis 18D. In dem bevorzugten Ausführungsbeispiel kann die Befehlsausgabelogik 17 vier Befehle gleichzeitig in die Ausführungseinheiten 18A - 18D laden. Die Befehlsausgabelogik 17 bestimmt weiter, welcher Befehl an welche Ausführungseinheit geht, und ob die Ausführungseinheit einen Befehl übernehmen kann. Weiter stellt die Befehlsausgabelogik 17 über die Leitung 2 dem Programmzähler-Stack einen Eingang bereit. Dieser Eingang enthält den Datensatz der verteilten Befehle. Der Programmzähler-Stack 15 gibt über die Leitung 3 der Befehlsausgabelogik ein Signal, die Befehlsverteilung abzubrechen. Dieses Signal tritt auf, wenn entweder eine Unterbrechung erzeugt wurde, oder wenn die Stacks in dem Programmzähler 15 voll sind. Die Befehle von der Befehlsausgabelogik 17 werden den entsprechenden Ausgabeeinheiten bereitgestellt. Die Verzweigungsausführungseinheit 18A stellt dem Programmzähler-Stack über die Leitung 7 Informationen zur Verfügung, beispielsweise Adressen und die Werte bestimmter Register. Die arithmetische Festpunkt-Befehlsausführungseinheit 18B stellt über die Leitung 9 Signale zur Verfügung, die den Abschluß von Befehlen oder das Auftreten eines Befehlsunterbrechungssignals anzeigen. Die arithmetische Festpunkt-Befehlsausführungseinheit 18B stellt außerdem der arithmetischen Gleitpunkt-Befehlsausführungseinheit 18C über die Leitung 11 Signale zur Verfügung beziehungsweise empfängt Signale von dieser Einheit. Diese Signale über die Leitung 11 sorgen für eine Synchronisation zwischen der Gleitpunkt- und der Festpunkt-Ausführungseinheit bei der Ausführung von Gleitpunktlade- und -speicherbefehlen. In diesem Ausführungsbeispiel führt die Festpunkt-Ausführungseinheit 18B Gleitpunktlade- und -speicherbefehle für die Adressenberechnung aus. Die Festpunkt-Ausführungseinheit 18B schickt diese Adressen dann an den Speicher. Bei Speicherbefehlen muß die Festpunkteinheit 18B wissen, wann die Gleitpunkteinheit 18C die Ausführung des Befehls abgeschlossen hat, so daß die Festpunkteinheit 18B weiß, wann Daten für die Speicherung bereitstehen und damit, wann die Adresse für die Übertragung bereitsteht. Weiter signalisiert die Festpunkteinheit 18B der Gleitpunkteinheit 18C das Auftreten von Unterbrechungen, so daß diese den aktuellen Befehl der Gleitpunkteinheit unberücksichtigt läßt.
  • Figur 3 erläutert die Wechselbeziehung zwischen der Verzweigungseinheit 10A und dem Programmzähler-Stack 16 ausführlicher. In Figur 3 sieht man, daß die Verzweigungseinheit 18A das Zählregister 22, das Verknüpfungsregister 24, das Bedingungsregister 26 und das Unterbrechungsadressenregister 20 enthält. Das Zählregister führt eine Zählung für die Ausführung von Schleifenbefehlen in der Verzweigungsausführungseinheit 10A. Das Verknüpfungsregister 24 führt die Adresse für Verknüpfungsoperationen, beispielsweise den Rücksprung von einem Subroutinen-Aufruf. Das Bedingungsregister 26 führt die Bedingungs-Kodes, die sich aus den Vergleichsoperationen ergeben. Das Unterbrechungsadressenregister 28 empfängt die Adresse eines Befehls, der eine Unterbrechung erzeugt hat. Das Zählregister 22 ist über die Leitungen 40 und 42 mit dem Zählregister-Sicherungs-Stack 30 in dem Programmzähler- Stack 16 verbunden. In ähnlicher Weise ist das Verknüpfungsregister 24 über die Leitungen 44 und 46 mit dem Sicherungs- Stack des Verknüpfungsregisters, 32, verbunden. Außerdem ist das Bedingungsregister 26 über die Leitungen 40 und 50 mit dem Sicherungs-Stack 34 des Bedingungsregisters verbunden. Das Unterbrechungsadressenregister 20 ist über die Leitung 70 mit einem Addierer 75 verbunden. Der Addierer 75 erzeugt die Unterbrechungsadresse für das Unterbrechungsregister 28 über die Leitung 71. Die Inhalte dieser Register 22, 24, 26 und 20 steuern den Ausführungszustand der Verzweigungsausführungseinheit 18A.
  • Da bei Auftreten einer Unterbrechung die Ausführung durch die Ausführungseinheiten 18B und 18C abgebrochen wird, wird bei erneuter Ausführung eines Befehls durch die Verzweigungsausführungseinheit 18A die Ausführung einer Befehlsseguenz an dem Befehl reinitialisiert, der die Unterbrechung erzeugte.
  • Wenn die Befehlsausgabelogik 17 (Figur 2) vier oder weniger Befehle in einem Zyklus ausgibt, wird die Speichertabelle 36 des Programmzähler-Speichereintrags aktualisiert. Die Basisadresse wird auf Leitung 56 bereitgestellt. Die Maske und zwei Felder werden von der Leitung 44 von der Programmzählersteuerung 38 bereitgestellt. Die Programmzähler-Stack-Steuerung 38 empfängt diese Information über die Leitung 63 von der Befehlsausgabelogik 17. Außerdem aktualisiert die Programmzähler-Stack-Steuerung 30 die Stack-Zeiger 39, die die Kopfzeiger und Endezeiger für die drei Sicherungs- Stacks 30, 32 und 34 enthalten, und führt die Stackentfernungs- und Stackhinzufügefunktionen aus, die von der Stackhinzufügelogik 64 und der Stackentfernungslogik 66 durchgeführt werden.
  • Die Steuerung des Programmzähler-Stacks, 38, steuert die Operation der Sicherungs-Stacks 30, 32 und 34 über die Leitung 52. Weiter stellt diese Steuerung 38 die Signale zum Abbruch der Verteilung an die Befehlsausgabelogik 17 auf der Leitung 32 bereit und empfängt die Signale, die besagen, daß ein Befehl abgeschlossen ist beziehungsweise daß eine Unterbrechung stattgefunden hat, von der Festpunkt-Ausführungseinheit 18B auf Leitung 60, wie bereits weiter oben erläutert wurde.
  • Der Programmzähler-Stack-Eintragsspeicher 36 stellt die Adresse des unterbrechenden Befehls auf Leitung 70 dem Unterbrechungsadressenregister 28 zur Verfügung.
  • Figur 4 ist eine Erläuterung der Inhalte des Eintragsspeichers 36 des Programmzähler-Stacks (Figur 3). Es ist ein einzelner Eintrag 80 aufgeführt, der das Feld mit der Basisbefehlsadresse, 82, das 4-Bit-Maskenfeld 04, das Feld 86, Befehl 1, und das Feld 88, Befehl 2, enthält. Das Feld 82 ist die Adresse des Basisbefehls für die Befehlssequenz aus vier Befehlen, die in dem Zyklus von der Befehlsausgabelogik 17 verteilt werden (Figur 2). Das Maskenfeld 84 gibt die Positionen aller Unterbrechungen verursachenden Befehle in dieser 4er-Befehlsgruppe an. In dem vorliegenden Ausführungsbeispiel können nur zwei Befehle Unterbrechungen in einer 4er-Befehlsgruppe bewirken. Daher werden zum Aufzeichnen dieser Befehle nur zwei Befehlsfelder 86 und 88 bereitgestellt. Das erste Befehlsfeld 86 enthält die Teilfelder 90, 92 und 94. Das Feld 90 gibt an, ob das Verknüpfungsregister 24 geändert wurde. Das Feld 92 gibt an, ob das Zählregister 22 geändert wurde. Das Feld 94 gibt an, ob das Bedingungsregister 26 geändert wurde. In dem bevorzugten Ausführungsbeispiel enthalten das Feld 90 und das Feld 92 jeweils 1 Bit. Das Feld 94 enthält 3 Bits die die drei getrennten Abschnitte des Bedingungsregisters 26 anzeigen. Das Feld 88 enthält ebenfalls Felder, wie Feld 86, die als die Felder 96, 97 und 98 dargestellt sind, welche den bereits erläuterten Feldern 90, 92 und 94 entsprechen.
  • Die Funktionsweise dieser Anordnung wird am besten durch ein Beispiel veranschaulicht. Die im Anhang an diese Beschreibung zu findende TABELLE enthält zwölf Befehle, die zur Ausführung an die Ausführungseinheiten verteilt werden müssen. Diese Befehle sind in drei Gruppen von je vier Befehlen aufgeteilt. In diesem Beispiel ist die Adresse des ersten Befehls 1. Die Gruppe 1, bestehend aus den Befehlen 1 bis 4, wird im Zyklus 1 verteilt.
  • Figur 5 erläutert die Inhalte des Eintragsspeichers im Programmzähler-Stack, 36, bestehend aus den Eintragspositionen 100, 102 und 104; den Zählregister-Sicherungs-Stack 30, bestehend aus den Einträgen 30A, 30B und 30C; den Verknüpfungsregister-Sicherungs-Stack 32, bestehend aus den Einträgen 32A, 32B und 32C; und den Bedingungsregister-Sicherungs- Stack 34, bestehend aus den Einträgen 34A, 348 und 34C. Außerdem sind die Anfangsinhalte des Zählregisters 22, des Verknüpfungsregisters 24 und des Bedingungsregisters 26 mit 50, 60 beziehungsweise 70 dargestellt. Der tatsächliche Wert dieser Inhalte ist beliebig und wurde hier nur angegeben, um dem Leser eine Hilfe bei der Verfolgung der Einträge in diesem Beispiel an die Hand zu geben.
  • Bezugnehmend auf Figur 6 werden im Zyklus 1 die Befehle 1 bis 4 verteilt. Da ein Ladebefehl (Befehl 1) verteilt wurde, wird im Eintragsspeicher des Programmzähler-Stacks, 36, ein Eintrag hinzugefügt. In diesem Ausführungsbeispiel können nur Lade- und Speicherbefehle Unterbrechungen erzeugen. Die Basisadresse von "1" wird gespeichert. Der Maskenwert ist 1000, was besagt, daß der erste Befehl die Position des Befehls ist, der eine Unterbrechung verursachen könnte. Wären in der 4er-Befehlsgruppe zwei Befehle enthalten, würden 2 Bits des Maskenfelds auf 1 gesetzt. Die Position der Bits bezeichnet die Position der die Unterbrechung verursachenden Befehle in der 4er-Befehlssequenz. Daher können die Maskenbitpositionen als Offsets zu der Basisadresse eingesetzt werden, um die tatsächlichen Adressen der die Unterbrechung verursachenden Befehle bereitzustellen. Die Inhalte des Feldes 1 werden gesetzt, wenn die Inhalte des Zählregisters 22, des Verknüpfungsregisters 24 und des Bedingungsregisters 26 während der Ausführung dieser 4er-Befehlsseguenz verändert werden. In diesem Beispiel setzt der Verzweigungsbefehl das Zählregister 22 und das Verknüpfungsregister 24. Der LCR (logic on condition register)-Befehl setzt die Inhalte des Bedingungsregisters 26. Die vorherigen Inhalte dieser Register werden wie gezeigt gespeichert.
  • Figur 7 erläutert den Status nach dem Zyklus 2. In Zyklus 2 werden die Befehle 5 bis 8 (Gruppe II der TABELLE) verteilt. Da Gruppe II genau denselben Befehlssatz wie Gruppe I enthält, finden dieselben Vorgänge zur Aktualisierung der jeweiligen Sicherungs-Stacks statt. Die Ausführung der Befehle 7 und 8 aktualisiert auch das Zählregister 22, das Verknüpfungsregister 24 und das Bedingungsregister 26, wie gezeigt. Die Sicherungsregister 30, 32 und 34 speichern die vorherigen Inhalte des Zählregisters 22, des Verknüpfungsregisters 24 und des Bedingungsregisters 26. In jedem Zyklus, in dem ein Befehl, der eine Unterbrechung verursacht, verteilt wird, wird in den Eintragsspeicher des Programmzähler-Stacks, 36, ein Datensatz des Verteilzyklus geschrieben. Wenn durch nachfolgende Befehle das Verknüpfungsregister 24, das Zählregister 22 oder das Bedingungsregister 26 aktualisiert werden, werden die alten Werte dieser Register in den entsprechenden Sicherungs-Stacks gespeichert und die betreffenden Endezeiger werden inkrementiert. Für jeden Sicherungs-Stack gibt es einen Kopf- und einen Endezeiger. Diese Zeiger betätigen die drei Sicherungsregisterpositionen als umlaufende Warteschlange. Der Endezeiger wird also immer dann inkrementiert, wenn ein Eintrag hinzugefügt wird. Immer wenn ein Eintrag entfernt wird, wird der Kopfzeiger inkrementiert. Figur 8 erläutert die Inhalte der Register am Ende von Zyklus 3, wenn die Befehle der Gruppe III verteilt sind. In diesem Beispiel führt die Festpunkteinheit 18B im Zyklus 3 den Befehl 1 aus. In diesem Beispiel hat der Befehl 1 keine Unterbrechung verursacht. Da nur ein eine Unterbrechung verursachender Befehl in diesem Zyklus (Zyklus 1) verteilt wurde, kann der gesamte Eintrag 100 entfernt werden. Unter Einsatz der Informationen im Feld 1 werden auch die Einträge 30A, 32A und 34A des Sicherungsregisters entfernt. Dies erreicht man durch Inkrementieren des Kopfzeigers in der bereits erläuterten Weise. Da die Befehle der Gruppe III denen der Gruppe I und II entsprechen, ist der Speichereintrag 104 des Programmzähler-Stacks wie dargestellt. Entsprechend werden das Zählregister 22, das Verknüpfungsregister 24 und das Bedingungsregister 26 mit den Werten 57, 67 beziehungsweise 77 gefüllt. Die vorherigen Werte dieser Register sind in den entsprechenden Einträgen in ihren Sicherungs-Stacks 30, 32 und 34 gespeichert, wie gezeigt.
  • Figur 9 erläutert die Inhalte dieser Register am Ende von Zyklus 4. In diesem Beispiel wurde in Zyklus 4 der Befehl 2 durch die Festpunkteinheit 18B ausgeführt. Da es sich nicht um einen Lade- oder Speicherbefehl handelt, kann er keine Unterbrechung verursachen. Daher müssen aus dem Eintragsspeicher des Programmzähler-Stacks, 36, keine Einträge entfernt werden.
  • Figur 10 erläutert die Inhalte des Registers am Ende von Zyklus 5. Im Zyklus 5 hat die Festpunkt-Ausführungseinheit 18B den Befehl 5 ausgeführt. Für dieses Beispiel hat dieser Befehl eine Unterbrechung verursacht. In diesem Fall werden die Offset-Maskenbits (1000) mit der Basisadresse (5) verbunden, um die Position des Befehis zu bestimmen, der die Unterbrechung verursachte. In diesem Beispiel ist die Adresse 5. Da die Kennzeichenbits für das Feld 1 für das Zählregister 22, das Verknüpfungsregister 24 und das Bedingungsregister 26 gesetzt wurden, werden die Sicherungswerte für diese Register in diese Register eingespeist. Diese Werte werden in den Einträgen 30B, 32B beziehungsweise 34B gespeichert. Die Adresse des unterbrechenden Befehls wird in die Verzweigungsausführungseinheit 18A eingespeist. Entsprechend werden die Inhalte des Sicherungsregisters in ihre betreffenden Register eingespeist. Alle Informationen im Eintragsspeicher des Programmzähler-Stacks, 36, und den Sicherungs-Stacks 30, 32 und 34 werden dann gelöscht, da diese gespeicherten Informationen nicht mehr gültig sind, und das System wird wieder auf den Zustand initialisiert, in dem der Befehl in Position 5 ausgeführt wurde.
  • Figur 11 erläutert die Registerinhalte am Ende von Zyklus 6, als das Zählregister 22, das Verknüpfungsregister 24 und das Bedingungsregister 26 aktualisiert wurden. Am Ende von Zyklus 6 wurde das System reinitialisiert und ist bereit, wieder mit der Ausführung der mit Befehl 5 beginnenden Befehlssequenz zu starten.
  • Wenn in einem Eintrag eines Programmzähler-Stacks zwei Befehle enthalten sind, die Unterbrechungen erzeugen könnten, werden in diesem Ausführungsbeispiel die Unterbrechungen auf einer First-in-, First-out-Basis empfangen. Mit anderen Worten, wenn es zu einer Unterbrechung kommt, wird angenommen, daß der älteste Befehl, der eine Unterbrechung erzeugen könnte, diese Unterbrechung erzeugt hat. Es dürfte jedoch klar sein, daß in anderen Systemen nicht immer notwendigerweise der älteste Befehl derjenige Befehl ist, der die Unterbrechung verursacht. Das System könnte dann den Befehl, der die Unterbrechung verursachte, bestimmen, indem bei Auftreten der Unterbrechung ein Identifizierungskennzeichen gesetzt würde.
  • In Figur 11 erscheinen daher die Register so, als wenn nur die Befehle 1 bis 4 ausgeführt worden wären.
  • Figur 12 erläutert ein Zustandsdiagramm, das die gleichzeitige Ausführung der Stackhinzufügefunktion in der Logik 64 (Zustand 122) und die Ausführung der Stackentfernungsfunktion 124 in der Stackentfernungslogik 66 darstellt. Diese Funktionen 122 und 124 werden in jedem Zyklus ausgeführt, wie es die Zustände 120 und 126 zeigen.
  • Figur 13 ist ein Flußdiagramm, das die Stackhinzufügefunktion erläutert. Am Beginn des Zyklus beginnt die Stackhinzufügelogik 64 bei Schritt 200 und geht weiter zu Schritt 202, um festzustellen, ob ein Lade- oder Speicherbefehl verteilt wurde. Wenn dies der Fall ist, geht die Logik zu Schritt 204, um die Basisadresse zu speichern und die Kennzeichen-Offset- Bits des Eintragsspeichers im Programmzähler-Stack, 36, zu setzen. Wenn kein Lade- und Speicherbefehl verteilt wurde, oder nachdem die Basisadresse und die Offset-Bits gespeichert sind, geht die Logik weiter zu Schritt 206, um festzustellen, ob Verzweigungs- oder LCR-Befehle vor einem Lade- oder Speicherbefehl verteilt wurden. Wenn ja, werden die Kennzeichen-Bits des vorherigen Eintrags im Programmzähler-Stack aktualisiert und die alten Werte der Zähl-, Verknüpfungs- und Bedingungsregister werden auf den Sicherungs-Stacks gespeichert. Das Programm geht dann weiter zu Schritt 216. Zurück zu Schritt 206; wenn kein Verzweigungs- oder LCR-Befehl vor einem Lade- oder Speicherbefehl verteilt wurde, geht die Logik weiter zu Schritt 210, um festzustellen, ob Verzweigungsoder LCR-Befehle nach einem Lade- oder Speicherbefehl verteilt wurden. Wenn ja, geht die Logik weiter zu Schritt 212, um die Kennzeichen-Bits des aktuellen Eintrags im Programmzählerspeicher zu setzen und die alten Werte in den Sicherungs-Stacks zu speichern. In Schritt 216 werden dann die Sicherungs-Stackzeiger 39 inkrementiert. Zurück zu Schritt 210; wenn kein Verzweigungs- oder LCR-Befehl nach einem Lade- oder Speicherbefehl verteilt wurde, geht die Logik weiter zu Schritt 214, um die Kennzeichen-Bits des aktuellen Eintrags im Programmzähler-Stack auf Null zu setzen. In Schritt 218 wird dann der Zeiger zu dem Eintrag im Programmzähler-Stack inkrementiert, wenn ein Lade- oder Speicherbefehl verteilt wurde. In Schritt 220 stellt die Logik fest, ob der Eintragsspeicher im Programmzähler-Stack voll ist. Wenn ja, wird in Schritt 222 ein Signalspeicher gesetzt, um das Signal zum Abbruch der Verteilung an die Befehlsausgabelogik 17 zu senden. In Schritt 224 wartet die Logik 64, bis der nächste Zyklus stattgefunden hat und kehrt dann zu Schritt 200 zurück.
  • Figur 14 ist ein Flußdiagramm, welches die von der Logik 66 ausgeführte Stackentfernungsprozedur erläutert. Am Beginn eines Zyklus bewegt sich die Logik 66 von Schritt 300 zu Schritt 302, um festzustellen, ob durch die Festpunkt-Ausführungseinheit ein Lade- oder Speicherbefehl ausgeführt wurde. Wenn nicht, geht die Logik weiter zu Schritt 310. Wenn ja, geht die Logik zu Schritt 304, um festzustellen, ob alle Lade- und Speicherbefehle in dem Eintragsspeicher des Programmzähler-Stacks ausgeführt wurden. Wenn nicht, geht das Programm weiter zu Schritt 306 und wartet bis zum nächsten Zyklus. Wenn alle Lade- und Speicherbefehle für den Eintrag ausgeführt wurden, geht die Logik weiter zu Schritt 300, entfemt den Eintrag und verwendet die Zustandsbits, um die Einträge im Sicherungs-Stack zu entfernen und alle Zeiger zurückzuzählen. Nach Abschluß von Schritt 308 geht die Logik zu Schritt 306 und wartet auf den nächsten Zyklus.
  • Zurück zu Schritt 310; die Logik stellt fest, ob durch einen Lade- oder Speicherbefehl eine Unterbrechung verursacht wurde. Wenn nicht, geht die Logik weiter zu Schritt 306. Bei einer Unterbrechung geht die Logik weiter zu Schritt 312, um die Adresse des Lade- und Speicherbefehls aus der Basisadresse und den Kennzeichen-Bits im Eintrag des Programmzähler-Stacks zu rekonstruieren. In Schritt 314 werden dann die alten Werte des Verknüpfungsregisters 24, des Zählregisters 22 und des Bedingungsregisters 26 gegebenenfalls gespeichert. In Schritt 316 werden die Inhalte des Eintragsspeichers im Programmzähler-Stack, 36, und die entsprechenden Sicherungsregister gelöscht, da diese Werte nicht mehr gültig wären. Die Logik 66 geht dann weiter zu Schritt 306 und wartet auf den nächsten Zyklus.
  • Zwar wurde die Erfindung unter Bezugnahme auf ein dargestelltes Ausführungsbeispiel beschrieben, jedoch ist sie nicht auf die Details dieses Ausführungsbeispiels beschränkt, insbesondere nicht auf diejenigen, die sich aus der Art des für die Beschreibung gewählten parallelen Prozessors ergeben, sowie aus der Anzahl der Befehle, die darin Unterbrechungen verursachen können oder die in einer Gruppe verteilt werden können. Ebensowenig ist die Erfindung auf die dargestellten Masken- und Stackgrößen, die davon abhängig sind, beschränkt. TABELLE GRUPPE 1 L R1, ADDRESS 1 * LOAD FXPT REG 1 FROM MEMORY A R3, R2, El * ADD R1 + R2 T R3 BRANCH ADDEESS 2 * BRANCH TO ADDEESS 2 LCR B3, B2, B1 * LOGIC-ON-CR- UPDATE GONDITION REGISTER GRUPPE II L R1, ADDRESS 1 * LOAD FXPT REG 1 FROM MEMOEY A R3, R2, R1 * ADD R1 + R2 T R3 BRANCH ADDEESS 2 * BRANCH TO ADDRESS 2 LCR B3, B2, B1 * LOGIC-ON-CR- UPDATE CONDITION REGISTER GRUPPE III L R1, ADDEESS 1 * LOAD FXPT REG l FROM MEMORY A R3, R2, R1 * ADD R1 + R2 T R3 BRANCH ADDRESS 2 * BRANCH TO ADDRESS 2 LCR B3, B2, B1 * LOGIC-ON-CE- UPDATE CONDITION REGISTER

Claims (8)

1. Ein Datenverarbeitungssystem zur Ausführung einer Befehlssequenz, wobei das Datenverarbeitungssystem folgendes umfaßt:
eine Vielzahl von Prozessoren (18A-18D), jeweils zum Ausführen von Befehlen;
Mittel (17), um jeden der Befehle an einen der Prozessoren zu verteilen;
Steuermittel (16), um die gleichzeitige Ausführung der verteilten Befehle in der Vielzahl von Prozessoren (18A- 18D) zu steuern, unabhängig von den Positionen der Befehle in der Befehlssequenz, wobei das Steuermittel Unterbrechungsabwicklungsmittel umfaßt, um ein Befehlsunterbrechungssignal zu empfangen, und um die Vielzahl von Prozessoren (18A-18D) und die Verteilmittel (17) in einen Zustand zurückzusetzen, der bestand, als der Befehl, der das Unterbrechungssignal verursachte, zuerst ausgeführt wurde, um die Befehlssequenz ab dem Befehl, der das Unterbrechungssignal verursachte, erneut auszuführen;
wobei das System dadurch gekennzeichnet ist, daß das Steuermittel (16) folgendes umfaßt:
ein oder mehrere Sicherungsregister (30, 32, 34), die mit entsprechenden Prozessor-Registern (22, 24, 26) in mindestens einem der genannten Prozessoren (18A-18D) verbunden werden können, wobei die genannten Silcherungsregister so angeordnet sind, daß die vorherigen Inhalte der Prozessor-Register gespeichert werden, wenn die Inhalte der Prozessor-Register während der Ausführung der Befehle aktualisiert werden;
ein Speichermittel (36) zum Speichern von Einträgen (80), die sich auf Befehle beziehen, die von dem Verteilmittel (17) ausgegeben werden, wobei jeder Eintrag so angeordnet ist, daß er Adresseninformationen für eine Vielzahl von Befehlen enthält, die von dem Verteilmittel (17) gleichzeitig ausgegeben werden, und eine Angabe darüber, ob an den Inhalten der Prozessor-Register (22, 24, 26) während der Ausführung der genannten Vielzahl von Befehlen Veränderungen stattfanden, wobei die Adresseninformation eine Basisadresse (02) umfaßt, die die Adresse eines ersten einer Vielzahl von Befehlen anzeigt, und ein Offset-Feld (84), das die Position eines jeden der Vielzahl von Befehlen, der ein Unterbrechungssignal erzeugen könnte, bezogen auf den ersten Befehl, anzeigt;
wobei das Unterbrechungsabwicklungs-Mittel (38) auf den Empfang eines Unterbrechungssignals reagiert und auf das Speichermittel (36) zugreift, um die Adresse des Befehls, der das Unterbrechungssignal verursachte, zu erhalten, indem es die Daten des Offset-Felds (84) als Offsets zu der Basisadresse (02) einsetzt und anschließend diese Adresse einem der Prozessoren (18A-18D) zur Verfügung stellt;
das Unterbrechungsabwicklungs-Mittel außerdem bewirkt, daß die Inhalte der Sicherungsregister (30, 32, 34) ihren jeweiligen Prozessor-Registern (22, 24, 26) bereitgestellt werden, wenn der Eintrag in dem Speichermittel (36) anzeigt, daß die Inhalte dieser Prozessor-Register im Verlauf der Ausführung der Vielzahl von Befehlen verändert wurden.
2. Ein System nach Anspruch 1, bei dem das Steuermittel (16) weiter Löschmittel umfaßt, um alle Informationen in den Sicherungsregistern (30, 32, 34) und dem Speichermittel (36) vor der erneuten Ausführung der Befehlssequenz ab dem Befehl, der das Unterbrechungssignal verursachte, zu löschen.
3. Ein System nach Anspruch 1 oder Anspruch 2, bei dem ein Befehlsfeld (86, 88) für einen jeden der genannten Vielzahl von Befehlen, die ein Unterbrechungssignal erzeugen könnten, in dem Eintrag des Speichermittels (36) enthalten ist, um anzuzeigen, ob die Inhalte der Prozessor-Register im Verlauf der Ausführung der genannten Vielzahl von Befehlen geändert wurden.
4. Ein System nach einem der Ansprüche 1 bis 3, bei dem ein Eintrag in das Speichermittel (36) nur dann erfolgt, wenn einer oder mehrere der Vielzahl von Befehlen, die gleichzeitig von dem Verteilmittel (17) ausgegeben werden, ein Befehlstyp ist, der ein Unterbrechungssignal verursachen könnte.
5. Ein System nach einem der vorangehenden Ansprüche, weiter umfassend Eintragsentfernungsmittel um, in Antwort darauf, daß die Vielzahl von Befehlen ausgeführt wird, ohne daß ein Unterbrechungssignal erzeugt wird, den betreffenden Eintrag in dem Speichermittel (36) und die betreffenden Einträge in den Sicherungsregistern (30, 32, 34) zu entfernen.
6. Ein System nach Anspruch 5, bei dem die zugehörigen Einträge in den Sicherungsregistern (30, 32, 34) entfernt werden, indem Kopfzeiger zu den Sicherungsregistern inkrementiert werden.
7. Ein System nach einem der vorangehenden Ansprüche, bei dem das Unterbrechungsabwicklungs-Mittel Addierer-Mittel enthält, um die Basisadresse (82) mit den Daten des Offset-Felds (84) zu verbinden, um die Adresse des Befehls, der das Unterbrechungssignal bewirkte, bereitzustellen.
8. Ein System nach einem der vorangehenden Ansprüche, bei dem das Steuermittel Mittel enthält, um einen Befehlsdatensatz einem Datensatz in einem Prozessor-Register zuzuordnen.
DE3854859T 1987-11-30 1988-10-11 Unterbrechungsabwicklung in einem parallelen Datenverarbeitungssystem Expired - Fee Related DE3854859T2 (de)

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
US12681887A 1987-11-30 1987-11-30

Publications (2)

Publication Number Publication Date
DE3854859D1 DE3854859D1 (de) 1996-02-15
DE3854859T2 true DE3854859T2 (de) 1996-07-11

Family

ID=22426855

Family Applications (1)

Application Number Title Priority Date Filing Date
DE3854859T Expired - Fee Related DE3854859T2 (de) 1987-11-30 1988-10-11 Unterbrechungsabwicklung in einem parallelen Datenverarbeitungssystem

Country Status (5)

Country Link
EP (1) EP0319132B1 (de)
JP (1) JPH01166248A (de)
BR (1) BR8806279A (de)
CA (1) CA1313275C (de)
DE (1) DE3854859T2 (de)

Families Citing this family (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5075844A (en) * 1989-05-24 1991-12-24 Tandem Computers Incorporated Paired instruction processor precise exception handling mechanism
US5440703A (en) * 1993-09-20 1995-08-08 International Business Machines Corporation System and method for saving state information in a multi-execution unit processor when interruptable instructions are identified
CN1099073C (zh) * 1995-01-24 2003-01-15 联华电子股份有限公司 并行处理器的定址装置
EP0819840A1 (de) * 1996-07-17 1998-01-21 Isuzu Ceramics Research Institute Co., Ltd. Isoliervorrichtung für Schall und Vibrationen eines Cogenerationssystems mit einer Maschine
EP0935058A3 (de) 1998-02-06 2000-09-06 Isuzu Ceramics Research Institute Co., Ltd. Kühler und Maschinenlärmschutzumhüllung
US7502725B2 (en) 2004-04-29 2009-03-10 International Business Machines Corporation Method, system and computer program product for register management in a simulation environment

Also Published As

Publication number Publication date
EP0319132B1 (de) 1996-01-03
EP0319132A2 (de) 1989-06-07
JPH01166248A (ja) 1989-06-30
BR8806279A (pt) 1989-08-15
EP0319132A3 (de) 1991-12-04
DE3854859D1 (de) 1996-02-15
CA1313275C (en) 1993-01-26

Similar Documents

Publication Publication Date Title
DE3851488T2 (de) Registerverwaltungssystem mit Ausführung von Befehlen in Unordnung in einem Computerprozessor.
DE3685913T2 (de) Vektorenverarbeitung.
DE3750306T2 (de) System zum Gewährleisten der logischen Unversehrtheit von Daten.
DE2714805C2 (de)
DE69017178T2 (de) Datenverarbeitungssystem mit Vorrichtung zur Befehlskennzeichnung.
DE3889578T2 (de) Vorrichtung zur Sicherung und Rückspeicherung einer Registerinformation.
DE68927911T2 (de) Datenverarbeitungssystem
DE2234867C2 (de) Anordnung in einer Datenverarbeitungsanlage zum Steuern der Verarbeitung zweier voneinander unabhängiger Befehlsfolgen
DE3689042T2 (de) Gerät zur Pufferung von Schreibanforderungen.
DE2722099C2 (de)
DE2828544C2 (de)
DE3751164T2 (de) Datenprozessor mit verschiedenen Unterbrechungsverarbeitungsarten.
DE3151745C2 (de)
DE69321929T2 (de) Verfahren und System um einen unabhängige Zugriff auf Zwischenspeicherpuffern in einem superskalaren Prozessorsystem zu gewährleisten.
DE3687298T2 (de) Verfahren zur verarbeitung von adressenuebersetzungsausnahmen in einer virtuellen speicheranordnung.
DE3424962C2 (de)
DE3852928T2 (de) Datenprozessor mit A/D-Umsetzer, um mehrere analoge Eingabekanäle in Digitaldaten umzusetzen.
DE2411963B2 (de) Datenverarbeitungsanlage
DE69030931T2 (de) Mehrfachsequenzprozessorsystem
DE2744531A1 (de) Elektronische datenverarbeitungsanlage
DE69419992T2 (de) Geschichtspuffersystem
DE2856680C2 (de)
DE2054830A1 (de) Informationsverarbeitungssystem mit wortstrukturiertem Speicher und Verfahren fur einen Zugriff zu einem derar tigen Speicher
DE3802025C1 (de)
EP0764906A2 (de) Verfahren zum Betreiben eines durch ein Realzeit-Betriebssystem gesteuerten Realzeit-Computersystems

Legal Events

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