DE69022871T2 - Vektorverarbeitungsvorrichtung, die imstande ist, iterative Hochgeschwindigkeitsoperationen zu verrichten. - Google Patents
Vektorverarbeitungsvorrichtung, die imstande ist, iterative Hochgeschwindigkeitsoperationen zu verrichten.Info
- Publication number
- DE69022871T2 DE69022871T2 DE69022871T DE69022871T DE69022871T2 DE 69022871 T2 DE69022871 T2 DE 69022871T2 DE 69022871 T DE69022871 T DE 69022871T DE 69022871 T DE69022871 T DE 69022871T DE 69022871 T2 DE69022871 T2 DE 69022871T2
- Authority
- DE
- Germany
- Prior art keywords
- vector
- result
- data
- operand
- register
- 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
Links
- 239000013598 vector Substances 0.000 title claims description 216
- 238000000034 method Methods 0.000 description 5
- 238000010586 diagram Methods 0.000 description 4
- 230000007274 generation of a signal involved in cell-cell signaling Effects 0.000 description 2
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F7/00—Methods or arrangements for processing data by operating upon the order or content of the data handled
- G06F7/38—Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation
- G06F7/48—Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation using non-contact-making devices, e.g. tube, solid state device; using unspecified devices
- G06F7/57—Arithmetic logic units [ALU], i.e. arrangements or devices for performing two or more of the operations covered by groups G06F7/483 – G06F7/556 or for performing logical operations
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F15/00—Digital computers in general; Data processing equipment in general
- G06F15/76—Architectures of general purpose stored program computers
- G06F15/80—Architectures of general purpose stored program computers comprising an array of processing units with common control, e.g. single instruction multiple data processors
- G06F15/8053—Vector processors
- G06F15/8076—Details on data register access
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F7/00—Methods or arrangements for processing data by operating upon the order or content of the data handled
- G06F7/38—Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation
- G06F7/48—Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation using non-contact-making devices, e.g. tube, solid state device; using unspecified devices
- G06F7/544—Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation using non-contact-making devices, e.g. tube, solid state device; using unspecified devices for evaluating functions by calculation
- G06F7/5443—Sum of products
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Computing Systems (AREA)
- General Engineering & Computer Science (AREA)
- Computational Mathematics (AREA)
- Mathematical Analysis (AREA)
- Mathematical Optimization (AREA)
- Pure & Applied Mathematics (AREA)
- Computer Hardware Design (AREA)
- Complex Calculations (AREA)
Description
- Die Erfindung betrifft eine Vektorprozessing- oder -verarbeitungsvorrichtung und insbesondere eine Vektorverarbeitungsvorrichtung zum Ausführen iterativer Operationen mit hoher Geschwindigkeit.
- Bei einer iterativen Operation muß ein vorangehendes Ergebnis einer Operation bekannt sein, um eine nachfolgende Operation auszuführen. D.h., eine iterative Operation wird allgemein durch die Gleichung:
- x(i) = f(x(i-1)) (1)
- dargestellt, wobei i eine positive ganze Zahl ist und f(x(i-1)) eine Funktion einer Variablen x(i-1) darstellt.
- Nachstehend wird ein Beispiel einer iterativen Operation betrachtet, die durch eine bestimmte Gleichung dargestellt wird:
- x(i) = b(i) + a(i)*x(i-1), (2)
- wobei a(i) primäre Vektoroperandenelemente erster Vektoroperandendaten und b(i) sekundäre Vektoroperandenelemente zweiter Vektoroperandendaten darstellt.
- Um die durch die bestimmte Gleichung (2) festgelegte iterative Operation auszuführen, weist eine beispielsweise in der WO-A-88/09016 beschriebene herkömmliche Vektorverarbeitungsvorrichtung ein erstes Operandenvektorregister zum Speichern der ersten Vektoroperandendaten und ein zweites Operandenvektorregister zum Speichern der zweiten Vektoroperandendaten auf.
- Eine erste Ausleseeinheit liest eines der primären Vektoroperandenelemente der ersten Vektoroperandendaten aus dem ersten Operandenvektorregister als ein erstes primäres Leseelement aus, um das primäre Leseelement als primäres Eingangselement erster Eingangsdaten einer Multipliziereinheit zuzuführen. Auf eine im Verlauf der Beschreibung verdeutlichte Weise wird der Multipliziereinheit ein sekundäres Eingangselement zweiter Eingangsdaten zugeführt. Die Multipliziereinheit multipliziert das primäre Eingangselement der ersten Eingangsdaten mit dem sekundären Eingangselement der zweiten Eingangsdaten, um ein primäres Ergebniselement erster Ergebnisdaten zu erzeugen.
- Das primäre Ergebniselement der ersten Ergebnisdaten wird als ein ternäres Eingangselement dritter Eingangsdaten einer Addiereinheit zugeführt. Eine zweite Ausleseeinheit liest eines der sekundären Operandenelemente der zweiten Vektoroperandendaten als ein sekundäres Leseelement aus dem zweiten Operandenvektorregister aus, um das sekundäre Leseelement als ein quaternäres Eingangselement vierter Eingangsdaten der Addiereinheit zuzuführen. Die Addiereinheit addiert das ternäre Eingangselement der dritten Eingangsdaten und das quaternäre Eingangselement der vierten Eingangsdaten, um ein sekundäres Ergebniselement zweiter Ergebnisdaten zu erzeugen.
- Eine Schreibeinheit schreibt das sekundäre Ergebniselement der zweiten Ergebnisdaten als ein Vektorergebniselement von Vektorergebnisdaten in ein Ergebnisvektorregister. Das sekundäre Ergebniselement der zweiten Ergebnisdaten wird als ein nachfolgendes sekundäres Eingangselement der zweiten Eingangsdaten der Multipliziereinheit zugeführt.
- Allgemein arbeiten die Multipliziereinheit und die Addiereinheit unter einer Pipeline- oder Vektorsteuerung, die beispielsweise durch einen in der EP-A-0291613 beschriebenen Prozessor erreicht wird. Es wird vorausgesetzt, daß die Multipliziereinheit und die Addiereinheit unter einer sechsstufigen bzw. einer vierstuf igen Pipeline-Steuerung betrieben werden. In diesem Fall sind zwölf Rechner- oder Maschinenzyklen erforderlich, um das Vektorergebniselement der Vektorergebnisdaten auf eine später beschriebene Weise zu erhalten. Daher kann die herkömmliche Vektorverarbeitungsvorrichtung nicht optimal ausgenutzt werden, um eine iterative Operation auszuführen. In der WO-A-88/09016 wird vorgeschlagen, Gleichung (2) in einen ungeraden bzw. einen geraden Anteil aufzuteilen, wobei beide Anteile unabhängig voneinander berechnet werden können, indem die jeweilige Hardware verdoppelt wird.
- Um die Wirksamkeit einer Verarbeitung bezüglich der itinerativen Operation zu verbessern, wird in der US-A-4757444 ein Timesharing-Verfahren beschrieben, wobei die bestimmte Gleichung (2) folgendermaßen in eine modifizierte Gleichung umgeformt wird:
- x(i+1) = (b(i)*a(i+1) + b(i+1) + (a(i)*a(i+1)*x(i-1).
- Die durch die modifizierte Gleichung gegebene iterative Operation wird unter Verwendung der Multipliziereinheit und der Addiereinheit im Timesharing-Verfahren ausgeführt. Eine Vektorverarbeitungsvorrichtung, die das Timesharing-Verfahren ausführt, muß jedoch auf eine später beschriebene Weise eine komplexe Steuerung ausführen.
- Es ist Aufgabe der vorliegenden Erfindung, eine Vektorverarbeitungsvorrichtung bereitzustellen, die eine iterative Operation unter einer einfachen Steuerung ausführen kann. Diese Aufgabe wird durch die Merkmale der Patentansprüche gelöst.
- Fig. 1 zeigt ein Blockdiagramm einer herkömmlichen Vektorverarbeitungsvorrichtung;
- Fig. 2 zeigt ein Laufzeitdiagramm zum Beschreiben einer iterativen Operation in der in Fig. 1 dargestellten herkömmlichen Vektorverarbeitungsvorrichtung;
- Fig. 3 zeigt ein Blockdiagramm einer Ausführungsform einer erfindungsgemäßen Vektorverarbeitungsvorrichtung; und
- Fig. 4 zeigt ein Laufzeitdiagramm zum Beschreiben einer iterativen Operation in der in Fig. 3 dargestellten Vektorverarbeitungsvorrichtung.
- Nachstehend wird zunächst unter Bezug auf Fig. 1 eine herkömmliche Vektorverarbeitungsvorrichtung beschrieben, um die Erfindung zu verdeutlichen. Die herkömmliche Vektorverarbeitungsvorrichtung dient zum Ausführen einer speziellen iterativen Operation, die durch die vorstehend erwähnte bestimmte Gleichung (2) gegeben ist:
- x(i) = b(i) + a(i)*x(i-1). (2)
- Die herkömmliche Vektorverarbeitungsvorrichtung weist ein erstes Operandenvektorregister 11 zum Speichern mehrerer primärer Vektoroperandenelemente a(i) erster Vektoroperandendaten und ein zweites Operandenvektorregister 12 zum Speichern mehrerer sekundärer Vektoroperandenelemente b(i) zweiter Vektoroperandendaten auf.
- Eines der primären Vektoroperandenelemente a(i) der ersten Vektoroperandendaten wird in Antwort auf ein von einer ersten Ausleseeinheit 16 zugeführtes erstes Auslesesteuerungssignal RT1 als ein primäres Leseelement aus dem ersten Operandenvektorregister 11 ausgelesen. Eines der sekundären Vektoroperandenelemente b(i) der zweiten Vektoroperandendaten wird in Antwort auf ein von einer zweiten Ausleseeinheit 17 zugeführtes zweites Auslesesteuerungssignal RT2 als ein sekundäres Leseelement aus dem zweiten Operandenvektorregister 12 ausgelesen.
- Das primäre Leseelement a(i) wird einem ersten Eingangsregister 21 als ein primäres Eingangselement der ersten Eingangsdaten zugeführt. In einem zweiten Eingangsregister 22 wird ein sekundäres Eingangselement x(i-1) der zweiten Eingangsdaten auf eine im Verlauf der Beschreibung verdeutlichte Weise gespeichert. Das primäre Eingangselement a(i) der ersten Eingangsdaten und das sekundäre Eingangselement x(i-1) der zweiten Eingangsdaten werden einer Multipliziereinheit 25 zugeführt. Die Multipliziereinheit 25 multipliziert das primäre Eingangselement a(i) der ersten Eingangsdaten mit dem sekundären Eingangselement x(i-1) der zweiten Eingangsdaten, um ein primäres Ergebniselement (a(i)*x(i-1)) erster Ergebnisdaten zu erzeugen.
- Das primäre Ergebniselement (a(i)*x(i-1)) der ersten Ergebnisdaten wird einem dritten Eingangsregister 28 als ternäres Eingangselement dritter Eingangsdaten zugeführt. Das sekundäre Leseelement b(i) wird einem vierten Eingangsregister 29 als ein quaternäres Eingangselement vierter Eingangsdaten zugeführt. Das ternäre Eingangselement (a(i)* x(i-1)) der dritten Eingangsdaten und das quaternäre Eingangselement b(i) der vierten Eingangsdaten werden einer Addiereinheit 30 zugeführt. Die Addiereinheit addiert das ternäre Eingangselement (a(i)*x(i-1)) der dritten Eingangsdaten und das quaternäre Eingangselement b(i) der vierten Eingangsdaten, um ein sekundäres Ergebniselement x(i) sekundärer Ergebnisdaten zu erzeugen.
- Das sekundäre Ergebniselement x(i) der zweiten Ergebnisdaten wird einem Ergebnisregister 31 als ein Vektorergebniselement von Vektorergebnisdaten zugeführt. Das Vektorergebniselement x(i) der Vektorergebnisdaten wird in Antwort auf ein von einer Schreibeinheit 33 zugeführtes Schreibsteuerungssignal WT in ein Ergebnisvektorregister 32 geschrieben.
- Das sekundäre Ergebniselement x(i) der zweiten Ergebnisdaten wird über eine erste Auswahleinrichtung 34 dem zweiten Eingangsregister 22 als ein nachfolgendes sekundäres Eingangselement x(i-1) der zweiten Eingangsdaten zugeführt. Die erste Auswahleinrichtung 34 wählt zu Beginn einen von einem Anfangswertregister 35 zugeführten Anfangswert x(0) aus, um den Anfangswert x(0) als das sekundäre Eingangselement x(i-1) der zweiten Eingangsdaten dem zweiten Eingangsregister 22 zuzuführen.
- Die erste Ausleseeinheit 16 erzeugt das erste Auslesesteuerungssignal RT1, wenn das sekundäre Ergebniselement x(i) der zweiten Ergebnisdaten dem zweiten Eingangsregister 22 zugeführt wird. Die zweite Ausleseeinheit 17 erzeugt das zweite Auslesesteuerungssignal RT2, wenn das primäre Ergebniselement (a(i)*x(i-1)) der ersten Ergebnisdaten dem dritten Eingangsregister 28 zugeführt wird.
- Nachstehend wird die Arbeitsweise der herkömmlichen Vektorverarbeitungsvorrichtung beschrieben.
- Unter Bezug auf Fig. 2 in Verbindung mit Fig. 1 wird die durch die vorstehend erwähnte bestimmte Gleichung (2) vorgegebene spezielle iterative Operation beschrieben. Es wird vorausgesetzt, daß die Multipliziereinheit 25 und die Addiereinheit 30 unter einer sechsstufigen bzw. einer vierstufigen Pipeline-Steuerung betrieben werden. Nullte bis fünfundzwanzigste Maschinenzyklen sind durch Nummern 0 bis 25 in einer ersten oder oberen Zeile in Fig. 2 dargestellt.
- Im durch 0 bezeichneten nullten Maschinenzyklus wird das primäre Leseelement a(1) vom ersten Operandenvektorregister 11 dem ersten Eingangsregister 21 als das primäre Eingangselement der ersten Eingangsdaten zugeführt, und der Anfangswert x(0) wird vom Anfangswertregister 35 über die erste Auswahleinrichtung 34 dem zweiten Eingangsregister 22 als das sekundäre Eingangselement der zweiten Eingangsdaten zugeführt.
- In den durch 1 bis 6 bezeichneten ersten bis sechsten Maschinenzyklen multipliziert die Multipliziereinheit 25 das primäre Eingangselement a(1) der ersten Eingangsdaten mit dem sekundären Eingangselement x(0) der zweiten Eingangsdaten, um im sechsten Maschinenzyklus das primäre Ergebniselement (a(1)*x(0)) der ersten Ergebnisdaten zu erzeugen.
- Im durch 7 bezeichneten siebenten Maschinenzyklus wird das primäre Ergebniselement (a(1)*x(0)) der ersten Ergebnisdaten von der Multipliziereinheit 25 dem dritten Eingangsregister 28 als das ternäre Eingangselement der dritten Eingangsdaten zugeführt, und das sekundäre Leseelement b(1) wird vom zweiten Operandenvektorregister 12 dem vierten Eingangsregister 29 als das quaternäre Eingangselement der vierten Eingangsdaten zugeführt.
- In den durch 8 bis 11 bezeichneten achten bis elften Maschinenzyklen addiert die Addiereinheit 30 das ternäre Eingangselement (a(1)*x(0)) der dritten Eingangsdaten und das quaternäre Eingangselement b(1) der vierten Eingangsdaten, um im elften Maschinenzyklus das sekundäre Ergebniselement x(1) der zweiten Ergebnisdaten zu erzeugen.
- Im durch 12 bezeichneten zwölften Maschinenzyklus wird das sekundäre Ergebniselement x(1) der zweiten Ergebnisdaten von der Addiereinheit 30 dem Ergebnisregister 31 als das Vektorergebniselement der Vektorergebnisdaten zugeführt. Gleichzeitig wird das sekundäre Ergebniselement x(1) der zweiten Ergebnisdaten über die erste Auswahleinrichtung 34 dem zweiten Eingangsregister 22 als das nachfolgende sekundäre Eingangselement der zweiten Eingangsdaten zugeführt, und das primäre Leseelement a(2) wird vom ersten Operandenvektorregister 11 dem ersten Eingangsregister 21 als das primäre Eingangselement der ersten Eingangsdaten zugeführt. Eine ähnliche Verarbeitung wird wiederholt ausgeführt. Wie gemäß dem vorstehenden verdeutlicht wird, sind zwölf Maschinenzyklen erforderlich, um jedes Vektorergebniselement x(i) der Vektorergebnisdaten zu erzeugen. Daher kann die herkömmliche Vektorverarbeitungsvorrichtung nicht optimal ausgenutzt werden, wenn die iterative Operation ausgeführt wird.
- Um die Wirksamkeit der Verarbeitung bezüglich der iterativen Operation zu verbessern, wird in der Beschreibung der vorstehend erwänten US-A-4757444 ein Timesharing-Verfahren beschrieben. Gemäß dieser Patentveröffentlichung wird die bestimmte Gleichung (2) wie folgt in die vorstehend erwähnte modifizierte Gleichung umgeformt:
- x(i+1) = (b(i)*a(i+1) + b(i+1)) + (a(i)*a(i+1)*x(i-1).
- Die durch diese modifizierte Gleichung vorgegebene iterative Operation wird unter Verwendung der Multipliziereinheit 25 und der Addiereinheit 30 im Timesharing-Verfahren ausgeführt. D.h., jedes Vektorergebniselement x(i+1) wird berechnet, indem das Vektorergebniselement x(i+1) in erste bis dritte Phasen oder Stufen (a(i)*a(i+1)), (b(i)*a(i+1) + b(i+1)), bzw. (b(i)*a(i+1) + b(i+1)) + (a(i)*a(i+1))*x(i-1) aufgeteilt wird. Daher müssen eine komplexe Vektorregistersteuerungseinrichtung zum Steuern des ersten und des zweiten Operandenvektorregisters 11 bzw. 12 sowie eine Schaltungsanordnung zum Umschalten zwischen dem ersten und dem zweiten Operandenvektorregister 11 bzw. 12 vorgesehen sein. Dadurch muß die Vektorverarbeitungsvorrichtung, die ein Timesharing- Verfahren ausführt, eine komplexe Steuerung ausführen.
- Die in Fig. 3 dargestellte bevorzugte Ausführungsform einer erfindungsgemäßen Vektorverarbeitungsvorrichtung ist der in Fig. 1 dargestellten Vorrichtung ähnlich, außer daß das erste und das zweite Operandenvektorregister, das Ergebnisvektorregister, die erste und die zweite Ausleseeinheit, die Schreibeinheit und das Anfangswertregister bezüglich den in Fig. 1 dargestellten entsprechenden Einrichtungen modifiziert sind, wie später verdeutlicht wird. Das erste und das zweite Operandenvektorregister das Ergebnisvektorregister, die erste und die zweite Ausleseeinheit, die Schreibeinheit und das Anfangswertregister werden daher durch die Bezugszeichen 11a, 12a, 32a, 16a, 17a, 33a bzw. 35a bezeichnet.
- Das erste Operandenvektorregister 11a weist erste bis vierte Register 11-1, 11-2, 11-3 und 11-4 für primäre Teiloperandenvektoren auf, in denen mehrere primäre Vektoroperandenelemente A( i+3) erster Vektoroperandendaten auf eine später beschriebene Weise gespeichert werden. Ähnlich weist das zweite Operandenvektorregister 12a erste bis vierte Register 12-1, 12-2, 12-3 und 12-4 für sekundäre Teiloperandenvektoren auf, in denen mehrere sekundäre Vektoroperandenelemente B(i+3) zweiter Vektoroperandendaten auf eine später beschriebene Weise gespeichert werden. Ähnlich weist das Ergebnisvektorregister 32a erste bis vierte Teilergebnisvektorregister 32-1, 32-2, 32-3 und 32-4 auf, in denen mehrere Vektorergebniselemente x(i+3) von Vektorergebnisdaten auf eine später beschriebene Weise gespeichert werden.
- Die erste Ausleseeinheit 16a weist eine erste Ausleseschaltung 161 und eine erste Datenauswahlschaltung 162 auf. Die erste Ausleseschaltung 161 legt eine erste Ausleseadresse für die ersten bis vierten Register 11-1 bis 11-4 für die primären Teiloperandenvektoren fest, um vier primäre Vektoroperandenelemente A(4n), A(4n+1), A(4n+2) und A(4n-3) von der ersten Leseadresse der ersten bis vierten Register 11-1 bis 11-4 für die primären Teiloperandenvektoren als vier primäre Leseelemente zu lesen, wobei n eine positive ganze Zahl darstellt. Die erste Datenauswahlschaltung 162 wählt nacheinander eines der vier primären Leseelemente A(4n) bis A(4n+3) als ein ausgewähltes primäres Leseelement aus. Das ausgewählte primäre Leseelement wird dem ersten Eingangsregister 21 als ein primäres Eingangselement erster Eingangsdaten zugeführt. Die erste Datenauswahlschaltung 162 wird durch ein erstes Steuerungssignal T1 aktiviert, das von einer später beschriebenen Steuersignalerzeugungseinheit 36 zugeführt wird.
- Ähnlich weist die zweite Ausleseeinheit 17a eine zweite Ausleseschaltung 171 und eine zweite Datenauswahlschaltung 172 auf. Die zweite Ausleseschaltung 171 legt eine zweite Ausleseadresse für die ersten bis vierten Register 12-1 bis 12-4 für die sekundären Teiloperandenvektoren fest, um vier sekundäre Vektoroperandenelemente B(4n), B(4n+1), B(4n+2) und B(4n+3) von der zweiten Leseadresse der ersten bis vierten Register 12-1 bis 12-4 für die sekundären Teiloperandenvektoren als vier sekundäre Leseelemente zu lesen. Die zweite Datenauswahlschaltung 172 wählt nacheinander eines der vier sekundären Leseelementen B(4n) bis B(4n+3) als ein ausgewahltes sekundäres Leseelement aus. Das ausgewählte sekundäre Leseelement wird dem vierten Eingangsregister 29 als ein quaternäres Eingangselement vierter Eingangsdaten zugeführt. Die zweite Datenauswahlschaltung 172 wird durch ein von der Steuersignalerzeugungseinheit 36 zugeführtes zweites Steuersignal T2 aktiviert.
- Die Schreibeinheit 33a weist eine Schreibschaltung 331 und eine Registerauswahlschaltung 332 auf. Die Registerauswahlschaltung 332 wählt nacheinander eines der ersten bis vierten Teilergebnisvektorregister 32-1 bis 32-4 als ein ausgewähltes Teilergebnisvektorregister aus. Die Schreibschaltung 331 legt eine Schreibadresse für die ersten bis vierten Teilergebnisvektorregister 32-1 bis 32-4 fest, um ein vom Ergebnisregister 31 zugeführtes Vektorergebniselement in die Schreibadresse des ausgewählten Teilergebnisvektorregisters zu schreiben. Die Registerauswahlschaltung 332 wird durch ein von der Steuersignalerzeugungseinheit 36 zugeführtes drittes Steuersignal T3 aktiviert.
- Wie vorstehend erwähnt, erzeugt die Steuersignalerzeugungseinheit 36 die ersten bis dritten Steuersignale T1, T2 und T3. Das erste Steuersignal T1 aktiviert die erste Datenauswahlschaltung 162, wenn dem zweiten Eingangsregister 22 das sekundäre Ergebniselement der zweiten Ergebnisdaten von der Addiereinheit 30 zugeführt wird. Das zweite Steuersignal T2 aktiviert die zweite Datenauswahleinrichtung 172, wenn dem dritten Eingangsregister 28 das primäre Ergebniselement der ersten Ergebnisdaten von der Multipliziereinheit 25 zugeführt wird. Das dritte Steuersignal T3 aktiviert die Registerauswahleinrichtung 332, wenn das Ergebnisregister 31 das Vektorergebniselement der Vektorergebnisdaten erzeugt.
- Im Anfangswertregister 35a sind Anfangswerte x(0), x(1), x(2) und x(3) gespeichert. Die Anfangswerte x(0) bis x(3) werden nacheinander der ersten Auswahleinrichtung 34 und einer zweiten Auswahleinrichtung 37 zugeführt. Der ersten Auswahleinrichtung 34 wird das sekundäre Ergebniselement der zweiten Ergebnisdaten zugeführt. Der zweiten Auswahleinrichtung 37 wird das primäre Ergebniselement der ersten Ergebnisdaten zugeführt. Im dargestellten Beispiel wählt die erste Auswahleinrichtung 34 die Anfangswerte x(0) bis x(3) aus, um die Anfangswerte dem zweiten Eingangsregister 22 als die sekundären Eingangselemente der zweiten Eingangsdaten zuzuführen, wenn die iterative Operation beginnt. Ansonsten wählt die erste Auswahleinrichtung 34 das sekundäre Ergebniselement der zweiten Ergebnisdaten aus, um das sekundäre Ergebniselement der zweiten Ergebnisdaten dem zweiten Eingangsregister 22 als die sekundären Eingangselemente der zweiten Eingangsdaten zuzuführen. Die zweite Auswahleinrichtung 37 wählt immer das primäre Ergebniselement der ersten Ergebnisdaten aus, um das primäre Ergebniselement der ersten Ergebnisdaten dem dritten Eingangsregister 28 als das ternäre Eingangselement der dritten Eingangsdaten zuzuführen.
- Einer dritten Auswahleinrichtung 38 werden das primäre Ergebniselement der ersten Ergebnisdaten und das sekundäre Ergebniselement der zweiten Ergebnisdaten zugeführt. Im dargestellten Beispiel wählt die dritte Auswahleinrichtung 38 immer das sekundäre Ergebniselement der zweiten Ergebnisdaten aus, um das sekundäre Ergebniselement der zweiten Ergebnisdaten dem Ergebnisregister 31 als das Vektorergebniselement der Vektorergebnisdaten zuzuführen.
- Nachstehend wird die Arbeitsweise der in Fig. 3 dargestellten Vektorverarbeitungsvorrichtung beschrieben. Die dargestellte Vektorverarbeitungsvorrichtung dient zum Ausführen einer bestimmten iterativen Operation, die durch eine spezielle Gleichung gegeben ist:
- x(i+3) = B(i+3) + A(i+3)*x(i-1), (3)
- wobei A(i+3) die primären Vektoroperandenelemente der ersten Vektoroperandendaten und B(i+3) die sekundären Vektoroperandenelemente der zweiten Vektoroperandendaten darstellt.
- Um die durch die vorstehend erwähnte bestimmte Gleichung (2) vorgegebene iterative Operation auszuführen, muß Gleichung (2) in die spezielle Gleichung (3) umgeformt werden. Dazu wird die bestimmte Gleichung (2) wie folgt entwickelt:
- Auf diese Weise sind das primäre Vektoroperandenelement A(i+3) der ersten Vektoroperandendaten der speziellen Gleichung (3) und das sekundäre Vektoroperandenelement B(i+3) der zweiten Vektoroperandendaten der speziellen Gleichung (3) gegeben durch:
- A(i+3) = a(i+3)*a(i+2)*a(i+1)*a(i)
- und
- Dadurch können das primäre Vektoroperandenelement A(i+3) und das sekundäre Vektoroperandenelement B(i+3) durch eine allgemeine Vektoroperation im voraus berechnet werden.
- Außerdem werden die Anfangswerte x(1), x(2) und x(3) aus dem Anfangswert x(0) erhalten durch:
- x(1) = b(1) + a(1)*x(0),
- x(2) = b(2) + a(2)*x(1),
- und x(3) = b(3) + a(3)*x(2).
- Dadurch können die Anfangswerte x(1) bis x(3) durch eine skalare Operation im voraus berechnet werden.
- Gemäß der speziellen Gleichung (3) wird jedes Vektorergebniselement x(i+3) der Vektorergebnisdaten unter Verwendung lediglich eines Vektorergebniselements x(i-1) berechnet. Daher wird das durch die spezielle Gleichung (3) gegebene Vektorergebniselement x(i+3) in erste bis vierte Folgen unterteilt, die aus den Anfangswerten x(0), x(1), x(2) bzw. x(3) berechnet werden. Die ersten bis vierten Folgen werden dargestellt durch:
- x(0), x(4), x(8), x(12), ...,
- x(1), x(5), x(9), x(13), ...,
- x(2), x(6), x(10), x(14), ...,
- und x(3), x(7), x(11), x(15)
- Weil die ersten bis vierten Folgen voneinander unabhängig sind, können die ersten bis vierten Folgen unter Verwendung der in Fig. 3 dargestellten Vektorverarbeitungsvorrichtung auf die nachstehend beschriebene Weise parallel berechnet werden.
- Nachstehend wird unter Bezug auf Fig. 4 in Verbindung mit Fig. 3 die durch die vorstehend erwähnte spezielle Gleichung (3) vorgegebene bestimmte iterative Operation beschrieben. Es wird folgendes vorausgesetzt. Die Multipliziereinheit 25 und die Addiereinheit 30 werden unter einer sechsstufigen bzw. einer vierstufigen Pipeline-Steuerung betrieben. Die Anfangswerte x(0), x(1), x(2) und x(3) und die primären Vektoroperandenelemente A(i+3) und die sekundären Vektoroperandenelemente B(i+3) werden auf die vorstehend beschriebene Weise im voraus berechnet.
- Das erste Operandenvektorregister 11a speichert die primären Vektoroperandenelemente A(i+3) der ersten Vektoroperandendaten. D.h. im einzelnen, das erste Register 11-1 für die primären Teiloperandenvektoren speichert die primären Vektoroperandenelemente A(4n). Ähnlich speichert das zweite Register 11-2 für die primären Teiloperandenvektoren die primären Vektoroperandenelemente A(4n+1). Ähnlich speichern das dritte und das vierte Register 11-3 bzw. 11-4 für die primären Teiloperandenvektoren die primären Vektoroperandenelemente A(4n+2) bzw. A(4n+3). Die primären Vektoroperandenelemente A(4n), A(4n+1), A(4n+2) und A(4n+3) werden in der gleichen Adresse des ersten, des zweiten, des dritten und des vierten Registers 11-1, 11-2, 11-3 bzw. 11-4 für die primären Teiloperandenvektoren gespeichert.
- Das zweite Operandenvektorregister 12a speichert die sekundären Vektoroperandenelemente B(i+3) der zweiten Vektoroperandendaten. D.h. im einzelnen, das erste Register 12- 1 für die sekundären Teiloperandenvektoren speichert die sekundären Vektoroperandenelemente B(4n). Ähnlich speichert das zweite Register 12-2 für die sekundären Teiloperandenvektoren die sekundären Vektoroperandenelemente B(4n+1). Ähnlich speichern das dritte und das vierte Register 12-3 bzw. 12-4 für die sekundären Teiloperandenvektoren die sekundären Vektoroperandenelemente B(4n+2) bzw. B(4n+3). Die sekundären Vektoroperandenelemente B(4n), B(4n+1), B(4n+2) und B(4n+3) werden in der gleichen Adresse des ersten, des zweiten, des dritten und des vierten Registers 12-1, 12-2, 12-3 bzw. 12-4 für die sekundären Teiloperandenvektoren gespeichert.
- In Fig. 4 sind nullte bis siebzehnte Maschinenzyklen durch Nummern 0 bis 17 in einer ersten oder oberen Zeile dargestellt.
- In den durch 0 bis 3 dargestellten nullten bis dritten Maschinenzyklen werden die priinären Vektoroperandenelemente A(4), A(5), A(6) und A(7) nacheinander vom ersten Operandenvektorregister 11a dem ersten Eingangsregister 21 als die primären Eingangselemente der ersten Eingangsdaten zugeführt. Die Anfangswerte x(0), x(1), x(2) und x(3) werden von den Anfangswertregistern 35a über die erste Auswahleinrichtung 34 dem zweiten Eingangsregister 22 als die sekundären Eingangselemente der zweiten Eingangsdaten zugeführt.
- In den durch 1 bis 6 bezeichneten ersten bis sechsten Maschinenzyklen multipliziert die Multipliziereinheit 25 das primäre Eingangselement A(4) der ersten Eingangsdaten mit dem sekundären Eingangselement x(0) der zweiten Eingangsdaten, um im sechsten Maschinenzyklus das primäre Ergebniselement (A(4)*x(0)) der ersten Ergebnisdaten zu erzeugen.
- In den durch 2 bis 7 bezeichneten zweiten bis siebenten Maschinenzyklen multipliziert die Multipliziereinheit 25 das primäre Eingangselement A(5) der ersten Eingangsdaten mit dem sekundären Eingangselement x(1) der zweiten Eingangsdaten, um im siebenten Maschinenzyklus das primäre Ergebniselement (A(5)*x(1)) der ersten Ergebnisdaten zu erzeugen.
- In den durch 3 bis 8 bezeichneten dritten bis achten Maschinenzyklen multipliziert die Multipliziereinheit 25 das primäre Eingangselement A(6) der ersten Eingangsdaten mit dem sekundären Eingangselement x(2) der zweiten Eingangsdaten, um im achten Maschinenzyklus das primäre Ergebniselement (A(6)*x(2)) der ersten Ergebnisdaten zu erzeugen.
- In den durch 4 bis 9 bezeichneten vierten bis neunten Maschinenzyklen multipliziert die Multipliziereinheit 25 das primäre Eingangselement A(7) der ersten Eingangsdaten mit dem sekundären Eingangselement x(3) der zweiten Eingangsdaten, um im neunten Maschinenzyklus das primäre Ergebniselement (A(7)*x(3)) der ersten Ergebnisdaten zu erzeugen.
- In den durch 7 bis 10 bezeichneten siebenten bis zehnten Maschinenzyklen werden die primären Ergebniselemente (A(4)*x(0)), (A(5)*x(1)), (A(6)*x(2)) und (A(7)*x(3)) der ersten Ergebnisdaten von der Multipliziereinheit 25 über die zweite Auswahleinrichtung 38 nacheinander dem dritten Eingangsregister 28 als die ternären Eingangselenente der dritten Eingangsdaten zugeführt. Die sekundären Vektoroperandenelemente B(4), B(5), B(6) und B(7) werden vom zweiten Operandenvektorregister 12a nacheinander dem vierten Eingangsregister 29 als die quaternären Eingangselemente der vierten Eingangsdaten zugeführt.
- In den durch 8 bis 11 bezeichneten achten bis elften Maschinenzyklen addiert die Addiereinheit 30 das ternäre Eingangselement (A(4)*x(0)) der dritten Eingangsdaten und das quaternäre Eingangselement B(4) der vierten Eingangsdaten, um im elften Maschinenzyklus das sekundäre Ergebniselement x(4) der zweiten Ergebnisdaten zu erzeugen.
- In den durch 9 bis 12 bezeichneten neunten bis zwölften Maschinenzyklen addiert die Addiereinheit 30 das ternäre Eingangselement (A(5)*x(1)) der dritten Eingangsdaten und das quaternäre Eingangselement B(5) der vierten Eingangsdaten, um im zwölften Maschinenzyklus das sekundäre Ergebniselement x(5) der zweiten Ergebnisdaten zu erzeugen.
- In den durch 10 bis 13 bezeichneten zehnten bis dreizehnten Maschinenzyklen addiert die Addiereinheit 30 das ternäre Eingangselement (A(6)*x(2)) der dritten Eingangsdaten und das quaternäre Eingangselement B(6) der vierten Eingangsdaten, um im dreizehnten Maschinenzyklus das sekundäre Ergebniselement x(6) der zweiten Ergebnisdaten zu erzeugen.
- In den durch 11 bis 14 bezeichneten elften bis vierzehnten Maschinenzyklen addiert die Addiereinheit 30 das ternäre Eingangselement (A(7)*x(3)) der dritten Eingangsdaten und das quaternäre Eingangselement B(7) der vierten Eingangsdaten, um im vierzehnten Maschinenzyklus das sekundäre Ergebniselement x(7) der zweiten Ergebnisdaten zu erzeugen.
- In den durch 12 bis 15 bezeichneten zwölften bis fünfzehnten Maschinenzyklen werden die sekundären Ergebniselemente x(4), x(5), x(6) und x(7) der zweiten Ergebnisdaten von der Addiereinheit 30 über die dritte Auswahleinrichtung 31 dem Ergebnisregister 31 als die Vektorergebniselemente der Vektorergebnisdaten zugeführt. Außerdem werden die sekundären Ergebniselemente x(4), x(5), x(6) und x(7) der zweiten Ergebnisdaten über die erste Auswahleinrichtung 34 dem zweiten Eingangsregister 22 als die nachfolgenden sekundären Eingangselemente der zweiten Ergebnisdaten zugeführt. Die primären Vektoroperandenelemente A(8), A(9), A(10) und A(11) werden vom ersten Operandenvektorregister 11a nacheinander dem ersten Eingangsregister 21 als die primären Eingangselemente der ersten Eingangsdaten zugeführt.
- In den durch 13 bis 16 bezeichneten dreizehnten bis sechzehnten Maschinenzyklen werden die Vektorergebniselemente x(4) bis x(7) der Vektorergebnisdaten nacheinander in den ersten bis vierten Teilergebnisvektorregistern 32-1 bis 32-4 des Ergebnisvektorregisters 32a gespeichert.
- Eine ähnliche Verarbeitung wird wiederholt ausgeführt, um die Vektorergebniselemente x(i+3) der Vektorergebnisdaten zu berechnen. Gemäß dem vorstehendend beschriebenen sind drei Maschinenzyklen erforderlich, um jedes Vektorergebniselement x(i+3) der Vektorergebnisdaten zu erzeugen. Daher kann die iterative Operation parallel mit hoher Geschwindigkeit unter einer einfachen Steuerung ausgeführt werden.
- Obwohl die Erfindung bisher nur in Verbindung mit einer bevorzugten Ausführungsform der Erfindung beschrieben wurde, können durch Fachleute leicht verschiedene andere Ausführungsformen der Erfindung entwickelt werden. Beispielsweise wird die vorstehend erwähnte bestimmte Gleichung (2) allgemein folgendermaßen in eine modifizierte Gleichung umgeformt:
- x(i+(m-1)) = B(i+(m-1)) + A(i+(m-1))*x(i-1),
- wobei m eine vorgegebene natürliche Zahl ist, die nicht kleiner als Zwei ist. In diesem Fall weist das erste Operandenvektorregister erste bis m-te Register für primäre Teiloperandenvektoren auf. Das zweite Operandenvektorregister weist erste bis m-te Register für sekundäre Teiloperandenvektoren auf. Das Ergebnisvektorregister weist erste bis mte Teilergebnisvektorregister auf. Außerdem kann die erfindungsgemäße Vektorverarbeitungsvorrichtung so modifiziert werden, daß sie eine allgemeine iterative Operation ausführt, die durch eine allgemeine modifizierte Gleichung vorgegeben ist, bei der die vorstehend erwähnte allgemeine Gleichung (1) modifiziert ist und die gegeben ist durch:
- x(i+(m-1)) = g(x(i-1)),
- wobei g(x(i-1)) eine Funktion der Variablen x(i-1) ist.
Claims (7)
1. Vektorverarbeitungsvorrichtung zum Berechnen der
Gleichung x(i+(m-1)) = B(i+(m-1)) + A(i+(m-1))*x(i-1) für m
= 2, 3, ..., mit:
a) einem ersten Operandenvektorregister (11a) zum
Speichern erster Vektoroperandendaten, die aus m
primären Vektoroperandenelementen (A(4n), ..., A(4n+3))
bestehen,
b) einem zweiten Operandenvektorregister (12a) zum
Speichern zweiter Vektoroperandendaten, die aus m
sekundären Vektoroperandenelementen (B(4n), ..., B(4n+3))
bestehen
c) einer durch eine Pipeline-Steuerung gesteuerten
Multipliziereinheit (25) zum Ausführen einer ersten
Rechenoperation bezüglich ersten und zweiten
Eingangsdaten zum Erzeugen erster Ergebnisdaten,
d) einer durch eine Pipeline-Steuerung gesteuerten
arithmetisch-logischen Einheit (30) zum Ausführen einer
zweiten Rechenoperation bezüglich dritten und vierten
Eingangsdaten zum Erzeugen zweiter Ergebnisdaten, die
aus mehreren sekundären Ergebniselementen bestehen,
e) einer mit dem ersten Operandenvektorregister
(11a) verbundenen ersten Ausleseeinheit (16a) zum
Auslesen der ersten Vektoroperandendaten aus dem ersten
Operandenvektorregister (11a), um die ersten
Vektoroperandendaten der Multipliziereinheit (25) als die ersten
Eingangsdaten zuzuführen,
f) einer zweiten Ausleseeinheit (17a) zum Auslesen
der zweiten Vektoroperandendaten aus dem zweiten
Operandenvektorregister (12a), um die zweiten
Vektoroperandendaten der arithmetisch-logischen Einheit als
die vierten Eingangsdaten zuzuführen,
g) einer ersten Übergabeeinrichtung (37) zum
Zuführen der ersten Ergebnisdaten von der
Multipliziereinheit (25) als die dritten Eingangsdaten
zur arithmetisch-logischen Einheit (30), und
h) einer zweiten Übergabeeinrichtung (34) zum
Zuführen der zweiten Ergebnisdaten von der
arithmetisch-logischen Einheit (30) als die zweiten
Eingangsdaten zur Multipliziereinheit (25),
wobei
i) die erste Ausleseeinheit (16a) die m primären
Vektoroperandenelemente der ersten Vektoroperandendaten
beginnend bei einer ersten vorgegebenen Zykluszeit
nacheinander aus dem ersten Operandenvektorregister
(11a) ausliest,
j) die zweite Ausleseeinheit (17a) die m
sekundären Vektoroperandenelemente der zweiten
Vektoroperandendaten beginnend bei einer zweiten vorgegebenen
Zykluszeit nacheinander aus dem zweiten
Operandenvektorregister (12a) ausliest,
k) eine Takterzeugungseinheit (36) die erste
Ausleseeinheit (16a), die zweite Ausleseeinheit (17a) und
eine Schreibeinheit (33a) durch ein erstes (T1), ein
zweites (T2) bzw. ein drittes Steuersignal (T3)
aktiviert,
l) das erste Steuersignal (T1) zu dem Zeitpunkt
erzeugt wird, wenn einem zweiten Eingangsregister (22)
zum Speichern eines sekundären Eingangselements der
zweiten Eingangsdaten von der arithmetisch-logischen
Einheit (30) ein sekundäres Ergebniselement der zweiten
Ergebnisdaten zugeführt wird,
m) das zweite Steuersignal (T2) zu dem Zeitpunkt
erzeugt wird, wenn einem dritten Eingangsregister (28)
zum Speichern eines ternären Eingangselements der
dritten Eingangsdaten von der Multipliziereinheit (25) das
primäre Ergebniselement der ersten Ergebnisdaten
zugeführt wird, und
n) das dritte Steuersignal (T3) erzeugt wird, wenn
ein mit der arithmetisch-logischen Einheit (30)
verbundenes Ergebnisregister (31) das Vektorergebniselement
der Vektorergebnisdaten erzeugt.
2. Vektorverarbeitungsvorrichtung nach Anspruch 1, wobei
ein erstes Eingangsregister (21) mit dem ersten
Operandenvektorregister (11a) verbunden ist, um jedes der
primären Vektoroperandenelemente der ersten
Vektoroperandendaten als ein primäres Eingangselement erster
Eingangsdaten zu speichern.
3. Vektorverarbeitungsvorrichtung nach Anspruch 1 oder 2,
wobei die ersten Ergebnisdaten aus M primären
Ergebniselementen bestehen, wobei M eine erste vorgegebene
natürliche Zahl ist, ein viertes Eingangsregister (29)
mit dem zweiten Operandenvektorregister (12a) verbunden
ist, um jedes der sekundären Vektoroperandenelemente
der zweiten Vektoroperandendaten als ein quaternäres
Eingangselement der vierten Eingangsdaten zu speichern,
und wobei die arithmetisch-logische Einheit unter einer
N-stufigen Pipeline-Steuerung betrieben wird und mit
dem dritten und dem vierten Eingangsregister (28 bzw.
29) verbunden ist, wobei N eine zweite vorgegebene
natürliche Zahl ist.
4. Vektorverarbeitungsvorrichtung nach Anspruch 1, 2 oder
3, wobei das mit der arithmetisch-logischen Einheit
(30) verbundene Ergebnisregister (31) zum Speichern
jedes der sekundären Ergebniselemente der zweiten
Ergebnisdaten als ein Vektorergebniselement von
Vektorergebnisdaten geeignet ist, ein Ergebnisvektorregister
(32a) mit dem Ergebnisregister (31) verbunden ist, um
die Vektorergebnisdaten zu speichern, und eine
Schreibeinheit (33a) mit dem Ergebnisvektorregister
(32a) verbunden ist, um die Vektorergebnisdaten in das
Ergebnisvektorregister (32a) zu schreiben.
5. Vektorverarbeitungsvorrichtung nach Anspruch 3 oder 4,
wobei die erste und die zweite Ausleseeinheit (16a bzw.
17a) die m primären und sekundären
Vektoroperandenelemente bei jedem (M+N+2)-ten Maschinenzyklus
nacheinander lesen, wobei m eine vorgegebene ganze Zahl von
einschließlich 2 bis einschließlich M+N darstellt.
6. Vektorverarbeitungsvorrichtung nach Anspruch 3, 4 oder
5, wobei die Schreibeinheit (33a) die m
Vektorergebniselemente der Vektorergebnisdaten bei jedem (M+N+2)-ten
Maschinenzyklus nacheinander in das
Ergebnisvektorregister (32a) schreibt.
7. Vektorverarbeitungsvorrichtung nach einem der Ansprüche
1 bis 6, wobei die zweiten Ergebnisdaten aus mehreren
Vektorergebniselementen bestehen, wobei die
Vektorverarbeitungsvorrichtung außerdem ein
Ergebnisvektorregister zum Speichern von Vektorergebnisdaten und eine
Schreibeinheit zum aufeinanderfolgenden Schreiben der
vorgegebenen Anzahl der Vektorergebniselemente der
zweiten Ergebnisdaten bei der vorgegebenen Zykluszeit
als die Vektorergebnisdaten in das
Ergebnisvektorregister aufweist.
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP1087688A JP3068138B2 (ja) | 1989-04-06 | 1989-04-06 | ベクトル演算処理装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
DE69022871D1 DE69022871D1 (de) | 1995-11-16 |
DE69022871T2 true DE69022871T2 (de) | 1996-04-18 |
Family
ID=13921867
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
DE69022871T Expired - Fee Related DE69022871T2 (de) | 1989-04-06 | 1990-04-05 | Vektorverarbeitungsvorrichtung, die imstande ist, iterative Hochgeschwindigkeitsoperationen zu verrichten. |
Country Status (4)
Country | Link |
---|---|
US (1) | US5251323A (de) |
EP (1) | EP0391417B1 (de) |
JP (1) | JP3068138B2 (de) |
DE (1) | DE69022871T2 (de) |
Families Citing this family (11)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPH04167172A (ja) * | 1990-10-31 | 1992-06-15 | Nec Corp | ベクトルプロセッサ |
JP2766217B2 (ja) * | 1994-06-14 | 1998-06-18 | 甲府日本電気株式会社 | 並列処理装置 |
US6009505A (en) * | 1996-12-02 | 1999-12-28 | Compaq Computer Corp. | System and method for routing one operand to arithmetic logic units from fixed register slots and another operand from any register slot |
US5893145A (en) * | 1996-12-02 | 1999-04-06 | Compaq Computer Corp. | System and method for routing operands within partitions of a source register to partitions within a destination register |
US5909572A (en) | 1996-12-02 | 1999-06-01 | Compaq Computer Corp. | System and method for conditionally moving an operand from a source register to a destination register |
US6061521A (en) * | 1996-12-02 | 2000-05-09 | Compaq Computer Corp. | Computer having multimedia operations executable as two distinct sets of operations within a single instruction cycle |
US5941938A (en) * | 1996-12-02 | 1999-08-24 | Compaq Computer Corp. | System and method for performing an accumulate operation on one or more operands within a partitioned register |
US6202141B1 (en) * | 1998-06-16 | 2001-03-13 | International Business Machines Corporation | Method and apparatus for performing vector operation using separate multiplication on odd and even data elements of source vectors |
CN105278913A (zh) * | 2015-01-14 | 2016-01-27 | 北京国睿中数科技股份有限公司 | 实现向量浮点基2指数对数计算的装置 |
CN105302772A (zh) * | 2015-01-14 | 2016-02-03 | 北京国睿中数科技股份有限公司 | 浮点复数向量第一级fft计算方法及系统 |
FR3083351B1 (fr) * | 2018-06-29 | 2021-01-01 | Vsora | Architecture de processeur asynchrone |
Family Cites Families (10)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US3900723A (en) * | 1974-05-28 | 1975-08-19 | Control Data Corp | Apparatus for controlling computer pipelines for arithmetic operations on vectors |
KR860001434B1 (ko) * | 1980-11-21 | 1986-09-24 | 후지쑤 가부시끼가이샤 | 데이타 처리시 스템 |
JPS57209570A (en) * | 1981-06-19 | 1982-12-22 | Fujitsu Ltd | Vector processing device |
JPS58106636A (ja) * | 1981-12-18 | 1983-06-25 | Hitachi Ltd | パイプライン演算装置 |
JPS59160267A (ja) * | 1983-03-02 | 1984-09-10 | Hitachi Ltd | ベクトル処理装置 |
US4661900A (en) * | 1983-04-25 | 1987-04-28 | Cray Research, Inc. | Flexible chaining in vector processor with selective use of vector registers as operand and result registers |
JPS60136875A (ja) * | 1983-12-26 | 1985-07-20 | Hitachi Ltd | ベクトル演算器 |
FR2606186B1 (fr) * | 1986-10-31 | 1991-11-29 | Thomson Csf | Processeur de calcul comportant une pluralite d'etages relies en serie, calculateur et procede de calcul mettant en oeuvre ledit procede |
WO1988009016A1 (en) * | 1987-05-14 | 1988-11-17 | Fujitsu Limited | Vector processor for processing recurrent equations at a high speed |
US4949247A (en) * | 1988-02-23 | 1990-08-14 | Stellar Computer, Inc. | System for transferring multiple vector data elements to and from vector memory in a single operation |
-
1989
- 1989-04-06 JP JP1087688A patent/JP3068138B2/ja not_active Expired - Fee Related
-
1990
- 1990-04-05 DE DE69022871T patent/DE69022871T2/de not_active Expired - Fee Related
- 1990-04-05 US US07/505,685 patent/US5251323A/en not_active Expired - Lifetime
- 1990-04-05 EP EP90106544A patent/EP0391417B1/de not_active Expired - Lifetime
Also Published As
Publication number | Publication date |
---|---|
JPH02266468A (ja) | 1990-10-31 |
EP0391417A3 (de) | 1991-06-12 |
US5251323A (en) | 1993-10-05 |
EP0391417A2 (de) | 1990-10-10 |
DE69022871D1 (de) | 1995-11-16 |
EP0391417B1 (de) | 1995-10-11 |
JP3068138B2 (ja) | 2000-07-24 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
DE69022871T2 (de) | Vektorverarbeitungsvorrichtung, die imstande ist, iterative Hochgeschwindigkeitsoperationen zu verrichten. | |
DE2934971C2 (de) | Nach dem Fließbandprinzip arbeitender Zentralprozessor | |
DE3854321T2 (de) | Populationszählung in Rechnersystemen. | |
DE3401995C2 (de) | ||
DE69129723T2 (de) | Prozessorelement für Datenakkumulationsrechnungen, Verarbeitungseinheit und Prozessor | |
DE10393918T5 (de) | Effiziente Multiplikation kleiner Matrizen durch Verwendung von SIMD-Registern | |
DE1915818B2 (de) | Steuerschaltung für ein elektronisches Datenverarbeitungssystem | |
DE2311220A1 (de) | Digital-informations-verarbeitungsvorrichtung zur zeichenerkennung | |
DE1282337B (de) | Programmgesteuerte elektronische Rechenanlage | |
DE2715073A1 (de) | Mikroprogrammierte rechner-steuervorrichtung | |
DE3400723C2 (de) | ||
DE3485771T2 (de) | Leistungsfaehiger paralleler vektorprozessor. | |
DE2640124A1 (de) | Digitale prozessoren fuer transformationsklassen zur verdichtung von mehrdimensionalen daten | |
DE3888230T2 (de) | Einrichtung und Verfahren zur Durchführung einer Schiebeoperation mit einer Multipliziererschaltung. | |
DE68926154T2 (de) | Pipelineprozessor zur Durchführung des LMS Algorithmus | |
DE3507584C2 (de) | ||
DE3930313C2 (de) | ||
DE3854608T2 (de) | Vektorrechnerschaltung, welche schnell eine Berechnung auf drei Eingangsvektoren ausführen kann. | |
DE602004008818T2 (de) | Verfahren zur Bezugnahme auf die Adresse von Vektordaten und Vektorprozessor | |
DE69501581T2 (de) | Verfahren zum Erzeugen eines Fehlerkorrekturparameters in Verbindung mit der Verwendung von modularen Operationen nach der Montgomery-Methode | |
DE3447530C2 (de) | ||
DE3486073T2 (de) | Vektorverarbeitungsgeraet. | |
DE69521464T2 (de) | Paralleler Prozessor | |
DE69900142T2 (de) | Verfahren zur Ausführung der modularen Multiplikation nach der Montgomery-Methode | |
DE10204647A1 (de) | Matrizenrechner des Zeitteilungstyps |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
8364 | No opposition during term of opposition | ||
8339 | Ceased/non-payment of the annual fee |