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
Links
- 239000013598 vector Substances 0.000 claims description 311
- 238000012545 processing Methods 0.000 claims description 175
- 230000015654 memory Effects 0.000 claims description 43
- 230000004044 response Effects 0.000 claims description 4
- 230000011664 signaling Effects 0.000 claims 1
- 238000000034 method Methods 0.000 description 9
- 238000002360 preparation method Methods 0.000 description 5
- 238000013500 data storage Methods 0.000 description 2
- 238000012360 testing method Methods 0.000 description 2
- 230000015572 biosynthetic process Effects 0.000 description 1
- 238000010276 construction Methods 0.000 description 1
- 238000007796 conventional method Methods 0.000 description 1
- 238000011161 development Methods 0.000 description 1
- 230000018109 developmental process Effects 0.000 description 1
- 230000000694 effects Effects 0.000 description 1
- 238000005516 engineering process Methods 0.000 description 1
- 238000011160 research Methods 0.000 description 1
- 238000011144 upstream manufacturing Methods 0.000 description 1
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F15/00—Digital computers in general; Data processing equipment in general
- G06F15/76—Architectures of general purpose stored program computers
- G06F15/80—Architectures of general purpose stored program computers comprising an array of processing units with common control, e.g. single instruction multiple data processors
- G06F15/8053—Vector processors
- G06F15/8061—Details on data memory access
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/30003—Arrangements for executing specific machine instructions
- G06F9/30007—Arrangements for executing specific machine instructions to perform operations on data operands
- G06F9/30036—Instructions to perform operations on packed data, e.g. vector, tile or matrix operations
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/38—Concurrent instruction execution, e.g. pipeline or look ahead
- G06F9/3877—Concurrent instruction execution, e.g. pipeline or look ahead using a slave processor, e.g. coprocessor
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/38—Concurrent instruction execution, e.g. pipeline or look ahead
- G06F9/3877—Concurrent instruction execution, e.g. pipeline or look ahead using a slave processor, e.g. coprocessor
- G06F9/3879—Concurrent 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
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/38—Concurrent instruction execution, e.g. pipeline or look ahead
- G06F9/3885—Concurrent instruction execution, e.g. pipeline or look ahead using a plurality of independent parallel functional units
- G06F9/3887—Concurrent 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]
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/38—Concurrent instruction execution, e.g. pipeline or look ahead
- G06F9/3885—Concurrent instruction execution, e.g. pipeline or look ahead using a plurality of independent parallel functional units
- G06F9/3889—Concurrent 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)
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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:
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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).
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)
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).
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.
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).
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).
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)
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)
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 | 후지쑤 가부시끼가이샤 | 데이타 처리시 스템 |
-
1982
- 1982-03-23 US US06/361,478 patent/US4541046A/en not_active Expired - Lifetime
- 1982-03-24 GB GB8208643A patent/GB2098371B/en not_active Expired
- 1982-03-24 DE DE19823210816 patent/DE3210816A1/de active Granted
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 |