DE3485771T2 - Leistungsfaehiger paralleler vektorprozessor. - Google Patents

Leistungsfaehiger paralleler vektorprozessor.

Info

Publication number
DE3485771T2
DE3485771T2 DE8484109081T DE3485771T DE3485771T2 DE 3485771 T2 DE3485771 T2 DE 3485771T2 DE 8484109081 T DE8484109081 T DE 8484109081T DE 3485771 T DE3485771 T DE 3485771T DE 3485771 T2 DE3485771 T2 DE 3485771T2
Authority
DE
Germany
Prior art keywords
vector
registers
elements
stored
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
DE8484109081T
Other languages
English (en)
Other versions
DE3485771D1 (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
Application granted granted Critical
Publication of DE3485771D1 publication Critical patent/DE3485771D1/de
Publication of DE3485771T2 publication Critical patent/DE3485771T2/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
    • 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
    • G06F15/8084Special arrangements thereof, e.g. mask or switch
    • 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/30021Compare instructions, e.g. Greater-Than, Equal-To, MINMAX
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30003Arrangements for executing specific machine instructions
    • G06F9/30007Arrangements for executing specific machine instructions to perform operations on data operands
    • G06F9/30036Instructions to perform operations on packed data, e.g. vector, tile or matrix operations
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30003Arrangements for executing specific machine instructions
    • G06F9/3004Arrangements for executing specific machine instructions to perform operations on memory
    • G06F9/30043LOAD or STORE instructions; Clear instruction
    • 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/30098Register arrangements
    • G06F9/30105Register structure
    • G06F9/30109Register structure having multiple operands in a single register

Landscapes

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

Description

    HINTERGRUND DER ERFINDUNG
  • Die vorliegende Erfindung bezieht sich auf ein Computersystem, und insbesondere auf einen parallelen Vektorprozessor in dem Computersystem zum schnellen Verarbeiten eines Vektorpaares und zum Speichern der Ergebnisse der Verarbeitung.
  • Ein typischer Vektorprozessor, z.B. der in Figur 1 dargestellte Vektorprozessor besitzt eine Anzahl von Vektorregistern, wobei jedes Vektorregister einen Vektor speichert. Der Vektor besteht aus einer Anzahl von Vektorelementen. Eine Vektorverarbeitungseinheit ist mit einem Selektor verbunden, der an die Vektorregister angeschlossen ist zum Aufnehmen aufeinanderfolgender Elemente eines ersten Vektors aus einem ersten Vektorregister und zum Benutzen der entsprechenden Elemente, um eine arithmetische Operation mit den entsprechenden Elementen eines zweiten Vektors in einem zweiten Vektorregister durchzuführen. Die Ergenissse der arithmethischen Operation werden in entsprechenden Speicherstellen eines der Vektorregister oder in entsprechenden Speicherstellen eines dritten Vektorregister gespeichert.
  • Bei dieser Konfiguration ist es jedoch notwendig, die Operationen mit jedem entsprechenden Element der Vektoren nacheinander durchzuführen. Wenn die Vektoren aus 128 Elementen bestehen, müssen 128 Operationen nacheinander durchgeführt werden. Die benötigte Zeit, um Operationen mit allen 128 Elementen des Vektors zu vollenden, ist eine Funktion der Zykluszeit pro Operation der Recheneinheit, wenn sie jedes der entsprechenden Elemente verarbeitet.
  • Als Ergebnis der wachsenden Kompliziertheit von Computersystemen besteht die Notwendigkeit, die Leistungsfähigkeit des Vektorprozessorteiles des Computersystems zu erhöhen durch Verringern der Zeit, die erforderlich ist, arithmetische Operationen mit jedem der entsprechenden Elemente einer Anzahl von Vektoren, die in den Vektorregistern in dem Computersystem gespeichert sind, zu verarbeiten oder durchzuführen.
  • Ein Verfahren, die Leistungsfähigkeit von Computersystemen zu erhöhen, besteht darin, einen Entwurf zu übernehmen, wie zum Beispiel den in P.M.Kogge, "The Architecture of Pipelined Computers", 1981, Seiten 207-208, Hemisphere Publishing Corporation, New York, US erläuterten. In diesem Beispiel wird wird eine Vektoroperation dadurch ausgeführt, daß eine Anzahl von arithmetischen Einheiten gleichzeitig verschiedene Elemente des Vektors bearbeiten. Wenn der Vektor mehr Elemente besitzt als arithmetische Einheiten verfügbar sind, dann wird die Operation eine ganzzahlige Anzahl von Malen wiederholt.
  • In der euopäischen Patentanmeldung EP-A-0 053 457 (FUJITSU) ist eine andere Form eines Vektorprozessors offenbart, der als überlappender Vektorprozessor bezeichnet wird. Dieses Dokument beschreibt eine Anzahl von Vektorregistervorrichtungen, von denen jede für das Durchführen der Verarbeitung von Elementen des Vektors in kleinere Register unterteilt ist. Bei dieser Form des Vektorprozessors wird die Übertragung von Elementen aus den kleineren Registern zu dem Elementprozessor, in dem die arithmetische Operation durchgeführt wird, nicht gleichzeitig ausgeführt. Statt dessen wird ein erstes Element aus einem Vektorregister zu einer Zeit t1 übertragen, während das zweite Element zu einem späteren Zeitpunkt t2 übertragen wird. Diese Zeitverzögerung erhöht die gesamte Verarbeitungszeit für die Operation.
  • In der Fujitsu-Anmeldung wird die gesamte Operation durch eine getrennte Steuervorrichtung gesteuert und die Ergebnisse der arithmetischen Operation werden zur Speicherung in die Vektorregister zurückgeschickt.
  • ZUSAMMENFASSUNG DER ERFINDUNG
  • Es ist daher das Hauptziel der vorliegenden Erfindung, die Leistungsfähigkeit des Vektorprozessorteiles eines Computersystems zu erhöhen durch Verringern der Zeit, die erforderlich ist, um die entsprechenden Elemente des Vektors zu verarbeiten, die in einer Anzahl von Vektorregistern, die den Vektorprozessorteil des Computersystems bilden, gespeichert sind.
  • Es ist ein weiteres Ziel der vorliegenden Erfindung, die Leistungsfähigkeit des Vektorprozessorteils des Computersystems zu erhöhen durch Unterteilen der Anzahl von Vektorregistern in eine Anzahl kleinerer Register und durch Verarbeiten jedes der Elemente der kleineren Register parallel zueinander.
  • Diese und andere Ziele werden gemäß der beanspruchten vorliegenden Erfindung erreicht durch Verringerung der Zeit, die erforderlich ist, um die Verarbeitungsoperationen mit allen Elementen des Vektors zu vollenden. Die Vektorregister sind in eine Anzahl kleinerer Register unterteilt, von denen jedes z.B. 4 Elemente eines Vektors aus 128 Elementen speichert. Ein Elementprozessor ist an jedes kleinere Register angeschlossen, wobei der Elementprozessor die gleiche Funktion durchführt wie die Vektorverarbeitungseinheit. Jeder Elementprozessor und das entsprechende kleinere Register ist hinsichtlich der anderen Elementprozessoren und ihrer entsprechenden kleineren Register parallel verbunden.
  • Mit dieser Konfiguration ist, wenn eine arithmetische Operation bezüglich eines ersten und zweiten Vektors durchgeführt wird, die arithmetische Operation, die mit allen Elementen des Vektors (z.B. allen 128 Elementen) durchgeführt wird, in der Zeit vollendet, die erforderlich ist, um eine arithmetische Operation, in diesem Beispiel mit 4 entprechenden Elementen des Vektors, durchzuführen. Als Ergebnis wird die Leistungsfähigkeit eines Vektorprozessors als Ergebnis der Verwendung des Konzeptes der vorliegenden Erfindung wesentlich verbessert.
  • KURZE BESCHREIBUNG DER ZEICHNUNGEN
  • Ein vollständiges Verständnis der vorliegenden Erfindung erhält man durch das Lesen der unten gegebenen detaillierten Beschreibung und der dazugehörigen Zeichnungen, die lediglich zur Erläuterung dienen und daher die vorliegende Erfindung nicht beschränken und in denen:
  • Fig. 1 einen üblichen Vektorprozessor darstellt,
  • Fig. 2 den parallelen Vektorprozessor gemäß der vorliegenden Erfindung darstellt, bei dem die Vektorregister nach nach Figur 1 in eine Anzahl kleinerer Register unterteilt sind, wobei jedes kleinere Register 4 Elemente enthält, ein Elementprozessor mit jedem kleineren Register verbunden ist zum Durchführen von Verarbeitungsoperationen mit den Vektoren, die den vier Elementen des kleineren Registers zugeordnet sind und ein Prozessor-Schnittstellenadapter mit jedem der Elementprozessoren verbunden ist, um jeden Elementprozessor anzuweisen, Verarbeitungsoperationen mit den Vektoren durchzuführen,
  • Fig. 3 die Verbindung des Prozessor-Schnittstellenadapters mit jedem der Elementprozessoren nach Figur 2 veranschaulicht,
  • Fig. 4 die Konstruktion des Prozessor-Schnittstellenadapters nach den Figuren 2 und 3 verdeutlicht und
  • Fig. 5 eine detaillierte Konstruktion eines Elementprozessors nach den Figuren 2 und 3 veranschaulicht.
  • DETAILLIERTE BESCHREIBUNG DES BEVORZUGTEN AUSFÜHRUNGSBEISPIELS
  • In Figur 1 ist ein Vektorprozessor 10 dargestellt. Eine Anzahl von Vektorregistern 12 (VRO-VR15) sind dargestellt, wobei jedes Register 128 Elemente (Element 0-127) speichert. Bei dem bevorzugten Ausführungsbeispiel umfaßt ein Element ein Binärwort aus vier (4) Bytes. Ein Selektor 14 ist mit jedem der Vektorregister 12 verbunden zum Auswählen entsprechender Elemente der Vektorregister 12 und zum Durchschalten der ausgewählten Elemente zu einer Vektorverarbeitungseinheit 16. Die Vektorverarbeitungseinheit 16 ist mit dem Selektor verbunden zum Empfangen der entsprechenden Elemente und zum Durchführung ausgewählter Operationen mit den Elementen, wie zum Beispiel arithmetischer Operationen. Die Verarbeitungseinheit 16 kann zum Beispiel das Element 0 vom Vektorregister VRO und das entsprechende Element 0 vom Vektorregister VR15 empfangen und die folgende arithmetische Operation mit dem Element durchführen: VRO + VR15 TVR3. Bei dieser arithmetischen Operation wird jedes der binären Bytes des Elementes 0 in VRO zu jedem der binären Bytes des Elementes VR15 addiert, und die erhaltene Summe wird in der Stelle O des Vektorregisters VR3 gespeichert. Ein Ergebnisregister 18 ist mit der Verarbeitungseinheit verbunden zum Speichern der erhaltenen Summe, die von der Verarbeitungseinheit empfangen wird. Das Ergebnisregister 18 ist mit jedem der Vektorregister 12 über eine Auswählschaltung 19 verbunden, um die resultierende Summe aus dem Ergebnisregister 18 zu dem (in diesem Fall) Vektorregister VR3 zu übertragen.
  • Die in Figur 1 dargestellte Konfiguration besitzt bestimmte Nachteile. In dem obigen Beispiel wird ein erstes Element aus dem Register VRO und ein entsprechendes Element aus dem Register VR15 ausgewählt. Die Elemente werden in der obigen Weise addiert. Ein zweites Element wird aus den Registern VRO und VR15 ausgewählt und sie werden in der obigen Weise addiert. Jedes der 128 Elemente muß aus den Registern VRO und VR15 ausgewählt und nacheinander addiert werden, um die Verarbeitung der in den Vektorregistern VRO und VR15 gespeicherten Vektoren zu vollenden. Als Ergebnis ist die Zeit, die erforderlich ist, um das Verarbeiten der in den Vektorregistern VRO und VR15 gespeicherten Vektoren zu vollenden, eine Funktion der Anzahl der Elemente pro Vektor und der Zykluszeit, die erforderlich ist, um einen Satz von entsprechenden Elementen pro Vektor zu verarbeiten. Die Leistungsfähigkeit eines Vektorprozessors könnte verbessert werden durch Verringern der Zeit, die erforderlich ist, um ein Paar von Vektoren, das in einem Satz von Vektorregistern gespeichert ist, zu verarbeiten.
  • In Figur 2 ist ein paralleler Vektorprozessor gemäß der vorliegenden Erfindung dargestellt. Jedes der Vektorregister VRO bis VR15 in Figur 2 ist in eine Anzahl kleinerer Register 12a unterteilt, wobei jedes kleinere Register 12a beispielsweise 4 Elemente enthält. Eine entsprechende Anzahl von Elementprozessoren 20 ist mit der Anzahl kleinerer Register 12a zum Durchführen von Verarbeitungs-(arithmetischen) Operationen mit den entsprechenden Elementen der in den Vektorregister VRO bis VR15 gespeicherten Vektoren verbunden, wobei jeder der Elementprozessoren 20 Verarbeitungsoperationen mit 4 entsprechenden Elementen der Vektoren durchführt. Die Ergebnisse der Verarbeitungsoperation werden werden gleichzeitig durch jeden Elementprozessor parallel erzeugt und können in den entsprechenden Speicherstellen irgendeines der Vektorregister VRO bis VR15 gespeichert werden. Ein Prozessor-Schnittstellenadapter (PIA) 22 ist mit jedem der Elementprozessoren 20 zum Übertragen von Adressen, Daten und Befehlsinformationen zu jedem der Elementprozessoren verbunden. (Die tatsächliche Verbindung des PIA 22 mit jedem der Elementprozessoren 0-31 ist in Figur 3 dargestellt.) Eine Befehlsverarbeitungseinheit (IPU) 24 ist mit dem PIA 22 zum Übertragen von Vektorinstruktionen zu dem PIA 22 verbunden. Ein Hauptspeicher 26 ist mit dem PIA 22 zum Übertragen der Dateninformation und der Adressensteuerinformation zu dem PIA als Antwort auf seine Anforderung solcher Daten verbunden.
  • In Figur 3 ist die tatsächliche Verbindung des PIA 22 mit jedem der Elementprozessoren 20 (Prozessor 0 bis Prozessor 31) dargestellt. Der PIA 22 ist mit den Elementprozessoren 0,8,16 und 24 verbunden. Der Elementprozessor 0 ist mit den Elementprozessoren 1-7 in Reihe geschaltet. Der Elementprozessor 8 ist mit den Elementprozessoren 9-15 in Reihe geschaltet. Der Elementprozessor 16 ist mit dem Elementprozessor 17 bis 23 in Reihe geschaltet. Der Elementprozessor 24 ist mit den Elementprozessoren 25 bis 31 in Reihe geschaltet.
  • In Figur 4 ist der Aufbau des PIA 22 dargestellt. Der PIA 22 schließt ein Vektorbefehlsregister (VIR)22a ein, daß mit der IPU 24 zum Empfangen einer Vektorinstruktion aus der IPU und zum zeitweiligen Speichern der Vektorinstruktion verbunden ist. Ein Vektordatenregister (VDR)22b ist mit dem Speicher 26 und der IPU 24 zum Empfangen von Daten aus dem Speicher 26 und zum vorübergehenden Speichern der Daten verbunden. Ein Vektorstatusregister (VSR)22c ist mit dem Speicher 26 und der IPU 24 zum Empfangen von Adressensteuerinformationen aus dem Speicher und zum vorübergehenden Speichern der Informationen verbunden. Ein Piko-Steuerspeicher 22d ist mit dem VIR 22a zum Dekodieren der in dem VIR 22a gespeicherten Vektorinstruktion und zum Auswählen einer Piko-Steuerroutine, die in dem Speicher 22d gespeichert ist, verbunden. Ein Befehlsregister 22e ist mit dem Piko-Steuerspeicher 22d und den Elementprozessoren 20 über einen Steuerbus zum Steuern der Elementprozessoren verbunden. Eine Bussteuerung 22f ist mit dem VDR 22b zum Empfangen von Daten des VDR 23b und zum Übertragen der Daten zu den Elementprozessoren 20 über einen Datenbus verbunden. Die Bussteuerung 22f kann auch Daten von einem Elementprozessor zu einem anderen steuern. Das VSR 22c ist auch mit einer Bussteuerung 22g über eine Adreßsteuerung 22h verbunden. Die Adreßsteuerung 22h erzeugt Adressen, die den aus dem VSR 22c empfangenen Daten entsprechen. Die Bussteuerung 22g überträgt die erzeugten Adressen über einen Adreßbus zu den Elementprozessoren 20.
  • Die Arbeitsweise des parallelen Vektorprozessors nach Figur 2 wird jetzt unter Bezugnahme auf die Figuren 2 bis 4 beschrieben.
  • Die IPU 24 weist die PIA an, bestimmte Daten in die Vektorregister VRO und VR15 zu laden. Die IPU 24 überträgt einen LADE-Befehl zu der PIA 22. Der LADE-Befehl wird vorübergehend in den VR 22a gespeichert. Die in die Vektorregister VRO und VR15 zu ladenden Daten werden in dem Speicher 26 gespeichert. Wenn der PIA den LADE-Befehl empfängt, liest er spezielle Daten aus dem Speicher 26 aus und lädt diese Daten in das VDR 22b. Vor dem Ausgeben des LADE-Befehls lud die IPU 24 Adressensteuerinformation in das VSR 22c. Als Ergebnis wird von der Adressensteuerung 22h eine spezielle Adreßinformation erzeugt. Die Adreßinformation umfaßt die Adressen der ausgewählten Elementprozessoren 20, in die die Daten zu laden sind, und die Adressen von ausgewählten Elementen, die mit den ausgewählten Elementprozessoren 20 verbunden sind, in denen die Daten zu speichern sind. Der in dem VIR 22a gespeicherte LADE-Befehl wird durch den Piko- Steuerspeicher 22d dekodiert. Befehlsinformation, die dem LADE-Befehl entspricht und in dem Piko-Steuerspeicher 22d gespeichert ist, wird ausgewählt. Entsprechend der Adreßinformation, die durch die Adressensteuerung 22h erzeugt wird, werden die in dem VDR 22b gespeicherten Daten zur Speicherung in den ausgewählten Prozessoren 20 über die Bussteuerung 22f und einen Datenbus übertragen. Darüberhinaus wird entsprechend der durch die Adreßsteuerung 22h erzeugten Information die Befehlsinformation, die in dem Piko-Steuerspeicher 22d gespeichert ist und durch den dekodierten LADE-Befehl ausgewählt wurde, zu den ausgewählten Prozessoren 20 über das Befehlsregister 22e und einen Befehlsbus übertragen. Die ausgewählte Befehlsinformation veranlaßt, daß die in den ausgewählten Prozessoren 20 gespeicherten Daten in die ausgewählten Elemente der kleineren Register 12a geladen werden, wobei die ausgewählten Elemente durch die von der Adreßsteuerung 22h erzeugte Adreßinformation identifiziert werden.
  • Demgemäß sei beispielsweise angenommen, daß ein Vektor mit 128 Elementen in jedem Vektorregister VRO und VR15 gespeichert ist. Ein Element umfaßt ein Binärwort aus vier (4) Bytes. Es sei weiter angenommen, daß folgende vektorarithmetische Operation mit den in den Vektorregistern VRO und VR15 gespeicherten Vektoren auszuführen ist: VRO + VR15 T VR15. Die IPU 24 weist den PIA 22 an, eine Additionsoperation durchzuführen, wobei der in dem Vektorregister VRO gespeicherte Vektor zu dem in dem Vektorregister VR15 gespeicherten Vektor addiert wird, und die Ergebnisse in dem Vektorregister VR15 zu speichern sind. Die IPU 24 überträgt den ADDIER-Befehl zu dem PIA 22. Der ADDIER-Befehl wird vorübergehend in dem VIR 22a gespeichert. Entsprechend dem ADDIER-Befehl wird bestimmte Befehlsinformation, die in dem Speicher 22d gespeichert ist, ausgewählt. Wenn der ADDIER-Befehl durch den PIA 22 empfangen wird, liest die IPU 24 spezifische Daten aus dem Speicher 26 aus, die die Adressen der Elemente in den kleineren Registern darstellt, mit denen die die Addier-Operation durchgeführt wird, und die Adressen der ausgewählten Prozessoren 20, welche die Addier-Operation durchführen. Als Ergebnis wird Adresseninformation durch die Adressensteuerung 22h erzeugt. Die Adreßinformation wird zu den ausgewählten Prozessoren 20 über die Bussteuerung 22g und einen Adreßbus übertragen. Entsprechend dieser Adreßinformation, weist die aus dem Piko-Steuerspeicher 22d ausgewählte Information die ausgewählten Prozessoren 20 an, die ausgewählten Elemente aus den mit ihnen verbundenen kleineren Registern 12a, die den Vektorregistern VRO und VR15 entsprechen, auszulesen. Wenn die Elemente ausgelesen werden, veranlaßt die ausgewählte Befehlsinformation die ausgewählten Prozessoren 20, den ADDIER-Befehl auszuführen. Wenn zum Beispiel die Elemente 0-3 den in den Vektorregistern VRO und VR15 gespeicherten Vektoren zugeordnet sind, werden sie von dem Elementprozessor 0 empfangen. Der Elementprozessor 0 addiert die entsprechenden Elemente und speichert entsprechend der ausgewählten Befehlsinformation die Ergebnisse der Additionsoperation in den entsprechenden Stellen des Vektorregisters VR15. Das heißt, das Element 0 der Vektorregisters VRO wird zum Element 0 des Vektorregisters VR15 addiert und die Summe wird in der Speicherstelle des Elementes 0 des Vektorregisters VR15 gespeichert. Die Elemente 1, 2 und 3 der Vektorregister VRO und VR15 werden in gleicher Weise addiert, wobei die Summen in den Speicherstellen der Elemente 1, 2 und 3 des Vektorregisters VR15 gespeichert werden. Die Elemente 4,5,6 und 7, die mit den Vektorregistern VRO und VR15 verbunden sind, werden durch den Elementproessor 1 in der gleichen, oben beschriebenen Weise verarbeitet, wobei die Verarbeitung dieser Elemente gleichzeitig mit dem Verarbeiten der Elemente 0, 1, 2 und 3 durchgeführt wird. Die restlichen Elemente des Vektors, die in den Vektorregistern VRO und VR15 gespeichert sind, werden durch die Elementprozessoren 2-31 verarbeitet, in Gruppen zu 4 Elementen, gleichzeitig mit dem Verarbeiten der Elemente 0 bis 3, bzw. 4-7 durch die Elementprozessoren 0 bzw. 1. Als Ergebnis wird die oben angegebenen vektorarithmetische Operation, die mit den in den Vektorregistern VRO und VR15 gespeicherten Vektoren durchgeführt wird, in der Zeit, die erforderlich ist, um 4 Elemente des Vektors zu verarbeiten, vollendet im Vergleich zu der Zeit, die erforderlich ist, um 128 Elemente des Vektors zu verarbeiten, was typisch ist für übliche Vektorprozessorsysteme. Daher stellt der parallele Vektorprozessor der vorliegenden Erfindung eine Verbesserung gegenüber bekannten Vektorprozessorsystemen dar.
  • In Figur 5 ist ein Blockschaltbild des Aufbaus eines Elementprozessors 20 dargestellt. In Figur 5 entspricht ein lokaler Speicher 12 den in Figur 2 der Zeichnungen dargestellten Vektorregistern 12. Ein Systembus 11 und 11a ist mit einer Treiberschaltung 9 an einem Ende und mit einer Empfangsschaltung 7 am anderen verbunden. Ein erster Eingangsdatenassembler (ASM) 13 ist mit einer Treiberschaltung 9 und einer Empfangsschaltung 7 verbunden. Der ASM 13 ist weiter mit einem lokalen Speicher 12 und einem Elementprozessor 20 verbunden. Der in Figur 5 dargestellte Elementprozessor 20 umfaßt einen zweiten Eingangsdatenassembler (ASM) 20a, der mit dem lokalen Speicher 12 und dem ersten Eingangsdatenassembler 13 verbunden ist. Ein Busschnittstellenregister (BIR) 15 ist mit dem Bus 11 und dem Bus 11a an einem Ende und mit dem zweiten Eingangsdatenassembler 20a am anderen Ende verbunden. Ein Register 20b zum Auswählen der Verschiebung und ein Ausrichtauswahlregister 20c sind mit dem Eingangsdatenassembler 20a verbunden. Das Ausrichtauswahlregister 20c ist direkt mit einer den wahren Wert und das Komplement liefernden Schaltung 20d verbunden, wogegen das Schiebeauswahlregister 20b mit einer anderen den wahren Wert und sein Komplement liefernden Schaltung 20e über eine Vorschiebesteuerung 20f verbunden ist. Die den wahren Wert und das Komplement liefernden Schaltungen 20d und 20e sind jede mit einer arithmetischen und logischen Einheit (ALU) 20g verbunden. Die ALU 20g ist über eine Nachschiebesteuerung 201 mit einem Ergebnisregister 20h verbunden, wobei das Ergebnisregister 20h mit dem lokalen Speicher 12 zum Speichern eines Ergebnisses darin verbunden ist, wenn der Elementprozessor 20 eine arithmetische Verarbeitungsoperation mit den 4 Elementen eines in einem entsprechenden Paar von Vektorregistern 12 gespeicherten Vektorpaares durchgeführt hat. Eine Multiplizierschaltung 20j ist zwischen den Eingangsdatenassembler 20a und die ALU 20g geschaltet. Von der Multiplizierschaltung 20j werden ein Summen- und ein Übertragsausgangssignal erzeugt, die von der ALU 20g empfangen werden.
  • Eine Beschreibung der Arbeitsweise eines Elementprozessors 20 wird in den folgenden Abschnitten mit Bezugnahme auf Figur 5 geliefert.
  • Die Arbeitsweise des in Figur 5 dargestellten Elementprozessors 20 kann in 4 Operationszyklen unterteilt werden:
  • Einen Zyklus zum Lesen des lokalen Speichers und zur Verschiebeauswahl, alternativ bekannt als erster Zyklus; ein Vornormalisierungs- Schiebezyklus, bekannt als zweiter Zyklus; ein ALU-Operationszyklus, bekannt als dritter Zyklus; und ein Nachnormalisierungs- Schiebezyklus, bekannt als vierter Zyklus.
  • Unter den vorher gemachten Annahmen, bei denen die entsprechenden Elemente der Vektorregister VRO und VR15 addiert wurden und die Ergebnisse der Addieroperation in dem Vektorregister VRO gespeichert wurden, werden die Elemente 0-3 durch die Empfangsschaltung 7 des Busses 11a empfangen und in dem lokalen Speicher 12 über ASM 13 gespeichert, wobei der lokale Speicher 12 dem ersten kleineren Register 12a in Figur 2 analog ist, das die Elemente 0-3 speicherte. Weiter sei angenommen, daß die Elemente 0-3 Gleitkomma -Elemente von Gleitkomma-Operanden sind.
  • Wenn ein Befehl für das Addieren der in Register VRO gespeicherten Elemente 0-3 zu den in dem Register VR15 gespeicherten Elementen 0-3 gegeben wird, werden im ersten Zyklus die Operanden der entsprechenden Elemente aus dem lokalen Speicher 12 ausgelesen und über den Eingangsdatenassembler 20a vorübergehend in dem Ausrichteregister 20c und dem Schieberegister 20b gespeichert. Zur gleichen Zeit betreten jedoch die Exponenten der entsprechenden Elemente einen (nicht dargestellten) Pfad zur Exponentensteuerung, auf dem die Differenz der Größe der Exponenten berechnet wird. Daher wird das Element mit dem kleineren Exponenten zu dem Schiebeauswahlregister 20b durchgeschaltet, wogegen das Element mit dem größeren Exponenten zu dem Ausrichteauswahlregister 20c durchgeschaltet wird. Die Auswahlregister 20c und 20b für das Ausrichten und das Verschieben werden durch einen Verriegelungs- Taktimpuls am Ende des ersten Zyklus verriegelt.
  • Zu Beginn des zweiten Zyklus wird eine Verschiebeoperation gestartet. Das Element mit dem größeren Exponenten, das in dem Ausrichteauswahlregister 20c gespeichert ist, wird zu einem Eingang der arithmetischen und logischen Einheit (ALU) 20g durchgeschaltet. Diese Steuerinformation wird von dem (nicht gezeigten) Exponentensteuerpfad dem Vorschieber 20f zugeführt, in dem das Element mit dem kleineren Exponenten, das in dem Schiebeauswählregister 20b gespeichert ist, durch den Vorschieber 20f nach rechts verschoben, um das Element mit dem Element, das den größeren Exponenten besitzt, auszurichten, das gerade zu dem einen Eingang der ALU 20g durchgeschaltet wird. Gleichzeitig wählt die ALU 20g die geeigneten Eingangssignale von den die wahren und die komplementären Werte liefernden Schaltungen 20d und 20e aus zum Aufnehmen der Elemente aus den Registern 20c und 20b für das Ausrichten und das Auswählen der Verschiebung über die die wahren und die komplementären Werte liefernden Schaltungen 20d, bzw. 20e.
  • Der dritte Zyklus in der Operation des Elementprozessors 20 nach Figur 5 ist der Arbeitsweise der arithmetischen und logischen Einheit (ALU) 20g gewidmet. Die ALU ist ein 8Byte-Hochleistungsaddierer mit Parallelübertrag, der mit einer Arithmetik für das Einerkomplement und mit einem Übertrag des Überlaufs in die niedrigste Stelle und mit Rekomplementierung entworfen wurde. Die ALU führt eine Additionsoperation durch, in der die Bytes der 4 betreffenden Elemente, in dem Beispiel der Elemente 0-3, die in einem der kleineren Register 12a gespeichert sind, das mit dem Vektorregister VRO verbunden ist, zu den Bytes von 4 Elementen addiert werden, die mit dem Vektorregister VR15 verbunden sind. Die Ergebnisse der Additionsoperation werden schließlich in dem lokalen Speicher 12 (in dem Beispiel analog dem in Figur 2 dargestellten Vektorregister VRO) gespeichert. Vor diesem Schritt muß jedoch eine Nachnormalisierung während des vierten Zyklus Platz greifen.
  • Wenn die Additionsoperation durch die ALU 20g beendet ist, greift ein Nachnormalisierungsschritt während des vierten Zyklus Platz. Der Ausdruck "Nachnormalisierung" in Fachausdrücken der Datenverarbeitung umfaßt die Schritte des Feststellens führender Nullen der Hexadezimalziffern in den durch die ALU erzeugten Ergebnissen und das Linksverschieben der Ergebnisse entsprechend der Anzahl von festgestellten Nullziffern. Der Exponent des Ergebnisses muß durch Verringern des Exponenten um den Wert 1 für jede verschobene Ziffer berichtigt werden. Die Ziffern am Ausgang der ALU 20g werden durch die Nachschiebeeinrichtung 20i auf ihren Nullzustand geprüft und die Ergebnisse am Ausgang der ALU werden entsprechend der Anzahl von festgestellten Nullziffern nach links verschoben. Die nach links verschobenen Ergebnisse am Ausgang der ALU werden dem Ergebnisregister 20h zur vorübergehenden Speicherung zugeführt. Der (nicht dargestellte) Exponentensteuerpfad erhöht oder erniedrigt den Wert des Exponenten des Ergebniselementes (Ausgang der ALU), sodaß ein richtiger endgültiger Exponentwert zu dem Ergebnisregister 20h durchgeschaltet wird. Daher wird ein Ergebniselement in dem Ergebnisregister 20h gespeichert, dessen Operand entsprechend der Anzahl der festgestellten Nullziffern am Ausgang der ALU um einen geeigneten Betrag nach links verschoben wird und dessen Exponent der richtige endgültige Exponentwert ist. Während des nächsten Zyklus, der dem vierten Zyklus folgt, wird das Ergebniselement dem lokalen Speicher 12 zugeführt (der lokale Speicher ist einem der kleineren Register 12a nach Figur 2 analog, in dem Beispiel dem kleineren Register 12a, das die Elemente 0-3 speichert).
  • Daher wird die Leistungsfähigkeit eines Vektorprozessors aufgrund der Verwendung der Konzepte der vorliegenden Erfindung verbessert. Obgleich eine erhöhte Anzahl von Schaltungen notwendig ist, um die vorliegende Erfindung zu implementieren, ist diese erhöhte Anzahl von Schaltungen wirtschaftlich als ein Ergebnis der Benutzung der Technologie der in sehr hohen Maße integrierten Schaltungen (VLSI) zu rechtfertigen.

Claims (4)

1. Vektorprozessor zur Ausführung einer Rechenoperatian mit einem ersten Vektor und einem zweiten Vektor, wodurch ein erster Ergebnissatz erzeugt wird, und zum Abspeichern der Ergebnisse der Operation umfassend:
eine Anzahl von Vektorregistern (12), von denen jedes einen aus M Elementen bestehenden Vektor speichert, wobei jedes der Anzahl der Vektorregister (12) in eine Anzahl von kleineren Registern (12a) unterteilt ist, von denen jedes N Elemente des aus M Elementen bestehenden Vektors speichert, wo N kleiner als M ist; und
eine Anzahl von Elementprozessoren (20), die jeweils mit der Anzahl der kleineren Register (12a) von Vektorregistern (12) verbunden sind, um die Elemente des ersten, in den kleineren Registern (12a) eines anderen der Vektorregister (12) zu empfangen und um rechnerisch auf die Elemente des ersten Vektors und des zweiten Vektors einzuwirken, wodurch der Ergebnissatz erstellt wird,
wobei der N-Element-Vektor in jedem der kleineren Register (12a) eine Anzahl von einzelnen Elementen umfaßt, die sequentiell von einem ersten Element bis zu einem letzten Element bezeichnet sind und
die Anzahl von Elementprozessoren (20) die Elemente des ersten Vektors und die Elemente des zweiten Vektors durch paralleles Abrufen entsprechender der Anzahl von einzelnen Elementen aus jedem der kleineren Register (12a) der einen der Vektorregister (12) und der anderen der Vektorregister (12) empfängt,
wobei der Elementprozessor (2) anfangend mit dem ersten Element und endend mit dem letzten Element sequentiell die einzelnen Elemente aus einem der kleineren Register (12a) abruft.
2. Vektorprozessor nach Anspruch 1 weiterhin umfassend:
Befehlspeicher (26, 24) zum Speichern eines Befehlsatzes;
Datenspeicher (26) zum Speichern eines Dateninformationssatzes und eines Adreßinformationssatzes;
Steuermittel (22), das mit dem Befehlspeicher (26, 24), dem Datenspeicher (26) und den Elementprozessoren verbunden ist, zum Empfangen eines Befehls aus dem Befehlspeicher (26, 24), der Dateninformationen aus dem Datenspeicher (26) und Adreßinformationen aus dem Datenspeicher (26) und zum Steuern einer Ausführung des Befehls und dadurch der von den Elementprozessoren ausgeführten Verarbeitung durch Verwendung der Dateninformationen und der Adreßinformationen, die vom Datenspeicher (26) abgerufen war.
3. Vektorprozessor nach Anspruch 2, wobei der Elementprozessor (20) umfaßt:
Lesemittel (20a) zum Auslesen eines oder mehrerer der Elemente des in einem der Vektorregister (12) abgespeicherten Vektors und eines oder mehrerer der Elemente des in einem anderen der Vektorregister (12) abgespeicherten Vektors;
Register (20c, 20b), die mit dem Lesemittel verbunden sind, zum Speichern eines oder mehrerer der Elemente des in einem anderen der Vektorregister (12) abgespeicherten Vektors;
Register (20c, 20b), die mit dem Lesemittel verbunden sind, zum Speichern eines oder mehrerer der aus den Vektorregistern durch das Lesemittel (20a) ausgelesenen Elemente des Vektors, wobei eines oder mehrere der Elemente Operanden enthalten;
Vorschiebemittel (20f), das mit den Registern (20b) verbunden ist, zum Verschieben der Operanden, die den in einem der Vektorregister (12) abgespeicherten Elementen des Vektors zugeordnet sind, um die Operanden auf die Operanden auszurichten, die den in einem anderen der Vektorregister (12) abgespeicherten Elementen des Vektors zugeordnet sind;
Betriebsmittel (20d, 20e, 20g, 20j), die mit dem Vorschiebemittel (20f) verbunden sind, zur Verarbeitung eines oder mehrerer der in dem einen oder anderen der Vektorregister (12) abgespeicherten Elemente;
Nachschiebemittel (20i), das mit den Betriebsmitteln (20d, 20e, 20g, 20j) verbunden ist, zum Empfang eines ersten Ergebnissatzes von den Betriebsmitteln (20d, 20e, 20g, 20j) und zum Verschieben des ersten Satzes um einen vorbestimmten Betrag, um einen zweiten Ergebnissatz zu erzeugen; und
Nachverarbeitungsspeicher (20h) zum Abspeichern des zweiten Ergebnissatzes, wobei der zweite Ergebnissatz einem der Vektorregister (12) zugeführt wird, um darin abgespeichert zu werden.
4. Vektorprozessor nach Anspruch 1, wobei der Ergebnissatz in einem der Vektorregister (12) abgespeichert ist.
DE8484109081T 1983-09-09 1984-08-01 Leistungsfaehiger paralleler vektorprozessor. Expired - Fee Related DE3485771T2 (de)

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
US06/530,842 US4967343A (en) 1983-05-18 1983-09-09 Pipelined parallel vector processor including parallel configured element processors for processing vector elements in parallel fashion

Publications (2)

Publication Number Publication Date
DE3485771D1 DE3485771D1 (de) 1992-07-23
DE3485771T2 true DE3485771T2 (de) 1993-02-04

Family

ID=24115203

Family Applications (1)

Application Number Title Priority Date Filing Date
DE8484109081T Expired - Fee Related DE3485771T2 (de) 1983-09-09 1984-08-01 Leistungsfaehiger paralleler vektorprozessor.

Country Status (4)

Country Link
US (1) US4967343A (de)
EP (1) EP0135721B1 (de)
JP (1) JPS6061864A (de)
DE (1) DE3485771T2 (de)

Families Citing this family (16)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPS6083176A (ja) * 1983-10-03 1985-05-11 インタ−ナショナル ビジネス マシ−ンズ コ−ポレ−ション ベクトルプロセツサ
US4648045A (en) * 1984-05-23 1987-03-03 The Board Of Trustees Of The Leland Standford Jr. University High speed memory and processor system for raster display
JPS62152071A (ja) * 1985-12-25 1987-07-07 Nec Corp デ−タ処理装置
JPH0731669B2 (ja) * 1986-04-04 1995-04-10 株式会社日立製作所 ベクトル・プロセツサ
US4868739A (en) * 1986-05-05 1989-09-19 International Business Machines Corporation Fixed clock rate vector processor having exclusive time cycle control programmable into each microword
JP2806524B2 (ja) * 1988-03-04 1998-09-30 日本電気株式会社 ベクトル演算命令発行制御方法
WO1991010954A1 (en) * 1990-01-19 1991-07-25 Alliant Computer Systems Corporation A risc vectorization system
CA2045773A1 (en) * 1990-06-29 1991-12-30 Compaq Computer Corporation Byte-compare operation for high-performance processor
JP2532300B2 (ja) * 1990-10-17 1996-09-11 三菱電機株式会社 並列処理装置における命令供給装置
JP3237858B2 (ja) * 1991-01-30 2001-12-10 沖電気工業株式会社 演算装置
EP0498067A2 (de) * 1991-02-08 1992-08-12 International Business Machines Corporation Mikrokodeerzeugung für eine Maschine mit skalierbarem Verbundbefehlssatz
US5315701A (en) * 1992-08-07 1994-05-24 International Business Machines Corporation Method and system for processing graphics data streams utilizing scalable processing nodes
US5423051A (en) * 1992-09-24 1995-06-06 International Business Machines Corporation Execution unit with an integrated vector operation capability
US5473557A (en) * 1994-06-09 1995-12-05 Motorola, Inc. Complex arithmetic processor and method
US6205538B1 (en) * 1994-08-24 2001-03-20 Sun Microsystems, Inc. Instruction result labeling in a counterflow pipeline processor
GB2540940B (en) * 2015-07-31 2018-01-03 Advanced Risc Mach Ltd An apparatus and method for transferring a plurality of data structures between memory and one or more vectors of data elements stored in a register bank

Family Cites Families (11)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4041461A (en) * 1975-07-25 1977-08-09 International Business Machines Corporation Signal analyzer system
US4171536A (en) * 1976-05-03 1979-10-16 International Business Machines Corporation Microprocessor system
US4179734A (en) * 1976-07-02 1979-12-18 Floating Point Systems, Inc. Floating point data processor having fast access memory means
US4101960A (en) * 1977-03-29 1978-07-18 Burroughs Corporation Scientific processor
US4287566A (en) * 1979-09-28 1981-09-01 Culler-Harrison Inc. Array processor with parallel operations per instruction
KR860001434B1 (ko) * 1980-11-21 1986-09-24 후지쑤 가부시끼가이샤 데이타 처리시 스템
JPS57209570A (en) * 1981-06-19 1982-12-22 Fujitsu Ltd Vector processing device
JPS58114274A (ja) * 1981-12-28 1983-07-07 Hitachi Ltd デ−タ処理装置
JPS58149555A (ja) * 1982-02-27 1983-09-05 Fujitsu Ltd 並列処理装置
JPS59111569A (ja) * 1982-12-17 1984-06-27 Hitachi Ltd ベクトル処理装置
US4594655A (en) * 1983-03-14 1986-06-10 International Business Machines Corporation (k)-Instructions-at-a-time pipelined processor for parallel execution of inherently sequential instructions

Also Published As

Publication number Publication date
JPS6061864A (ja) 1985-04-09
EP0135721A3 (en) 1988-01-20
US4967343A (en) 1990-10-30
EP0135721A2 (de) 1985-04-03
EP0135721B1 (de) 1992-06-17
DE3485771D1 (de) 1992-07-23

Similar Documents

Publication Publication Date Title
DE3485771T2 (de) Leistungsfaehiger paralleler vektorprozessor.
DE69430838T2 (de) Schaltung und Verfahren zur parallelen Verschiebung und Addition
DE68927911T2 (de) Datenverarbeitungssystem
DE3851858T2 (de) Digitaler Signalprozessor.
DE3424962C2 (de)
DE69131267T2 (de) Datenverarbeitungssystem für Daten mit einfacher Präzision und mit doppelter Präzision
DE3587591T2 (de) Mikroprozessor für Forth-ähnliche Sprache.
DE3885775T2 (de) Digitaler Signalprozessor.
DE69811877T2 (de) ARITHMETISCHER PROZESSOR, der endliche Felder Arithmetik und ganzzahlige modular Arithmetik kombiniert.
DE69703085T2 (de) Koprozessor mit zwei parallel arbeitenden Multiplizierschaltungen
DE3686828T2 (de) Hochleistungsparalleler vektorprozessor mit modifizierter register/elementprozessor konfiguration.
DE3686789T2 (de) Vektorverarbeitungsgeraet.
DE69418146T2 (de) Temporärer Registersatz für einen superpipeline-superskalaren Prozessor
DE3306084A1 (de) Rechnerarchitektur zur gleitkomma -addition
DE3750028T2 (de) Pipelineprozessor mit schwacher Kopplung.
DE19983870B4 (de) Berechnung impliziter Datentypbits für Simd-Operationen
DE3888230T2 (de) Einrichtung und Verfahren zur Durchführung einer Schiebeoperation mit einer Multipliziererschaltung.
CH644461A5 (de) Digitale multipliziereinrichtung.
DE3900246C2 (de)
DE4403917A1 (de) Vorrichtung zum Berechnen einer Besetzungszählung
DE3446957C2 (de)
DE2401364A1 (de) Datenverarbeitungssystem
DE19746054B4 (de) Verfahren und Vorrichtung zum Ausführen einer Operation mit doppelter Genauigkeit
DE2830334C2 (de)
DE3486073T2 (de) Vektorverarbeitungsgeraet.

Legal Events

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