DE3855524T2 - Arithmetik-Parallelverarbeitungseinheit und zugehöriger Kompilator - Google Patents
Arithmetik-Parallelverarbeitungseinheit und zugehöriger KompilatorInfo
- Publication number
- DE3855524T2 DE3855524T2 DE3855524T DE3855524T DE3855524T2 DE 3855524 T2 DE3855524 T2 DE 3855524T2 DE 3855524 T DE3855524 T DE 3855524T DE 3855524 T DE3855524 T DE 3855524T DE 3855524 T2 DE3855524 T2 DE 3855524T2
- Authority
- DE
- Germany
- Prior art keywords
- processor
- arithmetic
- instruction
- macro
- arithmetic operation
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Expired - Fee Related
Links
- 238000012545 processing Methods 0.000 title claims description 138
- 238000000034 method Methods 0.000 claims description 174
- 230000008569 process Effects 0.000 claims description 170
- 238000012546 transfer Methods 0.000 claims description 75
- 230000006870 function Effects 0.000 claims description 16
- 230000005540 biological transmission Effects 0.000 claims description 8
- 230000004044 response Effects 0.000 claims description 2
- 238000010586 diagram Methods 0.000 description 19
- 230000004048 modification Effects 0.000 description 4
- 238000012986 modification Methods 0.000 description 4
- 230000003213 activating effect Effects 0.000 description 2
- 230000003247 decreasing effect Effects 0.000 description 2
- 230000008520 organization Effects 0.000 description 2
- 230000008901 benefit Effects 0.000 description 1
- 238000010276 construction Methods 0.000 description 1
- 238000007796 conventional method Methods 0.000 description 1
- 238000011161 development Methods 0.000 description 1
- 230000000694 effects Effects 0.000 description 1
- 238000005516 engineering process Methods 0.000 description 1
- 238000007667 floating Methods 0.000 description 1
- 230000006872 improvement Effects 0.000 description 1
- 238000013507 mapping Methods 0.000 description 1
- 239000011159 matrix material Substances 0.000 description 1
- 230000007246 mechanism Effects 0.000 description 1
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/40—Transformation of program code
- G06F8/41—Compilation
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/40—Transformation of program code
- G06F8/41—Compilation
- G06F8/45—Exploiting coarse grain parallelism in compilation, i.e. parallelism between groups of instructions
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/38—Concurrent instruction execution, e.g. pipeline or look ahead
- G06F9/3877—Concurrent instruction execution, e.g. pipeline or look ahead using a slave processor, e.g. coprocessor
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- General Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Advance Control (AREA)
Description
- Die vorliegende Erfindung bezieht sich auf eine Arithmetikoperationsverarbeitungsvorrichtung für die Ausführung von Arithmetikoperationen, wie z. B. numerischen Arithmetikoperationen und dergleichen, und soll insbesondere eine Arithmetikoperationsverarbeitungsvorrichtung des Parallelarithmetikverarbeitungstyps schaffen, die für die Anwendung geeignet ist, die die Arithmetikoperationsprozesse mit hoher Geschwindigkeit ausführen kann, indem ermöglicht wird, daß eine Arithmetikanweisungsausführungssequenz und eine Daten-Eingangs/Ausgangs-Sequenz parallel bearbeitet werden können, und soll einen Kompilierer schaffen, der in einer solchen Vorrichtung verwendet wird.
- Im Fall der Konstruktion einer Arithmetikoperationsverarbeitungsvorrichtung, die unter der Steuerung eines Host- Prozessors operiert, indem der Host-Prozessor mit einer Arithmetikoperationsverarbeitungseinheit wie z. B. einer Gleitkommaarithmetikoperationseinheit (FPU) oder dergleichen verbunden wird, wenn z. B. Skalar-Prozesse wie wahlfreie Arithmetikoperationen oder dergleichen ausgeführt werden, wird die Ausführungszeit der Arithmetikoperationen bisher durch den Gesamtwert der Organisationsoperationen wie z. B. der Übertragung von Operandendaten und der Anweisung einer Arithmetikoperationsanweisung vom Host-Prozessor an die Arithmetikoperationseinheit, die Ausführung der Arithmetikoperationen durch die Arithmetikoperationseinheit, die Übertragung der Ergebnisdaten von der Arithmetikoperationseinheit zum Host-Prozessor und dergleichen bestimmt. Wenn andererseits Vektorarithmetikoperationen ausgeführt werden, treten Organisationsoperationen wie z. B. die Übertragung der Vektordaten mit ausreichend langen Vektorlängen vom Host- Prozessor zu einem Vektorregister in einer Vektorarithmetikoperationseinheit, das Anweisen einer Vektorarithmetikoperationsanweisung vom Host-Prozessor zur Vektorarithmetikoperationseinheit, das Ausführen des Vektorarithmetikoperationsprozesses für alle Vektordaten durch die Vektorarithmetikoperationseinheit, das Übertragen der Ergebnisdaten vom Vektorregister in einen Hauptspeicher im Host-Prozessor und dergleichen auf. Bei den vorangehenden zwei Beispielen werden die Organisationsoperationen im allgemeinen seriell hinzugefügt und die Arithmetikoperationszeit bestimmt. Dies liegt daran, daß die Arithmetikoperationseinheit und der Host- Prozessor in einer 1-zu-1-Zuordnungsbeziehung verbunden sind und der Host-Prozessor keinen Zugriff auf eine Registergruppe in der Arithmetikoperationseinheit hat und die Anweisung der nächsten Anweisung nicht durchführen kann, während von der Arithmetikoperationseinheit die Arithmetikoperationsanweisung ausgeführt wird. Für eine solche Art von Vorrichtung ist in der Literatur "NIKKEI ELECTRONICS", Nr. 399, Juli 1986, S. 172-173, eine herkömmliche Arithmetikoperationsverarbeitungsvorrichtung angegeben, die einen Host-Prozessor und eine Arithmetikoperationseinheit umfaßt.
- Im Programm für eine gewöhnliche Verarbeitungsvorrichtung ist es selbst dann schwierig, die Parallelverarbeitungsfähigkeit zu beschreiben, wenn der Übertragungsprozeß und der Arithmetikoperationsprozeß parallel ausgeführt werden können. Genauer wird eine spezielle Vorrichtung benötigt, um das Quellprogramm, das durch das herkömmliche System beschrieben wird, in das Objektprogramm zu entwickeln, so daß es für die Parallelverarbeitungsfähigkeit der Verarbeitungsvorrichtung geeignet ist.
- Als Beispiel einer herkömmlichen Verarbeitungsvorrichtung mit Parallelverarbeitungsvorrichtung kann ein Vektorprozessor erwähnt werden. Genauer besitzt ein kommerziell verfügbarer Supercomputer eine Vorrichtung, die Arithmetikoperationen, die von den Pipelineprozessen als Vektorarithmetikoperationsanweisungen verarbeitet werden, durch eine Anweisung beschreibt. Eine solche Art von herkömmlicher Vorrichtung ist z. B. ein Kompilierer-System eines Supercomputers, das in "NIKKEI ELECTRONICS"; Nr. 387, 27. Januar 1986, S. 201-206 offenbart ist.
- Bei der Arithmetikoperationsverarbeitungsvorrichtung, die so aufgebaut ist, daß sie unter der Steuerung eines Host- Prozessors arbeitet, indem der Host-Prozessor mit einem herkömmlichen Verfahren mit einer Arithmetikoperationsverarbeitungseinheit verbunden ist, werden die wahlfreien Arithmetikoperationen (Skalarprozesse) oder Kleinvektorarithmetikoperationen, in denen die Echtzeitprozesse angefordert werden, nicht berücksichtigt, so daß eine große Menge an Organisationsoperationen auftritt. Insbesondere in den letzten Jahren, als die Verarbeitungsgeschwindigkeit im Arithmetikoperationsverarbeitungsbereich aufgrund des Fortschritts der VLSI-Technik stark anstieg, ist bei den obenerwähnten wahlfreien Arithmetikoperationen und Kleinvektorarithmetikoperationen die Menge der zusätzlichen Organisationsoperationen, wie z. B. das Senden und Empfangen und dergleichen von benötigten Daten und Anweisungen zwischen dem Host-Prozessor und der Arithmetikverarbeitungseinheit, viel größer geworden als der Ausführungsbereich der Arithmetikoperationen durch die Arithmetikoperationseinheit. Dies führt dazu, daß die Verwirklichung der hohen Verarbeitungsgeschwindigkeit und der Verbesserung der Kosteneffektivität verhindert wird.
- Ein praktisches Beispiel einer solchen herkömmlichen Konstruktion wird im folgenden mit Bezug auf die Zeichnungen beschrieben.
- Fig. 1 zeigt eine herkömmliche Arithmetikoperationsverarbeitungsvorrichtung, die einen Host-Prozessor und eine Arithmetikoperationseinheit umfaßt. Ein Host-Prozessor 2 umfaßt: einen Hauptspeicher 6; eine CPU 5 und eine Schnittstellenschaltung 7, um an die Arithmetikoperationseinheit die erforderlichen Signale anzulegen. Eine Arithmetikoperationseinheit 1 umfaßt: einen Mikrosequenzer 15; einen Mikrocodespeicher 16; eine Steuerleitung- Erzeugungsschaltung 17; eine Ausführungseinheit 18 (wie z. B. eine ALU, einen Multiplizierer oder dergleichen) zum Ausführen von Arithmetikoperationen; eine Registergruppe 22; einen Anweisungsdecodierer 19 zum Analysieren der Anweisungen; einen Buspuffer 26 zum Verbinden des Host-Prozessors mit einem internen Bus l&sub1; und dergleichen. In der Arithmetikoperationseinheit 1 sind als minimale Arithmetikoperationseinheitsfunktionen (fundamentale Arithmetikoperationen) die Addition, Subtraktion, Multiplikation und Division, die die in der Registergruppe 22 gespeicherten Daten betreffen, sowie verschiedene Arten definierter Funktionen verwirklicht. Gemäß diesem System verwendet der Host-Prozessor die Schnittstellenschaltung 7 und den Buspuffer 26 und zeigt die notwendigen Adressen (die der Registernummer entsprechen) der Registergruppe 22 an und überträgt die notwendigen Daten. Als nächstes weist der Host-Prozessor dem Anweisungsdecodierer 19 eine Anweisung zu, wodurch der Mikrosequenzer 15 aktiviert wird und die erforderliche Arithmetikoperation ausführt. Bis die Ausführung der Arithmetikoperation beendet ist, werden der Zugriff der Registergruppe 22 und die Übertragung der nächsten Anweisung durch den Host-Prozessor zurückgestellt. Nach Beendigung der Arithmetikoperation wird durch eine Steuerleitung l&sub2; das Öffnen des Buspuffers 26 erlaubt. Fig. 2 zeigt eine Sequenz zur Ausführung der Arithmetikoperation für diesen Fall. Die Dateneingänge und -ausgänge zwischen dem Hostprozessor 2 und der Arithmetikverarbeitungseinheit 1 sind mit D&sub1; bis D&sub4; bezeichnet. Die Übertragung der Arithmetikoperationsanweisungen vom Host-Prozessor 2 zur Arithmetikoperationseinheit 1 ist mit I&sub1; bis I&sub4; bezeichnet. Die Ausführung der Arithmetikoperationsanweisungen, die in die Arithmetikoperationseinheit übertragen worden sind, ist mit E&sub1; bis E&sub4; bezeichnet. Die Pfeile in vertikaler Richtung stellen den Operationsfluß dar. Wie im Schaubild gezeigt, fließen die Prozesse in serieller Weise, wobei in jeder Einheit viele Leerlaufzeiten auftreten (im Schaubild durch die gestrichelten Linien dargestellt).
- Die EP-A-0 092 429 offenbart eine Arithmetikoperationsverarbeitungsvorrichtung, die eine Arithmetikoperationseinheit zur Ausführung von Arithmetikoperationen und einen Prozessor umfaßt, der eine Steuerfunktion einer Arithmetiksequenz, die in der Arithmetikoperationseinheit ausgeführt wird, und Eingangs/Ausgangs-Operationsfunktionen der für die Arithmetikoperation erforderlichen Daten enthält.
- Andererseits sind im Kompilierersystem des Supercomputers sehr große Vektorlängen in jeder Arithmetikoperation kombiniert und werden von der Hardware ausgeführt, wobei es unmöglich ist, die Arithmetikoperationen zu verarbeiten, deren Parameter eine komplizierte Beziehung, wahlfreie Arithmetikoperationen (Skalararithmetikoperationen) und dergleichen besitzen. Daher kann ein Problem mit kleinen Größen oder das Problem, das die Echtzeitverarbeitung erfordert, nicht effektiv verarbeitet werden, so daß die Anwendung sehr begrenzt ist. Andererseits besitzt ein Allzweckcomputersystem keine Vorrichtung zum Beschreiben der Parallelverarbeitungsfähigkeit und keine Vorrichtung zum Erzeugen der parallelen Objektprogramme.
- Es ist eine Aufgabe der vorliegenden Erfindung, eine Arithmetikoperationsverarbeitungseinheit des Parallelarithmetikoperationstyps zu schaffen, in der die zusätzlichen Organisationsoperationen, die den vorangehenden Arithmetikoperationsprozessen zugeordnet sind, und die gesamte Arithmetikoperationsausführungszeit verringert sowie die hohe Verarbeitungsgeschwindigkeit verwirklicht werden können.
- Es ist eine weitere Aufgabe der Erfindung, eine Arithmetikoperationsverarbeitungsvorrichtung zu schaffen, die ein Kompilierersystem besitzt, bei dem selbst bei Vektorarithmetikoperationsprozessen oder wahlfreien Arithmetikoperationsprozessen (Skalararithmetikoperationsprozesse), deren Parameter eine relativ komplizierte Beziehung aufweisen, der Datenübertragungsprozeß mit einem Speichersystem und der Arithmetikoperationsausführungsprozeß parallel ausgeführt werden können, und die Parallelverarbeitungsfähigkeit der Hardware wirksam zu nutzen, wodurch eine hohe Arithmetikoperationsverarbeitungsgeschwindigkeit erreicht wird.
- Die Erfindung ist durch eine Arithmetikoperationsverarbeitungsvorrichtung nach Anspruch 1 und einen Kompilierer für die Verwendung in der Arithmetikoperationsverarbeitungsvorrichtung nach Anspruch 22 definiert.
- Gemäß einer Arithmetikoperationsverarbeitungsvorrichtung des Parallelarithmetikoperationstyps ist bei der vorliegenden Erfindung zusätzlich zu einem Host-Prozessor als erstem Prozessor ein Makroanweisungssequenz-Prozessor als zweiter Prozessor vorgesehen, die eine Arithmetikoperationseinheit gemeinsam nutzen, wobei der Makroanweisungssequenz-Prozessor eine Funktion besitzt, die wenigstens zur Anweisungs-Anweisungsoperation (der Ausführungssequenzabschnitt des Programms für die Arithmetikoperationseinheit, die herkömmlicherweise im Host-Prozessor unterstützt wird) der Arithmetikoperationsausführungssequenz an die Arithmetikoperationseinheit äquivalent ist, die herkömmlicherweise im Host-Prozessor unterstützt wird, wobei die direkte Anweisungs-Anweisungsoperation für die Arithmetikoperationseinheit vom zweiten Prozessor anstelle des ersten Prozessors durchgeführt wird, wobei die Zugriffsoperation der Arithmetikoperationseinheit auf die Registergruppe, die vom Host-Prozessor zum Zweck des Sendens und Empfangens der erforderlichen Daten durchgeführt wird, die Arithmetikoperationsausführungs-Anweisungsoperation vom Makroanweisungssequenzprozessor und die Hauptarithmetikoperation, die den Prozeß der Arithmetikoperationseinheit ausführt, die durch eine solche Arithmetikoperationsausführungs-Anweisungsoperation verwirklicht wird, parallel ausgeführt werden, wodurch die zusätzlichen Organisationsoperationen verringert werden.
- Die Anweisungs-Anweisungsoperation zwischen dem Host- Prozessor und dem Makroanweisungssequenz-Prozessor wird mittels eines Verfahrens durchgeführt, bei dem die Arithmetikoperationsausführungssequenzanweisung-Anweisungsprogramme des Makroanweisungssequenz-Prozessors für die Arithmetikoperationseinheit zu einer Anweisungseinheit oder einer Einheit mehrerer Anweisungsschritte längs der Ausführungssequenz kombiniert werden, um somit Makroanweisungen zu bilden, wobei eine Serie dieser Makroanweisungen vom Host-Prozessor dem Makroanweisungssequenz- Prozessor durch die einfachere Anweisungs-Anweisungsoperation sequentiell angewiesen werden. Das heißt, es ist eine Vorrichtung vorgesehen zum Übergeben der Anzahl der von der Arithmetikoperationseinheit auszuführenden Anweisungen vom Host-Prozessor als Makroanweisung an den Makroanweisungssequenz-Prozessor, um die Anzahl der von der Arithmetikoperationseinheit ausgeführten Anweisungen zu zählen, nachdem die Makroanweisung von einem Zähler übergeben worden ist, um die Operation des Makroanweisungssequenz-Prozessors anzuhalten, wenn der Zählerwert mit der Anzahl der Anweisungen übereinstimmt, die von der Makroanweisung festgelegt wird, und um die Vorrichtung in den Wartezustand zu versetzen, um auf die Anweisung der nächsten Makroanweisung zu warten.
- Andererseits ist eine Vorrichtung vorgesehen, die berücksichtigt, daß die Makroanweisung ausgeführt wird, wenn diese nicht übereinstimmen, und die die Vorrichtung in den Wartezustand versetzt, um bis zur Beendigung der Ausführung dieser Makroanweisung auf die Anweisung der nächsten Makroanweisung zu warten. Ferner ist eine Vorrichtung vorgesehen zum Freigeben einer Registergruppe in der Arithmetikoperationseinheit, auf die selbst während der Ausführung der Arithmetikoperation vom Host-Prozessor widerspruchsfrei zugegriffen werden soll. Parallel dazu weist der Makroanweisungssequenz-Prozessor die Arithmetikoperationsanweisungen der angezeigten Anzahl mit der Makroanweisung der Arithmetikoperationseinheit an, während der Host-Prozessor die Daten, die für die nächste Makroanweisung erforderlich sind, in die Registergruppe in der Arithmetikoperationseinheit überträgt oder die Ergebnisse der vorherigen Arithmetikoperationen aus der Registergruppe in der Arithmetikoperationseinheit liest.
- Wie oben erklärt worden ist, bleiben selbst für die wahlfreien Arithmetikoperationen oder Kleinvektorarithmetikoperationen nur der Übertragungsprozeß der Operandendaten oder dergleichen und die sehr einfache Anweisungsoperation der Makroanweisung als Arithmetikoperationsverarbeitungs-Organisationsoperationen bezüglich des Host- Prozessors übrig. Diese Organisationsoperationen werden so verarbeitet, daß sie mit den komplizierten Arithmetikoperations-Anweisungsoperationen vom Makroanweisungssequenz-Prozessor für die Arithmetikoperationseinheit überlappen. Im Vergleich zur herkömmlichen Vorrichtung können somit die erheblichen zusätzlichen Organisationsoperationen verringert werden, wobei gleichzeitig die Echtzeitverarbeitungsfähigkeit wenig beeinträchtigt wird. Genauer kann bezüglich der Vektorprozesse eine relativ große Anzahl von Arithmetikoperationsanweisungen kombiniert werden, um dadurch Makroanweisungen zu bilden, wobei die erheblichen Organisationsoperationen hauptsächlich den Übertragungsprozeß der Vektordaten betreffen. Da andererseits bei den Vektorprozessen die Vektordaten aufeinanderfolgend im Hauptspeicher oder in der Registergruppe in der Arithmetikoperationseinheit angeordnet sind, können die Daten mit einer Übertragungsanweisung, DMA oder dergleichen mit hoher Geschwindigkeit bewegt werden, wobei die Organisationsoperationen weiter verringert werden können.
- Im Kompilierer der vorliegenden Erfindung sind enthalten: ein zweiter Prozessor, der Objektprogramme besitzt, um die Arithmetikoperationsprozesse auszuführen, und der eine Hardwarevorrichtung besitzt, die die Gesamtverarbeitungssequenz für die von diesen Objektprogrammen gegebenen Arithmetikoperationsprozesse in mehrere Makrosequenzen aufteilt und einen Satz von Anweisungen definiert, die in jeder Makrosequenz als Makroanweisungsschritt enthalten sind, und die fähig ist, die Makroanweisungen von außen einzeln auszuführen, und die jede Anweisung an die Arithmetikoperationsausführungseinheit entsprechend dem Fluß der Objektprogramme zuführt; und einen ersten Prozessor, der eine Vorrichtung, die die Makroanweisung dem zweiten Prozessor zuführt, und eine Übertragungsverarbeitungsvorrichtung zum Übertragen der erforderlichen Daten zur Arithmetikoperationseinheit besitzt und den Fluß der gesamten Arithmetikoperationsprozesse steuert, wobei sowohl der erste als auch der zweite Prozessor und die Arithmetikoperationsausführungseinheit fähig sind, parallel zu operieren, und wobei eine Kompilierungsvorrichtung hinzugefügt ist, um das Quellprogramm in die zwei Objektprogramme umzusetzen, die in einen Programmabschnitt für die Zuführung der Anweisung und einen Programmabschnitt für die Übertragung der erforderlichen Daten aufgeteilt sind, und diese auf die zwei zugehörigen Prozessoren zu verteilen, derart, daß der erste Prozessor den Übertragungsprozeß der Daten, der für die (n+1)-te und die nachfolgenden Makroanweisungen erforderlich sind, zur Arithmetikoperationsausführungseinheit oder den Übertragungsprozeß der Ergebnisdaten, die von den Makroanweisungen vor der (n-1)-ten Makroanweisung verarbeitet worden sind, ausführen kann, während der zweite Prozessor die n-te Makroanweisung ausführt.
- Bis der derzeit ausgeführte Makroanweisungsschritt beendet ist, kann daher die Information, die im nächsten und den darauffolgenden Makroanweisungsschritten erneut erforderlich ist, im voraus an die Arithmetikoperationseinheit gesendet werden, wobei die Arithmetikoperationsausführungseinheit kontinuierlich in Betrieb bleiben kann. Solange andererseits eine Anweisung für die nächste Makroanweisung vom ersten Prozessor nicht gesendet wird, rückt der zweite Prozessor nicht zu dem Prozeß im nächsten Makroanweisungsschritt vor. Durch die Einrichtung derart, daß die nächste Makroanweisung nicht übertragen wird, bis der erste Prozessor die Übertragung aller Daten zur Arithmetikoperationsausführungseinheit beendet hat, treten in den Arithmetikoperationsprozessen keine Widersprüche auf. Wenn die Ergebnisdaten der Prozesse im n-ten Makroanweisungsschritt für die Prozesse im (n+1)-ten und den darauffolgenden Makroanweisungsschritten erforderlich ist, ist es ausreichend, wenn die Arithmetikoperationsausführungseinheit selbst die Ergebnisdaten in den erforderlichen Speicherbereich in der Arithmetikoperationsausführungseinheit verschiebt. Ferner können die Ergebnisdaten vom ersten Prozessor während der Operation der Arithmetikoperationsausführungseinheit auch in den Hauptspeicher zurückgebracht werden. Ein Großteil der Übertragungsprozesse kann parallel zu den Ausführungsprozessen der Arithmetikoperationen ausgeführt werden. Somit kann die Arithmetikoperationsausführungseinheit ständig im Ausführungszustand gehalten werden, wobei die Arithmetikoperationsprozesse am effektivsten ausgeführt werden können.
- Fig. 1 ist ein Blockschaltbild, das eine Anordnung einer herkömmlichen Arithmetikoperationsverarbeitungsvorrichtung zeigt;
- Fig. 2 ist ein Schaubild, das eine Arithmetikoperationsverarbeitungssequenz in dem in Fig. 1 gezeigten Aufbau zeigt;
- Fig. 3 ist ein Blockschaltbild, das die erste Ausführungsform der vorliegenden Erfindung zeigt;
- Fig. 4 ist ein Schaubild, das eine Arithmetikoperationsverarbeitungssequenz gemäß dem Aufbau der Fig. 3 zeigt;
- Fig. 5 ist ein Blockschaltbild, das die zweite Ausführungsform der Erfindung zeigt;
- Fig. 6 ist ein Blockschaltbild, das die dritte Ausführungsform der Erfindung zeigt;
- Fig. 7 ist ein Blockschaltbild, das die vierte Ausführungsform der Erfindung zeigt;
- Fig. 8 ist ein Blockschaltbild, das ein Beispiel einer praktischen Anordnung eines zweiten Prozessors zeigt;
- Fig. 9 ist ein Schaubild, das eine Makroanweisungsschritt-Erzeugungsvorrichtung und ein Ausführungssystem zeigt;
- Fig. 10 ist ein Schaubild, das einen Aufbau eines Kompilierers des Parallelverarbeitungstyps gemäß der Erfindung zeigt;
- Fig. 11 ist ein Schaubild, das Parallelprozesse gemäß dem Aufbau der Fig. 10 zeigt;
- Fig. 12 ist ein erstes beispielhaftes Schaubild, das die Entwicklung von Vektorprozessen und die Verteilung der Objektprogramme durch ein Kompilierersystem zeigt; und
- Fig. 13 ist ein zweites beispielhaftes Schaubild, das die Entwicklung von Vektorprozessen durch das Kompilierersystem zeigt.
- Fig. 3 zeigt ein Blockschaltbild einer Arithmetikoperationsverarbeitungsvorrichtung gemäß der vorliegenden Erfindung. Die Arithmetikoperationsverarbeitungsvorrichtung umfaßt: die Arithmetikoperationseinheit 1; den Host- Prozessor 2 (den ersten Prozessor), in dem Arithmetikoperationsanweisungssequenz-Programme gehalten werden und eine gewünschte Arithmetikoperationsfunktion des Benutzers mittels dieser Programme verwirklicht wird; und einen Makroanweisungssequenz-Prozessor 3 (einen zweiten Prozessor), um der Arithmetikoperationseinheit die Arithmetikoperations-Ausführungssequenzanweisungen anzuweisen.
- Dabei umfaßt der Host-Prozessor 2: den Hauptspeicher 6; die CPU 5 und die Schnittstellenschaltung 7, um die für die Arithmetikoperationseinheit erforderlichen Signale zu erzeugen. Es ist nicht erforderlich, die Schnittstellenschaltung 7 speziell auf der Seite des Host-Prozessors anzuordnen. Die Schnittstellenschaltung 7 kann auch zwischen dem Host-Prozessor 2 und der Arithmetikoperationseinheit 1 oder auf der Seite der Arithmetikoperationseinheit 1 angeordnet sein. Die Arithmetikoperationseinheit 1 umfaßt: den Mikrosequenzer 15, den Mikrocode- Speicher 16; die Steuerleitung-Erzeugungsschaltung 17, die Ausführungseinheit 18 (ALU, Multiplizierer oder dergleichen) zum Ausführen von Arithmetikoperationen; die Registergruppe 22, den Anweisungsdecodierer 19 zum Analysieren der Anweisungen; einen Multiplexierer 21 zum wahlweisen Verbinden des internen Busses l&sub1; und einer Busleitung l&sub4;, die von der Schnittstellenschaltung 7 im Host-Prozessor 2 ausgeht, mit der Registergruppe 22; sowie einen Arbiter 20 zum Steuern des Multiplexierers 21.
- Zusätzlich zum Host-Prozessor 2 ist der Makroanweisungssequenz-Prozessor 3 vorgesehen, der der Arithmetikoperationseinheit 1 eine Arithmetikoperations-Ausführungssequenzanweisung anweisen kann. Der Prozessor 3 besitzt eine CPU 8, einen lokalen Speicher 9 sowie eine Schnittstellenschaltung 10 zum Anlegen der erforderlichen Signale an die Arithmetikoperationseinheit. Der Prozessor 3 besitzt einen Verbindungspfad zum Anweisungsdecodierer 19 in der Arithmetikoperationseinheit 1 und kann eine Anweisung als Arithmetikoperationsanweisung statt dem Host- Prozessor der Arithmetikoperationseinheit anweisen.
- Ferner besitzen die Schnittstellenschaltungen 7 und 10 Funktionen zum Anweisen der Makroanweisungen vom Host- Prozessor 2 zum Makroanweisungssequenz-Prozessor 3 und zum Erzeugen einer Datenleitung l&sub3;, um die Synchronisation der Verarbeitungssequenz zu erreichen. Gemäß diesem System können wenigstens die Daten-Eingangs/Ausgangs- Operationen vom Host-Prozessor 2 und die Anweisungs- Anweisungsoperation vom Sequenzprozessor 3 parallel ausgeführt werden. Die Arithmetikoperationseinheit 1 ist neuerdings mit dem Multiplexierer 21 versehen, um wahlweise entweder den internen Bus l&sub1;, der einen Datenbus enthält, auf der Seite der Ausführungseinheit 18 und einen Adreßbus l&sub1;&sub3; von der Steuerleitung-Erzeugungsschaltung 17 oder die Busleitung l&sub4; auf der Seite des Host- Prozessors 2 mit der Registergruppe 22 zu verbinden. Die Schaltsteuerung des Multiplexierers 21 wird durchgeführt, indem in Abhängigkeit von einer geeigneten Priorität entweder eine Zugriffsanforderung l&sub5; auf der Mikrosequenzerseite oder eine Zugriffsanforderung l&sub6; von der Host- Prozessor-Seite ausgewählt wird und eine Zugriffserlaubnisleitung (l'&sub5; auf der Mikrosequenzerseite oder l'&sub6; auf der Host-Prozessor-Seite) aktiviert wird, die der ausgewählten Zugriffsanforderung zugeordnet ist. Folglich kann selbst während der Operation der Ausführungseinheit 18 ein Großteil der Zeit vom Host-Prozessor 2 genutzt werden, um auf die Registergruppe 22 zuzugreifen, wenn angenommen wird, daß die Ausführungseinheit nicht die Registergruppe 22 verwendet. Wie mit Bezug auf Fig. 4 genauer erläutert wird, wird eine Anweisung 1 als eine Arithmetikoperationsverarbeitungsanweisung eines jeden Schritts in der Arithmetikoperationseinheit 1 mittels Maschinensprache als Serie von Makroanweisungsschritten In, die durch Aufteilen der Ausführungssequenz auf einer geeigneten Ausführungseinheitsbasis erhalten werden, in den Hauptspeicher 6 oder den lokalen Speicher 9 geschrieben. Eine Makroanweisung MIn, die die Ausführung jedes Makroanweisungsschritts In im Makroanweisungssequenz- Prozessor 3 anzeigt, wird ebenfalls im voraus mittels Maschinensprache in den Hauptspeicher 6 geschrieben und mit einem geeigneten Systemtakt vom Host-Prozessor 2 an den Sequenz-Prozessor 3 ausgegeben. Wenn die Makroanweisungsschritte In in den Hauptspeicher 6 geschrieben worden sind, werden sie zu einem geeigneten Zeitpunkt in den lokalen Speicher 9 im Sequenz-Prozessor 3 übertragen.
- Fig. 4 zeigt einen Zustand des Arithmetikoperationsprozesses in der obenbeschriebenen Ausführungsform und entspricht der Fig. 2, die das herkömmliche Beispiel zeigt. Nachdem der Host-Prozessor 2 die Daten D&sub1; und D&sub2; in die Registergruppe 22 in der Arithmetikoperationseinheit 1 geladen hat, weist der Host-Prozessor 2 dem Sequenz-Prozessor 3 zuerst eine erste Makroanweisung MI&sub1; an. Da die Makroanweisung unter Verwendung eines einfachen Codes angewiesen wird, kann die Ausführungszeit verringert werden. Die Makroanweisung MI&sub1; stellt einen Satz MIO&sub1; von zwei wirklichen Anweisungen I&sub1; und I&sub2; in der Arithmetikoperationseinheit 1 dar. Der Sequenz-Prozessor 3 sendet die Anweisungen I&sub1; und I&sub2; entsprechend dieser Reihenfolge zur Arithmetikoperationseinheit 1 und wird in den Wartemodus zurückversetzt, um auf die nächsten Makroanweisungen zu warten. Andererseits führt die Arithmetikoperationseinheit 1 die Maßnahmen E&sub1; und E&sub2; aus, die den Anweisungen I&sub1; und I&sub2; zugeordnet sind. Während dieser Ausführung lädt der Host-Prozessor 2 parallel die Daten D&sub3; und D&sub4;, die als nächstes benötigt werden, in die Registergruppe 22. Auf ähnliche Weise wie oben beschrieben werden die zugehörigen Prozesse ausgeführt. Es ist klar, daß im Vergleich zu dem in Fig. 2 gezeigten herkömmlichen Beispiel die Leerlaufzeit in jeder Einheit verringert wird und im Vergleich zum herkömmlichen Beispiel beinahe die doppelte Effektivität erreicht wird.
- Die Fig. 5, 6 und 7 zeigen Abwandlungen der in Fig. 3 gezeigten Ausführungsform. In jeder dieser Abwandlungen nutzen der Host-Prozessor 2 und der Makroanweisungssequenz-Prozessor 3 die Arithmetikoperationseinheit 1 über eine Multiplexierereinheit 4 gemeinsam.
- Im Beispiel des Aufbaus der Fig. 5 besitzt die Multiplexierereinheit 4 einen Multiplexierer 11 zum Multiplexieren der Anweisungsübertragungs-Decodiererleitung sowie einen Arbiter 12 zum Arbitrieren des Multiplexierers 11. Bei diesem Aufbau kann der Host-Prozessor 2 Daten zwischen dem Hauptspeicher 6 und der Registergruppe 22 für die Arithmetikoperationseinheit 1 übertragen und Anweisungen über den Multiplexierer 11 direkt zum Anweisungsdecodierer 19 übertragen. Der Makroanweisungssequenz- Prozessor 3 führt nur die Übertragung der Anweisungen durch, derart, daß er den Anweisungsdecodierer 19 gemeinsam mit dem Host-Prozessor 2 nutzt.
- Andererseits sind beim Aufbau der in Fig. 3 gezeigten Ausführungsform die Funktionen des Host-Prozessors und des Makroanweisungssequenz-Prozessors vollständig getrennt, wobei der Host-Prozessor 2 die Funktion für die Dateneingabe und -ausgabe übernimmt und der Sequenz- Prozessor 3 die Funktion für die Übertragung von Anweisungen zur Arithmetikoperationseinheit 1 übernimmt.
- Bei der in Fig. 6 gezeigten Abwandlung besitzt die Multiplexierereinheit 4 einen Multiplexierer 13 zum Multiplexieren der Daten-Eingangs/Ausgangs-Leitungen sowie einen Arbiter 14 zum Arbitrieren des Multiplexierers 13. Der Host-Prozessor 2 und der Sequenz-Prozessor 3 können die Datenübertragung für die Registergruppe 2 über den Multiplexierer 13 durchführen, wobei ferner nur vom Sequenz- Prozessor 3 Anweisungen zum Anweisungsdecodierer 19 gesendet werden.
- Bei der in Fig. 7 gezeigten Abwandlung besitzt die Multiplexierereinheit 4 zwei Multiplexierer 11 und 13 zum Multiplexieren einer Anweisungsübertragungs-Decodierungsleitung 27 bzw. einer Datenübertragungsleitung 27'. Gemäß dem Blockaufbau der Fig. 7 können sowohl der Host-Prozessor 2 als auch der Makroanweisungssequenz-Prozessor 3 Anweisungen zum Anweisungsdecodierer 19 übertragen bzw. die Datenübertragung zur Registergruppe 22 durchführen.
- Fig. 8 zeigt ein Blockschaltbild einer Makroanweisungs- Anweisungsschaltung vom Host-Prozessor 2 in der Schnittstellenschaltung 10 zum Makroanweisungssequenz-Prozessor 3 im Blockaufbau der in Fig. 3 gezeigten Ausführungsform und der Schaltung, die erforderlich ist, um die Synchronisierung der Sequenz zwischen den zwei Prozessoren zu erreichen. Die Schnittstellenschaltung 10 umfaßt: eine Signalsteuerschaltung 23, um eine Signalleitung l&sub1;&sub0;, die Anweisungsdaten zum Multiplexierer 11 sendet, zu erzeugen und um aus einem Signal der CPU 8 eine Zugriffsanforderungs- und -erlaubnisleitung l&sub1;&sub2; zum Anweisungsdecodierer 19 in der Arithmetikoperationseinheit 11 für den Arbiter 12 sowie eine Signalleitung l&sub9; zum Senden eines Impulses, der bei jeder Übertragung der Anweisung erzeugt wird, zu einem Takteingangsanschluß einer Zählerschaltung 14 zu erzeugen; die Zählerschaltung 24 zum Zählen der Anzahl der ausgeführten Arithmetikoperationsanweisungen; sowie eine Zwischenspeicherschaltung 25 zum Zwischenspeichern der Anzahl der ausgeführten Anweisungen, die vom Host- Prozessor 2 ausgegeben wird.
- Fig. 9 zeigt eine Erstellungsvorrichtung und ein Ausführungssystem für Makroanweisungen, die vom Host-Prozessor 2 zum Makroanweisungssequenz-Prozessor 3 gesendet werden. Der Host-Prozessor 2 zeigt die Anzahl der Anweisungen an, die als nächstes vom Sequenz-Prozessor 3 und der Arithmetikoperationseinheit 1 auszuführen sind, durch eine einfache Anweisung wie z. B. eine OUT-Anweisung oder dergleichen an, deren Ausführungszeit kurz ist. Die angezeigte Anzahl von Anweisungen wird in der Zwischenspeicherschaltung 25 in Fig. 8 gespeichert, wobei diese Daten direkt als Anweisung der Makroanweisung verwendet werden. Wenn die Ausführung der vorangehenden Makroanweisung bereits beendet worden ist, werden die zwischengespeicherten Daten in die Zählerschaltung 24 geladen. Jedesmal, wenn die Anweisung gesendet wird, wird der Zählerwert durch ein Impulssignal über eine Signalleitung l&sub9; um Eins verringert. Wenn der Zählerwert gleich null wird, wird das Null-Zähler-Signal auf einer Signalleitung l&sub7; gesendet. Wenn die Signalleitung l&sub7; durch das Null- Zähler-Signal aktiviert wird, erkennt der Host-Prozessor 2, daß die nächste Makroanweisung angezeigt werden kann, und sendet die Anzahl der als nächstes auszuführenden Anweisungen als Makroanweisung zur Zwischenspeicherschaltung 25. Wie in Fig. 9 gezeigt, ist die Makroanweisung 1 (MI&sub1;) ein Befehl zur Ausführung von drei Anweisungen und wird ähnlich wie OUT&sub3; beschrieben (die Makroanweisung für den Fall der Ausführung von n Anweisungen wird durch OUTn beschrieben) . Wenn diese Makroanweisung zum Sequenz- Prozessor 3 gesendet wird, wird dann, wenn die Ausführung der vorangehenden Makroanweisung noch nicht abgeschlossen ist, der Host-Prozessor in den Wartezustand versetzt, bis die derzeit ausgeführte Makroanweisung beendet ist, wie im Schaubild mit MI&sub3; gezeigt ist. Auf ähnliche Weise wird dann, wenn die Makroanweisung vom Host-Prozessor 2 zu spät gesendet wird, der Sequenz-Prozessor 3 in den Wartezustand versetzt, bis die nächste Makroanweisung angezeigt wird (in diesem Fall steht im Schaubild "Warten").
- Die Arithmetikoperationseinheit 1 führt nacheinander (E&sub1;, E&sub2;, ...) die angezeigten Anweisungen (I&sub1;, I&sub2;, ...) aus.
- Gemäß diesem System können die Programme auf der Seite des Sequenz-Prozessors 3 auf herkömmliche Weise durch die Arithmetikoperationsausführungssequenz beschrieben und frei aufgeteilt werden, um somit Makroanweisungen zu bilden. Daher können die Objektprogramme, die vom Sequenz-Prozessor 3 ausgeführt werden, auch direkt vom Host-Prozessor 2 ausgeführt werden. Andererseits kann die Makroanweisung durch eine einfache Anweisung wie z. B. eine OUT-Anweisung oder dergleichen angezeigt und durch eine Maschinenanweisung verwirklicht werden, wenn eine Adressenausgangsleitung verwendet wird. Zusätzlich zu der Wirkung, die durch Kombinieren der Arithmetikoperationen erhalten wird, können die Organisationsoperationen in Verbindung mit der Anweisung von Anweisungen minimiert werden.
- Die Daten-Eingangs/Ausgangs-Operationen zwischen dem Host-Prozessor und der Arithmetikoperationseinheit, die für Anweisungsprozesse notwendig sind, die Arithmetikoperationsanweisungs-Anweisungsoperation, die im Makroanweisungssequenz-Prozessor ausgeführt wird, sowie der Arithmetikoperationsausführungsprozeß, der in der Arithmetikoperationseinheit ausgeführt wird, können parallel ausgeführt werden. Somit können die zusätzlichen Organisationsoperationen, die den Arithmetikoperationsprozessen zugeordnet sind, verringert werden, wobei die Gesamtarithmetikoperationsverarbeitungs zeit verringert und eine hohe Verarbeitungsgeschwindigkeit erreicht werden können.
- Im folgenden wird mit Bezug auf die Fig. 10 bis 13 eine Ausführungsform einer Arithmetikoperationsverarbeitungsvorrichtung mit einem Assembler-System gemäß der Erfindung beschrieben.
- Die Hardware der Arithmetikoperationsverarbeitungsvorrichtung gemäß der Erfindung umfaßt: die Arithmetikoperationsverarbeitungseinheit 1 zum Ausführen der fundamentalen Arithemtikoperationsprozesse in Abhängigkeit von der Anweisung der Arithmetikoperationsanweisung von außerhalb; den Makroanweisungssequenz-Prozessor 3 zum Steuern der Verarbeitungssequenz der fundamentalen Arithmetikoperationsprozesse und zum Anweisen der Anweisungen als fundamentale Arithmetikoperationsverarbeitungsanweisungen an die Arithmetikoperationsverarbeitungseinheit 1 in Abhängigkeit von der Verarbeitungssequenz; und den Prozessor 2 zum Ausführen des Prozesses zur Übertragung der erforderlichen Daten zwischen der Arithmetikoperationsverarbeitungseinheit 1 und dem Hauptspeicher 6 sowie des Anweisungsprozesses der Makroanweisung für den Sequenz- Prozessor 3.
- Im Anweisungsprozeß der Anweisung vom Sequenz-Prozessor 3 zur Arithmetikoperationsverarbeitungseinheit 1 wird die Anweisung über eine Datenleitung l&sub2;&sub1; zum Anweisungsdecodierer 19 in der Arithmetikoperationsverarbeitungseinheit 1 gesendet, ein Beschäftigt-Signal aktiviert, das anzeigt, daß die Arithmetikoperation ausgeführt wird, und dieses aktive Beschäftigt-Signal über eine Leitung l&sub2;&sub2; zum Sequenz-Prozessor 3 zurückgegeben. Bis das Beschäftigt- Signal zurückgesetzt wird, wird die Operation zum Senden der nächsten Anweisung zur Arithmetikoperationsverarbeitungseinheit 1 vom Sequenz-Prozessor 3 zwangsweise in den Wartemodus versetzt. Der Host-Prozessor 2 besitzt die Makroanweisungs-Sendefunktion, um den Sequenz-Prozessor 3 die Ausführung des Makroanweisungsschritts anzuzeigen, der durch Aufteilen der Ausführungssequenz einer oder mehrerer Anweisungen erhalten wird.
- Fig. 11 zeigt ein Erzeugungssystem für Makroanweisungen. Die Anweisungen, die vom Sequenz-Prozessor 3 zur Arithmetikoperationsverarbeitungseinheit 1 gesendet werden, sind durch Ik dargestellt. Makroanweisungen, die vom Host- Prozessor 2 zum Sequenz-Prozessor 3 übertragen werden, sind durch MIk dargestellt. Die Makroanweisung MIk wird durch eine einfache Übertragungsanweisung wie z. B. eine OUT-Anweisung für einen E/A-Zugriff ausgedrückt, deren Ausführungszeit kurz ist. OUTk bedeutet, daß der Sequenz- Prozessor 3 angewiesen wird, die Anweisungen von k Schritten auszuführen. Daher können willkürlich k aufeinanderfolgende Anweisungen frei kombiniert werden, wobei die Makroanweisung MIk verwirklicht werden kann. Wenn OUTk ausgeführt wird, wird die Anzahl k der ausgeführten Schritte in einem Zähler in einer Schnittstellenschaltung 10 zum Senden und Empfangen der Makroanweisungen, die als Schnittstelle dient, über eine Signalleitung l&sub2;&sub3; zwischengespeichert. Anschließend wird die Operation des Sequenz- Prozessors 3 eingeleitet. Der Zählerwert des Zählers wird bei jeder Übertragung der Anweisung Ik zur Arithmetikoperationsverarbeitungseinheit 1 um Eins verringert. Wenn der Zählerwert gleich null wird, wird die Übertragungsoperation der Anweisung durch den Sequenz-Prozessor 3 zwangsweise in den Wartemodus versetzt, bis vom Host- Prozessor 2 die nächste Makroanweisung gesendet wird. Wenn andererseits eine Beschäftigt-Leitung l&sub2;&sub4; aktiviert wird, während der Prozessor 3 den Makroanweisungsprozeß ausführt, und wenn der Host-Prozessor 2 versucht, die nächste Makroanweisung zu senden, während die Beschäftigt-Leitung l&sub2;&sub4; aktiv ist, wird die Sendeoperation der Makroanweisung vom Host-Prozessor 2 zwangsweise in den Wartemodus versetzt. Wie in Fig. 11 gezeigt, werden die Sendeprozesse der Anweisungen Ik zur Arithmetikoperationsverarbeitungseinheit 1 vom Sequenz-Prozessor 3, die Sendeprozesse der Makroanweisungen MIk vom Host-Prozessor 2 zum Sequenz-Prozessor 3 sowie die Arithmetikoperationsausführungsprozesse Ek von der Arithmetikoperationsverarbeitungseinheit 1 parallel ausgeführt. Während die Makroanweisungen und die Anweisungen vom Sequenz-Prozessor 3 und von der Arithmetikoperationsverarbeitungseinheit 1 verarbeitet werden, führt der Host-Prozessor 2 parallel dazu die Datenübertragungsprozesse aus, derart, daß die Daten, die in den Prozessen der nächsten und der darauffolgenden Makroanweisungen benötigt werden, aus dem Hauptspeicher 6 gelesen und in die Registergruppe 22 in der Arithmetikoperationsverarbeitungseinheit 1 geladen werden oder die Ergebnisdaten, die vorangehend verarbeitet worden sind, aus der Registergruppe 22 ausgelesen und im Hauptspeicher 6 gespeichert werden. DTk in Fig. 11 bezeichnet einen Datenübertragungsprozeß. Die zur Registergruppe 22 übertragenen Daten werden in der Arithmetikoperations-Anweisungsausführungseinheit 18 verwendet, wobei das Ergebnis zu einem geeigneten Zeitpunkt ebenfalls in die Registergruppe 22 zurückgebracht wird. Der Host-Prozessor 2 führt den Datenaustausch mit der Registergruppe 22 durch, so daß in der Datenübertragungssequenz kein Widerspruch auftritt.
- Im folgenden wird mit Bezug auf Fig. 10 der vom Kompilierersystem zu verarbeitende Inhalt beschrieben.
- Der Benutzer beschreibt den Verarbeitungsinhalt unter Verwendung eines Editier-Systems 34 und erstellt Quellprogramme 35. In dieser Ausführungsform wird eine numerische Arithmetikoperationsverarbeitungsvorrichtung erstellt. Der Arithmetikoperationsverarbeitungsinhalt, der durch die Quellprogramme 35 beschrieben wird, wird vom Kompilierer-System interpretiert und in die Maschinensprache für die numerische Arithmetikoperation übersetzt. Die Quellprogramme 35 beziehen sich auf ein Beispiel einer Serie von Skalar-Arithmetikoperationsprozessen. Im Schritt n&sub0; sind die Schritte m bis m+8 herausgegriffen.
- RAk stellt die Registergruppe 22 in der Arithmetikoperationsverarbeitungseinheit 1 dar, wobei die Registernummer auf k gesetzt ist. Ak bezeichnet die Daten im Hauptspeicher 6, wobei die Datennummer auf k gesetzt ist. Die Beschreibung RA&sub0; = A&sub1; + A&sub2; bezeichnet den Prozeß zum Addieren der Daten A&sub1; und A&sub2; im Hauptspeicher 6 und zum Übertragen der addierten Daten zum Register RA&sub0; in der Arithmetikoperationsverarbeitungseinheit 1. Andererseits bezeichnet RA&sub3; = RA&sub0; + A&sub4; den Prozeß zum Addieren des Inhalts des Registers RA&sub0; und der Speicherdaten A&sub4; und zum Übertragen der addierten Daten zum Register RA&sub3;. Grundsätzlich kann die Arithmetikoperationsverarbeitungseinheit 1 nur Arithmetikoperationen mit den in der Registergruppe 22 gespeicherten Daten durchführen. Um die Prozesse für RA&sub3; = A&sub1; + A&sub2; auszuführen, erzeugt der Kompilierer daher die Maschinensprache so, daß zuerst die Daten A&sub1; und A&sub2; im Hauptspeicher 6 in die Register RA&sub1; und RA&sub2; mit den entsprechenden Registernummern 1 und 2 in der Registergruppe 22 übertragen werden, woraufhin die Addition von RA&sub1; + RA&sub2; ausgeführt wird und das Ergebnis in das Register RA&sub0; übertragen wird. Das Bezugszeichen 30 bezeichnet die Operationen für den Fall, daß die Quellprogramme 35 als ein Objekt in die Maschinensprache übersetzt werden (bezeichnet eine Übertragungsrichtung der Daten) . In einem Verarbeitungsfluß 31, der jedem Prozeß zugeordnet ist, bezeichnet DTk die Datenübertragungsprozesse, während Ik die fundamentalen Arithmetikoperationsanweisungsprozesse darstellt. Anschließend trennt der Kompilierer die Arithmetikoperationsprozesse und die Datenübertragungsprozesse zwischen dem Hauptspeicher 6 und der Registergruppe 22 aus dem Fluß 31 der Prozesse, die herkömmlicherweise seriell ausgeführt werden. Der Kompilierer kombiniert einige der Prozesse und erzeugt eine Makroanweisung MIj und einen Satz DTj der zugehörigen Übertragungsprozesse, die die Datenübertragung enthalten, die im Prozeß der Makroanweisung MIj erforderlich ist. DTn umfaßt z. B. DTm, DTm+1 und DTm+2, während MIn aus Im, Im+1 und Im+2 besteht. Die Objektprogramme, die durch Anordnen der Prozesse gemäß der Reihenfolge von DTj und MIj erzeugt werden, werden zum Host- Prozessor 2 übertragen. Ein Verarbeitungsfluß für diesen Fall ist mit 33 bezeichnet. Ein Paar DTj und MIj wird als Makroprozeß j bezeichnet. In dieser Ausführungsform werden die Schritte m bis m+8 der Quellprogramme 35 zu drei Makroprozessen n bis n+2 kombiniert. Andererseits werden die Objektprogramme erzeugt, indem nur die fundamentalen Arithmetikoperationsanweisungsprozesse Im bis Im&sbplus;&sub3; extrahiert werden und zum Sequenz-Prozessor 3 übertragen werden. Ein Verarbeitungsfluß für diesen Fall ist mit 32 bezeichnet. Wenn die Prozesse von der Hardware ausgeführt werden, wird ein Satz von fundamentalen Arithmetikoperationsanweisungen durch einen Befehl von der Makroanweisung MIj vom Host-Prozessor 2 ausgeführt. Das heißt, im Fall dieser Ausführungsform werden die Prozesse Im, Im+1 und Im+2 entsprechend der Makroanweisung MIn ausgeführt; während die Prozesse Im+3, Im+4 und Im+5 entsprechend MIn+1 und die Prozesse Im+6, Im+7 und Im+8 entsprechend MIn+2 ausgeführt werden. Für die Datenübertragungsprozesse wird zuerst DTn ausgeführt und vom Host- Prozessor 2 anschließend dem Sequenz-Prozessor 3 MIn angezeigt, wobei während der Ausführung dieses Prozesses durch den Sequenz-Prozessor 3 der nächste Datenübertragungsprozeß DTn+1 ausgeführt wird. In ähnlicher Weise wird der Prozeß DTn+2 parallel zum Prozeß MIn+1 ausgeführt, während der Prozeß DTn+3 parallel zum Prozeß MIn+2 ausgeführt wird. Für den Prozeß zum Zurückschreiben der Daten aus der Registergruppe 22 in den Hauptspeicher 6 werden die Daten übertragen, die von der vorletzten Makroanweisung verarbeitet wurden, d. h. die Daten, die im Fall des Prozesse DTn+2 von MIn verarbeitet wurden. Somit können die Daten, die vollständig verarbeitet worden sind, in den Hauptspeicher 6 zurückgebracht werden.
- Grundsätzlich kann der Makroprozeß j beliebig aufgebaut sein. Bei diesem Kompilierersystem wird die Makroanweisung j so erzeugt, daß ihre Ausführungszeit ungefähr derjenigen des Ausführungsprozesses der Makroanweisung MIj entspricht, die vom Sequenz-Prozessor 3 ausgeführt wird, wobei die Ausführungszeit der Prozesse aus einer Kombination des Anweisungsprozesses von MIj vom Host- Prozessor 2 und den Datenprozessen DTj+1 besteht. Andererseits wird in den Skalar-Arithmetikoperationsprozessen die Größe der Makroprozesse so weit wie möglich verringert, so lange die vorangehenden Bedingungen erfüllt sind. Dadurch kann die Echtzeit-Verarbeitungsleistung verbessert werden.
- Im folgenden wird mit Bezug auf die Fig. 12 und 13 ein Kompilierersystem für den Fall der Vektor-Arithmetikoperationsprozesse beschrieben.
- In Fig. 12 bezeichnet das Bezugszeichen 36 ein Beispiel von Quellprogrammen für Vektorprozesse. A(I) und B(I) bezeichnen die I-ten Daten der Vektordaten (Matrixvariablen) im Hauptspeicher 6. In Abhängigkeit von diesen werden auch die Vektordaten AR(I) und BR(I) in der Registergruppe 22 gesetzt. Die Vektorlänge ist in dieser Ausführungsform auf 100 eingestellt (I läuft von 1 bis 100). Für die Arithmetikoperationen in der Schleife wird zuerst das Ergebnis der Addition von A(I) und B(I) nach AR&sub1; übertragen. Anschließend werden A(I) und B(I) multipliziert und das Ergebnis nach AR&sub2; übertragen. Dann wird AR&sub1; durch AR&sub2; dividiert und das Ergebnis nach A(I) zurückgebracht. Schließlich wird AR&sub2; durch AR&sub1; dividiert und das Ergebnis nach B(I) übertragen. Die vorangehenden Prozesse werden in der DO-Schleife für I = 1 bis I = 100 hundertmal wiederholt. Bei diesem Kompilierersystem, das ein Kompilierersystem für Vektorprozesse ist, in welchen Wert auf die Echtzeit-Prozesse gelegt wird, werden die Prozesse in der Schleife zuerst in zwei Prozesse entwikkelt, wobei die DO-Schleife ein Objektprogramm erzeugt, um den Wert von I jedesmal z. B. um zwei zu erhöhen. Wenn dieses Objektprogramm durch das äquivalente Quellprogramm beschrieben wird, entspricht es demjenigen, das mit 37 bezeichnet ist. Die ersteren Prozesse in der Schleife der Quellprogramme 37 werden auf einen Makroprozeß i gesetzt, während die letzteren Prozesse auf einen Makroprozeß i+1 gesetzt werden. Die Makroprozesse i und i+1 können durch die mit 38 bezeichneten Operationen der Maschinenspracheebene ausgedrückt werden. Im Datenübertragungsprozeß DTi werden die Prozesse ausgeführt, um jeweils die Ergebnisdaten AR(I-2) und BR(I-2) in der Registergruppe, die von der vorletzten Makroanweisung Ii-2 verarbeitet wurden, zu den Vektordaten MA(I-2) und MB(I-2) im Hauptspeicher 6 zu übertragen, und die Übertragungsprozesse ausgeführt, um jeweils die Vektordaten MA(I) und MB(I) im Hauptspeicher 6, die in den Prozessen von der Makroanweisung MIi benötigt werden, zu den entsprechenden Vektordaten AR(I) und BR(I) in der Registergruppe 22 zu übertragen. Die Makroanweisung MIi zeigt gleichzeitig die vier fundamentalen Arithmetikoperationsprozesse (Im, Im+1, Im+2, Im+3) an, die i = 1 in der Schleife in der Ausführungsform der Fig. 10 entsprechen. Dasselbe gilt auch für DTi+1 und MIi+1, wobei diese Prozesse in den Operationen 38 genauer beschrieben sind. Dann erzeugt und überträgt das Kompilierersystem in ähnlicher Weise wie im Fall der in Fig. 10 gezeigten Skalarprozesse Objektprogramme 39 auf der Grundlage der Arithmetikoperationsverarbeitungssequenz gemäß der Reihenfolge des Datenübertragungsprozesses DTi zum Host-Prozessor 2 und gemäß der Makroanweisung MIi zum Makroanweisungsseguenz-Prozessor 3 und anschließend gemäß der Reihenfolge von DTi+1 und MIi+1. Die Objektprogramme 40, die lediglich aus den Ausführungsanweisungsprozessen Ik der Anweisungen für die Arithmetikoperationsverarbeitungseinheit 1 bestehen, werden durch das Verfahren erzeugt und auf der Grundlage der Arithmetikoperationsverarbeitungssequenz zum Sequenz-Prozessor 3 übertragen, wobei die Makrosequenz i, die aus den Anwei sungen Im, Im+1, Im+2 und Im+3 als fundamentale Arithmetikoperationsanweisungen besteht, entsprechend der Makroanweisung MIi als Makroanweisungsausführungsprozeß kombiniert wird, die Makrosequenz i+1, die aus den fundamentalen Arithmetikoperationsanweisungen Im+4, Im+5, Im+6 und Im+7 besteht, entsprechend der Makroanweisung MIe+1 kombiniert wird usw. Ähnlich wie im Fall der Skalar- Arithmetikoperationsprozesse werden der Datenübertragungsprozeß DTi und der Anweisungsprozeß der Makroanweisung MIi durch den Host-Prozessor 2, der Ausführungs- Anweisungsprozeß (Makrosequenz i-1) der Makroanweisung MIi-1 vom Makroanweisungssequenz-Prozessor 3 und die Arithmetikoperationsausführungsprozesse von der Arithmetikoperationsanweisungs-Ausführungseinheit 18, die durch die Ausführungs-Anweisungsprozesse verwirklicht werden, parallel ausgeführt. Die Ausführung in der Hardware findet wie oben beschrieben statt. In dieser Ausführungsform werden zwei Schleifen entwickelt. Wenn jedoch eine Menge von Arithmetikoperationen in der Schleife groß ist, werden die Schleifen nicht entwickelt, wobei es jedoch ausreichend ist, lediglich die Prozesse in einer Schleife in mehrere Bereiche aufzuteilen und die Makroprozesse in ähnlicher Weise wie im Fall der Skalarprozesse zu definieren.
- Bei den Vektorarithmetikoperationsprozessen gemäß diesem System ist die Arithmetikoperationsverarbeitungseinheit in der Schleife als ein Makroanweisungsprozeß definiert, wobei die Datenübertragungsprozesse mit dem Hauptspeicher 6 letztlich ebenfalls auf einer Arithmetikoperationsverarbeitungseinheitsbasis in der Schleife ausgeführt werden. Daher ist dieses System für die Vektorarithmetikoperationsprozesse geeignet, die die Echtzeit-Prozesse benötigen. Da andererseits in diesem System die Prozesse in der Schleife grundsätzlich wie Skalarprozesse ausgeführt werden, tritt selbst dann kein Problem auf, wenn komplizierte Beziehungen zwischen den Stufen der Vektorprozesse und zwischen den Vektorparametern bestehen.
- Im folgenden wird mit Bezug auf Fig. 13 ein Verfahren zum Kompilieren der Vektorarithrnetikoperationsprozesse in dem System erläutert, in dem Vektordaten mit jeweils relativ langen Vektorlängen kombiniert werden und durch die Übertragungsanweisung des Host-Prozessors 2 übertragen werden, wodurch die mittlere Verarbeitungsgeschwindigkeit für eine solche Anwendung erhöht wird, so daß keine hohe Echtzeit-Verarbeitungsleistung erforderlich ist.
- Die Vektorarithmetikoperationsprozesse, die ausgeführt werden, sind dieselben wie im Fall der Fig. 12. Das Kompilierersystem entwickelt zuerst die Prozesse in einer Schleife 44 in kleine Schleifen, die aus zwei Gruppen von Arithmetikoperationen bestehen, die jeweils eine vorgegebene Vektorlänge (in dieser Ausführungsform ist die Vektorlänge auf zehn eingestellt) besitzen. Die erstere Halbgruppe ist auf den Makroprozeß i gesetzt, während die letztere Halbgruppe auf den Makroprozeß i+1 gesetzt ist. In diesen zwei Makroprozessen werden unterschiedliche Vektordatenbereiche in der Registergruppe verwendet, um einen Widerspruch bei der Datenübertragung (d. h. die verarbeiteten Daten werden zerstört, unverarbeitete Daten werden eingegeben oder dergleichen) zu vermeiden. In dieser Ausführungsform werden AR(I) und BR(I) sowie CR(I) und DR(I) verwendet. Die kleinen Schleifen werden weiter in die Schleifen 45, 47, 48 und 50 in den Datenübertragungsverarbeitungsabschnitten und in die Schleifen 46 und 49 in den Arithmetikoperationsverarbeitungsabschnitten unterteilt. Die Schleifen für die Datenübertragungsprozesse werden ferner in die Schleifen 45 und 48 für die Übertragungsprozesse vom Hauptspeicher 6 zur Registergruppe 22 in der Arithmetikoperationseinheit 1 und in die Schleifen 47 und 50 für die Übertragungsprozesse von der Registergruppe 22 zum Hauptspeicher 6 getrennt. Das Bezugszeichen 42 bezeichnet äquivalente Quellprogramme, die durch Entwickeln und Trennen der Vektorprozesse 36 erhalten werden. Anschließend werden die entsprechenden Schleifen als eine Gruppe von Makroarithmetikoperationen und eine Gruppe von Übertragungsprozessen betrachtet und in Maschinensprache übersetzt. Das Bezugszeichen 53 bezeichnet Operationen und eine Verarbeitungssequenz, die durch Entwickeln und Trennen der Prozesse in der Schleife 44 und durch Übersetzen in Maschinensprache erhalten werden. Der Datenübertragungsprozeß DTi umfaßt: den Übertragungsprozeß der Ergebnisdaten, die von der vorletzten Makroanweisung MIi-2 verarbeitet worden sind, von der Registergruppe 22 zum Hauptspeicher 6; und den Übertragungsprozeß der Daten, die in der Makroanweisung MIi benötigt werden, vom Hauptspeicher 6 zur Registergruppe 22. MIi bezeichnet eine Makroanweisung, die eine Gruppe von wesentlichen Arithmetikoperationsprozessen im Makroprozeß i anzeigt. Anschließend werden die Objektprogramme im wesentlichen in der gleichen Weise wie bei den obenerwähnten Vektorprozessen der Fig. 12 den jeweiligen Prozessoren zugeteilt. Die parallel ausgeführten Prozesse sind ebenfalls denjenigen in den Fällen der Vektorprozesse in Fig. 12 und der Skalarprozesse in Fig. 10 im wesentlichen ähnlich.
- Die Vektorlängen, die die kleinen Schleifen in einer Schleife 34 gemäß diesem System bilden, können in Abhängigkeit von der Anwendung verändert werden. Wenn die Grundschleifenlänge sehr lang ist, kann auch die Länge der kleinen Schleife der internen Prozesse auf einen großen Wert gesetzt werden. Da im allgemeinen die Länge der kleinen Schleife lang ist, ergibt sich der Vorteil, daß die Übertragungsprozesse kontinuierlich ausgeführt werden können und die Anzahl der Prozesse zum Anweisen der Makroanweisungen verringert werden kann. Somit können die Organisationsoperationen auf der Seite des Host- Prozessors 2 verringert werden, wobei die fundamentalen Arithmetikoperations-Anweisungsprozesse auf der Seite des Makroanweisungssequenz-Prozessors 3 kontinuierlich ausgeführt werden können, so daß die Verarbeitungsgeschwindigkeit weiter verbessert werden kann. In dem Fall, in dem die Prozesse auf der Seite des Sequenz-Prozessors 3 grundsätzlich zu einem Flaschenhals werden, wird durch Einstellen der Länge der kleinen Schleife auf einen kleinen Wert unmittelbar vor dem Zeitpunkt, zu dem die Seite des Host-Prozessors 2 zu einem Verarbeitungsflaschenhals wird, die Echtzeit-Verarbeitungsfähigkeit verbessert, wobei dieses Verfahren effektiver wird. Das Kompilierersystem wägt diese Elemente ab und bestimmt die Länge der kleinen Schleife so, daß insgesamt der Optimalzustand erreicht wird. Bei den Vektorprozessen in diesem System müssen die jeweiligen Stufen der Vektorarithmetikoperationen relativ unabhängig sein. Wenn die Vektorparameter zwischen den Stufen der anderen Vektorarithmetikoperationen eine komplizierte Beziehung (z. B. A(I) = A(i-10) B(I)) aufweisen, ist eine weitere Spezialvorrichtung erforderlich, um die Makroprozesse zu koppeln. Dasselbe gilt auch für die Vektorarithmetikoperationen in einem Universal-Supercomputer. Es tritt jedoch selbst dann kein Problem auf, wenn zwischen den Parametern in den Makroprozessen eine komplizierte Beziehung besteht.
- Wie oben erläutert worden ist, ist es möglich, eine Arithmetikoperationsverarbeitungsvorrichtung mit einem Kompilierersystem zu schaffen, in der bei den wahlfreien Arithmetikoperationsprozessen (Skalarprozessen) oder Vektorarithmetikoperationsprozessen selbst dann, wenn zwischen den Parametern oder zwischen den Stufen der Vektorprozesse eine komplizierte Beziehung besteht, die Objektprogramme auf zwei Prozessoren verteilt werden können, so daß die Datenübertragungsprozesse und die Arithmetikoperationsausführungsprozesse mit dem Speichersystem parallel ausgeführt werden können. Somit kann die Parallelverarbeitungs fähigkeit der Hardware effektiv genutzt werden, wobei die Arithmetikoperations-Verarbeitungsgeschwindigkeit weiter gesteigert werden kann.
Claims (23)
1. Arithmetikoperationsverarbeitungsvorrichtung, mit
- einer Arithmetikoperationseinheit (1) zur Ausführung
von Arithmetikoperationen, und
- einem ersten Prozessor (2), der eine Steuerfunktion
einer Arithmetiksequenz, die in der
Arithmetikoperationseinheit ausgeführt wird, sowie
Eingabe/Ausgabeoperations-Funktionen für Daten enthält,
die für die Arithmetikoperation erforderlich sind,
gekennzeichnet durch
- einen zweiten Prozessor (3), der die
Arithmetikoperationseinheit (1) gemeinsam mit dem ersten Prozessor
(2) nutzt und wenigstens eine
Basisanweisungsanzeigefunktion für die Arithmetikoperationseinheit (1)
besitzt,
- eine Einrichtung zum Steuern einer
Basisanweisungssequenz für die Arithmetikoperationseinheit (1) vom
zweiten Prozessor (3) durch Kombinieren einiger
Basisanweisungsoperationen einer
Arithmetikausführungssequenz des zweiten Prozessors (3) in mehrere
Anweisungsschritte bestehend aus einer oder mehreren
Basisanweisungen und durch Anweisen jedes
kombinierten Anweisungsschritts als eine Makroanweisung vom
ersten Prozessor (2) an den zweiten Prozessor (3),
und
- eine Speichereinrichtung (22), auf die sowohl vom
ersten Prozessor (2) als auch von einer
Ausführungseinheit (18) zugegriffen werden kann, die in der
Arithmetikoperationseinheit (1) vorhanden ist,
wobei der erste Prozessor (2) auf die Speichereinrichtung
(22) zugreift, um eine Datenverarbeitungsoperation
auszuführen,
die das Setzen der erforderlichen Daten und das
Erhalten der verarbeiteten Daten umfaßt, parallel zu
einer Operation des zweiten Prozessors (3) zum Aufteilen
der Makroanweisung, die vom ersten Prozessor (2)
angewiesen wird, in eine Basisanweisung, die zur Ausführung der
Arithmetikoperationseinheit (1) zugeführt wird.
2. Vorrichtung nach Anspruch 1, gekennzeichnet durch
- eine Makroanweisungs-Anweisungseinrichtung zum
Anweisen mehrerer Arithmetikanweisungen für den zweiten
Prozessor (3) als Makroanweisungen vom ersten
Prozessor (2), die in der Arithmetikoperationseinheit (1)
auszuführen sind,
- eine Zählereinrichtung (24, 25) zum Zwischenspeichern
der Anzahl der angewiesenen Anweisungen und zum
Hochzählen der Zahl der Arithmetikanweisungen jedesmal
dann, wenn die Anweisungen in einer Arithmetikeinheit
(8) ausgeführt werden, bis die Makroanweisungen mit
einer angewiesenen Anzahl von Anweisungen
übereinstimmen, und
- eine Einrichtung zum vorübergehenden Anhalten der
Makroanweisungs-Anweisungsoperation des ersten
Prozessors (2), bis die Annahme der nächsten
Makroanweisung verfügbar wird, wenn die nächste Makroanweisung
vom ersten Prozessor (2) während der Operation des
zweiten Prozessors (3) angewiesen wird.
3. Vorrichtung nach Anspruch 1, gekennzeichnet durch
- eine Einrichtung zum Verbinden des zweiten Prozessors
(3) mit der Speichereinrichtung (22).
4. Vorrichtung nach Anspruch 1, gekennzeichnet durch
- eine Einrichtung zum Aufteilen einer auszuführenden
Arithmetikverarbeitungssequenz in mehrere
Makrosequenzen, die aus wenigstens einer Arithmetikanweisung
bestehen, die jede Makrosequenz als Makroanweisung
definiert, um den ersten Prozessor (2) zuzuweisen,
und zum Editieren eines Objektprogramms, um dem
ersten Prozessor (2) eine Datenübertragungsverarbeitung
für die Übertragung von Daten, die nach der (n+1)-ten
Makroanweisungs-Anweisungsoperation durch den ersten
Prozessor (2) benötigt werden, oder von
Ergebnisdaten, die vor der (n-1)-ten Makroanweisung verarbeitet
worden sind, zwischen der Speichereinrichtung (22)
und der Arithmetikoperationseinheit (1), sowie eine
Anweisungsverarbeitung der Makroanweisung für den
zweiten Prozessor (3) zuzuweisen, wobei die n-te
Makroanweisung vom zweiten Prozessor (3) parallel
auszuführen ist.
5. Vorrichtung nach Anspruch 1, gekennzeichnet durch
-eine Einrichtung zum Kompilieren einer Serie von
Arithmetikoperationen zu einer Schleife als
Makroanweisung, die sich auf eine Makrosequenz bezieht,
während ein Objektprogramm in einer Schleife editiert
wird, um den zweiten Prozessor (3) zuzuweisen,
-eine Editiereinrichtung zum Zuweisen einer
Datenübertragungsverarbeitung von Daten, die für die
Makroanweisungsverarbeitung nach der (n+1)-ten Schleife
durch den ersten Prozessor (2) erforderlich sind,
oder von Ergebnisdaten, die vor der (n-1)-ten
Makroanweisungsverarbeitung verarbeitet worden sind,
zwischen der Speichereinrichtung (22) und der
Arithmetikoperationseinheit (1) und zum Zuweisen der
Makroanweisungs-Anweisungsverarbeitung für den
zweiten Prozessor (3) an den ersten Prozessor (2),
während parallel dazu der zweite Prozessor (3) die n-te
Schleifenmakroanweisung ausführt.
6. Vorrichtung nach Anspruch 5, dadurch
gekennzeichnet, daß
die Einrichtung zum Editieren eine Einrichtung
enthält zum Entwickeln von Inhalten der Basisschleifen in
Linien mit mehr als zwei Schleifen, um die
Arithmetikoder die Operationsmenge innerhalb der Schleife zu
erhöhen und die Anzahl der Schleifen zu verringern.
7. Vorrichtung nach Anspruch 5, dadurch
gekennzeichnet, daß
die Einrichtung zum Editieren eine Einrichtung
enthält zum Entwickeln von Inhalten der Basisschleifen in
mehrere Arithmetikschleifen oder Operationen, die eine
kleinere Anzahl von Schleifen enthalten als in der
Schleife, um die Arithmetik- oder die Operationsmenge zu
erhöhen und die Anzahl der Schleifen zu verringern.
8. Vorrichtung nach Anspruch 5, dadurch
gekennzeichnet, daß
eine Editieroperation ausgeführt wird, um die
Anzahl der Schleifen zu verringern, indem die
Arithmetikoder die Operationsmenge der Schleife durch Entwickeln in
Linien mit mehr als zwei Schleifen erhöhen wird.
9. Vorrichtung nach Anspruch 5, dadurch
gekennzeichnet, daß
eine Editieroperation ausgeführt wird, um die
Anzahl der äußeren Schleifen zu verringern, indem die
Arithmetik- oder Operationsmenge durch Entwickeln in
mehrere Arithmetikoperationen oder Operationen mit einer
kleineren Schleifenanzahl erhöht wird.
10. Vorrichtung nach Anspruch 6, gekennzeichnet durch
- eine Aufteilungsverarbeitung in der entwickelten
Schleife in einen Arithmetikverarbeitungsabschnitt
und einen Datenübertragungsabschnitt, der mit dem
Arithmetikverarbeitungsabschnitt einhergeht,
- Aufteilen des Arithmetikverarbeitungsabschnittes in
eine oder mehrere Makrosequenzen, die als
Makroanweisung (MI) definiert werden,
- Aufteilen des Datenübertragungsabschnittes in eine
oder mehrere
Datenübertragungsverarbeitungsoperationen (DT), und
- Zuweisen des Großteils der Makroanweisung an den
zweiten Prozessor (3) und der
Datenübertragungsoperation an den ersten Prozessor (2).
11. Vorrichtung nach Anspruch 7, gekennzeichnet durch
- Aufteilen der Verarbeitung in der entwickelten
Schleife in eine Schleifenverarbeitung der
Arithmetikverarbeitung und eine Schleifenverarbeitung der
Datenübertragungsverarbeitung,
- Vorsehen wenigstens einer oder mehrerer
Schleifenverarbeitungen zum Ausführen der Arithmetikverarbeitung
als Makrosequenz, die als Makroanweisung (MI)
definiert wird,
- Vorsehen wenigstens einer oder mehrerer
Schleifenverarbeitungen zur Ausführung der
Datenübertragungsverarbeitung, um jede von diesen als
Datenübertragungsverarbeitungsoperation (DT) zu definieren,
- Zuweisen des Großteils der Makroanweisung an den
zweiten Prozessor (3) und
- Zuweisen der Anweisungsverarbeitung der
Makroanweisung und der Datenübertragungsoperation an den ersten
Prozessor (2).
12. Vorrichtung nach Anspruch 6, dadurch
gekennzeichnet, daß
die Einrichtung zum Editieren eine Einrichtung
ist zum Trennen der Verarbeitung der entwickelten
Schleife in einen Arithmetikverarbeitungsabschnitt und
einen Datenübertragungsabschnitt, der mit der
Arithmetikverarbeitung einhergeht, zum Aufteilen des
Arithmetikverarbeitungsabschnittes
in wenigstens eine Makrosequenz,
die als Makroanweisung (MI) definiert wird, und zum
Aufteilen des Datenübertragungsverarbeitungsabschnittes
in wenigstens eine Datenübertragungsoperation (DT), zum
Zuweisen des Großteils der Makroanweisung an den zweiten
Prozessor (3) sowie zum Zuweisen der
Datenübertragungsoperation an den ersten Prozessor (2).
13. Vorrichtung nach Anspruch 7, dadurch
gekennzeichnet, daß
die Einrichtung zum Editieren eine Einrichtung
ist zum Aufteilen der Verarbeitung der entwickelten
Schleife in eine Schleife zum Ausführen der
Arithmetikverarbeitung und eine Schleife zum Ausführen der
Datenübertragungsverarbeitung, zum Vorsehen wenigstens einer
Schleifenverarbeitung zum Ausführen der
Arithmetikverarbeitung als Makrosequenz, die als Makroanweisung (MI)
definiert wird, zum Vorsehen wenigstens einer
Schleifenverarbeitung zum Ausführen der Datenübertragung, die als
Datenübertragungsoperation (DT) definiert wird, zum
Zuweisen des Großteils der Makroanweisung an den zweiten
Prozessor (3) und zum Zuweisen der Anweisungsverarbeitung
der Makroanweisung und der Datenübertragungsoperation an
den ersten Prozessor (2).
14. Vorrichtung nach Anspruch 3, dadurch
gekennzeichnet, daß
der erste Prozessor (2) eine Anweisung ausgeben
kann, um der Arithmetikoperationseinheit (1) zu erlauben,
eine Arithmetikoperation auszuführen, und
eine erste Schalteinrichtung (11) vorgesehen ist,
um sowohl die Anweisungen vom zweiten Prozessor (3) als
auch vom ersten Prozessor (2) zu empfangen und wahlweise
eine der Anweisungen der Arithmetikoperationseinheit (1)
zuzuführen.
15. Vorrichtung nach Anspruch 14, dadurch
gekennzeichnet, daß
der zweite Prozessor (3) eine
Daten-Eingabe/Ausgabe-Funktion besitzt, und
eine zweite Schalteinrichtung (13) vorgesehen
ist, um wahlweise entweder den ersten Prozessor (2) oder
den zweiten Prozessor (3) mit der
Arithmetikoperationseinheit (1) zu verbinden und die Datenübertragung zu
ermöglichen, die entweder zwischen dem ersten Prozessor
(2) und der Arithmetikoperationseinheit (1) oder zwischen
dem zweiten Prozessor (3) und der
Arithmetikoperationseinheit (1) durchzuführen ist.
16. Vorrichtung nach Anspruch 15, dadurch
gekennzeichnet, daß
die Datenübertragung zwischen dem zweiten
Prozessor (3) und der Arithmetikoperationseinheit (1) die
Datenübertragung ist, die zwischen einem lokalen Speicher
(9), der im zweiten Prozessor (3) vorhanden ist, und
einer Registergruppe (22), die in der
Arithmetikoperationseinheit (1) vorhanden ist, durchgeführt wird.
17. Vorrichtung nach Anspruch 14, dadurch
gekennzeichnet, daß
der zweite Prozessor (3) eine
Daten-Eingabe/Ausgabe-Funktion besitzt, und
ein Multiplexierer (13) vorgesehen ist, um
wahlweise entweder den ersten Prozessor (2) oder den zweiten
Prozessor (3) mit der Arithmetikoperationseinheit (1) zu
verbinden und die Datenübertragung zu ermöglichen, die
entweder zwischen dem ersten Prozessor (2) und der
Arithmetikoperationseinheit (1) oder zwischen dem zweiten
Prozessor (3) und der Arithmetikoperationseinheit (1)
durchzuführen ist.
18. Vorrichtung nach Anspruch 1, dadurch
gekennzeichnet, daß
die ersten und zweiten Prozessoren (2, 3) mit den
gleichen Maschinenanweisungen betrieben werden.
19. Vorrichtung nach Anspruch 1, dadurch
gekennzeichnet, daß
der Makroanweisungsschritt wenigstens ein
Anweisungsschritt ist, der kontinuierlich ausgeführt wird.
20. Vorrichtung nach Anspruch 1, dadurch
gekennzeichnet, daß
die Anweisung, die den Makroanweisungsschritt
bildet, und die Makroanweisung als Maschinensprache im
ersten Prozessor (2) gespeichert sind.
21. Vorrichtung nach Anspruch 1, dadurch
gekennzeichnet, daß
der erste Prozessor (2) eine Einrichtung besitzt,
um die Makroanweisung anzuzeigen, die die Anzahl der von
der Arithmetikoperationseinheit (1) auszuführenden
Anweisungen darstellt, und
der zweite Prozessor (3) eine Einrichtung (10)
besitzt, um die vom zweiten Prozessor (3) angezeigte
Anzahl der Anweisungen zwischenzuspeichern und die Anzahl
der Arithmetikoperationsanweisungen zu zählen, um den
zweiten Prozessor (3) jedesmal dann in Betrieb zu setzen,
wenn die Anweisung von der Arithmetikoperationseinheit
ausgeführt wird, bis die Makroanweisung mit der Anzahl
der angezeigten Anweisungen übereinstimmt, und eine
Einrichtung enthält zum Anhalten der Operation des ersten
Prozessors (2), bis die Ausführung der Makroanweisung,
die ausgeführt wird, beendet ist, wenn die nächste
Makroanweisung vom ersten Prozessor (2) angezeigt wird,
während der zweite Prozessor (3) arbeitet.
22. Kompilierer eines
Parallelarithmetikverarbeitungstyps zur Verwendung in einer
Arithmetikverarbeitungsvorrichtung eines Parallelverarbeitungstyps, mit
- einer Arithmetikoperationseinheit (1) zum Ausführen
von Arithmetikverarbeitungsprozessen auf der
Grundlage von Anweisungen,
- einem zweiten Prozessor (3) mit einer Einrichtung,
die eine von der Arithmetikoperationseinheit (1)
auszuführende gesamte
Arithmetikoperationsverarbeitungssequenz in mehrere Makrosequenzen aufteilt und diese
Makrosequenzen als Makroanweisungsschritte einsetzt
und die die Anweisungen einzeln auf einer
Makroanweisungsstufeneinheitsbasis der
Arithmetikoperationseinheit (1) als Antwort auf eine Makroanweisung anzeigt,
die von außen eingegeben wird, und die nach dem
Abschließen der Anzeige der Anweisungen in der gleichen
Anzahl wie die relevanten Makroanweisungsschritte in
einen Wartezustand der nächsten Makroanweisung
zurückkehrt, und
- einem ersten Prozessor (2), der eine Einrichtung
besitzt zum Steuern der gesamten
Arithmetikverarbeitungssequenz, die durch mehrere
Makroanweisungsschritte ersetzt ist, und zum Erzeugen der
Makroanweisungen für den zweiten Prozessor (3), wobei der
erste Prozessor (2) einen Datenübertragungsprozeß mit
der Arithmetikoperationseinheit (1) parallel zu den
Operationen wenigstens einer
Arithmetikoperationseinheit (1) und einem zweiten Prozessor (3) ausführt,
wobei der Kompilierer eine
Objektprogrammerzeugungseinrichtung (34) zum Zusammensetzen der
beschriebenen Arithmetikverarbeitungssequenz als
Kompilierungseinrichtung eines Kompilierersystems besitzt, um die
Arithmetikverarbeitungssequenz der Arithmetikoperationseinheit
auf der Grundlage der Kompilierung längs der
Verarbeitungssequenz in mehreren Makrosequenzen zu beschreiben,
die aus einer oder mehreren Anweisungen besteht, zum
Definieren jeder der mehreren Makrosequenzen als
Makroanweisungsschritt, zum Zuweisen der Makroanweisungsschritte
an den zweiten Prozessor (3), zum Zuweisen der
Datenübertragungsverarbeitung und einer Makroanweisungsausgabe für
den zweiten Prozessor (3) an den ersten Prozessor (2),
und während der Ausführung des n-ten
Makroanweisungsschrittes durch den zweiten Prozessor (3) zum parallelen
Freigeben hierzu von Daten, die vom ersten Prozessor (2)
im (n+1)-ten und den nachfolgenden
Makroanweisungsschritten erforderlich sind, oder von Ergebnisdaten, die vom
(n-1)-ten und den vorangehenden Makroanweisungsschritten
verarbeitet worden sind, zur Übertragung zwischen einem
Speichersystem (6, 22), das für den ersten Prozessor (2)
vorgesehen ist, und der Arithmetikoperationseinheit (1).
23. Kompilierer nach Anspruch 22, in dem als
Einrichtung zum Kompilieren von Schleifenarithmetikoperationen
ferner ein Kompilierungssystem verwendet wird, das
Schleifenprozesse zu Objektprogrammen entwickelt, derart,
daß die Serie der Arithmetikverarbeitungsprozesse in der
Schleife als Makrosequenzen betrachtet werden und als
Makroanweisungsschritte definiert und dem zweiten
Prozessor (3) zugewiesen werden, wobei die
Datenübertragungsverarbeitung und die Erzeugungsoperation der
Makroanweisung für den zweiten Prozessor (3) dem ersten Prozessor
(2) zugewiesen werden und während der Ausführung des
Makroanweisungsschrittes der n-ten Schleife durch den
zweiten Prozessor (3) parallel der Prozeß zur Übertragung
von Daten, die vom ersten Prozessor (2) in den
Makroanweisungsschritten der (n+1)-ten und der nachfolgenden
Schleifen benötigt werden, oder der Ergebnisdaten, die
vom (n-1)-ten und den vorangehenden
Makroanweisungsschritten verarbeitet worden sind, zwischen dem
Speichersystem (6, 22), das für den ersten Prozessor (2)
vorgesehen ist, und der Arithmetikoperationseinheit (1),
ausgeführt wird.
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP62151207A JPH0789320B2 (ja) | 1987-06-19 | 1987-06-19 | 演算処理装置 |
JP16533887A JPH0746343B2 (ja) | 1987-07-03 | 1987-07-03 | 演算処理装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
DE3855524D1 DE3855524D1 (de) | 1996-10-17 |
DE3855524T2 true DE3855524T2 (de) | 1997-02-06 |
Family
ID=26480525
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
DE3855524T Expired - Fee Related DE3855524T2 (de) | 1987-06-19 | 1988-06-15 | Arithmetik-Parallelverarbeitungseinheit und zugehöriger Kompilator |
Country Status (3)
Country | Link |
---|---|
US (1) | US4956800A (de) |
EP (1) | EP0295646B1 (de) |
DE (1) | DE3855524T2 (de) |
Families Citing this family (17)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5247628A (en) * | 1987-11-30 | 1993-09-21 | International Business Machines Corporation | Parallel processor instruction dispatch apparatus with interrupt handler |
JP2738692B2 (ja) * | 1988-01-29 | 1998-04-08 | 株式会社日立製作所 | 並列化コンパイル方法 |
US5257358A (en) * | 1989-04-18 | 1993-10-26 | Nec Electronics, Inc. | Method for counting the number of program instruction completed by a microprocessor |
US5255385A (en) * | 1990-02-26 | 1993-10-19 | Hitachi, Ltd. | Method of testing program, and compiler and program testing tool for the method |
EP0456249B1 (de) * | 1990-05-10 | 1998-12-09 | Hewlett-Packard Company | System zum Integrieren von Anwenderprogrammen in eine heterogene Netzwerkumgebung |
JP2884831B2 (ja) * | 1991-07-03 | 1999-04-19 | 株式会社日立製作所 | 処理装置 |
US5363495A (en) * | 1991-08-26 | 1994-11-08 | International Business Machines Corporation | Data processing system with multiple execution units capable of executing instructions out of sequence |
US5742842A (en) * | 1992-01-28 | 1998-04-21 | Fujitsu Limited | Data processing apparatus for executing a vector operation under control of a master processor |
US5548761A (en) * | 1993-03-09 | 1996-08-20 | International Business Machines Corporation | Compiler for target machine independent optimization of data movement, ownership transfer and device control |
US5835771A (en) * | 1995-06-07 | 1998-11-10 | Rogue Wave Software, Inc. | Method and apparatus for generating inline code using template metaprograms |
US5930490A (en) * | 1996-01-02 | 1999-07-27 | Advanced Micro Devices, Inc. | Microprocessor configured to switch instruction sets upon detection of a plurality of consecutive instructions |
US5968162A (en) * | 1996-04-02 | 1999-10-19 | Advanced Micro Devices, Inc. | Microprocessor configured to route instructions of a second instruction set to a second execute unit in response to an escape instruction |
US7039906B1 (en) | 2000-09-29 | 2006-05-02 | International Business Machines Corporation | Compiler for enabling multiple signed independent data elements per register |
US7657450B2 (en) * | 2000-12-08 | 2010-02-02 | Microsoft Corporation | Reliable, secure and scalable infrastructure for event registration and propagation in a distributed enterprise |
US7278137B1 (en) * | 2001-12-26 | 2007-10-02 | Arc International | Methods and apparatus for compiling instructions for a data processor |
US7355743B2 (en) * | 2002-10-25 | 2008-04-08 | Pitney Bowes Inc. | Statement level tracking in a document production and management process |
JP4629702B2 (ja) * | 2007-06-14 | 2011-02-09 | マン・ディーゼル・アンド・ターボ,フィリアル・アフ・マン・ディーゼル・アンド・ターボ・エスイー,ティスクランド | 分散制御システム |
Family Cites Families (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US4149241A (en) * | 1978-03-13 | 1979-04-10 | Rockwell International Corporation | Communications bus monitor |
US4367524A (en) * | 1980-02-07 | 1983-01-04 | Intel Corporation | Microinstruction execution unit for use in a microprocessor |
US4376976A (en) * | 1980-07-31 | 1983-03-15 | Sperry Corporation | Overlapped macro instruction control system |
US4539655A (en) * | 1982-03-16 | 1985-09-03 | Phoenix Digital Corporation | Microcomputer based distributed control network |
US4509116A (en) * | 1982-04-21 | 1985-04-02 | Digital Equipment Corporation | Special instruction processing unit for data processing system |
-
1988
- 1988-06-15 DE DE3855524T patent/DE3855524T2/de not_active Expired - Fee Related
- 1988-06-15 EP EP88109533A patent/EP0295646B1/de not_active Expired - Lifetime
- 1988-06-17 US US07/208,107 patent/US4956800A/en not_active Expired - Lifetime
Also Published As
Publication number | Publication date |
---|---|
EP0295646B1 (de) | 1996-09-11 |
US4956800A (en) | 1990-09-11 |
EP0295646A3 (de) | 1992-02-12 |
EP0295646A2 (de) | 1988-12-21 |
DE3855524D1 (de) | 1996-10-17 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
DE68921906T2 (de) | Verfahren für ein Multiprozessorsystem mit sich selbst zuordnenden Prozessoren. | |
DE3855524T2 (de) | Arithmetik-Parallelverarbeitungseinheit und zugehöriger Kompilator | |
DE69127101T2 (de) | System für verteilte mehrfachrechnerkommunikation | |
DE69130630T2 (de) | Synchrones Verfahren und Gerät für Prozessoren | |
DE69419524T2 (de) | Sperrsynchronisierung für verteilte speicher-massivparallelrechner | |
DE69428396T2 (de) | Bildverarbeitungssystem mit Fliessbandarbeitsprinzip für Einzelanwendungsumgebung | |
DE3689394T2 (de) | Informationsverarbeitungsanlage mit einem Allzweckprozessor und einem Sonderzweckprozessor. | |
DE3248215C2 (de) | ||
DE69408601T2 (de) | System und Verfahren zur Emulierung von Vielfachprozess-Pipelines in einer Einprozessumgebung | |
DE3210816C2 (de) | ||
DE2714805C2 (de) | ||
DE3783072T2 (de) | Zusatzprozessorarchitektur. | |
DE68927911T2 (de) | Datenverarbeitungssystem | |
DE69636861T2 (de) | Mikroprozessor mit Lade-/Speicheroperation zu/von mehreren Registern | |
DE3586603T2 (de) | Datenprozessor fuer interpretierende und kompilierte sprache. | |
DE3638572C2 (de) | ||
DE2953861C2 (de) | ||
DE69418146T2 (de) | Temporärer Registersatz für einen superpipeline-superskalaren Prozessor | |
DE3750028T2 (de) | Pipelineprozessor mit schwacher Kopplung. | |
DE69130757T2 (de) | Ausführungsvorrichtung für bedingte Verzweigungsbefehle | |
DE2847934A1 (de) | Datenverarbeitungseinrichtung mit einem mikrobefehlsspeicher | |
DE19545179A1 (de) | Vektorspeicheroperationen | |
DE1915818B2 (de) | Steuerschaltung für ein elektronisches Datenverarbeitungssystem | |
DE3508640A1 (de) | Computersystem zur implementierung eines ereignisgesteuerten simulationsalgorithmus | |
DE69219848T2 (de) | Verfahren zur Behandlung von Datenübertragungen in einen Computersystem mit einem Zweibusbau |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
8364 | No opposition during term of opposition | ||
8339 | Ceased/non-payment of the annual fee |