DE3210816C2 - - Google Patents

Info

Publication number
DE3210816C2
DE3210816C2 DE3210816A DE3210816A DE3210816C2 DE 3210816 C2 DE3210816 C2 DE 3210816C2 DE 3210816 A DE3210816 A DE 3210816A DE 3210816 A DE3210816 A DE 3210816A DE 3210816 C2 DE3210816 C2 DE 3210816C2
Authority
DE
Germany
Prior art keywords
vector
data
scalar
command
processing
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
Application number
DE3210816A
Other languages
English (en)
Other versions
DE3210816A1 (de
Inventor
Shigeo Hachioji Jp Nagashima
Shunichi Musashino Jp Torii
Koichiro Omoda
Yasuhiro Hadano Jp Inagami
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 JP56042314A external-priority patent/JPS57157373A/ja
Priority claimed from JP56144658A external-priority patent/JPS5846467A/ja
Priority claimed from JP57018734A external-priority patent/JPS58137081A/ja
Application filed by Hitachi Ltd filed Critical Hitachi Ltd
Publication of DE3210816A1 publication Critical patent/DE3210816A1/de
Application granted granted Critical
Publication of DE3210816C2 publication Critical patent/DE3210816C2/de
Granted legal-status Critical Current

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F15/00Digital computers in general; Data processing equipment in general
    • G06F15/76Architectures of general purpose stored program computers
    • G06F15/80Architectures of general purpose stored program computers comprising an array of processing units with common control, e.g. single instruction multiple data processors
    • G06F15/8053Vector processors
    • G06F15/8061Details on data memory access
    • 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/30003Arrangements for executing specific machine instructions
    • G06F9/30007Arrangements for executing specific machine instructions to perform operations on data operands
    • G06F9/30036Instructions to perform operations on packed data, e.g. vector, tile or matrix operations
    • 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
    • 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
    • G06F9/3879Concurrent instruction execution, e.g. pipeline or look ahead using a slave processor, e.g. coprocessor for non-native instruction execution, e.g. executing a command; for Java instruction set
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3885Concurrent instruction execution, e.g. pipeline or look ahead using a plurality of independent parallel functional units
    • G06F9/3887Concurrent instruction execution, e.g. pipeline or look ahead using a plurality of independent parallel functional units controlled by a single instruction for multiple data lanes [SIMD]
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3885Concurrent instruction execution, e.g. pipeline or look ahead using a plurality of independent parallel functional units
    • G06F9/3889Concurrent instruction execution, e.g. pipeline or look ahead using a plurality of independent parallel functional units controlled by multiple instructions, e.g. MIMD, decoupled access or execute

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Software Systems (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Computer Hardware Design (AREA)
  • Computing Systems (AREA)
  • Mathematical Physics (AREA)
  • Complex Calculations (AREA)

Description

Die vorliegende Erfindung betrifft eine Datenverarbeitungseinrichtung mit getrennten Einrichtungen zur Verarbeitung von Skalar- und Vektordaten gemäß dem Oberbegriff des Anspruchs 1.
Ein Vektorprozessor ist eine Verarbeitungseinrichtung, die zur Verarbeitung einer Vielzahl von Elementen eines geordneten Datenfeldes (kurz als Vektordaten oder einfach als Vektor bezeichnet) und eines anderen in einem Hauptspeicher gespeicherten Vektors eingerichtet ist.
Aus der EP-OS 00 42 442 ist eine Datenverarbeitungseinrichtung gemäß Oberbegriff des Anspruchs 1 bekannt.
Diese ist eine ältere Anmeldung gemäß § 3 (2 PatG nF).
Multiprozessorsysteme mit selbständigen Prozessorelementen, welche über eigene Hardware-Einrichtung zum Holen, Decodieren und Ausführen von Befehlen verfügen, und an einem gemeinsamen Hauptspeicher angeschlossen sind, sind allgemein bekannt.
Aus der DE-Z "Elektronik" 1979, Heft 17, Seite 25 bis Seite 34 ist bekannt, daß in einem solchen Multiprozessorsystem die jeweiligen Prozessoren unterschiedliche fest zugeordnete Aufgaben bearbeiten. Ein solches System wird als unsymmetrisches Mulitprozessorsystem bezeichnet.
Aus der Zeitschrift "Electronics, 16. August 1979, Seiten 118 bis 124 ist auch speziell bekannt, daß in einem solchen Multiprozessorsystem bestehend aus zwei Prozessoren der eine Prozessor die normale und die übliche Skalarverarbeitung durchführt, während der andere Prozessor eine spezielle Vektorverarbeitung vornimmt. Bei der genannten Zeitschrift "Electronics" ist, wie insbesondere aus der Abbildung 2 auf Seite 120 der dazugehörigen Beschreibung hervorgeht, ein Zweiprozessorsystem bekannt, bei der ein sogenannter "Host-Computer" die übliche Skalarverarbeitung durchführt, während ein sogenannter "Array-Processor" die sogenannte Feld- oder "Array"-Verarbeitung vornimmt.
Zur Verarbeitung von Skalargrößen benötigt ein Skalarprozessor im allgemeinen Skalardaten und Skalarbefehlsketten, zur Verarbeitung von Vektoren benötigt ein Vektorprozessor im allgemeinen Vektordaten und Vektorbefehlsketten. Diese Skalardaten, Vektordaten, Skalarbefehlsketten und Vektorbefehlsketten können in einem Hauptspeicher des Systems gemeinsam gespeichert sein. Über ein Interface zwischen dem Skalarprozessor und dem Vektorprozessor, das eine funktionelle Verbindung zwischen beiden Prozessoren darstellt und das auch über Pufferspeicher verfügen kann, können bei der Datenverarbeitungseinrichtung gemäß der genannten Zeitschrift "Electronics" Verarbeitungsparameter übergeben werden. Aus "Intel Series 3000 Reference Manual" Intel Vorp., 1976, Seiten 3-21 bis Seiten 3-25 ist eine überlappende Befehlsabarbeitung nach einem Pipeline-Modus bekannt, wobei dem eigentlichen Befehlsregister, welches den aktuellen Befehlscode einschließlich Operanden enthält, ein sogenanntes "Pipeline-Register" vorgeschaltet ist. Damit ist es, wenn dieses Pipeline-Prinzip auf parallel zueinander arbeitende Skalarverarbeitungseinheiten und Vektorverarbeitungseinheiten angewendet wird, möglich, eine überlappende Befehlsabarbeitung zu erzielen.
Fig. 1 zeigt schematisch einen Verarbeitungsvorgang bei der Summenbildung der Vektoren B und C, die den Vektor A erzeugen. Bei dem dargestellten Beispiel werden entsprechende Komponenten b ÿ und c ÿ der Vektoren B und C summiert, wodurch eine Komponente a ÿ des Vektors A entsteht. Im allgemeinen kann der Vektorprozessor zusätzlich zu der Verarbeitung der Vektordaten einen für die Vorbereitung der Vektorverarbeitung nötigen Verarbeitungsvorgang (beispielsweise die Berechnung der Startadresse des Vektors), eine übliche skalare Verarbeitung und einen Ein-Ausgabevorgang durchführen. Typische Beispiele eines solchen Vektorprozessors bilden STAR-100 von CDC und CRAY-1 der Cray Research Inc.
Wenn ein FORTRAN Programm mit doppelt verschachtelten DO-Schleifen die Vektorverarbeitung durchführt, wird lediglich die innere DO-Schleife durch die Vektorverarbeitung ausgeführt, während die äußere Schleife gewöhnlich als Softwareschleife ausgeführt ist.
Daraus ergibt sich bei herkömmlichen Vektorprozessoren eine sequentielle Durchführung der Vektorbehandlung und der Skalarbehandlung. Beispielsweise wird die in Fig. 2 gezeigte Operation in der Form, wie sie in Fig. 3 gezeigt ist, durchgeführt. In Fig. 3 bezeichnen die Abkürzungssymbole (v) und (s) am Ende der jeweiligen Schritte, ob eine Vektor- oder eine Skalarbehandlung ausgeführt wird. Im folgenden werden die einzelnen Schritte erklärt:
Schritt 1: Berechnet die Dimension eines zu behandelnden Vektors. (Skalarverarbeitung). In diesem Beispiel beträgt die Dimension 100 und wird durch den Bereich von J bestimmt.
Schritt 2: Schreibe die Vektordimension in ein Vektordimensionsregister (VLR mit einer SETVL-Anweisung (Skalarverarbeitung).
Schritt 3: Berechne die Vektorstartadresse des Vektors B (im vorliegenden Beispiel die Adresse der Komponente B (1,1)). (Skalarverarbeitung).
Schritt 4: Schreibe die Vektorstartadresse in ein Vektoradreßregister (VAR) mit einer SETVAR-Anweisung (Skalarverarbeitung).
Schritt 5: Berechne ein Adreßinkrement zwischen den Vektorkomponenten des Vektors B. Bei diesem Beispiel beträgt das Adreßinkrekent 3, da die Vektorkomponenten Adressen aufweisen, die jeweils mit einem Intervall von zwei Adressen angeordnet sind (Skalarverarbeitung).
Schritt 6: Schreibe das Inkrement in ein Vektor-Adreß- Inkrementregister (VAIR) mit einer SETVAIR-Anweisung. (Skalarverarbeitung).
Schritt 7: Hole den Vektor B aus dem Hauptspeicher mit einer LOADVR-Anweisung mit Bezug auf die Inhalte, nämlich den Adressenwert in den Registern VAR, VAIR und die Vektordimension im Register VLR, und lade ihn in ein 0-Vektorregister (VRO). (Vektorverarbeitung)
Schritte 8-11: Führe für den Vektor C die den Schritten 3-6 gleichenden Verarbeitungsschritte aus (Skalarverarbeitung)
Schritt 12: Hole den Vektor C aus dem Hauptspeicher mit einer LOADVR-Anweisung unter Bezug auf die Inhalte der Register VAR, VAIR und VLR und lade ihn in ein 1-Vektorregister (VR 1. (Vektorverarbeitung)
Schritt 13: Addiere die Komponenten der Vektoren B und C, die jeweils in den Vektorregistern VR 0 und VR 1 gespeichert sind, mit einer ADDVR-Anweisung so oft, wie die der im Vektordimensionsregister VLR gespeicherten Vektordimension entsprechende Komponentenzahl angibt und speichere die Ergebnissumme in ein 2-Vektorregister (VR 2). (Vektorverarbeitung)
Schritte 14-17: Führe für den Vektor A die den Schritten 3 bis 6 gleichenden Verarbeitungsschritte aus. (Skalarverarbeitung)
Schritt 18: Speichere den Inhalt des Vektorregisters VR 2 mit einer STOREVR-Anweisung unter Bezug auf die Inhalte der Register VAR, VIR und VLR ab. (Vektorverarbeitung)
Schritt 19: Inkrementiere einen Index I um 1 mit einer Inkrement-Anweisung, vergleiche den inkrementierten Index I mit 100 mit einer COMPARE-Anweisung und fahre mit Schritt 3 mit einer BRANCH-Anweisung fort, falls I nicht größer als 100 ist. (Skalarverarbeitung)
Weiterhin werden die Schritte 3 bis 19 solange wiederholt, bis I den Wert 100 erreicht. Die Vektorstartadresse wird, ausgehend von der Anfangsadresse B (1,1), bis zu den Adressen B (2,1), b (3,1), . . . bei jeder Wiederholung geändert. Dasselbe gilt für die Vektoren C und A.
Bei diesem Beispiel nimmt die skalare Verarbeitungszeit ungefähr 10% der gesamten Verarbeitungszeit ein. Das Verhältnis hängt von der Anzahl der zu verarbeitenden Vektorkomponenten ab. Gewöhnlich reicht die Anzahl der zu verarbeitenden Vektorkomponenten von 10 bis 1000 oder mehr. Dabei ist die Obergrenze der in einer Vektorverarbeitung kontinuierlich zu verarbeitenden Anzahl von Vektorkomponenten gleich der aus einem Vektorregister erhältlichen Anzahl von Vektorkomponenten (das ist die Vektorregisterlänge), und daher muß die Vektorverarbeitung in mehreren Zyklen erfolgen, wenn die Anzahl der zu verarbeitenden Vektorkomponenten größer als die Vektorregisterlänge ist. Wenn beispielsweise die Vektorregisterlänge 64 beträgt, und die Anzahl der Vektorkomponenten 100 ist, ist die Vektorverarbeitung nach zweimaligem Wiederholen des Verarbeitungsablaufs von Fig. 2 (64 Vektorkomponenten im ersten Zyklus und 36 Vektorkomponenten im zweiten Zyklus) abgeschlossen. In diesem Falle beläuft sich das Verhältnis (Überhang) der Skalarverarbeitungszeit zur Gesamtverarbeitungszeit auf 20%. Mit der gegenwärtig erhältlichen Computerhardwaretechnologie kann man im allgemeinen die Verarbeitungsgeschwindigkeit der Skalarverarbeitung oder der Vektorverarbeitung nicht einfach erhöhen. Für die Erhöhung der Verarbeitungsgeschwindigkeit einer Vektorbearbeitung bedeutet dies eine wesentliche Beschränkung. Deshalb ist eine Erhöhung der Vektorverarbeitungsgeschwindigkeit mit der herkömmlichen Technik schwierig.
Aufgabe der vorliegenden Erfindung ist es, einen Vektorprozessor, der die skalare Verarbeitung und die Vektorverarbeitung parallel durchführt, so zu ermöglichen, daß die zwischen der Ausführung der Skalarbefehle und der Vektorbefehle, die ihrerseits bei der Ausführung der Skalarverarbeitung anfallende Ergebnisdaten verwenden, entstehenden Überhangszeiten wesentlich erniedrigt und die Verarbeitungsgeschwindigkeit der Vektorverarbeitungen wesentlich erhöht wird.
Die obige Aufgabe wird bei einer Datenverarbeitungseinrichtung gemäß dem Oberbegriff des Anspruchs 1 erfindungsgemäß durch die in seinem Kennzeichen angeführten Merkmale gelöst.
Die Unteransprüche 2 bis 13 kennzeichnen vorteilhafte Weiterbildungen davon.
Gemäß der vorliegenden Erfindung, können, wie oben beschrieben, die Vektorverarbeitung und die Skalarverarbeitung parallel ausgeführt werden. Durch die Duplizierung der für die Vorbereitung der Vektorverarbeitung verwendeten Register wird die Vorbereitung für die folgende Vektorverarbeitung parallel zur gerade ablaufenden Vektorverarbeitung ermöglicht, so daß der Überhang der Vorbereitung verringert wird. Daraus ergibt sich eine Erhöhung der Vektorverarbeitungsgeschwindigkeit. Weil gewöhnlich mehr als ein Vektoradreßinkrement und Skalardatum für eine Vektorverarbeitung vorbereitet werden müssen, wirkt sich das Duplizieren der für diese Datenverwendeten Register in einer Erhöhung der Vektorverarbeitungsgeschwindigkeit aus.
Ausführungsbeispiele der vorliegenden Erfindung werden im folgenden anhand der Figuren näher beschrieben. Es zeigt:
Fig. 1 eine Art der Vektorverarbeitung;
Fig. 2 ein FORTRAN-Programm der Verarbeitung eines herkömmlichen Vektorprozessors;
Fig. 3 ein Flußdiagramm der Verarbeitung eines herkömmlichen Vektorprozessors;
Fig. 4 einen Gesamtaufbau eines Vektorprozessors gemäß einer ersten Ausführung der Erfindung;
Fig. 5 eine Anordnung einer Skalenverarbeitungseinheit gemäß der ersten Ausführung der Erfindung;
Fig. 6 eine Anordnung einer Vektorverarbeitungseinheit gemäß der ersten Ausführung der Erfindung;
Fig. 7 ein Flußdiagramm der Skalarverarbeitung und der Vektorverarbeitung gemäß der ersten Ausführung der Erfindung;
Fig. 8 eine Anordnung einer Vektorverarbeitungseinheit gemäß einer zweiten Ausführung der Erfindung;
Fig. 9 eine Anordnung einer Skalarverarbeitungseinheit gemäß einer dritten Ausführung der Erfindung; und
Fig. 10 eine Anordnung einer Vektorverarbeitungseinheit gemäß der dritten Ausführung der Erfindung.
Wie die Darstellung in Fig. 4 zeigt, besteht die Datenverarbeitungseinrichtung nach der vorliegenden Erfindung aus einer Skalarverarbeitungseinheit (SPU) U 1, einer Vektorverarbeitungseinheit (VPU) U 2, einem Hauptspeicher (MS) C 3, der für beide Verarbeitungseinheiten gemeinsam ist, und einer Speichersteuereinheit (SCU) C 1. In dem MS C 3 sind eine Skalarbefehlskette zur Verarbeitung in der SPU U 1 und eine Vektorbefehlskette zur Verarbeitung in der VPU U 2, sowie Vektor und Skalardaten gespeichert. Der Zugriff zu diesen Daten geschieht über die SCU C 1. Die SCU C 1 holt auf eine Daten- oder Skalarbefehl- Hol-Anforderung der SPU U 1 eine Date oder einen Skalarbefehl, welche durch eine von der SPU U 1 gelieferte Adresse gekennzeichnet sind, aus dem MS C 3 und liefert sie der SPU U 1. Auf eine Datenspeicheranforderung der SPU U 1 speichert die SCU C 1 eine von der SPU U 1 gelieferte Date in eine Speicherstelle des MS C 3, die durch eine von der SPU U 1 gelieferte Adresse gekennzeichnet ist. In derselben Weise nimmt die SCU C 1 auf eine Daten- oder Vektor-Befehlsholanweisung der VPU U 2 Zugriff zum MS C 3 und liefert geholte Daten oder Vektorbefehle an die VPU U 2. Ebenso speichert die SCU C 1 auf eine Datenspeicheranforderung der VPU U 2 Daten in den MS C 3. Auf diese Weise antwortet die SCU C 1 der vorliegenden Erfindung auf die Zugriffsanforderungen der SPU U 1 und der VPU U 2 getrennt.
Die SPU U 1 enthält ein Skalarbefehlsregister (SIR) R 2, allgemeine Register (GR) R 3, eine Skalar-ALU C 7 und eine Steuerung SC zur Steuerung dieser Teile, und verarbeitet die Skalarbefehlskette im MS C 3. Die Skalarbefehlskette enthält allgemeine Skalarbefehle, wie sie im IBM-Manual "System/370 Principles of Operation" gezeigt werden (GC-22-7000). Nach Maßgabe dieser Befehle werden die Skalardaten im GR R 3 oder dem MS C 3 skalarverarbeitet und das Ergebnis in den GR R 3 oder den MS C 3 gespeichert. Zusätzlich zu den obigen Skalarbefehlen führt die SPU U 1 der vorliegenden Erfindung Skalarbefehle aus, die Anweisung zum Auslesen der zum Betrieb der VPU U 2 nötigen Information aus dem GR R 3 oder dem MS C 3 geben und die Leseinformation an die VPU U 2 liefern und einen Skalarbefehl, der die Anweisung zum Start der VPU U 2 gibt. Die für die durch die VPU U 2 auszuführende Vektorverarbeitung benötigten Skalardaten, die Anzahl der Elemente der Vektordaten (Vektordimension), die der Vektorverarbeitung unterworfen werden, die Adresse der Startkomponente der Vektordaten, und das Adreßinkrement zwischen den Vektorkomponenten werden in Skalarregister (SR) R 8, ein Vektordimensionsregister (VLR) R 4, Vektoradreßregister (VAR) R 6 und Vektoradreßinkrementregister (VAIR) R 7 jeweils geladen, und eine Startadresse der zu verarbeitenden Vektorbefehlskette wird in ein Vektorbefehlsadreßregister (VIAR) R 5 geladen. Wenn die VPU U 2 durch die SPU U 1 gestartet wird, überträgt sie die Inhalte der VAR R 6, der VAIR R 7 und der SR R 8 jeweils an die Arbeitsregister der VAR (WVAR) R 9, die Arbeitsregister der VAIR (WVAIR) R 10 und die Arbeitsregister der SR (WSR) R 11 und holt gesteuert durch eine Vektorbefehlssteuerung VC unter Bezug auf die Arbeitsregister und das VLR R 4 die Vektorbefehlsketten beginnend mit dem durch das VIAR R 5 gekennzeichneten Vektorbefehl aus dem MS C 3 und führt in einer Vektor-ALU C 6 die Vektorverarbeitung unter Bezug auf die Vektorregister (VR) R 13 und die Arbeitsregister R 11 durch.
Nach dem Start der VPU U 2 durch die SPU U 1 führt sie den Skalarbefehl aus, der die für die folgende Vektorverarbeitung benötigten Daten aus dem GR R 3 ausliest, und die Daten in das VAR R 6, das VAIR R 7 und das SR R 8 lädt.
Auf diese Weise führt die SPU U 1, nach dem die VPU U 2 gestartet wurde und die Vektorverarbeitung ausführt, die Skalarverarbeitung für die nächste Vektorverarbeitung parallel aus.
Die Fig. 5 und 6 zeigen Einzelheiten jeweils der SPU U 1 und der VPU U 2. Deren Betrieb wird im einzelnen unter Bezug auf das Flußdiagramm in Fig. 7 im folgenden erläutert. Dabei werden in Fig. 5 die Teile, die den Ablauf gewöhnlicher Skalarbefehle betreffen, zum Zweck der einfacheren Darstellung übergangen.
Von den von der SPU U 1 ausgeführten Skalarbefehlen werden im folgenden sechs Befehle , die sich im einzelnen auf die vorliegende Erfindung beziehen, erklärt. Jeder dieser Befehle enthält ein Operationscodefeld und zwei Felder (R 1, R 2) für Operanden, die das erste und das zweite Register kennzeichnen.
1. Vektorprozessor-Start-(SVP)-Befehl:
Er bewirkt den Start der VPU U 2 und lädt die Vektordimension und die Vektorbefehlsadresse jeweils in das VLR R 4 und das VIAR R 7. Das Feld des Befehls kennzeichnet die Adresse des GR R 3, das die Vektordimension enthält, und das R 2 Feld kennzeichnet die Adresse des GR R 3, das die Adresse des MS C 3 der auszuführenden Vektorbefehlskette enthält.
2. Vektoradreßregister-Setz-(SVAR)-Befehl:
Er bewirkt das Setzen der Startadresse der durch die VPU U 2 zu verarbeitenden Vektordaten in das VAR R 6. Das R 1 Feld des Befehls kennzeichnet die Adresse des VAR R 6, das die zu setzende Adresse enthält, und das R 2 Feld kennzeichnet die Adresse des GR R 3, das die Startadresse der zu verarbeitenden Vektordaten enthält.
3. Vektoradreßinkrementregister-Setz-(SVAIR)-Befehl:
Er bewirkt das Setzen des Adreßinkrements der durch die VPU U 2 zu verarbeitenden Vektorkomponenten in das VAIR R 7. Das R 1 Feld des Befehls kennzeichnet die Adresse des VAIR, in das das Adreßinkrement gesetzt werden soll, und das R 2 Feld kennzeichnet die Adresse des GR R 3, das das zusetzende Vektoradreßinkrement enthält.
4. Skalarregister-Setz-(SSR)-Befehl:
Er bewirkt das Setzen der für die Vektorverarbeitung nötigen Skalardaten in das SR R 8. Das R 1 Feld des Befehls kennzeichnet die Adresse des SR R 8, in das die Skalardaten gesetzt werden, und das R 2 Feld kennzeichnet die Adresse des GR R 3, das die zu setzenden Skalardaten enthält.
5. Skalarregister-Lese-(RSR)-Befehl:
Er bewirkt das Lesen der im vorhergehenden Vektorverarbeitungsgang, z. B. durch die Bildung eines inneren Produkts oder einer Vektorsumme entstandenen Skalardaten durch die SPU U 1 und das Setzen dieser Daten in das GR R 3. Das R 1 Feld des Befehls kennzeichnet die Adresse des SR, aus dem die Skalardaten ausgelesen werden und das R 2 Feld kennzeichnet die Adresse des GR R 3, in das die Skalardaten gesetzt werden.
6. Vektorprozessor-Test-(TVP)Befehl:
Er bewirkt das Prüfen des Zustands der VPU U 2 und das Setzen eines Bedingungscodes. Dabei werden die R 1 und R 2 Felder des Befehls nicht verwendet. Während dem Betrieb der VPU U 2 wird der Bedingungscode auf "1" gesetzt, und wenn sie außer Betrieb ist, wird der Bedingungscode auf "0" gesetzt. Der Bedingungscode wird zur Verzweigung mit einem bedingten Befehl verwendet, wie es in dem IBM manual "System/370 Principles of Operation" (GC-22-7000) beschrieben ist.
Wie die Fig. 5 zeigt, wird eine in einem Skalarbefehlsadreßregister (SIAR) R 1 enthaltene Skalarbefehlsadresse in der SPU U 1 an die SCU C 1 über eine Leitung 50 übertragen, und die SCU C 1 holt den Skalarbefehl aus dem MS C 3 und setzt ihn in das SIR R 2 über eine Leitung 52. Das Operationscodefeld R 21 des Befehls wird durch einen Decodierer L 2 decodiert, so daß eines der Flipflops (FF) F 1-F 6 dem Befehl entsprechend gesetzt wird, und die Ausgänge des FF werden an die Skalarbefehlssteuerung C 2 übertragen und zur Ausführung des Befehls verwendet. Der Inhalt des SIAR R 1 wird durch einen Inkrementierer L 1 um 1 inkrementiert, wodurch der nächste Befehl angezeigt wird, und die inkrementierte Adresse wird wieder in das SIAR R 1 gesetzt. Diese Schrittfolgen werden durch die Skalarbefehlssteuerung C 2 gesteuert, so daß die Befehle nacheinander geholt, in das SIR R 2 gesetzt und abgearbeitet werden. Im folgenden wird der Ablauf der sechs, für die Erfindung wesentlichen Befehle, die oben beschrieben wurden, erklärt, wobei die Erklärung der anderen Befehle hier entfällt. Die FF F 1 bis F 6 werden jeweils durch den SVP-Befehl, den SVAR-Befehl, den SVAIR-Befehl, den SSR-Befehl, den RSP-Befehl und den TVP-Befehl gesetzt.
Um die in Fig. 7 gezeigte Vektorverarbeitung (1) in der VPU U 2 einzuleiten, führt die SPU U 1 die Schritte S 1 bis S 5 aus, um die notwendigen Adressen und Daten bereitzustellen.
Schritt S 1:
Sowie der SSR-Befehl in das SIR R 2 gesetzt ist und dessen Operationscodefeld R 21 vom Decodierer L 2 decodiert ist, wird das FF F 4 gesetzt und dessen Ausgang an die Skalarbefehlssteuerung C 2 über eine Leitung 4 übertragen, so daß der Befehl abgearbeitet wird. Der Inhalt des R 2 Feldes R 23 des SIR R 2 wird an einen Selektor L 5 geliefert, der wiederum die für die Vektorverarbeitung (1) benötigten Skalardaten aus einem der GR R 3, wie es eine auf einer Leitung 6 ausgegebene Anweisung bestimmt, ausliest. Der Inhalt des R 1 Feldes R 22 des SIR R 2 wird an einen Selektor L 7 angelegt, der mit dem FF F 5 über eine Leitung 9 verbunden ist. Wenn das FF F 5 nicht gesetzt ist, wählt der Selektor L 7 den Inhalt des R 1 Feldes R 22, und wenn das FF F 5 gesetzt ist, wählt der Selektor L 7 den Inhalt des R 2 Feldes R 23 und der ausgewählte Inhalt wird auf einer Leitung 5 ausgegeben. Auf diese Weise wählt der Selektor L 7 beim SSR-Befehl die Ausgabe des R 1 Feldes R 22 aus. Daraus ergibt sich, daß die durch den SSR-Befehl angegebene Adresse des SR R 8 an einen Decodierer L 10 (Fig. 6) in der VPU U 2 über die Leitung 5 angelegt wird. Der Ausgang des FF F 4 wird dem Decoder L 10 über die Leitung 4 eingegeben. Da das FF F 4 beim SSR-Befehl gesetzt ist, bewirkt der gesetzte Ausgang des FF F 4 beim Decodierer L 10 das Decodieren der Adresse des SR R 8, die über die Leitung 5 übertragen wird. Für jedes der SR R 8 ist eine ODER-Schaltung L 19 und ein Selektor L 17 vorgesehen. Der Decodierer L 10 sendet ein "1"-Signal an die entsprechende ODER-Schaltung L 19 und den entsprechenden Selektor L 17 des SR R 8, was der gelieferten Adresse des SR R 8, entspricht, damit über die Leitung 6 die Skalardaten im SR R 8 gesetzt werden. Auf das "1"-Signal des Decodierers L 10 bewirkt der entsprechende Selektor L 17 die Auswahl der Skalardaten auf der Leitung 6 und sendet sie an das entsprechende SR R 8. Auf die Ausgabe der ODER-Schaltung L 19 setzt das entsprechende SR R 8 die Eingabedaten des Selektors L 17. In dieser Weise werden die für den Ablauf der Vektorverarbeitung (1) benötigten Skalardaten in dem SR R 8 gesetzt. Der SSR-Befehl wird solange wiederholt, bis alle bereitzustellenden Skalardaten für die Vektorverarbeitung (1) in den SR R 8 gesetzt sind. Dabei bewirkt der mit dem SR R 8 verbundene Selektor L 17 die Auswahl der Ausgabe der Vektor-ALU C 6 oder der Daten auf der Leitung 6 und setzt das ausgewählte SR R 8.
Schritt S 2:
Im SIR R 2 wird der SVAR-Befehl gesetzt und dieser setzt das FF F 2. Der Ausgang des FF F 2 wird an die Skalarbefehlssteuerung C 2 über eine Leitung 2 angelegt und, gesteuert von der Skalarbefehlssteuerung C 2, der Befehl ausgeführt. Der Inhalt des R 2 Feldes R 23 des Befehls wird an eine Wählschaltung oder einen Selektor L 5 geliefert, der ein durch das R 2 Feld R 23 bestimmtes GR R 3 auswählt und dessen Inhalt an das VAR R 6 (Fig. 6) über eine Leitung 6 sendet. Das Datum auf der Leitung 6 ist eine Speicheradresse der für die Vektorverarbeitung (1) nötigen Vektordaten. Das R 1 Feld des Befehls enthält die Adresse des VAR. Wenn dieses durch einen weiteren Selektor L 7 ausgewählt wird, wird es über die Leitung 5 an einen Decoder L 8 (Fig. 6) geliefert. Der Decodierer L 8 wird durch den gesetzten Ausgang des FF F 2 über die Leitung 2 befähigt, die durch das R 1 Feld gegebene Adresse des VAR zu decodieren und die Adresse der Vektordaten auf der Leitung 6 in ein entsprechendes Register innerhalb des VAR R 6 zu setzen. Auf diese Weise wird die Speicheradresse für die bereitzustellenden Vektordaten für die Vektorverarbeitung (1) in ein entsprechendes, innerhalb des VAR R 6 befindliches, Register gesetzt. Der SVAR-Befehl wird solange wiederholt, bis alle für die Vektorverarbeitung (1) bereitzustellenden Speicheradressen für die Vektordaten in das VAR R 6 gesetzt sind.
Schritt S 3:
Im SIR R 2 wird der SVAIR-Befehl gesetzt und durch ihn das FF F 3 gesetzt. Der gesetzte Ausgang des FF F 3 wird der Skalarbefehlssteuerung C 2 über eine Leitung 3 zugeführt, womit die Befehlsausführung gesteuert und ein Decoder L 9 (Fig. 6) angesteuert wird. Das R 2 Feld des Befehls wird an den Selektor L 5 gelegt, der das für die Vektorverarbeitung (1) nötige Adreßinkrement der Vektordaten aus dem GR R 3 ausliest und in das VAIR R 6 (Fig. 6) über die Leitung 6 setzt. Andererseits wird vom Selektor L 7 das R 1 Feld des Befehls ausgewählt und an einen Decoder L 9 (Fig. 6) über die Leitung 5 angelegt. Der Decoder L 9 setzt über die Leitung 6 die Daten im VAIR R 7, das durch die Adresse des VAIR über die Leitung 5 bestimmt wird. Auch dieser Befehl wird so oft wie nötig wiederholt.
Schritt S 4
Sowie das Setzen des VAR R 6, des VAIR R 7 und des SR R 8 erfolgt ist, wird der SVP-Befehl ausgeführt, der der VPU U 2 die Anweisung zum Abarbeiten des Vektorbefehls gibt. Wenn der SVP-Befehl in das SIR R 2 gesetzt ist, wird das FF F 1 gesetzt und dessen "1"-Ausgang wird an die Skalarbefehlssteuerung C 2 und an die VPU U 2 über die Signalleitung 1 geliefert. Wenn zu dieser Zeit die VPU U 2 in Betrieb ist, erscheint auf einer Signalleitung 14 ein "1"-Signal, das den EIN-Betrieb anzeigt. Dieses Signal sperrt eine UND-Schaltung L 23 und verhindert, daß der Ausgang des FF F 1 an die VPU U 2 geliefert wird. Aufgrund des gesetzten Ausgangs des FF F 1, der von einer ODER-Schaltung L 22 über eine Leitung 20 anliegt, wird der Inhalt der Signalleitung 14 in das FF F 7 gesetzt. Der SVP-Befehl bewirkt als Ergebnis das Setzen des FF F 7 auf "1", falls die VPU U 2 in Betrieb ist und auf "0", falls die VPU U 2 nicht in Betrieb ist. Die ersten und zweiten Registeradreßfelder R 22 und R 23 des SIR R 2 werden jeweils an die Selektoren L 4 und L 5 geliefert, die die Ausgänge der GR R 3 auswählen. Diese Selektoren lesen die Vektordimension und die Vektorbefehlsstartadresse, wie sie durch die entsprechenden Felder bestimmt sind, aus einem der GR R 3 Register aus und senden sie an die VPU U 2 jeweils über die Signalleitungen 7 und 6. Falls zu dieser Zeit die VPU U 2 in Fig. 6 nicht in Betrieb ist, bewirkt die VPU U 2 auf ein Signal von der Signalleitung 1 hin, das anzeigt, daß der SVP-Befehl ausgeführt wurde, daß die folgende Operation durchgeführt wird. Zunächst bewirkt das VLR R 4 auf das Signal von der Leitung 1 hin, das Speichern der Vektordimension des zu verarbeitenden Vektors über die Signalleitung 7. Der Selektor L 21 reagiert auf das "1"-Signal auf der Leitung 7. Der Selektor L 21 reagiert auf das "1"-Signal auf der Leitung 1 mit der Auswahl der Vektorbefehlsstartadresse auf der Signalleitung 6 und das VIAR R 5 reagiert auf das Signal der Leitung 1 mit dem Speichern der ausgewählten Adresse. Die Vektoradreßarbeitsregister WVAR R 9 reagieren auf das "1"-Signal der Leitung 1 mit dem Empfang (Kopie) der Inhalte aller VAR R 6. Zu diesem Zwecke ist jedes der WVAR und das entsprechende der VAR R 6 mit der Leitung 1 verbunden und reagieren auf das "1"-Signal der Leitung 1 mit dem Einspeichern des Inhaltes des entsprechenden VAR R 6. Die Vektoradreßinkrementarbeitsregister WVAIR R 10 sind mit der Leitung 1 und den VAIR R 7 in derselben Weise verbunden, so daß jedes der WVAIR R 10 auf das "1"-Signal der Signalleitung 1 mit dem Empfang (Kopie) des Inhalts des entsprechenden VAIR R 7 reagiert. In derselben Weise kopieren die Skalararbeitsregister WSR R 11 den Inhalt der SR R 8. Damit das Signal über die Ausgangsleitung 10 von der Vektor-ALU C 6 der VPU U 2 zu den WSR R 11, sowie den SR R 8 geliefert wird, sind die Selektoren L 18 zur Auswahl der Ausgangsleitung der SR R 8 und der Ausgangsleitung 10 der Vektor ALU C 6 mit den Eingangsanschlüssen der WSR R 11 verbunden. Auf den Ausgang einer entsprechenden ODER-Schaltung L 20 reagiert jedes der WSR R 11 mit dem Einspeichern des Ausgangs des entsprechenden Selektors L 18. Die Signalleitung 1 ist mit der ODER-Schaltung L 20 verbunden. Demgemäß wird beim Auftreten einer "1" auf der Signalleitung 1 in jedem der WSR R 11 der Inhalt des entsprechenden SR R 8 gespeichert. Natürlich ist die Anzahl der WVAR R 9, der WVAIR R 10 und der WSR R 11 Register gleich der jeweiligen Registeranzahl der VAR R 6, der VAIR R 7 und der SR R 8. Die Signalleitung 1 ist auch zum Setzen mit dem FF F 10 verbunden und dessen gesetzter Ausgang wird an die Vektorbefehlssteuerung C 4 gelegt, womit die Anweisung zum Ausführungsbeginn der Vektorverarbeitung gegeben wird.
Die obige Beschreibung macht deutlich, daß durch die Ausführung des SVP-Befehls von der SPU U 1 in dem VLR R 4 die Vektordimension, im VIAR R 5 die Startadresse der Vektorbefehlskette gesetzt werden und die Inhalte der VAR R 6, der VAIRR 7 und der SR R 8 jeweils in die WVAR R 9, die WVAIR R 10 und die WSR R 11 kopiert werden. Auf diese Weise wird der Vektorbefehlsablauf (1) für den Start vorbereitet.
Falls die VPU U 2 in Betrieb ist, wenn der SVP-Befehl decodiert wird, wird das FF F 7 auf "1" gesetzt und keine anderen Abläufe ausgeführt.
Schritt S 5:
Die SPU U 1 verzweigt aufgrund eines bedingten Befehls, und prüft, ob die VPU U 2 durch den SVP-Befehl gestartet wurde. Wenn die aufgrund des bedingten Befehls erfolgte Verzweigung vom Decoder L 2 decodiert ist, prüft die Skalarbefehlssteuerung C 2 die den Bedingungscode anzeigende Ausgabe des FF F 7 über die Leitung 18, womit entschieden wird, ob der Befehl ausgeführt werden soll. Wie bereits beim Schritt S 4 beschrieben, zeigt der "1" Ausgang des FF F 7 an, daß die VPU U 2 bei der Decodierung des SVP-Befehls in Betrieb ist und daher kein Starten durch den SVP-Befehl erreicht wurde. Deshalb führt bei einer "1" Ausgabe des FF F 7 die Skalarbefehlssteuerung den vorigen SVP-Befehl noch einmal aus. Wenn der Ausgang des FF F 7 "0" ist, steuert die Skalarbefehlssteuerung C 2 den Inhalt des SIAR R 1 so, daß eine Verzweigung zum nächsten Skalarbefehlsablauf erfolgt. Eine in der SPU U 1 enthaltene Schaltung zur Ausführung des Verzweigungsbefehls wird zum Zweck der einfacheren Darstellung nicht gezeigt, kann jedoch in einer bekannten Technik ausgeführt werden.
Schritte S 6-S 12:
Wenn die SPU U 1 den erfolgreichen Start der VPU U 2 durch die Ausführung des bedingten Verzweigungsbefehls feststellt, führt die SPU U 1 die Befehlsschritte S 7 bis S 8 zum Setzen der für die Ausführung der folgenden Vektorverarbeitung (2) benötigten Skalardaten, Vektoradressen und Vektoradreßinkremente jeweils in die SR R 8, die VAR R 6 und die VAIR R 7, in gleicher Weise wie die Schritte S 1 bis S 3, aus. Da die Inhalte der SR R 8, der VAR R 6 und der VAIR R 7 jeweils in die WSR R 11, die WVAR R 9 und die WVAIR R 10 mit dem vorausgegangenen SVP-Befehl gerettet wurden, kann die SPU U 1 nach Vollendung des Schritts S 8 die Skalarverarbeitung parallel mit der Ausführung der Vektorverarbeitung (1) durchführen. Dabei führt die SPU U 1 den SVP-Befehl in derselben, oben beschriebenen Weise aus und führt dann den bedingten Verzweigungsbefehl (Schritt S 10) aus. Falls die SPU U 1 den, aufgrund der bereits in Betrieb befindlichen VPU U 1, erfolgten Fehlstart feststellt, führt sie aufs neue den SVP-Befehl und den bedingten Verzweigungsbefehl (Schritte S 11 und S 12) aus, und falls sie den erfolgreichen Start feststellt, fährt sie mit dem nächsten Schritt fort.
Im folgenden wird der Betrieb der VPU U 2 erklärt. Die VPU U 2 ist zur Ausführung der im Flußdiagramm in Fig. 3 gezeigten und anderer Befehle fähig. In der folgenden Beschreibung werden lediglich die zum Verständnis der Erfindung notwendigen Befehle und die zu ihrer Ausführung von der VPU U 2 ausgeführten Operationen erklärt.
Schritt V 11:
Bei der Ausführung des SVP-Befehls durch die SPU U 1, wird durch das "1"-Signal auf der Leitung 1 das FF F 10 der VPU U 2 gesetzt und der "1"-Ausgang des FF F 10 startet den Betrieb der Vektorbefehlssteuerung C 4. Der Ausgang des FF F 10 wird über die Leitung 14 an die SPU U 1 gesendet, womit dieser mitgeteilt wird, daß die VPU U 2 in Betrieb ist. Sowie die Vektorbefehlssteuerung C 4 gestartet wurde, wird die vorher im VIAR R 5 gesetzte Vektorbefehlsadresse der SCU C 1 über eine Leitung 80 gesendet. Aufgrund der Vektorbefehlsadresse wird der erste Befehl der Vektorbefehlskette im MS C 3 geholt und in das VIR R 12 über die SCU C 1 und die Leitung 82 gesetzt. Die Vektorbefehlssteuerung C 4 weist zur Decodierung des im VIR R 12 gesetzten Befehls und zu dessen Ablaufsteuerung eine bekannte Schaltung auf. Sowie der LOADVR- Befehl im VIR R 12 gesetzt ist, sendet die Vektorbefehlssteuerung C 4 die im VLR R 4 gespeicherte Vektordimension und die durch den Befehl gekennzeichnete Adresse des VAR über die Leitung 78 an eine Vektorzugriffssteuerung C 5, um diese zu starten. Die Vektorzugriffssteuerung C 5 wiederum steuert zum Auslesen der Startadresse der Vektordaten (z. B. die Speicheradresse der Startkomponente B (1) der Vektordaten B) aus dem durch die VAR-Adresse über die Leitung 15 gekennzeichneten WVAR R 9 den Selektor L 11 und den Selektor L 12 zum Auslesen des Vektordatenadreßinkrements auf dem durch die VAR-Adresse über die Leitung 16 gekennzeichneten WVAIR R 10 und stellt aufgrund dieser Lesedaten Hauptspeicheradressen zum Holen der gekennzeichneten Vektordimension der Vektordaten B für die SCU C 1 über die Leitung 84 bereit. Dies bewirkt, daß die Komponenten der Vektordaten B über die Leitung 88 sequentiell ausgelesen werden. Andererseits setzt die Vektorbefehlssteuerung C 4 in das durch den LOADVR-Befehl gekennzeichneten VR R 13 über die Leitung 90 die gelesenen Vektordaten B. Der LOAVDR-Befehl wird solange wiederholt, bis alle für die Vektorverarbeitung (1) benötigten Vektordaten in das VR R 13 gesetzt sind. Auf solche Weise werden die Vektordaten, beispielsweise A und B in das VR R 13 gesetzt.
Die Vektorbefehlssteuerung C 4 setzt wiederholt die folgende Befehlsadresse, die durch den Inkrementierer C 9 über den Selektor L 21 im VIAR R 5 bereitgestellt wird. Daraus folgt, daß die im VIAR R 5 fortgeschriebene Adresse sequentiell der SCU C 1 über die Leitung 80 gesendet und daß der Vektorbefehl aus dem MS C 3 sequentiell geholt und in das VIR R 12 gesetzt wird. Die Vektorbefehlskette wird in dieser Weise abgearbeitet. Wenn der Vektorverarbeitungsbefehl, beispielsweise ADDVR-Befehl, in das VIR R 12 gesetzt wird, steuert die Vektorbefehlssteuerung C 4 die Selektoren L 16, L 27 und L 28 in bekannter Weise so, daß sie die beiden durch den Befehl gekennzeichneten Vektoren, beispielsweise A und B aus den Vektorregistern VR R 13 Komponente für Komponente auslesen und sie der Vektor-ALU C 6 zusenden.
Schritt V 12:
Die Vektor-ALU C 6 führt die Operationen für die Komponenten der Eingabevektordaten in bekannter Vektorverarbeitung aus.
Schritt V 13:
Sobald das Ergebnis der Vektoroperation festliegt, speichert die Vektorbefehlssteuerung C 4 das Ergebnis in dem durch den Befehl gekennzeichneten VR R 13 in bekannter Weise ab.
Dabei wird die Verarbeitung einer Vektorkomponente i der Vektordaten und das Abspeichern des Verarbeitungsergebnisses der vorigen Komponente (i-1) parallel durchgeführt.
Sobald der STORE VR-Befehl ausgeführt ist, erzeugt die Vektorzugriffssteuerung C 5 für die jeweiligen Komponenten die Adressen des MS C 3, an denen die Vektorkomponenten abgespeichert werden, unter Bezug auf das WVAR R 9 und das WVAIR R 10, und führt diese Adressen dem MS C 3 über die Leitung 84 und die SCU C 1 zu. Der abzuspeichernde Vektor wird Komponente für Komponente aus dem VR R 13 sequentiell ausgelesen und dem MS C 3 über den Selektor L 16, die Leitung 86 und die SCU C 1 zugeführt und diese im MS C 3 unter Bezug auf die von der Vektorzugriffssteuerung C 5 gelieferten Adressen abgespeichert.
Schritt V 14:
Die Vektorbefehlssteuerung C 4 weist eine bekannte (nicht gezeigte) Schaltung auf, die das Beendigen der Verarbeitung des letzten Vektorbefehls der Vektorbefehlskette feststellt, und eine (nicht gezeigte) Schaltung, die mittels des Ausgangs der Prüfschaltung über die Leitung 92 das FF F 10 rücksetzt. Demnach wird nach erfolgter Ausführung der Vektorbefehlskette das FF F 10 zurückgesetzt und dessen Ausgang an die SPU U 1 über die Leitung 14 gesendet. Deshalb wird die Vektorverarbeitung (1) beendet und die VPU U 2 befindet sich außer Betrieb. Bedingt durch die Ausführung des SVP-Befehls in der SPU U 1 (Schritt S 11) werden die für die nächsten Vektorverarbeitung (2) benötigten Daten in die VAR R 6, VAIR R 7 und SR R 8 der VPU U 2 gesetzt.
Schritte V 21 und V 22:
Falls die aufs neue gestartete Vektorverarbeitung (2) die Skalardaten im WSR R 11 und die Vektordaten im VR R 13 verwendet, steuert die Vektorbefehlssteuerung C 4 die Selektoren L 13 und L 27 so, daß sie die Skalardaten aus dem durch den decodierten Befehl gekennzeichneten WSR R 11 auslesen und sie der Vektor-ALU C 6 zusenden und die Selektoren L 16 und L 28 so, daß sie die Vektordaten aus dem durch den decodierten Befehl gekennzeichneten VR R 13 auslesen und sie an die Vektor ALU C 6 senden. Auf diese Weise wird die Verarbeitung der Skalar- und der Vektordaten durchgeführt. Falls die Vektorverarbeitung (2) für die Skalaroperationen lediglich Skalardaten verwendet, werden mittels des Selektors L 13 zwei Skalardaten ausgelesen und an die Vektor-ALU C 6 kann auch die Skalaroperation ausführen.
Schritte V 23 und V 24:
Falls der in den Schritten V 21 und V 22 ausgeführte Befehl lediglich Skalardaten erzeugt, beispielsweise ein Befehl zur Berechnung eines inneren Vektorprodukts, sendet die Vektorbefehlssteuerung C 4 die durch den Befehl gekennzeichnete Skalarregisteradresse an den Decodierer L 14 über die Leitung 11 und über die Leitung 12 ein Signal zum Start des Decodierers L 14. Die hierfür dienende Schaltung ist aus Vereinfachungsgründen nicht dargestellt. Der Decodierer L 14 sendet ein "1"-Signal an eine der ODER-Schaltungen L 20, von denen eine für jedes der WSR R 11, das der Eingabeskalarregisteradresse entspricht, vorgesehen ist. Die Steuersignale für die mit den WSR R 11 verbundenen Selektoren L 18 werden über die Leitung 1 ausgegeben. Wie bereits beschrieben, befindet sich während des Betriebs der VPU U 2 das Signal auf der Leitung 1 im "0"-Zustand und die Selektoren L 18 wählen die Daten auf der Ausgangsleitung 10 der Vektor-ALU C 6 aus und liefern sie an die entsprechenden WSR R 11. Somit werden die durch die Verarbeitung sich ergebenden Skalardaten in das durch die Registeradresse des Befehls gekennzeichnete WSR R 11 gespeichert. Bei der vorliegenden Erfindung werden die Skalardaten sowohl im WSR R 11 als auch im SR R 8 gesetzt, wie nachfolgend beschrieben ist:
Die Ausgangsleitungen des Decodierers L 14 sind mit den entsprechenden ODER-Schaltungen L 19 verbunden. Somit wird das "1"-Signal an dasjenige SR R 8 geliefert, das der durch den Befehl gekennzeichneten Skalaradresse entspricht. Die Steuersignale für die mit den Eingangsanschlüssen der entsprechenden SR R 8 verbundenen Selektoren L 17 bilden die vom Decodierer L 10 erzeugten Signale, die während des Betriebes der VPU U 2 sich im "0"-Zustand befinden. Somit wählen die Selektoren L 17 die Daten auf der Ausgangsleitung 10 der Vektor-ALU C 6 aus. Auf diese Weise werden die sich aufgrund der Verarbeitung ergebenden Skalardaten in dasjenige SR R 8 gespeichert, das der durch den Befehl gekennzeichneten Skalarregisteradresse entspricht.
Die Skalardaten werden deshalb im WSR R 11 gespeichert, damit ein Ablauf möglich ist, der die Skalardaten bei der Vektorverarbeitung (2) benötigt. Dieselben Skalardaten werden auch in das SR R 8 gespeichert, damit die aus der Vektorverarbeitung (2) sich ergebenden Skalardaten in einer weiteren Vektorverarbeitung erhältlich sind. Sobald die folgende Vektorverarbeitung beginnt, wird, wie oben beschrieben, der Inhalt des SR R 8 in das WSR R 11 überschrieben, so daß die in das SR R 8 geschriebenen Daten für eine weitere Vektorverarbeitung zur Verfügung stehen. Nach erfolgtem Abspeichern der Skalardaten führt die Vektorbefehlssteuerung C 4 den gleichen Endschritt wie Schritt V 14 aus. Somit ist die Vektorverarbeitung (2) beendet.
Schritte S 13-S 18:
Falls die SPU U 1, nachdem sie die Vektorverarbeitung (2) begonnen hat, sich auf die angefallenen Skalardaten beziehen möchte, führt sie den TVP-Befehl aus, mit dem geprüft wird, ob die VPU U 2 in Betrieb ist oder nicht.
Nach Fig. 5 wird nach dem Setzen im SIR R 2 der TVP-Befehl durch den Decodierer L 2 decodiert und das FF F 6 gesetzt. Der Ausgang des FF F 6 wird an die Skalarbefehlssteuerung C 2 über die Leitung 19 und an das FF F 7 über die ODER-Schaltung L 22 und die Leitung 20 zum Setzen des FF F 7 geliefert. Der Dateneingangsanschluß des FF F 7 ist mit der Signalleitung 14, die den Betriebszustand der Vektorverarbeitung der VPU U 2 anzeigt, verbunden. Sobald die Vektorverarbeitung begonnen hat, wird das FF F 7 in den Zustand "1" und wenn kein Betrieb ist, in den Zustand "0" gesetzt. Das FF F 7 bildet einen Teil des Bedingungscodes und dessen Ausgang wird der Skalarbefehlssteuerung C 2 über die Leitung 18 gesendet (Schritt S12).
Sodann wird der bedingte Verzweigungsbefehl in das SIR R 2 geladen und der Zustand ("1" oder "0") des Ausgangs des FF F 7 untersucht (Schritt S 14). Falls der Ausgang des FF F 7 im Zustand "1" ist, werden der TVP-Befehl und der bedingte Verzweigungsbefehl wiederholt ausgeführt (Schritte S 13 bis S 19).
Schritt S 19:
Wenn nach Beendigung der Vektorverarbeitung (2) das FF F 7 im Zustand "0" ist, wird angezeigt, daß die Verzweigung erfolgt ist und der RSR-Befehl ausgeführt.
Aus Fig. 5 ist ersichtlich, daß der RSR-Befehl nach dem Setzen im SIR R 2 decodiert und das FF F 5 gesetzt wird. Der Ausgang des FF F 5 wird über die Leitung 9 an die Skalarbefehlssteuerung C 2 gesendet und liegt am Steuereingang des Selektors L 7 an. Da das Signal auf der Signalleitung 9 im Zustand "1" ist, wählt der Selektor L 7 den Inhalt des zweiten Registerfeldes R 23 des SIR R 2 aus und sendet ihn über die Signalleitung 5 an die VPU U 2. Wie bei der VPU U 2 in Fig. 6 gezeigt, ist die Signalleitung 5 mit einer als ausgebildeten Steuervorrichtung L 15 verbunden. Der Selektor L 15 wählt den Ausgang des durch den Befehl gekennzeichneten Registers SR R 8 aus und sendet ihn über die Signalleitung 8 an die SPU U 1. In der in Fig. 5 gezeigten SPU U 1 werden die Daten auf der Signalleitung 8 an das GR R 3 über den Selektor L 0 geliefert, der die Ausgangsleitung 13 der Skalar-ALU C 7 der SPU U 1 oder die mit dem SR R 8 verbundene Datenleitung 8 abhängig vom Ausgangszustand des FF F 5 "0" oder "1" auswählt. In diesem Beispiel wir die Datenleitung 8 ausgewählt. Der Decodierer L 3 decodiert den Inhalt des ersten Registerfeldes R 22 des SIR R 2, womit eines der GR R 3, in das die Daten geladen werden, bestimmt wird. Falls das Signal auf der Signalleitung 9 den Zustand "1" besitzt, wird der Decoder L 3 aktiviert, so daß er an das durch den Befehl gekennzeichnete GR R 3 ein Schreibsignal sendet. In diesem Beispiel werden die auf der Datenleitung 8 übertragenen Skalardaten geladen. Wenn die Skalarverarbeitungsschritte S 1 bis S 19 zum Start der Vektorverarbeitung beendet sind, kann die SPU U 1 eine gewöhnliche Skalarverarbeitung S 20 ausführen.
Bei der oben beschriebenen Ausführung der Erfindung kollidieren die Ladevorgänge in das SR, falls gleichzeitig von der VPU U 2 Daten in das SR- und das WSR-Register und von der SPU U 1 mit dem SSR-Befehl während dem Betrieb der VPU U 2 Daten in dasselbe SR-Register geladen werden. Falls zuerst von der SPU U 1 beim Datenaufbau das SR geladen wird, bleibt das Ergebnis der VPU U 2 im SR, und falls zuerst die Skalarergebnisse von der VPU U 2 in das SR geladen werden, bleiben die Aufbaudaten im SR. Anders gesagt, dürfen sich in diesem Fall die Vektor- und die Skalarverarbeitung nicht überlappen. Deshalb muß man zuerst die Verarbeitung der VPU U 2 beenden, das Ergebnis auslesen, die Daten bereitstellen und dann die Vektorverarbeitung aufs neue starten.
Im folgenden wird eine zweite Ausführung der Erfindung beschrieben, die das obige Problem vermeidet und wo der Datenaufbau und die Vektorverarbeitung mit demselben Register möglich ist.
Bei der zweiten Ausführung der Erfindung wird eine in der Fig. 8 dargestellte VPU verwendet. Der Unterschied zu der in Fig. 6 gezeigten VPU U 2 besteht darin, daß eine Steuervorrichtung, die als Selektor L 15 A ausgebildet ist, zur Auswahl des Ausgangs des WSR R 11 vorgesehen ist, daß der Ausgang des Selektors L 15 A über die Leitung 8 an der SPU U 1 anliegt und daß der Ausgang der Vektor ALU C 6 nicht an das SR R 8 angelegt ist.
Im folgenden werden nur die Unterschiede des Betriebs genau erklärt.
Die Skalardaten auf der Leitung 6 werden in derselben Weise wie bei der ersten Ausführung der Erfindung im Register SR R 8 gesetzt. Da jedoch der Ausgang der Vektor-ALU C 6 nicht am SR R 8 in Fig. 8 anliegt, ist die Auswahl durch den Selektor L 16 in Fig. 6 unnötig. Bei der Ausführung des SVP-Befehls werden die Daten aus dem SR R 8 in das WSR R 11 in derselben Weise wie bei der ersten Ausführung der Erfindung überführt. In den Schritten V 23 und V 24 wird der Ausgang der Vektor-ALU C 6 in derselben Weise wie bei der ersten Ausführung der Erfindung in das WSR R 11 gesetzt. Wenn im Schritt S 19 die von der VPU U 2 erzeugten Skalardaten mit dem RSR-Befehl ausgelesen werden, wählt der Selektor 16 A den Ausgang des durch die Registeradresse gekennzeichneten WSR R 11 auf der Leitung 5 aus und sendet ihn über die Leitung 8 an die SPU U 1.
Da das SR R 8 lediglich zum Laden der Daten der SPU U 1 verwendet wird, kann das Laden der Daten in das SR R 8 und das Laden des Ausgangs der Vektor-ALU C 6 in das WSR R 11 parallel ausgeführt werden.
Bei den beiden oben beschriebenen Ausführungen der Erfindung holt die SPU U 1 aus dem MS C 3 die in der VPU U 2 zu setzenden Daten, bevor diese darin gesetzt werden, speichert sie in das GR R 3 und liest die gespeicherten Daten von dem GR R 3 aus und setzt diese entsprechend dem Datensetzbefehl in der VPU U 2. Die Vorbereitungsgeschwindigkeit kann erhöht werden, wenn man den Befehl so verändert, daß der Datensetzbefehl das Holen der in der VPU U 2 zu setzenden Daten aus dem MS C 3 bewirkt und indem man die SPU U 1 so verändert, daß sie die aus dem MS C 3 geholten Daten direkt an die VPU U 2 ohne den Umweg über das GR R 3 aufgrund des Datensetzbefehls zugehen, sendet.
Im folgenden wird eine dritte Ausführung der Erfindung beschrieben, bei der zur Realisierung der obigen Verbesserung die erste Ausführung der Erfindung abgewandelt ist.
Bei der dritten Ausführung der Erfindung erhält das R 2 Feld des Befehls eine Adresse des MS C 3, bei der die als Operand zu verwendenden Daten gespeichert sind. Zum Beispiel enthalten die R 2 Felder des SVP-, des SVAR-, des SVAIR-, des SSR- und des RSR- Befehls jeweils die Adresse der Vektorbefehlskette, die Adresse, bei der die Startadresse der Vektordaten gespeichert ist, die Adresse, bei der das Adreßinkrement gespeichert ist, die Adresse, unter der die Skalardaten gelesen werden sollen, und die Adresse, an der die Skalardaten gespeichert werden sollen. In diesem Zusammenhang ist eine Signalleitung 6 vorgesehen, um den Inhalt des Feldes R 23 des SIR R 2 von der SPU 1 an die SCU C 1 zu senden. Die Signalleitung 6 ist ebenfalls mit einem Selektor L 21 verbunden (Fig. 10). Die SCU C 1 reagiert auf die Adresse auf der Leitung 6, indem sie die Daten aus dem MS C 3 holt und sie an das VAR R 6, das VAIR R 7 und das SR R 8 in der VPU U 2 über die Leitung 94 sendet. Die Skalardaten werden über die Leitung 8 vom SR R 8 an die SCU C 1 gesendet. Die Unterschiede zur ersten Ausführung der Erfindung werden im folgenden genau erklärt:
Schritt S 1:
Wenn der SSR-Befehl im SIR R 2 der SPU U 1 gesetzt ist (Fig. 9), wird der Inhalt des Feldes R 23 über die Leitung 6 an die SCU C 1 gesendet und diese holt die durch die Adresse auf der Leitung 6 gekennzeichneten Skalardaten aus dem MS C 3 auf der Leitung 94 von der VPU U 2 (Fig. 10). Der Inhalt des Feldes R 22 des SIR R 2 wird an den Decodierer L 10 der VPU U 2 (Fig. 10) über die Leitung 5 geführt und wird zum Setzen der Daten über die Leitung 94 im SR R 8 verwendet.
Schritt S 2:
Aufgrund des Feldes R 23 im SVAR-Befehl im SIR R 2 wird die für die Vektorverarbeitung (1) benötigte Vektordatenadresse aus dem MS C 3 über die Leitung 94 geholt und in das VAR R 6, gesteuert vom Decoder L 8, an den das Feld R 22 des SIR R 2 über die Leitung 5 angelegt ist, eingespeichert.
Schritt S 3:
Beim SVAIR-Befehl wird das Vektoradreßinkrement im VAIR R 7 in der gleichen Weise wie bei den Schritten S 1 und S 2 gesetzt.
Schritt S 4:
Der Inhalt des Feldes R 23 des SVP-Befehls wird über die Leitung 6 an den Selektor L 21 angelegt und im VIAR R 5 gesetzt.
Schritt S 19:
Der Inhalt des Feldes R 22 des im SIR R 2 gesetzten RSR-Befehls wird an den Selektor L 15 (Fig. 10) über die Leitung 5 angelegt. Der Selektor L 15 wählt das durch das Signal auf der Leitung 5 gekennzeichnete SR R 8 aus und sendet es über die Signalleitung 8 an die SCU C 1. Der Inhalt des zweiten Feldes R 23 des SIR R 2 wird über die Leitung 6 an die SCU C 1 gesendet und die SCU C 1 reagiert auf die Adresse des Feldes R 23 mit dem Speichern der Daten in das MS C 3 über die Leitung 8. Somit werden die für die Vektorverarbeitung benötigten Daten durch einen Befehl aus dem MS C 3 geholt und in der VPU U 2 gesetzt.
Bei den oben beschrieben ersten bis dritten Ausführungen der Erfindung sind das VLR R 4 und das VIAR R 5 nicht dupliziert, da die darin zu setzenden Daten nur von einem SVP-Befehl vorbereitet werden können und die Vorbereitungszeit kurz ist. Jedoch können zur Erhöhung der Verarbeitungsgeschwindigkeit diese Register dupliziert sein. Insbesondere kann man für diese Daten zusäztliche Register und einen zusätzlichen Befehl vorsehen, wobei der zusätzliche Befehl vor der Ausführung des SVP-Befehls zum Auslesen der Vektordimension und der Vektorbefehlsadresse aus den GR R 3 der SPU U 1, um sie in den zusätzlichen Registern der VPU U 2 zu setzen, ausgeführt wird. Danach wird der SVP-Befehl ausgeführt. Es ist in diesem Fall unnötig, daß der SVP-Befehl die Vektordimension und die Vektorbefehlsadresse aus den GR R 3 ausliest.
Bei den oben beschriebenen Ausführungen der Erfindung kann man einen (nicht gezeigten) Zähler, der die Verarbeitungszeit der VPU U 2 zählt, duplizieren, so daß die SPU U 1 einen dieser Zähler auf eine vorbestimmte Zeit setzt und die VPU U 2 während ihres Betriebs den anderen Zähler herunterzählt, wobei die VPU U 2 ihren Betrieb beendet, wenn ihre Verarbeitungszeit eine vorbestimmte Zeit erreicht. Die SPU U 1 kann während des Betriebes der VPU U 2 die folgende Vektorverarbeitungszeit bestimmen.

Claims (14)

1. Datenverarbeitungseinrichtung mit getrennten Einrichtungen zur Verarbeitung von Skalar- und Vektordaten, mit
  • a) einem Hauptspeicher (C 3), der Vektor- und Skalardaten, Vektorbefehle und Skalarbefehle speichert:
  • b) einer Verarbeitungseinheit, die aufweist:
    • - eine Befehlsausleseschaltung (C 1), die aus dem Hauptspeicher (C 3) Skalarbefehle und Vetorbefehle holt,
    • - eine Skalarbefehlsausführungseinrichtung (C 2, C 7), die die durch die Befehlsausleseschaltung (C 1) geholten Skalarbefehle ausführt und
    • - eine Vektorbefehlsausführungseinrichtung (C 4, C 6), die die von der Befehlsausleseschaltung (C 1) geholten Vektorbefehle parallel zu den von der Skalarbefehlsausführungseinrichtung (C 2, C 7) ausgeführten Skalarbefehlen ausführt,
dadurch gekennzeichnet, daß
  • c) der Hauptspeicher (C 3) die Skalarbefehle als Befehlsketten getrennt von den ebenfalls als Befehlsketten gespeicherten Vektorbefehlen so speichert, daß Skalarbefehle und Vektorbefehle getrennt ausgelesen werden,
  • d) die Verarbeitungseinheit eine Skalarverarbeitungseinheit (U 1) und eine Vektorverarbeitungseinheit (U 2) enthält, wobei
    die Skalarverarbeitungseinheit (U 1) eine Skalarbefehlsausleseschaltung (R 1, R 2) aufweist, die die Skalarbefehle aufeinanderfolgend holt, worauf die Skalarbefehlsausführungseinrichtung (C 2, C 7) die geholten Skalarbefehle ausführt, und
    die Vektorverarbeitungseinheit (U 2) eine Vektorbefehlsausleseschaltung (R 5, R 12) enthält, die parallel zur Skalarbefehlsausleseschaltung (R 1, R 2) arbeitet und die Vektorbefehle sequentiell holt, worauf die Vektorbefehlsausführungseinrichtung (C 4, C 6) parallel zur Skalarbefehlsausführungseinrichtung (C 2, C 7) die geholten Vektorbefehle ausführt;
  • e) die Vektorverarbeitungseinheit (U 2) eine Meldevorrichtung (14, F 10) aufweist, die der Skalarverarbeitungseinheit (U 1) das Ausführungsende der gerade ausgeführten Vektorbefehlskette meldet; und
  • f) die Skalarverarbeitungseinheit (U 1) aufweist: eine Datenversorgungseinrichtung (F 1, F 2, F 3, R 3, L 4, L 5, L 7), die nach Maßgabe eines Skalarbefehls Daten, die als Ergebnis der Ausführung von Befehlen einer Skalarbefehlskette, die parallel zu einer gerade ausgeführten Vektorbefehlskette durchgeführt wird, anfallen, der Vektorverarbeitungseinheit (U 2) zuführt, um diese Daten der nächsten, der gerade ausgeführten Vektorbefehlskette folgenden, Vektorbefehlskette während der Ausführung der laufenden Vektorbefehlskette zur Verfügung zu stellen, und eine Startvorrichtung (1, L 23), die auf das Meldesignal der Meldevorrichtung (14, F 10) und auf einen Skalarbefehl, der nach der Ausführung der Skalarbefehle, die die der Vektorverarbeitungseinheit (U 2) zugeführten Daten erzeugen, ausgeführt wird, anspricht und der Vektorverarbeitungseinheit (U 2 den Start für die Verarbeitung des nächsten Vektorelements befiehlt,
  • g) die Datenversorgungseinrichtung (F 1, F 2, F 3, R 3, L 4, L 5, L 7) aufweist:
    eine Vorrichtung (F 2, R 2, R 3, L 5, L 7, 6), die eine Hauptspeicheradresse der zur Ausführung der folgenden Vektorbefehlskette nötigen Vektordaten der Vektorverarbeitungseinheit (U 2) zur Verfügung stellt,
    eine Vorrichtung (F 3, R 3, L 5, L 7, 6), die ein Adreßinkrement liefert, das die Differenz der Adressen zweier aufeinanderfolgender, für die Ausführung der folgenden Vektorbefehlskette verwendeter Vektordaten im Hauptspeicher (C 3) darstellt,
    eine Vorrichtung (F 1, R 3, L 5, 6), die der Vektorbefehlsausführungseinrichtung (C 4, C 6 eine Anfangsadresse der nächsten Vektorbefehlskette liefert, und
    eine Vorrichtung (F 1, R 3, L 4, 7), die eine Vektordimension der für die Ausführung der nächsten Vektorbefehlskette nötigen Vektordaten der Vektorbefehlsausführungseinrichtung (C 4, C 6) liefert.
2. Datenverarbeitungseinrichtung nach Anspruch 1, dadurch gekennzeichnet,
daß die Vektorverarbeitungseinheit (U 2) erste Speicher (R 6, R 7, R 8), die von der Datenversorgungseinrichtung (F 1, F 2, F 3, R 3, L 4, L 5, L 7) empfangene Adressen, Adreßinkremente und Daten während der Ausführung der laufenden Vektorbefehlskette parallel zu einer gerade ausgeführten Skalarbefehlskette speichern und zweite Speicher (R 9, R 10, R 11) aufweist, die mit den ersten Speichern (R 6, R 7, R 8) verbunden sind und zu Beginn der Verarbeitung der nächsten Vektorbefehlskette die von den ersten Speichern (R 6, R 7, R 8) gehaltenen Daten, Adressen und Adreßinkremente übernehmen,
und der Transfer der Daten, Adressen und Adreßinkremente aus den ersten Speichern (R 6, R 7, R 8) zu den zweiten Speichern (R 9, R 10, R 11) durch den Startbefehl der Startvorrichtung (1, L 23 initiiert wird.
3. Datenverarbeitungseinrichtung nach Anspruch 2, dadurch gekennzeichnet,
daß einer der ersten und einer der zweiten Speicher (R 6, R 9) jeweils mehrere Register enthalten, die die Hauptspeicheradressen der zur Ausführung der nächsten Vektorbefehlskette nötigen Vektordaten halten.
4. Datenverarbeitungseinrichtung nach Anspruch 2, dadurch gekennzeichnet,
daß einer der ersten und einer der zweiten Speicher jeweils mehrere Register enthalten, die die Adreßinkremente des Hauptspeichers halten.
5. Datenverarbeitungseinrichtung nach Anspruch 2, dadurch gekennzeichnet,
daß einer der ersten und einer der zweiten Speicher (R 8, R 11) jeweils mehrere Register aufweisen, die die Skalardaten halten, die für die Ausführung der nächsten Vektorbefehlskette verwendet werden.
6. Datenverarbeitungseinrichtung nach Anspruch 1, dadurch gekennzeichnet,
daß die Steuervorrichtung (1, L 23) das Startsignal unter der Bedingung erzeugt, daß die Vektorverarbeitungseinheit (U 2) gerade keine Vektorbefehlskette abarbeitet.
7. Datenverarbeitungseinrichtung nach einem der Ansprüche 1 bis 6, dadurch gekennzeichnet,
daß die Datenversorgungseinrichtung (F 1, F 2, F 3, R 3, L 4, L 5, L 7) eine Schaltung enthält, die die Anfangsadresse des ersten Befehls der folgenden Vektorbefehlskette überträgt, wenn die Startvorrichtung (1, L 23 das Startsignal sendet.
8. Datenverarbeitungseinrichtung nach einem der vorangehenden Ansprüche, dadurch gekennzeichnet,
daß die Datenversorgungseinrichtung (F 1, F 2, F 3, R 3, L 4, L 5, L 7) eine Schaltung enthält, die die Vektordimension der Vektordaten überträgt, wenn die Startvorrichtung (1, L 23) das Startsignal sendet.
9. Datenverarbeitungseinrichtung nach einem der vorangehenden Ansprüche, dadurch gekennzeichnet,
daß die Vektorverarbeitungseinheit Schaltungen (L 10, L 17, L 19, L 14, L 18, L 20) enthält, die die skalaren Ergebnisdaten, die bei der Ausführung der Vektorbefehlsketten anfallen, in die entsprechenden Register der ersten und zweiten Speicher (R 8, R 11) setzen, und
die Skalarverarbeitungseinheit (U 1) Schaltungen (L 7, F 5) enthält, die auf einen der Skalarbefehle hin, die in den Registern des ersten Speichers (R 8) gespeicherten Skalardaten auslesen (Fig. 5 und Fig. 6).
10. Datenverarbeitungseinrichtung nach einem der Ansprüche 1 bis 8, dadurch gekennzeichnet,
daß die Vektorverarbeitungseinheit (U 2) eine Schreibschaltung (L 18) enthält, die die skalaren Ergebnisdaten, die bei der Ausführung der Vektorbefehlsketten anfallen, in die Register des zweiten Speichers (R 11) setzt, und
die Skalarverarbeitungseinheit (U 1) eine Schaltung (F 5, L 7, 5, 8) aufweist, die auf einen der Skalarbefehle hin die in den Registern des zweiten Speichers (R 11) gespeicherten Skalardaten ausliest (Fig. 5 und Fig. 8)
11. Datenverarbeitungseinrichtung nach einem der Ansprüche 9 oder 10, dadurch gekennzeichnet,
daß die Vektorverarbeitungseinheit (U 2) die ausgelesenen Skalardaten dem Hauptspeicher (C 3) zusendet (Fig. 10).
12. Datenverarbeitungseinrichtung nach einem der Ansprüche 1 bis 8, dadurch gekennzeichnet,
daß die Vektorverarbeitungseinheit (U 2) eine Schreibschaltung (L 10, L 14, L 17, L 18), die die Daten in die Register des ersten und zweiten Speichers (R 8, R 11) einschreibt und eine Steuervorrichtung (L 15, L 15A) enthält, die das Auslesen der Daten aus dem ersten bzw. dem zweiten Speicher (R 8, R 11) während der Ausführung der Vektorbefehlskette steuert, und
die Schreibschaltung (L 10, L 14, L 17, L 18) die von der Datenversorgungseinrichtung (F 1, F 2, F 3, R 3, L 4, L 5, L 7) gelieferten Daten in der jeweils anderen des ersten und zweiten Speichers (R 8, R 11), der nicht von der Steuereinrichtung (L 15, L 15A) ausgelesen wird, einschreibt.
13. Datenverarbeitungseinrichtung nach einem der Ansprüche 1 bis 8, dadurch gekennzeichnet,
daß die Vektorverarbeitungseinheit (U 2) eine Schreibschaltung (L 18) enthält, die die auf eine Vektorverarbeitung hin anfallenden Daten nur in die Register des zweiten Speichers (R 11 einschreibt,
die Steuervorrichtung (L 15A) die Daten nur aus dem zweiten Speicher (R 11) ausliest und
die von der Datenversorgungseinrichtung (F 1, F 2, F 3, R 3, L 4, L 5, L 7) gelieferten Daten nur in den ersten Speicher (R 8) ungeachtet, ob die Vektorbefehlsausführung im Wartezustand ist oder nicht, eingeschrieben werden, und die Schreibschaltung (L 18) auf das Startsignal hin den Inhalt des ersten Speichers (R 8) dem zweiten Speicher (R 11) überträgt (Fig. 8).
DE19823210816 1981-03-25 1982-03-24 Datenverarbeitungssystem mit getrennten einrichtungen zur verarbeitung von skalar- und vektordaten Granted DE3210816A1 (de)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
JP56042314A JPS57157373A (en) 1981-03-25 1981-03-25 Vector processor
JP56144658A JPS5846467A (ja) 1981-09-16 1981-09-16 ベクトルプロセツサ
JP57018734A JPS58137081A (ja) 1982-02-10 1982-02-10 ベクトルプロセツサ

Publications (2)

Publication Number Publication Date
DE3210816A1 DE3210816A1 (de) 1982-10-14
DE3210816C2 true DE3210816C2 (de) 1988-06-16

Family

ID=27282341

Family Applications (1)

Application Number Title Priority Date Filing Date
DE19823210816 Granted DE3210816A1 (de) 1981-03-25 1982-03-24 Datenverarbeitungssystem mit getrennten einrichtungen zur verarbeitung von skalar- und vektordaten

Country Status (3)

Country Link
US (1) US4541046A (de)
DE (1) DE3210816A1 (de)
GB (1) GB2098371B (de)

Families Citing this family (79)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPS58134357A (ja) * 1982-02-03 1983-08-10 Hitachi Ltd ベクトルプロセッサ
US4594682A (en) * 1982-12-22 1986-06-10 Ibm Corporation Vector processing
JPS59128670A (ja) * 1983-01-12 1984-07-24 Hitachi Ltd ベクトル処理装置
JPS59160267A (ja) * 1983-03-02 1984-09-10 Hitachi Ltd ベクトル処理装置
EP0389001B1 (de) * 1983-04-25 1997-06-04 Cray Research, Inc. Mehrprozessorsteuerung für Vektorrechner
JPS6077265A (ja) * 1983-10-05 1985-05-01 Hitachi Ltd ベクトル処理装置
JPS60134974A (ja) * 1983-12-23 1985-07-18 Hitachi Ltd ベクトル処理装置
US4942518A (en) * 1984-06-20 1990-07-17 Convex Computer Corporation Cache store bypass for computer
EP0167959B1 (de) * 1984-07-02 1992-05-06 Nec Corporation Rechner-Vektorregisterverarbeitung
US4890220A (en) * 1984-12-12 1989-12-26 Hitachi, Ltd. Vector processing apparatus for incrementing indices of vector operands of different length according to arithmetic operation results
JPS61173345A (ja) * 1985-01-29 1986-08-05 Hitachi Ltd 計算機システム
JPS6224366A (ja) * 1985-07-03 1987-02-02 Hitachi Ltd ベクトル処理装置
US4873630A (en) * 1985-07-31 1989-10-10 Unisys Corporation Scientific processor to support a host processor referencing common memory
US4858115A (en) * 1985-07-31 1989-08-15 Unisys Corporation Loop control mechanism for scientific processor
US4945479A (en) * 1985-07-31 1990-07-31 Unisys Corporation Tightly coupled scientific processing system
JPH0622035B2 (ja) * 1985-11-13 1994-03-23 株式会社日立製作所 ベクトル処理装置
JPS62115571A (ja) * 1985-11-15 1987-05-27 Fujitsu Ltd ベクトルアクセス制御方式
US4974198A (en) * 1986-07-16 1990-11-27 Nec Corporation Vector processing system utilizing firm ware control to prevent delays during processing operations
US4987534A (en) * 1986-08-20 1991-01-22 Nec Corporation Processor having synchronized operation between a CPU and a vector processor
JP2760790B2 (ja) * 1986-10-09 1998-06-04 株式会社日立製作所 データ処理装置
JPS63253468A (ja) * 1987-04-10 1988-10-20 Hitachi Ltd ベクトル処理装置
US5063497A (en) * 1987-07-01 1991-11-05 Digital Equipment Corporation Apparatus and method for recovering from missing page faults in vector data processing operations
US5261113A (en) * 1988-01-25 1993-11-09 Digital Equipment Corporation Apparatus and method for single operand register array for vector and scalar data processing operations
US5008812A (en) * 1988-03-18 1991-04-16 Digital Equipment Corporation Context switching method and apparatus for use in a vector processing system
US4949250A (en) * 1988-03-18 1990-08-14 Digital Equipment Corporation Method and apparatus for executing instructions for a vector processing system
US5113521A (en) * 1988-03-18 1992-05-12 Digital Equipment Corporation Method and apparatus for handling faults of vector instructions causing memory management exceptions
US5019968A (en) * 1988-03-29 1991-05-28 Yulan Wang Three-dimensional vector processor
US5210834A (en) * 1988-06-01 1993-05-11 Digital Equipment Corporation High speed transfer of instructions from a master to a slave processor
US5040109A (en) * 1988-07-20 1991-08-13 Digital Equipment Corporation Efficient protocol for communicating between asychronous devices
US5179674A (en) * 1988-07-25 1993-01-12 Digital Equipment Corporation Method and apparatus for predicting valid performance of virtual-address to physical-address translations
US5257394A (en) * 1988-10-18 1993-10-26 Japan Atomic Energy Research Institute Logical expression processing pipeline using pushdown stacks for a vector computer
JPH02109160A (ja) * 1988-10-18 1990-04-20 Japan Atom Energy Res Inst ベクトル計算機用演算装置
US5202970A (en) * 1989-02-07 1993-04-13 Cray Research, Inc. Method for sharing memory in a multiprocessor system
US5142638A (en) * 1989-02-07 1992-08-25 Cray Research, Inc. Apparatus for sharing memory in a multiprocessor system
JP2693651B2 (ja) * 1991-04-30 1997-12-24 株式会社東芝 並列プロセッサー
US5530881A (en) * 1991-06-06 1996-06-25 Hitachi, Ltd. Vector processing apparatus for processing different instruction set architectures corresponding to mingled-type programs and separate-type programs
US5742842A (en) * 1992-01-28 1998-04-21 Fujitsu Limited Data processing apparatus for executing a vector operation under control of a master processor
DE69421103T2 (de) * 1993-01-22 2000-06-08 Matsushita Electric Industrial Co., Ltd. Programmgesteuertes Prozessor
KR100280285B1 (ko) 1996-08-19 2001-02-01 윤종용 멀티미디어 신호에 적합한 멀티미디어 프로세서
US6591361B1 (en) 1999-12-28 2003-07-08 International Business Machines Corporation Method and apparatus for converting data into different ordinal types
US6701424B1 (en) 2000-04-07 2004-03-02 Nintendo Co., Ltd. Method and apparatus for efficient loading and storing of vectors
US6857061B1 (en) * 2000-04-07 2005-02-15 Nintendo Co., Ltd. Method and apparatus for obtaining a scalar value directly from a vector register
GB2382887B (en) * 2001-10-31 2005-09-28 Alphamosaic Ltd Instruction execution in a processor
US7577816B2 (en) * 2003-08-18 2009-08-18 Cray Inc. Remote translation mechanism for a multinode system
JP3855270B2 (ja) * 2003-05-29 2006-12-06 ソニー株式会社 アンテナ実装方法
US8307194B1 (en) 2003-08-18 2012-11-06 Cray Inc. Relaxed memory consistency model
US7437521B1 (en) 2003-08-18 2008-10-14 Cray Inc. Multistream processing memory-and barrier-synchronization method and apparatus
US7334110B1 (en) * 2003-08-18 2008-02-19 Cray Inc. Decoupled scalar/vector computer architecture system and method
US7503048B1 (en) 2003-08-18 2009-03-10 Cray Incorporated Scheduling synchronization of programs running as streams on multiple processors
US7735088B1 (en) 2003-08-18 2010-06-08 Cray Inc. Scheduling synchronization of programs running as streams on multiple processors
US7519771B1 (en) 2003-08-18 2009-04-14 Cray Inc. System and method for processing memory instructions using a forced order queue
US7421565B1 (en) 2003-08-18 2008-09-02 Cray Inc. Method and apparatus for indirectly addressed vector load-add -store across multi-processors
US7366873B1 (en) 2003-08-18 2008-04-29 Cray, Inc. Indirectly addressed vector load-operate-store method and apparatus
US7743223B2 (en) * 2003-08-18 2010-06-22 Cray Inc. Decoupling of write address from its associated write data in a store to a shared memory in a multiprocessor system
US7543133B1 (en) 2003-08-18 2009-06-02 Cray Inc. Latency tolerant distributed shared memory multiprocessor computer
GB2409060B (en) * 2003-12-09 2006-08-09 Advanced Risc Mach Ltd Moving data between registers of different register data stores
GB2409068A (en) * 2003-12-09 2005-06-15 Advanced Risc Mach Ltd Data element size control within parallel lanes of processing
US8427490B1 (en) 2004-05-14 2013-04-23 Nvidia Corporation Validating a graphics pipeline using pre-determined schedules
US8624906B2 (en) 2004-09-29 2014-01-07 Nvidia Corporation Method and system for non stalling pipeline instruction fetching from memory
WO2006055546A2 (en) * 2004-11-15 2006-05-26 Nvidia Corporation A video processor having a scalar component controlling a vector component to implement video processing
US8725990B1 (en) 2004-11-15 2014-05-13 Nvidia Corporation Configurable SIMD engine with high, low and mixed precision modes
US7478769B1 (en) 2005-03-09 2009-01-20 Cray Inc. Method and apparatus for cooling electronic components
US9092170B1 (en) 2005-10-18 2015-07-28 Nvidia Corporation Method and system for implementing fragment operation processing across a graphics bus interconnect
US8683126B2 (en) * 2007-07-30 2014-03-25 Nvidia Corporation Optimal use of buffer space by a storage controller which writes retrieved data directly to a memory
US8659601B1 (en) 2007-08-15 2014-02-25 Nvidia Corporation Program sequencer for generating indeterminant length shader programs for a graphics processor
US8411096B1 (en) 2007-08-15 2013-04-02 Nvidia Corporation Shader program instruction fetch
US8698819B1 (en) 2007-08-15 2014-04-15 Nvidia Corporation Software assisted shader merging
US9024957B1 (en) 2007-08-15 2015-05-05 Nvidia Corporation Address independent shader program loading
US9064333B2 (en) * 2007-12-17 2015-06-23 Nvidia Corporation Interrupt handling techniques in the rasterizer of a GPU
US8780123B2 (en) * 2007-12-17 2014-07-15 Nvidia Corporation Interrupt handling techniques in the rasterizer of a GPU
US8923385B2 (en) * 2008-05-01 2014-12-30 Nvidia Corporation Rewind-enabled hardware encoder
US8681861B2 (en) * 2008-05-01 2014-03-25 Nvidia Corporation Multistandard hardware video encoder
US8489851B2 (en) * 2008-12-11 2013-07-16 Nvidia Corporation Processing of read requests in a memory controller using pre-fetch mechanism
JP5699554B2 (ja) * 2010-11-11 2015-04-15 富士通株式会社 ベクトル処理回路、命令発行制御方法、及びプロセッサシステム
KR101912427B1 (ko) * 2011-12-12 2018-10-29 삼성전자주식회사 재구성가능 프로세서 및 재구성가능 프로세서의 미니 코어
US11544214B2 (en) 2015-02-02 2023-01-03 Optimum Semiconductor Technologies, Inc. Monolithic vector processor configured to operate on variable length vectors using a vector length register
US10762164B2 (en) 2016-01-20 2020-09-01 Cambricon Technologies Corporation Limited Vector and matrix computing device
CN106990940B (zh) * 2016-01-20 2020-05-22 中科寒武纪科技股份有限公司 一种向量计算装置及运算方法
CN111651205B (zh) * 2016-04-26 2023-11-17 中科寒武纪科技股份有限公司 一种用于执行向量内积运算的装置和方法

Family Cites Families (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US3684876A (en) * 1970-03-26 1972-08-15 Evans & Sutherland Computer Co Vector computing system as for use in a matrix computer
US4128880A (en) * 1976-06-30 1978-12-05 Cray Research, Inc. Computer vector register processing
US4101960A (en) * 1977-03-29 1978-07-18 Burroughs Corporation Scientific processor
JPS6024985B2 (ja) * 1978-08-31 1985-06-15 富士通株式会社 デ−タ処理方式
US4281391A (en) * 1979-01-15 1981-07-28 Leland Stanford Junior University Number theoretic processor
US4365292A (en) * 1979-11-26 1982-12-21 Burroughs Corporation Array processor architecture connection network
US4412303A (en) * 1979-11-26 1983-10-25 Burroughs Corporation Array processor architecture
JPS6043535B2 (ja) * 1979-12-29 1985-09-28 富士通株式会社 情報処理装置
US4344134A (en) * 1980-06-30 1982-08-10 Burroughs Corporation Partitionable parallel processor
KR860001434B1 (ko) * 1980-11-21 1986-09-24 후지쑤 가부시끼가이샤 데이타 처리시 스템

Also Published As

Publication number Publication date
GB2098371B (en) 1985-01-16
GB2098371A (en) 1982-11-17
US4541046A (en) 1985-09-10
DE3210816A1 (de) 1982-10-14

Similar Documents

Publication Publication Date Title
DE3210816C2 (de)
DE68927492T2 (de) Verfahren und Vorrichtung zur gleichzeitigen Verteilung von Befehlen an mehrere funktionelle Einheiten
DE2714805C2 (de)
DE68921906T2 (de) Verfahren für ein Multiprozessorsystem mit sich selbst zuordnenden Prozessoren.
DE3116100C2 (de) Datenverarbeitungseinheit
DE69534113T2 (de) Kompression der Befehlswörter eines Rechners
DE69809450T2 (de) Datenverarbeitungsvorrichtung
DE69635881T2 (de) VLIW-Befehlsprozessor mit variabler Wortlänge
DE2846495C2 (de) Zentraleinheit
DE1915818C3 (de) Steuerschaltung für ein elektronisches Datenverarbeitungssystem
DE69130852T2 (de) Verarbeitungsmechanismus zur Verschachtelung in einem Schleifensteuersystem
DE3638572C2 (de)
DE68927029T2 (de) Pipelineprozessor
DE68925397T2 (de) Pipelineprozessor
DE68924400T2 (de) Fliessbanddatenverarbeitungsvorrichtung.
DE2457612B2 (de) Mikroprogrammier-Steuereinrichtung
DE2036729A1 (de) Digital Datenverarbeiter
DE69632655T2 (de) Pipeline-Datenverarbeitungsanordnung zur Durchführung einer Mehrzahl von untereinander datenabhängigen Datenprozessen
DE4211245A1 (de) Prozessorsystem in parallelverarbeitungsbauart mit trap- und stall-steuerfunktionen
DE3043653A1 (de) Datenverarbeitungsanlage
DE3900246C2 (de)
DE2927481A1 (de) Datenverarbeitungsvorrichtung
DE2906685C2 (de)
DE2245284A1 (de) Datenverarbeitungsanlage
DE2702722A1 (de) Instruktionsinterpretation in elektronischen datenverarbeitungsanlagen

Legal Events

Date Code Title Description
OP8 Request for examination as to paragraph 44 patent law
D2 Grant after examination
8364 No opposition during term of opposition