-
Die gleichzeitig anhängige Europäische Patentanmeldung
84109081.4 (EP A 0 135 721) bezieht sich auf ein Gerät zur
schnellen Verarbeitung von Elementen eines Vektorpaares, das
in einem Vektorregisterpaar gespeichert ist.
HINTERGRUND DER ERFINDUNG
Erfindungsbereich
-
Die vorliegende Erfindung betrifft ein Computersystem, genauer
gesagt ein Interelement-Verarbeitungsgerät, oder Interelement-
Prozessor, der einem parallelen Vektorprozessor im
Computersystem zugeordnet ist, um die Elemente eines einzelnen Vektors
schnell verarbeiten und die Ergebnisse dieser Verarbeitung
speichern zu können.
Stand der Technik
-
Ein typischer Vektorprozessor, wie in Fig. 1 abgebildet,
schließt eine Anzahl von Vektorregistern ein, wobei in jedem
Register ein Vektor gespeichert wird. Der Vektor enthält eine
Anzahl von Vektorelementen. Eine Pipeline-Verarbeitungseinheit ist
an einen Selektor angeschlossen, der den Vektorregistern
zugeordnet ist, um die Elemente eines ersten Vektors nacheinander
aus einem ausgewählten Vektorregister zu empfangen und mit den
Elementen des ersten Vektors eine arithmetische Operation
auszuführen, um den daraus resultierenden Vektor zu errechnen. Die
Elemente des resultierenden Vektors können erneut an den
entsprechenden Stellen des ersten Vektorregisters oder in einem
anderen Vektorregister gespeichert werden.
-
Allerdings ist es in dieser Konfiguration erforderlich, die
Operationen an jedem der Vektorelemente nacheinander auszuführen.
Die Zeit, die erforderlich ist, um die Operationen für alle 256
Elemente eines Vektors mit 256 Elementen abzuschließen, ist eine
Funktion der Zykluszeit der Pipeline-Einheit pro Operation mit
jedem der Elemente.
-
Mit fortschreitender Entwicklung von Computersystemen wurde es
in steigendem Maße erforderlich, die Leistungsfähigkeit der
vektorverarbeitenden Teile des Computersystems zu steigern, indem
die Verarbeitungszeit für arithmetische Operationen mit den
einzelnen Vektorelementen oder jedem der entsprechenden Elemente
einer Anzahl von Vektoren, die in den Vektorregistern innerhalb
des Computersystems gespeichert sind, verringert wird.
-
In der Europäischen Patentanmeldung (EP 0 053 457-A1) wird ein
Vektorprozessor beschrieben, der eine Anzahl von Speicherbanken
enthält. Jede Speicherbank enthält Teile mehrerer Vektoren. Auf
die Elemente der Vektoren in jeder Speicherbank wird seriell
über Register zugegriffen. Die Folge davon ist, daß dieser
Prozessor Vektoren nur langsam verarbeiten kann, da es erforderlich
ist, alle Teile der verschiedenen Vektoren in den Speicherbanken
durchzugehen, um auf den gewünschten Teil zugreifen zu können.
-
In "The architecture of pipelined computers", von P.M. Kogge,
1981, Seiten 207-208, Hemisphere Publishing Corp., wird
offenbart, daß ein Pipeline-Vektorprozessor nicht die einzig mögliche
Realisierungsform darstellt, und es wird die Grundstruktur eines
parallelen Vektorprozessors beschrieben. In der nach Artikel
54(3) EPC zum Stand der Technik gehörenden Europäischen
Patentanmeldung (EP 0 135 721-A2) wird ein paralleler Vektorprozessor
offenbart. Um die Leistungsfähigkeit des parallelen
Vektorprozessors
zu erhöhen, wird die Zeit vermindert, die für die
Verarbeitung eines Vektorpaares erforderlich ist, das in einem
Vektorregisterpaar gespeichert ist. Die Vektorregister sind in eine
Anzahl kleinerer Register unterteilt. Ein Vektor, der in einem
Vektorregister gespeichert ist, enthält N Elemente, allerdings
speichert jedes der kleineren Register M Elemente des Vektors,
wobei M kleiner N ist. Ein Elementprozessor ist jedem kleineren
Register zugewiesen, um die M Elemente der in dem kleineren
Register gespeicherten Vektoren zu verarbeiten und Ergebnisse zu
erhalten, die in einem der Vektorregister gespeichert werden.
Die kleineren Register der Vektorregister und ihre
entsprechenden Elementprozessoren sind parallel strukturiert. Der
Elementprozessor und die zugeordneten kleineren Register arbeiten
gleichzeitig. Infolgedessen ist die Verarbeitung der N
Elementvektoren, die in den Vektorregistern gespeichert sind, in der
Zeit abgeschlossen, die die Verarbeitung der M Elemente des N
Elementvektors benötigt.
ZUSAMMENFASSUNG DER ERFINDUNG
-
Die primäre Aufgabe der vorliegenden Erfindung ist es folglich,
die Leistungsfähigkeit des Vektorprozessorteils eines
Computersystems zu erhöhen, indem die Zeit vermindert wird, die für die
Verarbeitung der Vektorelemente erforderlich ist, die in den
Vektorregistern dieses Vektorprozessorteils gespeichert sind.
-
Eine weitere Aufgabe der vorliegenden Erfindung besteht darin,
die Leistungsfähigkeit des Vektorprozessorteils eines
Computersystems zu erhöhen, indem die Anzahl der Vektorregister in eine
Anzahl kleinerer Register unterteilt wird und die einzelnen in
den kleineren Registern gespeicherten Vektorelemente parallel
verarbeitet werden.
-
Eine weitere Aufgabe der vorliegenden Erfindung besteht darin,
die Leistungsfähigkeit des Vektorprozessorteils eines
Computersystems
weiter zu erhöhen, indem eine Anzahl von Einheiten, die
die Anzahl der kleineren Register umfaßt, in einer parallelen
Konfiguration verbunden und die den kleineren Registern
gespeicherten Vektorelemente eines Vektorregisters in verbesserter
Form parallel verarbeitet werden.
-
Diese und andere Aufgaben werden mit der vorliegenden Erfindung
erreicht, indem die Zeit vermindert wird, die für die
Verarbeitungsoperationen mit allen Elementen eines Vektors erforderlich
ist. Die Vektorregister werden in eine Anzahl kleinerer Register
unterteilt, von denen jedes beispielsweise vier Elemente eines
Vektors mit 256 Elementen speichert. Jedem kleineren Register
ist ein Elementprozessor mit der gleichen Funktion wie der der
Pipeline-Verarbeitungseinheit zugeordnet. Jeder Elementprozessor
und das entsprechende kleinere Register bilden eine Einheit.
Eine Anzahl dieser Einheiten wird in einer parallelen
Konfiguration verbunden. In dieser Konfiguration benötigt eine
arithmetische Operation, wenn sie mit den Elementen eines Einzelvektors
ausgeführt wird, etwa die gleiche Zeit wie eine arithmetische
Operation mit vier Vektorelementen, wenn dabei der typische
Vektorprozessor von Fig. 1 verwendet wird. Dadurch wird die
Leistungsfähigkeit des Vektorprozessors wesentlich verbessert, was
durch die vorliegende Erfindung bewirkt wird.
Kurze Beschreibung der Zeichnungen
-
Ein vollständiges Verständnis der vorliegenden Erfindung kann
aus der folgenden detaillierten Beschreibung und den
begleitenden Zeichnungen gewonnen werden, die nur zur Illustrationen
dienen und somit keine Einschränkung der vorliegenden Erfindung
darstellen, wobei:
-
Fig. 1 einen konventionellen Vektorprozessor darstellt;
-
Fig. 2 einen parallelen Vektorprozessor der vorliegenden
Erfindung darstellt, bei dem die Vektorregister aus Fig. 1 in eine
Anzahl kleinerer Register unterteilt sind und jedem kleineren
Register ein Elementprozessor zugeordnet ist, der die
Operationen mit den Vektorelementen, die in den kleineren Registern
gespeichert sind, ausführt;
-
Fig. 3 die detaillierte Konstruktion eines Elementprozessors aus
Fig. 2 darstellt;
-
Fig. 4 eine Anzahl kleinerer Register und ihre entsprechenden
Elementprozessoren darstellt, die nach der vorliegenden
Erfindung in paralleler Konfiguration verbunden sind, um die
Operationen mit den Vektorelementen, die in den kleineren Registern
eines Vektorregisters gespeichert sind, auszuführen und
-
Fig. 5 die Konstruktion des Prozessorschnittstellenadapters von
Fig. 4 darstellt.
Detaillierte Beschreibung des bevorzugten Anwendungsbeispiels
-
In Fig. 1 wird ein Pipeline-Vektorprozessor 10 dargestellt. Es
wird eine Anzahl Vektorregister 12 (VR0 bis VR15) gezeigt, wobei
jedes Register 256 Elemente (Element 0 bis Element 255)
speichert. Im bevorzugten Anwendungsbeispiel enthält ein Element ein
Vier-Byte-Binärwort. Mit jedem der Vektorregister 12 ist ein
Selektor 14 verbunden, der die entsprechenden Elemente aus den
Vektorregistern auswählt und die gewählten Elemente an eine
Pipeline-Verarbeitungseinheit 16 weiterleitet. Mit dem Selektor
ist die Pipeline-Verarbeitungseinheit 16 verbunden, die die
entsprechenden Elemente empfängt und die gewählten Operationen,
beispielsweise arithmetische Operationen, mit diesen Elementen
ausführt. So kann beispielsweise die Verarbeitungseinheit 16 das
Element 0 aus dem Vektorregister VR0 und das Element 1 aus dem
Vektorregister VR0 empfangen und mit diesen Elementen eine
Addition
ausführen. Die Verarbeitungseinheit 16 kann dann das
Element 2 aus dem Vektorregister VR0 empfangen und dieses Element
zu der vorigen Summe addieren, wodurch eine neue Summe entsteht.
Die Verarbeitungseinheit 16 kann mit der Addition der
verbleibenden Elemente des Vektorregisters VR0 fortfahren, wobei
jeweils das nächste Element zu der zuletzt entstandenen Summe
addiert und so eine Endsumme der Elemente des im Vektorregister
VR0 gespeicherten Vektors gebildet wird. Mit der
Pipeline-Verarbeitungseinheit ist ein Ergebnisregister 18, in dem die Endsumme
gespeichert wird, verbunden. Das Ergebnisregister 18 ist mit
allen Vektorregistern 12 über ein Selektor-Gatter 20 verbunden,
über das die Endsumme vom Ergebnisregister 18 in ein anderes
Vektorregister übertragen werden kann, falls dies gewünscht
wird.
-
Allerdings weist die in Fig. 1 dargestellte
Vektorprozessorkonfiguration bestimmte Unterschiede zu der in der vorliegenden
Erfindung vorhandenen Vektorprozessorkonfiguration auf. Im
vorliegenden Beispiel wird ein erstes Element aus dem Register VR0
und ein zweites Element aus dem Register VR0 gewählt. Die
Elemente werden in der oben beschriebenen Weise addiert. Ein
drittes Element wird aus dem Register VR0 gewählt und in der
beschriebenen Weise zur vorherigen Summe addiert. Jedes der 256
Elemente muß nacheinander auf diese Weise aus dem Register VR0
gewählt und addiert werden, um eine Endsumme der Elemente zu
bilden, die den im Vektorregister VR0 gespeicherten Vektor
definieren. Die für die Verarbeitung des im Vektorregister VR0
gespeicherten Vektors erforderliche Zeit ist folglich eine
Funktion der Zahl der Elemente pro Vektor und der für die
Verarbeitung eines Vektorelementes erforderlichen Zykluszeit. Die
Leistungsfähigkeit eines Vektorprozessors kann verbessert werden,
indem die für die Verarbeitung des in einem Vektorregister
gespeicherten Vektors erforderliche Zeit verringert wird.
-
In Fig. 2 wird ein paralleler Vektorprozessor dargestellt. In
Fig. 2 speichert jedes der Vektorregister VR0 bis VR15 von
Fig. 1 einen Vektor mit N Elementen. Jedes der Vektorregister
VR0 bis VR15 ist in eine Anzahl kleinerer Register 12a
unterteilt. Jedes der kleineren Register 12a speichert M Elemente des
Vektors mit N Elementen, wobei M kleiner als N ist. Speichert
beispielsweise jedes der Vektorregister VR0 bis VR15 einen
Vektor mit 256 Elementen, kann ein kleineres Register 12a vier
Elemente des Vektors mit 256 Elementen speichern. Eine
entsprechende Anzahl Elementprozessoren 20 ist mit der Anzahl kleinerer
Register 12a verbunden, die die arithmetischen Operationen mit
den Elementen eines in einem Vektorregister gespeicherten
Vektors ausführen. Im vorliegenden Beispiel führt jeder der
Elementprozessoren 20 Verarbeitungsoperationen mit vier Elementen
des Vektors aus. Die Ergebnisse dieser Operationen werden von
den Elementprozessoren 20 in Parallelverarbeitung gleichzeitig
erzeugt und können an den entsprechenden Stellen eines der
Vektorregister VR0 bis VR15 gespeichert werden.
-
In Fig. 3 wird ein Blockdiagramm eines Elementprozessors 20
dargestellt. In Fig. 3 ist ein lokaler Speicher 12a gleichbedeutend
mit den Vektorregistern 12a von Fig. 2. Ein Systembus 11 und 11a
ist mit einem Treiberschaltkreis 9 am einen Ende und mit einem
Empfängerschaltkreis 7 am anderen Ende verbunden. Ein erster
Eingabedatenassembler (ASM) 13 ist an einen Treiberschaltkreis 9
und einen Empfängerschaltkreis 7 angeschlossen. Der ASM 13 ist
weiterhin an den lokalen Speicher 12a und an den
Elementprozessor 20 angeschlossen. Der in Fig. 3 abgebildete Elementprozessor
20 enthält einen zweiten Eingabedatenassembler (ASM) 20a, der an
den lokalen Speicher 12a und den ersten Eingabedatenassembler 13
angeschlossen ist. Ein Busschnittstellenregister (BIR) 15 ist
mit Bus 11 und Bus 11a am einen Ende und mit dem zweiten
Eingabedatenassembler 20a am anderen Ende verbunden. Ein
Auswahlregister 20b für das auszurichtende Element und ein Auswahlregister
20c für das ausgerichtete Element sind mit dem
Eingabedatenassembler 20a verbunden. Das Auswahlregister 20c ist direkt an ein
Echt-/Komplementwert-Gatter 20d angeschlossen, während das
Auswahlregister 20b an ein anderes Echt-/Komplementwert-Gatter 20e
über eine Vornormalisierungsschiebesteuerung 20f angeschlossen
ist. Die Echt-/Komplementwert-Gatter 20d und 20e sind jeweils an
ein Rechen- und Leitwerk (ALU) 20g angeschlossen. Das ALU 20g
ist an ein Ergebnisregister 20h über eine
Nachnormalisierungsschiebesteuerung 20i angeschlossen, wobei das Ergebnisregister
20h an den lokalen Speicher 12a angeschlossen ist, in dem ein
Ergebnis gespeichert wird, wenn der Elementprozessor 20 eine
arithmetische Operation mit den vier in dem kleineren Register
12a eines Vektorregisters 12 gespeicherten Elementen eines
Vektors abgeschlossen hat. Ein Multiplikatorschaltkreis 20j ist
zwischen den Eingabedatenassembler 20a und das ALU 20g
geschaltet. Zwei Operanden werden vom Multiplikatorschaltkreis 20j
empfangen. Eine Summenausgabe und eine Übertragausgabe werden
von dem Multiplikatorschaltkreis 20j erzeugt, die beide von dem
ALU 20g empfangen werden.
-
In Fig. 4 werden entsprechend der vorliegenden Erfindung die
Blöcke 0 bis 63 dargestellt, von denen jeder eine Einheit 30
bildet. Weiterhin verkörpert jede Einheit 30 eine Kombination
aus einem kleineren Register 12a und einem zugeordneten
Elementprozessor 20. Die Einheiten 30 sind in paralleler Konfiguration
miteinander verbunden, wie in Fig. 4 dargestellt, um die
Geschwindigkeit zu erhöhen, mit der die Elemente eines in einem
Vektorregister gespeicherten Vektors addiert werden, um die
Summe der Vektorelemente dieses Vektors zu bilden. Zur
leichteren Beschreibung ist zu beachten, daß in Fig. 2 oder 3 ein
Elementprozessor 20 zusammen mit dem zugeordneten kleineren
Register 12a eine Einheit bildet, die durch die Bezugsnummer 30
bezeichnet wird. In Fig. 4 stellt jeder der Blöcke 0 bis 7 eine
Einheit dar, wie sie in Fig. 2 oder 3 unter Bezugsnummer 30
bezeichnet ist. Die Blöcke 0 bis 7 bilden zusammen eine
Gesamteinheit 40. Eine Anzahl dieser Gesamteinheiten 40 sind in
paralleler Konfiguration verbunden. Vier der Gesamteinheiten 40 sind zu
einem Anschluß 51 zusammengefaßt und vier der verbleibenden
Gesamteinheiten 40 sind zu einem weiteren Anschluß 52
zusammengefaßt. Weiterhin entsprechen vier der Gesamteinheiten 40 einem
Vektor mit 128 Elementen, der in den kleineren Registern 12a der
Blöcke 0 bis 31 gespeichert ist, und vier der verbleibenden
Gesamteinheiten 40 entsprechen einem anderen Vektor mit 128
Elementen, der in den kleineren Registern 12a der Blöcke 32 bis 63
gespeichert ist. Dadurch ist die Konfiguration von Fig. 4 in der
Lage, eine Summe aus insgesamt 256 Elementen eines Vektors zu
bilden. Anschluß 51 ist mit einem bidirektionalen Treiber 42 und
Anschluß 52 mit einem bidirektionalen Treiber 44 verbunden.
Beide Treiber sind an ihren Ausgängen mit einem weiteren Anschluß
53 verbunden. Ein Prozessorschnittstellenadapter (PIA) 50 ist
mit Anschluß 53 verbunden, um die Funktionsweise der Anzahl
Einheiten 30 zu leiten, die in der Anzahl der Gesamteinheiten 40
enthalten sind. Ein Hauptspeicher 52 ist an den PIA 50
angeschlossen. Eine Instruktionsverarbeitungseinheit (IPU) 54 ist an
den PIA 50 und den Speicher 52 angeschlossen.
-
In Fig. 5 wird die Konstruktion des PIA 50 dargestellt. Der PIA
50 enthält ein Vektorinstruktionsregister (VIR) 50a, das an die
IPU 54 angeschlossen ist, um eine Vektorinstruktion von der IPU
zu empfangen und temporär zu speichern. Ein Vektordatenregister
(VDR) 50b ist an den Speicher 52 und die IPU 54 angeschlossen,
um die Daten aus dem Speicher 52 zu empfangen und temporär zu
speichern. Ein Vektorstatusregister (VSR) 50c ist an den
Speicher 52 und die IPU 54 angeschlossen, um die Daten aus Speicher
52 zu empfangen und temporär zu speichern. Ein
Picosteuerspeicher 50d ist an das VIR 50a angeschlossen, um die
Vektorinstruktion zu dekodieren, die im VIR 50a gespeichert ist, und um eine
Picosteuerroutine zu wählen, die im Speicher 50d gespeichert
ist. Ein Befehlsregister 50e ist über einen Befehlsbus zur
Steuerung der Elementprozessoren an den Picosteuerspeicher 50d und
die Elementprozessoren der Einheiten 30 angeschlossen. Eine
Bussteuerung 50f ist an das VDR 50b und an die
Elementprozessoren der Einheiten 30 angeschlossen, um Daten vom VDR 50b zu
empfangen und die Daten über einen Datenbus an die
Elementprozessoren 20 der Einheiten 30 zu übertragen. Die Bussteuerung 50f kann
Daten auch von einem Elementprozessor an einen anderen
Elementprozessor
leiten. Das VSR 50c ist außerdem über eine
Adreßsteuerung 50h an eine Bussteuerung 50h angeschlossen. Die
Adreßsteuerung 50h erzeugt Adressen entsprechend den vom VSR 50c
empfangenen Daten. Die Bussteuerung 50g ist zur Übertragung der
erzeugten Adressen an die Elementprozessoren 20 der Einheiten 30 über
einen Adreßbus an die Elementprozessoren 20 der Einheiten 30
angeschlossen.
-
Die Funktionsweise des Interelement-Prozessors nach der
vorliegenden Erfindung wird in den folgenden Abschnitten beschrieben,
wobei auf Fig. 3 bis 5 Bezug genommen wird.
-
Angenommen, die IPU 54 habe den PIA 50 bereits angewiesen, Daten
aus dem Speicher 52 über die Elementprozessoren 20 in eines oder
mehrere der Vektorregister VR0 bis VR15 abzurufen. Weiterhin sei
angenommen, jedes der Vektorregister VR0 bis VR15 besitze eine
Länge von 256 Elementen. Dann folgt daraus, daß sich in einem
oder mehreren der Vektorregister 12 ein Vektor mit 256 Elementen
befindet. Wird ein Vektor mit 256 Elementen in einem oder
mehreren Vektorregistern 12 gespeichert, weist die IPU 54 den PIA 50
an, eine Anweisung INTERNAL ACCUMULATE auszuführen. Beim
Ausführen der Anweisung INTERNAL ACCUMULATE wird jedes der in den
kleineren Registern gespeicherten Elemente addiert, wobei eine
Zwischensumme errechnet wird, die im Ergebnisregister 20h
gespeichert wird, welches dem entsprechenden Elementprozessor 20
zugeordnet ist, der mit dem kleineren Register verbunden ist.
Beim Ausführen der Anweisung INTERNAL ACCUMULATE weist der PIA
50 den Elementprozessor 20, der jeder Einheit 30 zugewiesen ist,
an, das erste und zweite Element aus seinem entsprechenden
kleineren Register 12a abzurufen. In dem Beispiel wird angenommen,
daß in jedem kleineren Register 12a vier Elemente gespeichert
sind. Das erste und zweite Element der kleineren Register 12a
werden an den entsprechenden Elementprozessor 20 weitergeleitet.
Gesteuert von der IPU 54 weist der PIA 50 die Elementprozessoren
20 an, die ersten und zweiten Elemente zu addieren und die Summe
im Ergebnisregister 20h, das jedem Elementprozessor 20
zugewiesen
ist, zu speichern. Jeder der Elementprozessoren 20 führt die
Additionsoperation aus und speichert die Summe im
Ergebnisregister 20h. Gesteuert von der IPU 54 weist der PIA 50 jeden der
Elementprozessoren 20 an, das dritte Element aus ihren
entsprechenden kleineren Registern 12a abzurufen, das dritte Element zu
der im Ergebnisregister 20h gespeicherten Summe zu addieren und
die neu errechnete Summe im Ergebnisregister 20h zu speichern.
Während die Elementprozessoren 20 diese weitere Anweisung
ausführen, weist der PIA 50 jeden der Elementprozessoren 20 an, das
vierte Element aus ihren entsprechenden kleineren Registern 12a
abzurufen, das vierte Element zu der in ihrem entsprechenden
Ergebnisregister 20h gespeicherten Summe zu addieren und die Summe
der vier Elemente im entsprechenden Ergebnisregister 20h zu
speichern. Als Ergebnis wird ein Zwischensummenelement im
Ergebnisregister 20h jedes Elementprozessors 20 jeder zugehörigen
Einheit 30 gespeichert. Das Zwischensummenelement stellt die
Summe der vier in den entsprechenden kleineren Registern 12a
gespeicherten Elemente dar.
-
Gesteuert von der IPU 54, weist der PIA 50 alle Prozessoren 20,
die den Einheiten 30 zugeordnet sind, an, die
Zwischensummenelemente zu addieren und so eine Endsumme zu errechnen. Die
Prozessoren 20 addieren die Zwischensummenelemente auf folgende Weise.
-
Das in Einheit 30/Block 1 gespeicherte Zwischensummenelement
wird zu dem in Einheit 30/Block 0 gespeicherten
Zwischensummenelement addiert, wobei die Summe in Einheit 30/Block 0
gespeichert bleibt. Gleichzeitig wird das in Einheit 30/Block 3
gespeicherte Zwischensummenelement zu dem in Einheit 30/Block 2
gespeicherten Zwischensummenelement addiert, wobei die Summe in
Einheit 30/Block 2 gespeichert bleibt. Das in Einheit 30/Block 5
gespeicherte Zwischensummenelement wird zu dem in Einheit
30/Block 4 gespeicherten Zwischensummenelement addiert, wobei die
Summe in Einheit 30/Block 4 gespeichert bleibt. Das in Einheit
30/Block 7 gespeicherte Zwischensummenelement wird zu dem in
Einheit 30/Block 6 gespeicherten Zwischensummenelement addiert,
wobei die Summe in Einheit 30/Block 6 gespeichert bleibt. Aus
diesem Grund sind die Zwischensummen in den Einheiten 30/Blöcke
0, 2, 4 und 6 der ersten Gesamteinheit 40 gespeichert. Die
zweite bis achte Gesamteinheit 40 werden nach dem gleichen
Verfahren berechnet, wobei die Zwischensummen in folgenden
zusätzlichen Einheiten 30 gespeichert werden: 8, 10, 12, usw. bis 62.
-
Als nächstes wird die in Einheit 30/Block 2 gespeicherte
Zwischensumme zu der in Einheit 30/Block 0 gespeicherten
Zwischensumme addiert, wobei die neue Zwischensumme in Einheit 30/Block
0 gespeichert wird. Die in Einheit 30/Block 4 gespeicherte
Zwischensumme wird zu der neuen in Einheit 30/Block 0 gespeicherten
Zwischensumme addiert, wobei die entstehende neue Zwischensumme
in Einheit 30/Block 0 gespeichert wird. Die in Einheit 30/Block
6 gespeicherte Zwischensumme wird zu der neuen in Einheit
30/Block 0 gespeicherten Zwischensumme addiert, wobei die
entstehende neue Zwischensumme in Einheit 30/Block 0 gespeichert wird.
Für die zweite bis sechste der Gesamteinheiten wird das gleiche
Verfahren durchgeführt, so daß die weiteren Zwischensummen in
folgenden zusätzlichen Einheiten 30 gespeichert werden: 8, 16,
24, usw. bis 56.
-
Die weitere in Einheit 30/Block 8 gespeicherte Zwischensumme
wird zu der weiteren in Einheit 30/Block 0 gespeicherten
Zwischensumme addiert, wobei eine erste weitere Zwischensumme in
Einheit 30/Block 0 gespeichert wird. Die weitere in Einheit
30/Block 16 gespeicherte Zwischensumme wird zu der ersten
weiteren in Einheit 30/Block 0 gespeicherten Zwischensumme addiert,
wobei eine zweite weitere Zwischensumme in Einheit 30/Block 0
gespeichert wird. Die weitere in Einheit 30/Block 24
gespeicherte Zwischensumme wird zu der zweiten weiteren in Einheit
30/Block 0 gespeicherten Zwischensumme addiert, wobei eine
dritte weitere Zwischensumme in Einheit 30/Block 0 gespeichert
wird. Gleichzeitig werden die weiteren in den Blöcken 32, 40, 48
und 56 gespeicherten Zwischensummen auf die gleiche Weise
addiert, wobei eine vierte weitere Zwischensumme in Einheit
30/Block 32 gespeichert wird. Die vierte weitere Zwischensumme,
die in Einheit 30/Block 32 gespeichert ist, wird zu der dritten
weiteren Zwischensumme, die in Einheit 30/Block 0 gespeichert
ist, über bidirektionale Treiber 44 und 42 addiert, wobei die
daraus resultierende Endsumme in Einheit 30/Block 0 gespeichert
wird. Die Endsumme stellt die Summe aller 256 Elemente des in
einem Vektorregister gespeicherten Vektors dar. Die Endsumme
kann, falls erforderlich, von der IPU 54 verwendet werden.
-
Die Betriebsweise des in Fig. 3 abgebildeten Elementprozessors
20 kann in vier Betriebszyklen unterteilt werden: einen
sogenannten ersten Zyklus, der aus dem Lesen des lokalen Speichers
und der Vornormalisierungsauswahl besteht; einem zweiten Zyklus,
der aus einer Vornormalisierungsverschiebung besteht; einem
dritten Zyklus, der aus dem ALU-Betrieb besteht und einem
vierten Zyklus, der aus einer Nachnormalisierungsverschiebung
besteht.
-
Angenommen, der PIA 50 habe jeden der Elementprozessoren 20
angewiesen, die Elemente ihrer kleineren Register zu addieren und
die Ergebnisse dieser Operation im Ergebnisregister 20h zu
speichern. Der PIA 50 weist jeden der Elementprozessoren 20 an, ihre
vier Elemente aus ihren entsprechenden kleineren Registern 12a
(aus dem lokalen Speicher), die den Vektorregistern 12
zugeordnet sind, abzurufen. Bei Betrachtung der Betriebsweise des
Elementprozessors 0 wird ersichtlich, daß die Elemente 0 bis 3
durch den Empfänger 7 über den Bus 11a vom Speicher 52 empfangen
und über ASM 13 im lokalen Speicher 12 gespeichert werden.
Weiterhin wird angenommen, daß die Elemente 0 bis 3
Gleitkommaelementoperanden darstellen.
-
Weist der PIA 50 den Elementprozessor 0 (20) an, die Elemente 0
bis 3 zu addieren und die Summe im Ergebnisregister 20h zu
speichern, werden im ersten Zyklus die Operanden der ersten beiden
Elemente (eines Vektors mit vier Elementen) aus dem lokalen
Speicher 12a gelesen und über den Eingabedatenassembler 20a
temporär
im Auswahlregister 20c und im Auswahlregister 20b
gespeichert. Gleichzeitig gelangen die Exponenten der jeweiligen
Elemente auf einen Exponentensteuerpfad (nicht abgebildet), auf dem
die Größendifferenz der Exponenten berechnet wird. Deshalb wird
das Element mit dem kleineren Exponenten an das Auswahlregister
20b und das Element mit dem größeren Exponenten an das
Auswahlregister 20c geleitet. Die Auswahlregister 20c und 20b werden am
Ende des ersten Zyklus mittels einer Taktgebersteuerung
zwischengespeichert.
-
Zu Beginn des zweiten Zyklus wird eine Verschiebungsoperation
begonnen. Das Element mit dem größeren Exponenten, das im
Auswahlregister 20c gespeichert ist, wird an einen Eingang des
Rechen- und Leitwerks (ALU) 20g geleitet. Die Information für
die Verschiebungssteuerung wird vom Exponentensteuerpfad (nicht
abgebildet) an die Vornormalisierungsschiebesteuerung 20f
weitergeleitet, in dem das Element mit dem kleineren Exponenten,
das im Auswahlregister 20b gespeichert ist, durch die
Vornormalisierungsschiebesteuerung 20f nach rechts verschoben wird, um
das genannte Element auf das Element auszurichten, das den
größeren Exponenten besitzt und das gleichzeitig an einen Eingang
der ALU geleitet wird. Gleichzeitig wählt die ALU 20g die
entprechenden Eingänge der Echt-/Komplementwert-Gatter 20d und 20e
aus, um die Elemente aus den Auswahlregistern 20c und 20b über
die Echt-/Komplementwert-Gatter 20d und 20e zu empfangen.
-
Im dritten Zyklus wird der Betrieb des Elementprozessors 20 von
Fig. 3 der Betriebsweise des Rechen- und Leitwerks (ALU) 20g
zugewiesen. Die ALU besteht aus einem
8-Byte-Hochgeschwindigkeitsaddierer mit Komplementärarithmetik und mit Endübertrag und
Rekomplementierung. Die ALU führt eine Additionsoperation aus,
wobei die Bits von vier Elementen, im Beispiel der Elemente 0
bis 3, die in den kleineren Registern 12a des Elementprozessors
0 gespeichert sind, der dem Vektorregister VR0 zugeordnet ist,
addiert werden. Die Ergebnisse dieser Addition werden
schließlich im lokalen Speicher 12a gespeichert. Allerdings muß vor
diesem Schritt während des vierten Zyklus eine
Nachnormalisierung durchgeführt werden.
-
Ist die Additionsoperation von der ALU 20g abgeschlossen, wird
im vierten Zyklus eine Nachnormalisierung durchgeführt. Im
Datenverarbeitungsbereich beinhaltet der Begriff
"Nachnormalisierung" die Schritte zur Feststellung führender hexadezimaler
Nullen in den von der ALU erzeugten Ergebnissen und zur
Linksverschiebung der Ergebnisse in Übereinstimmung mit den
festgestellten Nullen. Der Ergebnisexponent muß angepaßt werden, indem
der Exponent für jede verschobene Ziffer um 1 verringert wird.
Die Ausgabeziffern der ALU 20g werden von der
Nachnormalisierungsschiebesteuerung 20i auf ihren Nullstatus geprüft und die
Ergebnisse der ALU-Ausgabe entsprechend den festgestellten
Nullen nach links verschoben. Die nach links verschobenen
Ergebnisse der ALU-Ausgabe werden an das Ergebnisregister 20h zur
temporären Speicherung weitergeleitet. Der Exponentensteuerpfad
(nicht abgebildet) erhöht oder vermindert den Exponentenwert des
Ergebniselements (Ausgabe der ALU) so, daß der korrekte
Endexponentenwert an das Ergebnisregister 20h geleitet wird. Auf diese
Weise wird im Ergebnisregister 20h ein Ergebniselement
gespeichert, dessen Operand entsprechend den im ALU-Ausgabewert
gefundenen Nullstellen nach links verschoben ist, wobei der Exponent
des ALU-Ausgabewertes den korrekten Endwert des Exponentenwertes
darstellt. Im nächsten, dem vierten Zyklus folgenden Zyklus
kann, falls gewünscht, das Ergebniselement an den lokalen
Speicher 12a geleitet und dort gespeichert werden. Die
Funktionsweise wird für die beiden verbleibenden Elemente wiederholt, um
so eine Summe der vier im Ergebnisregister 20 gespeicherten
Elemente zu erhalten. Die Summe der vier Elemente bildet das
Zwischensummenelement.
-
Durch den technologischen Fortschritt in der Verkleinerung
integrierter Schaltkreise sind die Produktionskosten der
integrierten Schaltkreise niedrig. Aus diesem Grund sind auch die Kosten
für die Herstellung größerer Mengen dieser Chips vergleichsweise
niedrig. Folglich wird es auch ökonomisch vertretbar, eine
größere Anzahl integrierter Schaltkreise zu verwenden, um die
Leistungsfähigkeit eines Computersystems, speziell des
Vektorverarbeitungsteils des Computersystems, zu optimieren. Die
vorliegende Erfindung benutzt dieses Prinzip, um die
Leistungsfähigkeit des vektorverarbeitenden Teils eines Computersystems zu
optimieren, insbesondere die Leistungsfähigkeit bezüglich der
Summierung der Elemente eines einzelnen Vektors, der in einem
Vektorregister gespeichert ist.