HINTERGRUND DER ERFINDUNG
-
Die vorliegende Erfindung betrifft ein
Vektorverarbeitungsgerät zur Durchführung von Vektoroperationen für
wissenschaftliche und technische Berechnungen.
-
Parallel mit der sich immer noch weiter ausbreitenden
Anwendung von Computern, nimmt die Nachfrage nach
Hochgeschwindigkeitsdatenverarbeitung mittels Computer zu.
Heutzutage sind umfassend Ultrahochgeschwindigkeitscomputer oder
Supercomputer in Entwicklung, mit deren Realisierung dieser
Nachfrage erfolgreich begegnet werden kann. In einem
Supercomputer wird eine riesige Menge von zu verarbeitenden Daten
als eine Masse von Vektordaten betrachtet. d. h. geordnete
eindimensionale Daten ( Vektordaten ), und diese werden mit
hoher Geschwindigkeit von einem Vektorverarbeitungsgerät
verarbeitet, dessen Funktionsweise auf einer Pipelinetechnik
basiert, die in der Veröffentlichung "The Architecture of
Pipelined Computers", pp 1-5, herausgegeben von McGraw - Hill
Book Company 1981, beschrieben wird. Für die oben
beschriebenen Typen von Vektorverarbeitungsgeräten kann sich auf das
U.S. Patent 4,128,880 bezogen werden. Das beschriebene Gerät
umfaßt mehrere Vektorregister, wobei jedes einzelne einen
geordneten Satz von Datenelementen hält, einen
Ausgabeauswahlschaltkreis, um taktweise die aufeinanderfolgenden
Datenelemente, die von einem Vektorbefehl bezeichnet werden,
auszugeben, eine Vektoroperationseinheit, die mit dem
Pipelinevektorbefehl zur Verarbeitung der Datenelemente verbunden ist,
und einen Eingabeauswahlschaltkreis, um das Ergebnis, das von
der Vektoroperationseinheit ausgegeben wird in das
Vektorregister zu schreiben, das von dem Vektorbefehl bezeichnet
wird.
-
Dort, wo ein solches bekanntes Vektorverarbeitungsgerät
verwendet wird, um beispielsweise ein inneres Produkt zu
berechnen, das oft bei Strömungsgleichungen und anderen
wissenschaftlichen und technologischen Berechnungen auftritt,
d. h. eine Operation, in der ein folgendes Ergebnis einer
Multiplikation zum Ergebnis der vorhergehenden Multiplikation
addiert wird, und Zwischenergebnisse der Operation in ein
gemeinsames Vektorregister gespeichert werden. Daraus folgt,
daß im Falle einer Addition von Zwischenergebnissen die
Operation mit einem gemeinsamen Vektorregister durchgeführt
wird, wobei das Pipelinesystem zur Umstellung deaktiviert wird
und dadurch die Verarbeitungsrate sinkt.
-
In weiteren Einzelheiten beschreibt das U.S. Patent
4,128,880 in Fig. 9, Spalte 17, Zeilen 1-39 anhand von
Beispielen kumulative Summierung eines Vektors mit 64 Elementen.
Die Summierung wird so durchgeführt, daß die Elemente, die in
einem Vektorregister V1 gespeichert sind, Element für Element
zu einem Startwert "0" addiert werden, und das Ergebnis in
einem Vektorregister V2 gespeichert wird. Das gespeicherte
Ergebnis der Summierung wird der Operationseinheit wieder als
Operand zugeführt. Angenommen, daß n Takte für einen Zyklus
benötigt werden, der mit dem Lesen eines bestimmten Operanden
beginnt und damit endet, diesen über die Operationseinheit als
nächsten Operanden einzusetzen, ist mit dieser vorgeschlagenen
Methode die Anzahl der Ergebnisse, die schließlich erhalten
werden gleich (Gesamtzahl der Elemente)/n, Summierung in
Intervallen von n. In diesem speziellen Beispiel ergibt die
Vektorsummierung der vierundsechzig Elemente, da n=8, acht
Summierungsergebnisse in Intervallen von acht. Um ein
kumulatives Ergebnis der vierundsechzig Elemente auf der
Grundlage der acht Zwischenergebnisse zu erhalten, sind (8-1)
skalare Operationen erforderlich, wobei in jeder ein Ergebnis
der Operation als Operand für die nächste Operation verwendet
wird. Das Problem mit den skalaren Operationen ist, daß sie
viel mehr Zeit benötigen als Vektoroperationen. JP-A-57-105078
offenbart einen Vektorprozessor gemäß dem Oberbegriff des
Patentanspruchs der vorliegenden Erfindung. Der bekannte
Steuerschaltkreis läßt zu, daß die Datenelemente gleichzeitig
in mehrere Register geschrieben werden.
ZUSAMMENFASSUNG DER ERFINDUNG
-
Es ist deshalb eine Aufgabe der vorliegenden Erfindung,
ein Vektorverarbeitungsgerät bereitzustellen, das das oben
erörterte Problem löst und Operationen zur schnellen
Berechnung des inneren Produkts beschleunigt. Diese Aufgabe
wird mit den Merkmalen des Patentanspruchs 1 gelöst.
KURZE BESCHREIBUNG DER ZEICHNUNGEN
-
Die vorstehenden und weitere Aufgaben, Merkmale und
Vorteile der vorliegenden Erfindung werden ersichtlich durch
die folgende detaillierte Beschreibung, die anhand der
beiliegenden Zeichnungen vorgenommen wird; es zeigen:
-
Fig. 1 eine Ausführungsform der vorliegenden Erfindung;
-
Fig. 2 ein Diagramm eines beispielhaften und
detaillierten Aufbaus eines Teils des Geräts aus Fig. 1;
-
Fig. 3 ein Diagramm einer Abwandlung des in Fig. 2
gezeigten Schaltkreises; und
-
Fig. 4A bis 4D eine Operationsverarbeitung gemäß dieser
Erfindung.
-
In allen Figuren bezeichnen die gleichen Bezugszeichen
die gleichen Strukturelemente.
BESCHREIBUNG DER BEVORZUGTEN AUSFÜHRUNGSFORMEN
-
Gemäß Fig. 1 umfaßt ein Vektorverarbeitungsgerät als
Ausführungsform der Erfindung vier Vektorregister 1, 2, 3 und 4,
einen Ausgabeauswahlschaltkreis 5, einen Pipeline-Addierer 6,
einen Multiplizierer 7, einen Eingabeselektor 8, einen
Schreibsteuerschaltkreis 9 und vier Adreßzähler 10, 11, 12 und
13.
-
Jedes Vektorregister 1 bis 4 kann vierundsechzig
Datenelemente halten, während die Adreßzähler 10, 11, 12 und 13 mit
den jeweiligen Vektorregistern 1 bis 4 verbunden sind, um ihre
Adressen zu bezeichnen. Jeder Adreßzähler 10 bis 13 ist so
aufgebaut, daß zu Beginn eines Vektorbefehls ein Wert "0"
gehalten wird, und daß bei jedem Takt hochgezählt wird.
-
Wenn der Operationscode eines Vektorbefehls Laden
bedeutet, werden Datenelemente LOD von einem Hauptspeicher (nicht
gezeigt) nacheinander in eines der Vektorregister 1 bis 4
geschrieben, das von dem Eingabeselektor 8 bei jedem Takt
ausgewählt wird. Die Adressen der Vektorregister 1 bis 4 und
des Hauptspeichers sind durch den ersten bzw. zweiten Teil des
Operationscodes des Vektorbefehls bezeichnet. Ebenfalls
spezifiziert durch den Vektorbefehl ist die Anzahl der
Datenelemente, die in das niedrigste Vektorregister geladen
werden.
-
Wenn der Operationscode eines Vektorbefehls eine Addition
spezifiziert, wählt der Ausgabeselektor 5 zwei der
Vektorregister 1 bis 4 aus, die durch den zweiten bzw. dritten
Operandenabschnitt des Vektorbefehls bezeichnet werden, um die
dabei gehaltenen Datenelemente reihenweise bei jedem Takt dem
Addierer 6 zuzuführen. Der Pipeline-Addierer 6 summiert
nacheinander die Datenelemente, die vom Ausgabeselektor 5
ausgegeben werden und die Summierungsergebnisse werden zum
Selektor 8 geleitet. Der Eingabeelektor 8 schreibt bei jedem
Takt der Reihe nach die Summierungsergebnisse in eines der
Vektorregister 1 bis 4, das durch den ersten Abschnitt des
Operationscodes bezeichnet wird.
-
Das oben beschriebene Verfahren wird gleichermaßen auch
in den Fällen angewendet, in denen der Operationscode eines
Vektorbefehls eine Multiplikation spezifiziert, mit der
Ausnahme, daß der Multiplizierer 7 anstelle des Pipeline-
Addierers 6 tätig wird, der für Additionen eingesetzt wird.
-
Nun, wenn der Operationscode eines Vektorbefehls die
Berechnung eines inneren Produkts spezifiziert, wird der
Schreibsteuerschaltkreis 9 aktiviert. Ein Beispiel für die
Berechnung eines inneren Produkts zeigt folgendes Programm:
-
DO 10 I = 1, VL
-
S = S + A(I) * B(I)
-
10 CONTINUE
-
Mit Bezug auf Fig. 2 ist ein detaillierter Aufbau des
Schreibsteuerschaltkreises 9 zusammen mit den Vektorregistern
1 und 2, den Adreßzählern 10 und 11, und den Eingaberegistern
81 und 82 gezeigt, die einen Teil des Selektors 8 von Fig. 1
bilden. Es sollte in Fig. 2 beachtet werden, daß die Register
1 und 2 und die Zähler 10 und 11 nur der Veranschaulichung
dienen und stellvertretend für beliebige zwei der Register 1
bis 4 und beliebige zwei der Zähler 1 bis 4 stehen, die in
Fig. 1 gezeigt sind; die Vektorregister und die zwei
Adreßzähler, die ausgewählt werden, werden von dem Vektorbefehl
bezeichnet.
-
In Fig. 2 umfaßt die Schreibsteuerung 9 einen
Adreßzähler 91, einen Koinzidenzschaltkreis 92, ein RS-Flipflop
(F/F) 93, ein D-F/F 94 und drei UND-Gatter 95, 96 und 97.
-
Wenn ein Ergebnis der Operationsergebnis, das vom
Multiplizierer 7 oder vom Addierer 6 bereitgestellt wird, als
Antwort auf einen Vektorbefehl, der eine Berechnung des
inneren Produkts spezifiziert, in das Vektorregister
geschrieben werden soll, werden zuerst eine Vektorlänge VL und
ein Startsignal ST vom Steuerabschnitt ( nicht gezeigt ) des
Vektorverarbeitungsgeräts zum Schaltkreis 9 geschickt. Das
Startsignal ist ein Kurzzeitimpuls und wird nach einem Takt
deaktiviert. Als Antwort auf das Signal ST, wird das F/F 93
gesetzt und der Adreßzähler 91 nimmt die Vektorlänge VL an.
Die Bedingung, daß F/F 93 gesetzt ist, besteht solange fort,
bis vom Koinzidenzschaltkreis 92 logisch "0" zu einem Reset-
Eingangsanschluß von F/F 93 geschickt wird.
-
Das F/F 94 wird anfangs in seinem Reset-Zustand gehalten,
so daß eine UND-Bedingung am UND-Gatter 96 erfüllt ist. Dann
entläßt das UND-Gatter 96 logisch "1" zu einem
Schreibfreigabeanschluß WE des Vektorregisters 1. Inzwischen steht der
Ausgang des UND-Gatters 97 auf logisch "1". Folglich dürfen
die Datenelemente (Operationsergebnisse) 14, die
Eingangssignale beider Eingaberegister 81 und 82, nur in das
Vektorregister 1 geschrieben werden. Da der Adreßzähler 10 zu Beginn
mit der Adresse "0" geladen ist, wird das erste der
Datenelemente 14 (Nummer 0) mit dem ersten Takt in die Adresse 0
des Vektorregisters 1 geschrieben. Der Adreßzähler 10 wird,
als Antwort auf die Ausgabe von logisch "1", durch das UND-
Gatter 96, erhöht.
-
Unter dieser Bedingung entläßt das UND-Gatter 95 logisch
"1", so daß das F/F 94 mit dem zweiten Takt gesetzt wird. Dies
bewirkt, daß das UND-Gatter 96 logisch "0" und das UND-Gatter
97 logisch "1" erzeugt, und läßt auf diese Weise zu, daß das
zweite der Datenelemente 14 (Nummer 1) in die Adresse 0 des
zweiten Vektorregisters 2 geschrieben wird. Der Adreßzähler 11
wird, als Antwort auf die Ausgabe von logisch "1" durch das
UND-Gatter 97, erhöht.
-
Im dritten Takt wird das F/F 94 zurückgesetzt, wodurch
das dritte der Datenelemente 14 wieder in die Adresse 1 des
Registers 1 geschrieben wird. Auf diese Weise werden
abwechselnd die ungeradzahligen Datenelemente 14 in das
Register 1 geschrieben und die geradzahligen in das Register 2.
-
Inzwischen wurde der Adreßzähler 91 nach dem zweiten
Takt, der das Startsignal ST als Antwort auf einem Taktimpuls
deaktiviert, um 1 (eins) verringert. Der Inhalt des
Adreßzählers 91 wird ebenfalls zum Koinzidenzschaltkreis 92
geschickt, um mit 1 verglichen zu werden. Sobald als der
Inhalt des Zählers gleich 1 ist, schickt der Schaltkreis 92
logisch "1" zum Reset-Eingang von F/F 93, um ihn
zurückzusetzen. Als Folge davon stehen die Ausgänge beider Gatter 96
und 97 auf logisch "0", so daß die Datenelemente 14 nicht mehr
in die Register 1 oder 2 geschrieben werden. Auf die
beschriebene Weise werden ausschließlich Datenelemente 14, deren
Anzahl gleich der Vektorlänge VL ist, in die Vektorregister 1
und 2 geschrieben.
-
Wenn bei der Berechnung des inneren Produkts in dem
vorstehend gezeigten Programm die Vektorlänge VL gleich 8 ist
(der Anfangswert von S wird mit 0 angenommen), wird das
Programm in vier verschiedenen Unterprogrammen ausgeführt.
-
Mit Bezug auf Fig. 4A beginnt das erste Unterprogramm
damit, zwei Sätze von Datenelementen A(1)-A(8) und B(1)-B(8),
die beispielsweise im Vektorregister 1 bzw. 2 gehalten werden,
als Operanden über den Ausgabeselektor 5 zum Multiplizierer 7
zu schicken. Der Multiplizierer 7 führt eine Multiplikation
von zwei Operanden durch, um acht Multiplikationsergebnisse
A(1)*B(1) bis A(8)*B(8) zu erzeugen. Diese acht Ergebnisse
werden ausschließlich in die Adressen 0 bis 3 beispielsweise
der Vektorregister 3 und 4 geschrieben. Im einzelnen werden
die Ergebnisse der Multiplikation A(1)*B(1), A(3)*B(3),
A(5)*B(5) und A(7)*B(7) in die Adressen 0, 1, 2 bzw. 3 des
Vektorregisters 3 geschrieben, während die Ergebnisse
A(2)*B(2), A(4)*B(4), A(6)*B(6) und A(8)*B(8) in die Adressen
0, 1, 2 bzw. 3 des Registers 4 geschrieben werden. Der
Adreßzähler 91 wurde vom ersten Unterprogramm mit der
Vektorlänge VL = 8 initialisiert.
-
Als nächstes werden im zweiten Unterprogramm, das in Fig.
4B gezeigt ist, die vier Ergebnisse der Multiplikation
A(1)*B(1), A(3)*B(3), A(5)*B(5) und A(7)*B(7), die im
Vektorregister 3 gespeichert sind und diejenigen von A(2)*B(2),
A(4)*B(4), A(6)*B(6) und A(8)*B(8), die im Vektorregister 4
gespeichert sind, nacheinander zum Addierer 6 geschickt, der
über das Pipelinesystem vier Mal eine Addition durchführt. Die
Ergebnisse der Addition A(1)*B(1)+A(2)*B(2) und
A(5)*B(5)+A(6)*B(6) werden in die Adressen 0 und 1 des
Registers 1 geschrieben, während die Ergebnisse A(3)*B(3)+
A(4)*B(4) und A(7)*B(7)+A(8)*B(8) in die Adressen 0 und 1 des
Registers 2 geschrieben werden. Der Adreßzähler 91 wurde vom
zweiten Unterprogramm mit der Vektorlänge VL = 8
initialisiert.
-
Im dritten Unterprogramm, das in Fig. 4C gezeigt ist,
werden die vorstehend beschriebenen Additionsergebnisse, die
paarweise in den Registern 1 und 2 gespeichert sind, in
gleicher Weise durch das Pipelinesystem summiert. Nachdem der
Adreßzähler 91 mit einer Vektorlänge VL = 2 initialisiert
worden ist, werden das Ergebnis A(1)*B(1)+A(2)*B(2)+A(3)*B(3)
+A(4)*B(4) in die Adresse 0 des Registers 3 und das Ergebnis
A(5)*B(5)+A(6)*B(6)+A(7)*B(7)+A(8)*B(8) in die Adresse 0 des
Registers 4 geschrieben.
-
Weiterhin werden im vierten Unterprogramm, das in Fig. 4D
gezeigt ist, der Inhalt der Adresse 0 des Vektorregisters 3
und derjenige der Adresse 0 des Vektorregisters 4 in der
beschriebenen Weise summiert, so daß das endgültige Ergebnis
A(I)*B(I) in die Adresse 0 beispielsweise des
Vektorregisters 1 geschrieben wird. Der Adreßzähler 91 war zu diesem
Zeitpunkt mit 1 initialisiert.
-
Die Gleichung S = S + A(I)*B(I) in der obigen
Beschreibung schränkt die vorliegende Erfindung nicht ein. Falls
erwünscht, kann die Gleichung so gebildet werden, daß die
Operanden A(I) und B(I) summiert werden oder so, daß das
Ergebnis der Operation aus den Operanden A(I) und B(I) mit S
multipliziert, von S subtrahiert oder durch S dividiert wird.
-
In der dargestellten Ausführungsform werden die
Zwischenergebnisse der Operation abwechselnd auf die Register 1 und 2
verteilt. Das geschieht jedoch nur aus Gründen der
Anschaulichkeit. Das heißt, der Zweck der vorliegenden Erfindung
liegt darin, Zwischenergebnisse ausschließlich in mehrere
Vektorregister zu schreiben. Beispielsweise kann der
Schreibsteuerschaltkreis 9, der in Fig. 1 gezeigt ist, so aufgebaut
sein, wie im einzelnen in Fig. 3 gezeigt ist, um die erste
Hälfte der Zwischenergebnisse in die Adressen 0 bis (VL/ 2-1
des Vektorregisters 1 zu schreiben, und die zweite Hälfte in
die gleichen Adressen des Vektorregisters 2.
-
In der Abwandlung gemäß Fig. 3 wird das höherwertigste
Bit des Inhalts des Adreßzählers 91 verwendet, um zwischen den
Vektorregistern 1 und 2 zu schalten. Die Adreßzähler 10, 11
und 91, der Koinzidenzschaltkreis 92, ein F/F 93, die UND-
Gatter 99 und 100 und die Eingaberegister 81 und 82, die in
Fig. 3 gezeigt sind, sind die jeweiligen Gegenstücke zu den
Adreßzählern 10, 11 und 91, dem Koinzidenzschaltkreis 92,
einem F/F 93, den UND-Gattern 96 und 97, den Vektorregistern 1
und 2 und den Eingaberegistern 81 und 82, die in Fig. 2
gezeigt sind. Ebenfalls hat ein UND-Gatter 98 die gleiche
Funktion wie das UND-Gatter 99 und F/F 94.
-
In jeder der gezeigten und beschriebenen
Ausführungsform, können die Vektorregister und die Operationseinheiten
fest miteinander verbunden werden, um den
Ausgabeauswahlschaltkreis zu eliminieren.
-
Zusammengefaßt wurde gezeigt, daß die vorliegende
Erfindung ein Vektorverarbeitungsgerät bereitstellt, das ein
Pipelinesystem auch für die Berechnung des inneren Produkts
einstellen kann, bei der Zwischenergebnisse der Operation als
Operanden verwendet werden.