DE3855524T2 - Arithmetik-Parallelverarbeitungseinheit und zugehöriger Kompilator - Google Patents

Arithmetik-Parallelverarbeitungseinheit und zugehöriger Kompilator

Info

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
Application number
DE3855524T
Other languages
English (en)
Other versions
DE3855524D1 (de
Inventor
Masatsugu Kametani
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.)
Hitachi Ltd
Original Assignee
Hitachi Ltd
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
Priority claimed from JP62151207A external-priority patent/JPH0789320B2/ja
Priority claimed from JP16533887A external-priority patent/JPH0746343B2/ja
Application filed by Hitachi Ltd filed Critical Hitachi Ltd
Publication of DE3855524D1 publication Critical patent/DE3855524D1/de
Application granted granted Critical
Publication of DE3855524T2 publication Critical patent/DE3855524T2/de
Anticipated expiration legal-status Critical
Expired - Fee Related legal-status Critical Current

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/40Transformation of program code
    • G06F8/41Compilation
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/40Transformation of program code
    • G06F8/41Compilation
    • G06F8/45Exploiting coarse grain parallelism in compilation, i.e. parallelism between groups of instructions
    • 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/3877Concurrent 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

    HINTERGRUND DER ERFINDUNG
  • 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.
  • ZUSAMMENFASSUNG DER ERFINDUNG
  • 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.
  • KURZBESCHREIBUNG DER ZEICHNUNGEN
  • 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.
  • BESCHREIBUNG BEVORZUGTER AUSFÜHRUNGS FORMEN
  • 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.
DE3855524T 1987-06-19 1988-06-15 Arithmetik-Parallelverarbeitungseinheit und zugehöriger Kompilator Expired - Fee Related DE3855524T2 (de)

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)

* Cited by examiner, † Cited by third party
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)

* Cited by examiner, † Cited by third party
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

Also Published As

Publication number Publication date
US4956800A (en) 1990-09-11
EP0295646A2 (de) 1988-12-21
DE3855524D1 (de) 1996-10-17
EP0295646B1 (de) 1996-09-11
EP0295646A3 (de) 1992-02-12

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.
DE2716369C2 (de)
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
DE3586603T2 (de) Datenprozessor fuer interpretierende und kompilierte sprache.
DE69636861T2 (de) Mikroprozessor mit Lade-/Speicheroperation zu/von mehreren Registern
DE3638572C2 (de)
DE2953861C2 (de)
DE3750028T2 (de) Pipelineprozessor mit schwacher Kopplung.
DE19735348A1 (de) Einzelbefehl-Mehrdaten-Verarbeitung unter Verwendung von mehreren Bänken von Vektorregistern
DE69418146T2 (de) Temporärer Registersatz für einen superpipeline-superskalaren Prozessor
DE69130757T2 (de) Ausführungsvorrichtung für bedingte Verzweigungsbefehle
DE19735350A1 (de) Einzelbefehl-Mehrdaten-Verarbeitung bei einem Multimedia-Signalprozessor
DE2847934A1 (de) Datenverarbeitungseinrichtung mit einem mikrobefehlsspeicher
DE19545179A1 (de) Vektorspeicheroperationen

Legal Events

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