DE3485786T2 - Inter-element-verarbeitungsgeraet in einem hochleistungsfaehigen parallelen vektorverarbeitungsgeraet. - Google Patents

Inter-element-verarbeitungsgeraet in einem hochleistungsfaehigen parallelen vektorverarbeitungsgeraet.

Info

Publication number
DE3485786T2
DE3485786T2 DE8484110262T DE3485786T DE3485786T2 DE 3485786 T2 DE3485786 T2 DE 3485786T2 DE 8484110262 T DE8484110262 T DE 8484110262T DE 3485786 T DE3485786 T DE 3485786T DE 3485786 T2 DE3485786 T2 DE 3485786T2
Authority
DE
Germany
Prior art keywords
vector
elements
stored
register
processor
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Expired - Fee Related
Application number
DE8484110262T
Other languages
English (en)
Other versions
DE3485786D1 (de
Inventor
Chuck H Ngai
Edward R Wassel
Gerald J Watkins
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
International Business Machines Corp
Original Assignee
International Business Machines Corp
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by International Business Machines Corp filed Critical International Business Machines Corp
Publication of DE3485786D1 publication Critical patent/DE3485786D1/de
Application granted granted Critical
Publication of DE3485786T2 publication Critical patent/DE3485786T2/de
Anticipated expiration legal-status Critical
Expired - Fee Related legal-status Critical Current

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30003Arrangements for executing specific machine instructions
    • G06F9/30007Arrangements for executing specific machine instructions to perform operations on data operands
    • G06F9/3001Arithmetic instructions
    • G06F9/30014Arithmetic instructions with variable precision
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F15/00Digital computers in general; Data processing equipment in general
    • G06F15/76Architectures of general purpose stored program computers
    • G06F15/80Architectures of general purpose stored program computers comprising an array of processing units with common control, e.g. single instruction multiple data processors
    • G06F15/8053Vector processors
    • G06F15/8076Details on data register access
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30003Arrangements for executing specific machine instructions
    • G06F9/30007Arrangements for executing specific machine instructions to perform operations on data operands
    • G06F9/30036Instructions to perform operations on packed data, e.g. vector, tile or matrix operations

Landscapes

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

Description

  • 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.

Claims (3)

1. Vektorprozessor mit einer Anzahl von Vektorregistern (VR0 - VR15) von denen jedes in eine Anzahl kleinerer Register (12a) unterteilt ist, wobei jedes der kleineren Register einen separaten Ausgang aufweist und jedes Vektorregister einen Vektor und jedes der kleineren Register eine Anzahl (M) von Elementen des Vektors speichern,
mit einer Anzahl von Elementprozessoren (20), von denen jeder zugeordnet und verbunden ist mit den Ausgängen eines jeweils anderen Satzes der genannten kleineren Register für die Verarbeitung der Elemente innerhalb des zugeordneten Satzes, wobei die genannten Sätze ein kleineres Register je Vektorregister aufweisen und wobei alle kleineren Register in jedem Satz entsprechende Vektorelemente der genannten Vektoren speichern,
mit einer Steuereinrichtung (50) zur Auswahl der Elemente in den kleineren Registern für die Verarbeitung, wobei die Elementprozessoren die ausgewählten Elemente unterschiedlicher Sätze der genannten kleineren Register mindestens teilweise parallel verarbeiten,
mit Mitteln für die Verarbeitung eines in den genannten Prozessoren gespeicherten ersten Ergebnisses in einem ersten der genannten Elementprozessoren mit einem zweiten in einem zweiten der Elementprozessoren gespeicherten Ergebnis, um ein erstes Zwischenergebnis zu erhalten und Speicherung des ersten Zwischenergebnisses in dem genannten ersten Elementprozessor,
mit Mitteln zur Verarbeitung eines dritten Ergebnisses, das in dem genannten Prozessor gespeichert ist in einem dritten der genannten Elementprozessoren mit einem vierten Ergebnis, das in einem vierten der Elementprozessoren gespeichert ist, um ein zweites Zwischenergebnis zu erzielen und Speicherung des zweiten Zwischenergebnisses in dem genannten dritten Elementprozessor und
mit Mitteln für die Verarbeitung in dem genannten dritten Elementprozessor des zweiten Zwischenergebnisses, das in dem genannten dritten Elementprozessor gespeichert ist mit dem ersten Zwischenergebnis, das in dem genannten ersten Elementprozessor gespeichert ist, um ein fünftes Ergebnis zu erzielen und Speicherung dieses fünften Ergebnisses in dem ersten Elementprozessor.
2. Vektorprozessor nach Anspruch 1, bei dem jedes der genannten kleineren Register (12a) Elemente nur eines Vektors speichert.
3. Vektorprozessor nach Anspruch 1, bei dem jeder Satz von kleineren Registern eine separate Sammelleitung (11, 12a) aufweist, welche die Ausgänge der genannten kleineren Register in dem genannten Satz mit dem zugeordneten Elementprozessor (20) verbindet.
DE8484110262T 1983-10-03 1984-08-29 Inter-element-verarbeitungsgeraet in einem hochleistungsfaehigen parallelen vektorverarbeitungsgeraet. Expired - Fee Related DE3485786T2 (de)

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
US53831883A 1983-10-03 1983-10-03

Publications (2)

Publication Number Publication Date
DE3485786D1 DE3485786D1 (de) 1992-07-30
DE3485786T2 true DE3485786T2 (de) 1993-02-04

Family

ID=24146415

Family Applications (1)

Application Number Title Priority Date Filing Date
DE8484110262T Expired - Fee Related DE3485786T2 (de) 1983-10-03 1984-08-29 Inter-element-verarbeitungsgeraet in einem hochleistungsfaehigen parallelen vektorverarbeitungsgeraet.

Country Status (4)

Country Link
EP (1) EP0136538B1 (de)
JP (1) JPS6083176A (de)
CA (1) CA1208790A (de)
DE (1) DE3485786T2 (de)

Families Citing this family (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP0167061A3 (de) * 1984-06-20 1988-07-27 Convex Computer Corporation Vektorverarbeitungsrechenmaschine
CA1233260A (en) 1985-03-13 1988-02-23 Chuck H. Ngai High performance parallel vector processor having a modified vector register/element processor configuration
US6643765B1 (en) 1995-08-16 2003-11-04 Microunity Systems Engineering, Inc. Programmable processor with group floating point operations

Family Cites Families (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR860001434B1 (ko) * 1980-11-21 1986-09-24 후지쑤 가부시끼가이샤 데이타 처리시 스템
JPS58149555A (ja) * 1982-02-27 1983-09-05 Fujitsu Ltd 並列処理装置
JPS58149556A (ja) * 1982-02-27 1983-09-05 Fujitsu Ltd 並列処理装置
US4967343A (en) * 1983-05-18 1990-10-30 International Business Machines Corp. Pipelined parallel vector processor including parallel configured element processors for processing vector elements in parallel fashion

Also Published As

Publication number Publication date
EP0136538A3 (en) 1988-01-27
DE3485786D1 (de) 1992-07-30
CA1208790A (en) 1986-07-29
JPS6083176A (ja) 1985-05-11
EP0136538A2 (de) 1985-04-10
EP0136538B1 (de) 1992-06-24

Similar Documents

Publication Publication Date Title
DE69131267T2 (de) Datenverarbeitungssystem für Daten mit einfacher Präzision und mit doppelter Präzision
DE69031899T2 (de) Befehlsmethode und Ausführungssystem
DE69030128T2 (de) Signalprozessor
DE3751503T2 (de) Datenprozessor in Pipelinestruktur mit der Fähigkeit mehrere Befehle parallel zu dekodieren und auszuführen.
DE69430838T2 (de) Schaltung und Verfahren zur parallelen Verschiebung und Addition
DE3424962C2 (de)
DE3685913T2 (de) Vektorenverarbeitung.
DE3686828T2 (de) Hochleistungsparalleler vektorprozessor mit modifizierter register/elementprozessor konfiguration.
DE69418146T2 (de) Temporärer Registersatz für einen superpipeline-superskalaren Prozessor
DE3306084A1 (de) Rechnerarchitektur zur gleitkomma -addition
DE3485771T2 (de) Leistungsfaehiger paralleler vektorprozessor.
DE4403917C2 (de) Vorrichtung zum Berechnen einer Bit-Besetzungszählung
DE2913327C2 (de) Matrix-Multiplizierer
DE2524046A1 (de) Elektronische datenverarbeitungsanlage
CH644461A5 (de) Digitale multipliziereinrichtung.
DE69632655T2 (de) Pipeline-Datenverarbeitungsanordnung zur Durchführung einer Mehrzahl von untereinander datenabhängigen Datenprozessen
DE69616718T4 (de) Vorrichtung und verfahren zur bestimmung von adressen fehlausgerichteter daten
DE3900246C2 (de)
DE68918840T2 (de) Fehlererkennung für teilschreiboperationen für speicher.
DE2830334C2 (de)
DE69622608T2 (de) Informationsprozessor
DE3486073T2 (de) Vektorverarbeitungsgeraet.
DE68903280T2 (de) Vektorschlange in computern mit vektorregister.
DE19628039B4 (de) Speicheradressen-Steuerschaltung
DE3485786T2 (de) Inter-element-verarbeitungsgeraet in einem hochleistungsfaehigen parallelen vektorverarbeitungsgeraet.

Legal Events

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