DE10204647A1 - Matrizenrechner des Zeitteilungstyps - Google Patents

Matrizenrechner des Zeitteilungstyps

Info

Publication number
DE10204647A1
DE10204647A1 DE10204647A DE10204647A DE10204647A1 DE 10204647 A1 DE10204647 A1 DE 10204647A1 DE 10204647 A DE10204647 A DE 10204647A DE 10204647 A DE10204647 A DE 10204647A DE 10204647 A1 DE10204647 A1 DE 10204647A1
Authority
DE
Germany
Prior art keywords
matrix
memory
elements
output
input
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.)
Withdrawn
Application number
DE10204647A
Other languages
English (en)
Inventor
Geun Sik Jang
Bong Soon Kang
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.)
Samsung Electronics Co Ltd
Original Assignee
Samsung Electronics Co Ltd
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 Samsung Electronics Co Ltd filed Critical Samsung Electronics Co Ltd
Publication of DE10204647A1 publication Critical patent/DE10204647A1/de
Withdrawn legal-status Critical Current

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F7/00Methods or arrangements for processing data by operating upon the order or content of the data handled
    • G06F7/38Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation
    • G06F7/48Methods 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/52Multiplying; Dividing
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F17/00Digital computing or data processing equipment or methods, specially adapted for specific functions
    • G06F17/10Complex mathematical operations
    • G06F17/16Matrix or vector computation, e.g. matrix-matrix or matrix-vector multiplication, matrix factorization

Landscapes

  • Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Pure & Applied Mathematics (AREA)
  • Mathematical Analysis (AREA)
  • Mathematical Optimization (AREA)
  • Mathematical Physics (AREA)
  • Computational Mathematics (AREA)
  • Theoretical Computer Science (AREA)
  • Data Mining & Analysis (AREA)
  • Computing Systems (AREA)
  • General Engineering & Computer Science (AREA)
  • Algebra (AREA)
  • Databases & Information Systems (AREA)
  • Software Systems (AREA)
  • Complex Calculations (AREA)

Abstract

Ein Matrizenrechner berechnet die Multiplikation von zwei Matrizen. Der Matrizenrechner umfasst einen Elementauswahlteil zum Auswählen von Elementen aus den Elementen der zwei Matrizen, die Teilelemente jedes Elementes einer Multiplikationsergebnismatrix bilden, und zum sequentiellen Ausgeben des ausgewählten Elements, einen Berechnungsteil zum Addieren der Produkte der Ausgabe aus dem Elementauswählteil und zum sequentiellen Ausgeben der Elemente der Ergebnismatrix sowie einen Steuersignal-Erzeugungsteil zum Erzeugen eines Steuersignals, das den Zeitablauf der Operation des Berechnungsteils und des Speicherteils steuert. Weil die entsprechenden Elemente der zwei Matrizen sequentiell für die Multiplikation und Addition ausgewählt werden, können die Elemente der Multiplikationsergebnismatrix, welche die Summen der Teilelemente sind, sequentiell berechnet werden. Weil der Matrizenrechner aus nur einem Addierer, einem Multiplizierer und einer Steuerschaltung aufgebaut werden kann, ist die Größe der Schaltung reduziert.

Description

Die vorliegende Erfindung betrifft einen Matrizenrechner des Zeitteilungstyps und insbesondere einen Matrizenrechner zum Multiplizieren von zwei Matrizen durch das sequentielle Auswählen von Elementen der Matrizen sowie das Durchführen einer Multiplikation und einer Addition der ausgewählten Elemente. Die vorliegende Erfindung basiert auf der koreanischen Patentanmeldung Nr. 2001-5334 vom 5. Februar 2001, die hier unter Bezugnahme eingeschlossen ist.
Allgemein ist in einem technischen Feld wie der Bildsignalverarbeitung häufig eine Multiplikation von Matrizen erforderlich. Um die Multiplikation der Matrizen durchzuführen, verwendet ein Matrizenrechner eine Vielzahl von Multiplizierern und eine Vielzahl von Addierern, um einen mathematischen Ausdruck eines Ergebnisses einer Multiplikationsoperation zu erhalten.
Fig. 1 ist ein Blockdiagramm eines herkömmlichen Matrizenrechners und zeigt insbesondere einen Matrizenrechner, der eine Multiplikation mit zwei quadratischen 3 × 3-Matrizen durchführt. Fig. 2 zeigt den detaillierten Aufbau jedes Blocks von Fig. 1.
Wenn die erste Matrix eine X-Matrix ist, und die zweite Matrix eine Y-Matrix ist, dann ist die X-Matrix
und ist die Y-Matrix
Weiterhin ist das Produkt der X- und Y-Matrizen
Wie in Fig. 1 gezeigt, umfasst der herkömmliche Matrizenrechner zum Verarbeiten der oben beschriebenen Operation drei Blöcke 10, 20 und 30. In den ersten Block 10 werden X1, X2, X3 eingegeben, in den zweiten Block 20 werden X4, X5, X6 eingegeben und in den dritten Block 30 werden X7, X8, X9 eingegeben. Weiterhin werden Y1 bis Y9 in jeden der Blöcke 10, 20, 30 eingegeben.
Wie in Fig. 2 gezeigt, umfasst der erste Block 10 neun (9) Multiplizierer 11, in die jeweils Y1 bis Y9 eingegeben werden, neun (9) D-Flipflops 13, (drei (3) Gruppen aus jeweils drei (3) D-Flipflops - drei obere Flipflops, drei mittlere Flipflops und drei untere Flipflops) zum Speichern der Ausgabe aus den Multiplizierern 11, und drei (3) Addierer 15, in welche jeweils die Ausgaben aus drei der neun (9) D-Flipflops 13 eingegeben werden. In die oberen drei Multiplizierer 11 wird X1 eingegeben, in die mittleren drei Multiplizierer 11 wird X2 eingegeben und in die unteren drei Multiplizierer 11 wird X3 eingegeben. Die Ausgaben aus den entsprechenden Multiplizierern 11 werden in den D-Flipflops 13 gespeichert und dann in die Addierer 15 eingegeben. Die Addierer 15 addieren die eingegebenen Werte und geben jeweils die Ergebnisse 21, 22 und 23 aus.
Der Aufbau des zweiten und des dritten Blocks 20 und 30 ist identisch mit dem Aufbau des ersten Blocks 10 von Fig. 2. Das heißt, der zweite Block 20 gibt 24, 25, 26 aus und der dritte Block 30 gibt 27, 28, 29 aus.
Der herkömmliche Matrizenrechner weist jedoch den Nachteil auf, dass die Schaltung umfangreich wird, weil sie eine Vielzahl von Multiplizierern 11 und Addierern 15 benötigt. Das heißt, insgesamt sind siebenundzwanzig (27) Multiplizierer 11 für die Blöcke 10, 20, 30 erforderlich und sind achtzehn (18) Addierer 15 für die Blöcke 10, 20, 30 erforderlich (weil der Addierer 15 drei Eingaben addiert, besteht jeder Addierer 15 tatsächlich aus zwei Addierern, die jeweils zwei Eingaben addieren).
Die vorliegende Erfindung bezweckt, die oben genannten Probleme aus dem Stand der Technik zu beseitigen. Es ist dementsprechend eine Aufgabe der vorliegenden Erfindung, einen Matrizenrechner anzugeben, der die Anzahl der Addierer und damit die Größe der Schaltung reduzieren kann, indem er sequentiell die Elemente einer Multiplikationsergebnismatrix berechnet.
Die vorstehend genannte Aufgabe wird durch einen Matrizenrechner zum Durchführen einer Multiplikation auf einer ersten Matrix und einer zweiten Matrix gemäß der vorliegenden Erfindung gelöst, welcher umfasst: einen Elementauswahlteil, in den Elemente der ersten und zweiten Matrix eingegeben werden, wobei der Elementauswahlteil sequentiell jedes der eingegebenen Elemente auswählt, die einen Multiplikanden jedes Teilelements jedes der Elemente einer Multiplikationsergebnismatrix bilden, und sequentiell das ausgewählte Elements ausgibt, einen Berechnungsteil zum sequentiellen Berechnen jedes Elements der Multiplikationsergebnismatrix durch das sequentielle Addieren der multiplizierten Werte der Ausgaben aus dem Elementauswahlteil, einen Speicherteil zum Speichern der Ausgabe aus dem Berechnungsteil und einen Steuersignal- Erzeugungsteil zum Erzeugen eines Steuersignals, das den Zeitablauf der Operation des Berechnungsteils und des Speicherteils steuert.
Der Elementauswahlteil umfasst einen Multiplexer, in den die entsprechenden Elemente der ersten und der zweiten Matrix parallel eingegeben werden, sowie einen Steuerblock zum Erzeugen eines Auswahlsignals, das eine Ausgabe aus dem Multiplexer auswählt. Der Berechnungsteil umfasst einen Multiplizierer zum Multiplizieren der Ausgabe aus dem Multiplexer, einen ersten Speicher zum vorübergehenden Speichern der Ausgabe aus dem Multiplizierer, einen zweiten Speicher und einen Addierer zum Addieren eines in dem ersten Speicher gespeicherten Wertes mit einem in dem zweiten Speicher gespeicherten Wert und zum Eingeben des resultierenden Werts der Additionsoperation in den zweiten Speicher.
Der Steuersignal-Erzeugungsteil umfasst eine Vielzahl von Flipflops zum Erzeugen von Signalen, welche die aus dem Steuerblock ausgegebenen Signale um eine vorbestimmte Anzahl von Taktimpulsen verzögern, sowie zum Eingeben der erzeugten Signale in den Berechnungsteil und den Speicherteil. Der Speicherteil umfasst eine Vielzahl von Registern zum sequentiellen Speichern der Ausgabe aus dem Berechnungsteil.
Gemäß der vorliegenden Erfindung werden die Elemente, die aus den Summen der Teilelemente der Multiplikationsmatrix bestehen, sequentiell berechnet, indem die Elemente der zwei Multiplikandenmatrizen sequentiell ausgewählt, multipliziert und addiert werden. Dementsprechend kann der Matrizenrechner durch einen Addierer, einen Multiplizierer und eine Steuerschaltung zum Steuern des Addierers und des Multiplizierers gebildet werden, wodurch die Größe der Schaltung reduziert wird.
Die vorstehend genannten Aufgaben und die Merkmale der vorliegenden Erfindung werden durch die folgende ausführliche Beschreibung einer bevorzugten Ausführungsform der vorliegenden Erfindung mit Bezug auf die beigefügten Zeichnungen verdeutlicht:
Fig. 1 ist ein Blockdiagramm eines herkömmlichen Matrizenrechners,
Fig. 2 ist ein Blockdiagramm, das den Aufbau eines ersten Blocks von Fig. 1 im größeren Detail zeigt,
Fig. 3 ist ein Blockdiagramm, das einen Matrizenrechner gemäß der vorliegenden Erfindung zeigt,
Fig. 4 ist ein Blockdiagramm, das einen Elementauswahlteil von Fig. 3 im größeren Detail zeigt,
Fig. 5 ist ein Blockdiagramm, das einen Steuersignal- Erzeugungsteil von Fig. 3 im größeren Detail zeigt,
Fig. 6 ist ein Blockdiagramm, das einen Berechnungsteil von Fig. 3 im größeren Detail zeigt, und
Fig. 7 ist ein Blockdiagramm, das einen Speicherteil von Fig. 3 im größeren Detail zeigt.
Im Folgenden wird die bevorzugte Ausführungsform der vorliegenden Erfindung mit Bezug auf die beigefügten Zeichnungen ausführlich beschrieben.
Um das Berechnungsprinzip eines Matrizenrechners gemäß der vorliegenden Erfindung zu erläutern, wird zuerst ein Verfahren zum Analysieren der Ergebnismatrix der Matrixmultiplikation in entsprechende Elemente beschrieben.
Wie weiter oben bereits beschrieben, ist die Z-Matrix, d. h. die Ergebnismatrix aus der Multiplikation der X-Matrix und der Y-Matrix wie folgt:
Wie in dem vorstehenden Ausdruck gezeigt, werden die entsprechenden Elemente der Ergebnismatrix wie folgt erhalten:
Z1 X1Y1+X2Y4+X3Y7
Z2 X1Y2+X2Y5+X3Y8
Z3 X1Y3+X2Y6+X3Y9
Z4 X4Y1+X5Y4+X6Y7
Z5 X4Y2+X5Y5+X6Y8
Z6 X4Y3+X5Y6+X6Y9
Z7 X7Y1+X8Y4+X9Y7
Z8 X7Y2+X8Y5+X9Y8
Z9 X7Y3+X8Y6+X9Y9
Wie in dem vorstehenden Ausdruck gezeigt, ist jedes Element (Z1 bis Z9) der Ergebnismatrix gleich der Summe von drei Teilelementen (z. B. ist das Element Z1 gleich der Summe der Teilelemente X1Y1, X2Y4 und X3Y7). Weiterhin ist jedes Teilelement das Produkt aus einem Element aus der X-Matrix und einem Element aus der Y-Matrix. Unter Berücksichtigung dieser Tatsache werden in der vorliegenden Erfindung die Teilelemente der Elemente Z1 bis Z9 sequentiell berechnet, wobei dann die Elemente Z1 bis Z9 berechnet werden, indem die Teilelemente addiert werden.
Fig. 3 ist ein Blockdiagramm eines Matrizenrechners gemäß der vorliegenden Erfindung. Der Matrizenrechner gemäß der vorliegenden Erfindung umfasst einen Elementauswahlteil 70, in den gleichzeitig die Elemente X1 bis X9 und Y1 bis Y9 der Multiplikanden, d. h. der X- und Y-Matrizen eingegeben werden, zum sequentiellen Auswählen und Ausgaben der erforderlichen Elemente, einen Berechnungsteil 40 zum Durchführen einer bestimmten Operation auf den durch den Elementauswahlteil 70 ausgewählten Elementen, einen Speicherteil 60 zum Speichern des Berechnungsergebnisses des Berechnungsteils 40 und zum Ausgeben der Elemente der Ergebnismatrix sowie einen Steuersignal-Erzeugungsteil 50 zum Erzeugen eines Steuersignals, das den Berechnungsteil 40 und den Speicherteil 60 steuert.
Fig. 4 ist ein Blockdiagramm, das den Aufbau des Elementauswahlteils 70 von Fig. 3 im größeren Detail zeigt. Der Elementauswahlteil 70 umfasst einen Multiplexer 73 zum Auswählen und Ausgaben von zwei Elementen aus den eingegebenen Elementen sowie einen Steuerblock 71 zum Erzeugen von Auswahlsignalen sel_1 und sel_h, welche die Auswahloperation des Multiplexers 73 steuern.
In den Multiplexer 73 werden gleichzeitig alle Elemente X1 bis X9 und Y1 bis Y9 der ersten und der zweiten Matrix (d. h. der X- und der Y-Matrix) eingegeben. Der Multiplexer 73 wird durch die vom Steuerblock 71 erzeugten Auswahlsignale sel_1 und sel_h gesteuert und wählt in Übereinstimmung mit den Auswahlsignalen sel_1 und sel_h ein Element aus den Elementen X1 bis X9 der ersten Matrix und ein Element aus den Elementen Y1 bis Y9 aus der zweiten Matrix aus. Die Auswahlsignale sel_1 und sel_h werden mit jedem Impuls aus einem Takt (nicht gezeigt) gewechselt, der entweder in dem Steuerblock 71 installiert ist oder separat vorgesehen ist, um eine sequentielle Operation des Steuerblocks 71 zu steuern.
Dementsprechend wählt der Multiplexer 73 mit jedem Taktimpuls ein anderes Element aus und gibt das ausgewählte Element aus. Zwei Ausgaben aus dem Multiplexer 73 werden jeweils in die D- Flipflops 76 eingegeben, wobei die D-Flipflops 76 die Ausgabe des Multiplexers 73 um einen Taktimpuls verzögern und dann ausgeben.
Die zwei Auswahlsignale sel_h und sel_1 für die Steuerung des Multiplexers 73 sind ein hohes Auswahlsignal sel_h und ein niedriges Auswahlsignal sel_1. Das hohe Auswahlsignal sel_h ist ein Signal, das eines der Elemente der Z-Matrix angibt, die die Ergebnismatrix der Multiplikation ist. Das niedrige Auswahlsignal sel_1 ist ein Signal, das eines der Teilelemente der durch das hohe Auswahlsignal sel_h angegebenen Teilelemente angibt. Wenn beispielsweise das hohe Auswahlsignal sel_h gleich 2 ist und das niedrige Auswahlsignal sel_1 gleich 3 ist, dann wird der Multiplexer 73 betrieben, um die dritten Teilelemente von Z2, d. h. X3Y8 auszugeben, wobei der Elementauswahlteil 70 dementsprechend die Ausgaben X3 und Y8 auswählt.
Als Startsignal zum Starten der Steuerung des Steuerblocks 71 kann beispielsweise ein durch einen vertikalen Synchronisierer erzeugtes Startsignal verwendet werden, das ein Mal pro Teilbild des Bildsignals erzeugt wird. Wenn das Startsignal in den Steuerblock 71 eingegeben wird, wird das hohe Auswahlsignal sel_h mit dem ersten Taktimpuls um eins (1) erhöht (der Anfangswert des hohen Auswahlsignals ist gleich null), während gleichzeitig das niedrige Auswahlsignal sel_1 um eins (1) vermindert wird (der Anfangswert des niedrigen Auswahlsignals ist ebenfalls null). Der Wert des niedrigen Auswahlsignals sel_1 wird mit jedem Taktimpuls um eins erhöht, wobei dementsprechend jedes Teilelement des ersten Elements Z1 ausgewählt und sequentiell mit jedem Taktimpuls ausgegeben wird. Das hohe Auswahlsignal sel_h wird mit jedem dritten Taktimpuls um eins (1) erhöht. Wenn dementsprechend die sequentielle Ausgabe für die drei Teilelemente X1Y1, X2Y4, X3Y7 des ersten Elements Z1 abgeschlossen ist, wird das hohe Auswahlsignal sel_h um zwei (2) erhöht, um das zweite Element 22 anzugeben. Indem der vorstehend beschriebene Prozess wiederholt wird, werden die Elemente der ersten und der zweiten Matrix, die zur Berechnung der Teilelemente der Elemente der Z-Matrix verwendet werden, sequentiell ausgegeben.
Zusätzlich zu den Auswahlsignalen sel_h und sel_1 erzeugt der Steuerblock 71 Steuersignale (flag, stop), um den Steuersignal-Erzeugungsteil 50 zu steuern. Das "flag"-Signal erzeugt einen "hohen" Impuls für einen Taktimpuls an jedem Ende der Berechnung eines Elements der Z-Matrix, um den Abschluss der Berechnung eines Elements anzugeben. Das "stop"- Signal erzeugt einen "hohen" Impuls für einen Taktimpuls am Ende der Berechnung von neun (9) Elementen der Z-Matrix, um den Abschluss der Berechnung der Z-Matrix anzugeben. Weiterhin wird das "stop"-Signal zum Steuerblock 71 rückgekoppelt, um den Steuerblock 71 durch das Erzeugen eines "hohen" Impulses zu initialisieren. Die Steuersignale (flag, stop) und das hohe Auswahlsignal sel_h werden in den Steuersignal-Erzeugungsteil 50 eingegeben.
Fig. 5 ist ein Blockdiagramm, das den Aufbau des Steuersignal-Erzeugungsteils 50 von Fig. 3 im größeren Detail zeigt. Der Steuersignal-Erzeugungsteil 50 umfasst einen ersten Verzögerungsteil 51 zum Verzögern des hohen Auswahlsignals sel_h, einen zweiten Verzögerungsteil 53 zum Verzögern des "flag"-Signals und einen dritten und vierten Verzögerungsteil 55 und 57 zum Verzögern des "stop"-Signals (der Buchstabe d in Fig. 3 und 6 gibt ein verzögertes Signal an, wobei die Zahl vor dem "d" die Anzahl der verzögerten Taktimpulse angibt - zum Beispiel gibt "_3d" ein um drei Taktimpulse verzögertes Signal an).
Der erste Verzögerungsteil 51 umfasst drei D-Flipflops und erzeugt ein Signal sel_h_3d, welches das um drei Taktimpulse verzögerte hohe Auswahlsignal sel_h ist. Der zweite Verzögerungsteil 53 umfasst zwei D-Flipflops und erzeugt ein Signal flag_2d, welches das um zwei Taktimpulse verzögerte "flag"-Signal ist. Der dritte Verzögerungsteil 55 umfasst drei D-Flipflops und erzeugt ein Signal stop_3d, welches ein um drei Taktimpulse verzögertes "stop"-Signal ist. Der vierte Verzögerungsteil 57 umfasst einen D-Flipflop, der in Reihe mit dem dritten Verzögerungsteil 55 verbunden ist, und erzeugt ein Signal stop_4d, welches ein um einen weiteren Taktimpuls verzögertes Ausgabesignal stop_3d aus dem Verzögerungsteil 55 ist.
Fig. 6 ist ein Blockdiagramm, das den Aufbau des Berechnungsteils 40 von Fig. 3 im größeren Detail zeigt. Der Berechnungsteil 40 umfasst einen Multiplizierer 41, in den zwei Ausgaben aus dem Multiplexer 73 des Elementauswahlteils 70 eingegeben werden, einen ersten Speicher 43 zum Speichern der Ausgabe aus dem Multiplizierer 41, einen zweiten Speicher 47, der neben dem ersten Speicher 43 installiert ist, und einen Addierer 45 zum Addieren der Ausgaben aus dem ersten und dem zweiten Speicher 43 und 47 und zum Eingeben der resultierenden Summe in den zweiten Speicher 47. Der erste und der zweite Speicher 43 und 47 umfassen einen D-Flipflop DFF, speichern den eingegebenen Wert für einen Taktimpuls und geben ihn dann aus.
Von den Ausgabesignalen aus dem Steuersignal- Erzeugungsteil 50 wird das Signal stop_3d in den ersten Speicher 43 eingegeben, und wenn das Signal stop_3d ein "hoher" Impuls wird, wird der erste Speicher 43 initialisiert (wird der im D-Flipflop gespeicherte Wert auf null zurückgesetzt). Weiterhin werden von den aus dem Steuersignal- Erzeugungsteil 50 ausgegebenen Signalen die Signale flag_2d und stop_4d in den zweiten Speicher 47 eingegeben, wobei wenn eines dieser Signale ein "hoher" Impuls wird, der zweite Speicher 47 initialisiert wird (der im D-Flipflop gespeicherte Wert auf null zurückgesetzt wird).
Fig. 7 ist eine Ansicht, die den Aufbau des Speicherteils 60 von Fig. 3 zeigt. Der Speicherteil 60 umfasst ein 9 × 1- Register. Von den Ausgaben aus dem Steuersignal-Erzeugungsteil 50 werden die Signale sel_h_3d und flag_2d in den Speicherteil 60 eingegeben, wobei der Speicherteil 60 durch die eingegebenen Signale sel_h_3d und flag_2d gesteuert wird. Die Ausgaben Z aus dem Berechnungsteil 40 werden sequentiell in den Speicherteil 60 eingegeben, wobei der Speicherteil 60 unter der Steuerung der Signale sel_h_3d und flag_2d aus dem Steuersignal-Erzeugungsteil 50 mit jedem dritten Taktimpuls neun Elemente 21 bis 29 verschiebt, das Ergebnis speichert und es dann parallel ausgibt, nachdem das Speichern abgeschlossen wurde.
Im Folgenden wird der Betrieb des Matrizenrechners gemäß der vorliegenden Erfindung beschrieben.
Die entsprechenden Elemente X1 bis X9, Y1 bis Y9 der ersten und der zweiten Matrix (d. h. der X- und Y-Matrix) werden gleichzeitig in den Multiplexer 73 des Elementauswahlteils 70 eingegeben. Wenn das Startsignal in den Steuerblock 71 eingegeben wird, erhöht der Steuerblock 71 den Wert des hohen und des niedrigen Auswahlsignals sel_h und sel_1 jeweils um eins, die zuvor auf den Anfangswert "null" gesetzt wurden. Dementsprechend werden die zur Berechnung des ersten Teilelements des ersten Elements Z1 der Matrix Z erforderlichen Elemente ausgewählt, wobei der Multiplexer 73 die ausgewählten Elemente X1 und Y1 ausgibt.
Mit jedem Taktimpuls wird das niedrige Auswahlsignal sel_1 um eins erhöht, wobei der Multiplexer 73 dementsprechend sequentiell die Elemente der Matrizen X und Y ausgibt, welche die Multiplikanden der Teilelemente des ersten Elements Z1 bilden. Wenn die drei Teilelemente des ersten Elements Z1 ausgegeben werden, wird das hohe Ausgabesignal sel_h um eins erhöht und wird das niedrige Ausgabesignal sel_1 wieder von dem Wert "eins" erhöht. Daraus resultiert, dass die Elemente der Matrizen X und Y, die Multiplikanden der Teilelemente des zweiten Elements Z2 bilden, sequentiell mit jedem Taktimpuls ausgegeben werden. Wie oben beschrieben, wird der Wert des niedrigen Auswahlsignals sel_1 mit jedem Taktimpuls um eins erhöht, wobei die Variation von eins bis drei wiederholt wird, während der Wert des hohen Auswahlsignals sel_h mit jedem dritten Taktimpuls um eins erhöht wird und zwischen eins und neun variiert. Dementsprechend werden die für die Berechnung der Z-Matrix erforderlichen Elemente sequentiell eingegeben.
Wie oben beschrieben erzeugt das "flag"-Signal den "hohen" Impuls für einen Taktimpuls jedes Mal, wenn die Ausgabe der Teilelemente eines Elements der Z-Matrix abgeschlossen ist, während das "stop"-Signal den "hohen" Impuls für einen Taktimpuls jedes Mal erzeugt, wenn die Berechnung aller Elemente Z1 bis Z9 der Matrix Z abgeschlossen ist.
Die Ausgaben aus dem Multiplexer 73 werden sequentiell in den Multiplizierer 41 des Berechnungsteils 40 eingegeben, und der Multiplizierer 41 multipliziert die Ausgaben aus dem Multiplexer 73 und berechnet sequentiell die Teilelemente X1Y1,. . . . der Elemente Z1 bis Z9 der Matrix Z. Die aus dem Multiplizierer 41 ausgegebenen Teilelemente werden in dem ersten Speicher 43 gespeichert. Die in dem ersten Speicher 43 gespeicherten Werte werden dann über den Addierer 45 in dem zweiten Speicher 47 gespeichert. Dabei wird der Anfangswert des zweiten Speichers 47 auf null gesetzt. Weil in den zweiten Speicher 47 die Summe aus der Ausgabe des ersten Speichers 43 und aus der eigenen Ausgabe eingegeben wird, wird die durch den Multiplizierer 41 sequentiell berechnete Gesamtsumme der Teilelemente in dem zweiten Speicher 47 gespeichert.
Weil die Ausgabe aus dem Multiplexer 73 über den D- Flipflop 76 und den ersten Speicher 43 in den zweiten Speicher 47 eingegeben wird, werden in den zweiten Speicher 47 nach einer Verzögerung von zwei Taktimpulsen nach der Ausgabe der Elemente der X- und Y-Matrizen die durch den Multiplizierer 41 berechneten Teilelemente eingegeben. Weil das "flag"-Signal nur nach Abschluss der Ausgabe aller Teilelemente (z. B. X1Y1, X2Y4, X3Y7) eines Elements der Z-Matrix (z. B. Z1) ein "hohes" Signal erzeugt, wird das Signal flag_2d, welches das um zwei Taktimpulse verzögerte "flag"-Signal ist, zurückgesetzt, nachdem ein der Summe von drei Teilelementen entsprechendes Element gespeichert wurde. Also jedes Mal, wenn die Berechnung des Elements der Z-Matrix abgeschlossen wird, wird der in dem zweiten Speicher 47 gespeicherte Wert auf null zurückgesetzt, um für die Berechnung des nächsten Elements bereit zu sein. Dabei wird auch der in dem zweiten Speicher 47 gespeicherte Wert vor dem Zurücksetzen des zweiten Speichers 47 in den Speicherteil 60 eingegeben.
Wenn der oben beschriebene Prozess neun Mal wiederholt wird, werden die Werte aller Elemente Z1 bis Z9 durch den Berechnungsteil 40 sequentiell berechnet, wobei das "stop"- Signal nach Abschluss der Berechnung ein "hoher" Impuls wird. Dementsprechend wird der Steuerblock 71 zum Zeitpunkt der Erzeugung des "stop"-Signals zurückgesetzt, und nach jeweils drei und vier Taktimpulsen der Verzögerung werden der erste und der zweite Speicher 43 und 47 auf null zurückgesetzt. Dementsprechend wird die Initialisierung ausgeführt, um die Multiplikation bei der nächsten Eingabe von Matrizen vornehmen zu können.
Die Werte der Elemente Z1 bis Z9 werden sequentiell aus dem Berechnungsteil 40 ausgegeben und in den Speicherteil 60 eingegeben, der ein 9 × 1-Register umfasst. In den Speicherteil 60 werden ein Signal sel_h_3d, welches das um drei Taktimpulse verzögerte hohe Auswahlsignal sel_h ist, und ein Signal flag_2d eingegeben, welches das um zwei Taktimpulse verzögerte "flag"-Signal ist.
Das Signal flag_3d verschiebt die Werte jedes Registers in dem Speicherteil 60. Wenn also die Werte des zweiten Speichers 47 des Berechnungsteils 40 in die vordersten Register des Speicherteils 60 eingegeben werden, werden gleichzeitig die Werte der Register in dem Speicherteil 60 verschoben. Wenn dieser Prozess wiederholt wird, werden die Werte der entsprechenden im Speicher 47 gespeicherten Elemente sequentiell in den Registern gespeichert.
Das Signal sel_h_3d gibt die in den Registern gespeicherten Werte in den Speicherteil 60 aus. Dabei werden die Werte der Register des Speicherteils 60 ausgegeben, wenn das Signal sel_h_3d gleich 1001(2), d. h. gleich 9 wird. Wenn also die Werte von allen sequentiell eingegebenen Elementen Z1 bis Z9 in den Registern gespeichert werden, werden parallel dazu die Werte von Z1 bis Z9 ausgegeben. Daraus resultiert, dass die Z-Matrix, d. h. das Multiplikationsergebnis der X- und Y-Matrix berechnet wird. Dabei wird das hohe Auswahlsignal sel_h um drei Taktimpulse verzögert wird das "flag"-Signal um zwei Taktimpulse verzögert, um die Verschiebungszeit der sequentiell eingegebenen Elemente Z1 bis Z9 mit der Ausgabezeit der Elemente Z1 bis Z9 zu synchronisieren.
Fig. 3 bis 7 zeigen den Matrizenrechner beispielhaft für die Ausführung einer Multiplikation von zwei quadratischen 3 × 3-Matrizen, wobei jedoch zu beachten ist, dass die vorliegende Erfindung auch auf die Berechnung von anderen Typen von Matrizen angewendet werden kann. Zum Beispiel kann ein Matrizenrechner zum Multiplizieren von 4 × 4 Matrizen realisiert werden, indem die Anzahl der Eingaben in den Multiplexer 73 des Elementauswahlteils 70 mit acht (8) gewählt wird und indem die Anzahl der Verzögerungstaktimpulse für die Steuersignale in geeigneter Weise für die Multiplikation von 4 × 4 Matrizen angepasst wird. Ein Matrizenrechner zum Berechnen von nicht-quadratischen Matrizen kann ebenfalls einfach durch eine entsprechende Anwendung und eine erforderliche Anpassung der Anzahl von Verzögerungstaktimpulsen realisiert werden.
Gemäß der vorliegenden Erfindung kann die Multiplikation von zwei Matrizen sequentiell durchgeführt werden, indem die Teilelemente der entsprechenden Elemente der Multiplikanden sequentiell ausgegeben und addiert werden. Mit dem aus einem Multiplizierer und einem Addierer bestehenden Berechnungsteil und einer Steuerschaltung, welche die in den Berechnungsteil einzugebenden Werte auswählt und steuert, kann ein Matrizenrechner mit einfacher Hardware und kompakter Größe realisiert werden.
Es wurde eine bevorzugte Ausführungsform der vorliegenden Erfindung beschrieben, wobei dem Fachmann jedoch deutlich sein sollte, dass die vorliegende Erfindung nicht auf die hier beschriebene bevorzugte Ausführungsform beschränkt ist und dass verschiedene Änderungen und Modifikationen innerhalb des Erfindungsumfangs vorgenommen werden können, der durch die beigefügten Ansprüche definiert ist.
Beschriftungen zu Fig. 1
10
1. Block
20
2. Block
30
3. Block
Beschriftungen zu Fig. 3
70
Elementauswahlteil
40
Berechnungsteil
60
Speicherteil
50
Steuersignal-Erzeugungsteil
Beschriftungen zu Fig. 4
71
Steuerblock

Claims (5)

1. Matrizenrechner zum Durchführen einer Multiplikation auf einer ersten und einer zweiten Matrix, mit:
einem Elementauswählteil (70), in den Elemente der ersten Matrix und der zweiten Matrix eingegeben werden, wobei der Elementauswahlteil (70) sequentiell jedes der eingegebenen Elemente auswählt, die einen Multiplikanden jedes Teilelements jedes der Elemente einer Multiplikationsergebnismatrix bilden, und sequentiell das ausgewählte der eingegebenen Elemente ausgibt,
einem Berechnungsteil (40) zum sequentiellen Berechnen jedes Elements aus der Multiplikationsergebnismatrix durch das sequentielle Addieren von multiplizierten Werten der Ausgaben aus dem Elementauswahlteil (70),
einem Speicherteil (60) zum Speichern der Ausgabe aus dem Berechnungsteil (40), und
einem Steuersignal-Erzeugungsteil (50) zum Erzeugen eines Steuersignals, das den Zeitablauf des Betriebs des Berechnungsteils (40) und des Speicherteils (60) steuert.
2. Matrizenrechner nach Anspruch 1, dadurch gekennzeichnet, dass der Elementauswahlteil umfasst:
einen Multiplexer (73), in den die entsprechenden Elemente der ersten Matrix und der zweiten Matrix parallel eingegeben werden, und
einen Steuerblock (71) zum Erzeugen eines Auswahlsignals, das eine Ausgabe aus dem Multiplexer (73) auswählt.
3. Matrizenrechner nach Anspruch 1 oder 2, dadurch gekennzeichnet, das der Berechnungsteil (40) umfasst:
einen Multiplizierer (41) zum Multiplizieren der Ausgabe aus dem Multiplexer (73),
einen ersten Speicher (43) zum vorübergehenden Speichern der Ausgabe aus dem Multiplizierer (41),
einen zweiten Speicher (47), und
einen Addierer (45) zum Addieren des im ersten Speicher (43) gespeicherten ersten Wertes mit einem in dem zweiten Speicher (47) gespeicherten zweiten Wert und zum Eingeben des resultierenden Wertes der Additionsoperation in den zweiten Speicher (47).
4. Matrizenrechner nach wenigstens einem der vorstehenden Ansprüche, dadurch gekennzeichnet, dass der Steuersignal- Erzeugungsteil (50) eine Vielzahl von Flipflops zum Erzeugen von Signalen, welche das Auswahlsignal aus dem Steuerblock (71) um eine vorbestimmte Anzahl von Taktimpulsen verzögern, und zum Eingeben der erzeugten Signale in den Berechnungsteil (40) und den Speicherteil (60) umfasst.
5. Matrizenrechner nach wenigstens einem der vorstehenden Ansprüche, dadurch gekennzeichnet, dass der Speicherteil (60) eine Vielzahl von Registern zum sequentiellen Speichern der Ausgabe aus dem Berechnungsteil (40) umfasst.
DE10204647A 2001-02-05 2002-02-05 Matrizenrechner des Zeitteilungstyps Withdrawn DE10204647A1 (de)

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR10-2001-0005334A KR100416250B1 (ko) 2001-02-05 2001-02-05 시분할 방식의 행렬연산기

Publications (1)

Publication Number Publication Date
DE10204647A1 true DE10204647A1 (de) 2002-09-26

Family

ID=19705325

Family Applications (1)

Application Number Title Priority Date Filing Date
DE10204647A Withdrawn DE10204647A1 (de) 2001-02-05 2002-02-05 Matrizenrechner des Zeitteilungstyps

Country Status (6)

Country Link
US (1) US6965909B2 (de)
JP (1) JP2002328915A (de)
KR (1) KR100416250B1 (de)
CN (1) CN1198206C (de)
DE (1) DE10204647A1 (de)
GB (1) GB2377292B (de)

Families Citing this family (11)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP1792252A1 (de) * 2004-09-22 2007-06-06 Nokia Corporation Verfahren und vorrichtung zum erzeugen von pseudozufallszahlen
US7441599B2 (en) 2005-11-18 2008-10-28 Chevron U.S.A. Inc. Controlling the pressure within an annular volume of a wellbore
GB0618921D0 (en) * 2006-09-26 2006-11-08 Trw Ltd Matrix multiplication
CN100449522C (zh) * 2007-07-12 2009-01-07 浙江大学 基于多fpga的矩阵乘法并行计算系统
CN100465876C (zh) * 2007-07-12 2009-03-04 浙江大学 基于单fpga的矩阵乘法器装置
US7656607B1 (en) 2008-10-21 2010-02-02 Western Digital Technologies, Inc. Disk drive comprising a servo accelerator employing a dual state variable memory
US7697233B1 (en) 2008-10-21 2010-04-13 Western Digital Technologies, Inc. Disk drive comprising a servo accelerator implementing state space equations for a plurality of task objects
JP5840994B2 (ja) * 2012-03-27 2016-01-06 富士通株式会社 行列演算装置
US9558156B1 (en) * 2015-11-24 2017-01-31 International Business Machines Corporation Sparse matrix multiplication using a single field programmable gate array module
US10169298B1 (en) * 2017-05-11 2019-01-01 NovuMind Limited Native tensor processor, using outer product unit
KR102356708B1 (ko) * 2017-09-28 2022-01-27 삼성전자주식회사 컨볼루션 연산을 수행하는 연산 장치 및 연산 방법

Family Cites Families (15)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPS5058630U (de) * 1973-09-27 1975-05-31
JPS51141552A (en) * 1975-05-31 1976-12-06 Toshiba Corp Multi-dimension parallel processor
JPH0738217B2 (ja) * 1985-04-18 1995-04-26 ファナック株式会社 空間積和演算装置
JPS61296473A (ja) * 1985-06-25 1986-12-27 Mitsubishi Electric Corp 行列演算回路
JPH0277967A (ja) * 1988-09-14 1990-03-19 Matsushita Electric Ind Co Ltd マトリックス乗算器
JPH0298777A (ja) * 1988-10-05 1990-04-11 Nec Corp 並列積和演算回路及びベクトル行列積演算方法
US5038312A (en) * 1988-11-14 1991-08-06 Nec Corporation Data processing system capable of performing vector/matrix processing and arithmetic processing unit incorporated therein
US5021987A (en) 1989-08-31 1991-06-04 General Electric Company Chain-serial matrix multipliers
JPH03167664A (ja) * 1989-11-28 1991-07-19 Nec Corp マトリクス演算回路
JP2945487B2 (ja) * 1990-12-26 1999-09-06 株式会社日立製作所 行列乗算器
US5206822A (en) * 1991-11-15 1993-04-27 Regents Of The University Of California Method and apparatus for optimized processing of sparse matrices
JPH05266060A (ja) * 1992-03-19 1993-10-15 Fujitsu Ltd マトリクス演算回路
US5311459A (en) * 1992-09-17 1994-05-10 Eastman Kodak Company Selectively configurable integrated circuit device for performing multiple digital signal processing functions
US5867414A (en) * 1994-08-17 1999-02-02 Industrial Technology Research Institute Compact pipelined matrix multiplier utilizing encoding and shifting circuit configurations
JP3652018B2 (ja) * 1996-07-22 2005-05-25 シャープ株式会社 行列演算装置

Also Published As

Publication number Publication date
GB2377292A (en) 2003-01-08
US6965909B2 (en) 2005-11-15
GB2377292B (en) 2003-06-25
CN1369777A (zh) 2002-09-18
KR20020065017A (ko) 2002-08-13
US20020138536A1 (en) 2002-09-26
KR100416250B1 (ko) 2004-01-24
CN1198206C (zh) 2005-04-20
JP2002328915A (ja) 2002-11-15
GB0202641D0 (en) 2002-03-20

Similar Documents

Publication Publication Date Title
DE3854321T2 (de) Populationszählung in Rechnersystemen.
DE3485792T2 (de) Digitale signalverarbeitungseinrichtungen.
DE3789116T2 (de) Prozessor zur zweidimensionalen diskreten cosinustransformation.
DE69230897T2 (de) Diskreter/invers-diskreter Cosinus-Transformationsprozessor und Datenverarbeitungsverfahren
DE69435034T2 (de) Verfahren ind vorrichtung zur durchfuehrung einer schnellen hadamard transform
DE10045568A1 (de) Ereignisgestütztes Halbleiterprüfsystem
DE2913327C2 (de) Matrix-Multiplizierer
DE3927009A1 (de) Addierschaltung
DE69329962T2 (de) System und Verfahren für die diskrete Cosinus-Transformation und für die inverse diskrete Cosinus-Transformation mit einfacher Struktur und mit hoher Betriebsgeschwindigkeit
DE10204647A1 (de) Matrizenrechner des Zeitteilungstyps
DE3901995A1 (de) Parallelmultiplizierer
DE19680782C2 (de) Hochgeschwindigkeits- Mustergenerierungsverfahren und unter Verwendung dieses Verfahrens arbeitender Hochgeschwindigkeits-Mustergenerator
DE4444304C2 (de) Verfahren zum Erzeugen eines zusammengesetzten Videobildes
DE4215094C2 (de) Bildverarbeitungsverfahren und -vorrichtung
DE69501581T2 (de) Verfahren zum Erzeugen eines Fehlerkorrekturparameters in Verbindung mit der Verwendung von modularen Operationen nach der Montgomery-Methode
DE3854608T2 (de) Vektorrechnerschaltung, welche schnell eine Berechnung auf drei Eingangsvektoren ausführen kann.
DE4345029A1 (de) Schaltkreis für diskrete Kosinustransformation
DE10357661A1 (de) Modularer Montgomery-Multiplizierer und zugehöriges Multiplikationsverfahren
DE2730918A1 (de) Anordnung zum multiplizieren von binaerzahlen
DE69022871T2 (de) Vektorverarbeitungsvorrichtung, die imstande ist, iterative Hochgeschwindigkeitsoperationen zu verrichten.
DE2554562C3 (de) Nichtrekursives Digitalfilter mit herabgesetzter Ausgangsabtastfrequenz
DE3909713C2 (de)
DE68922775T2 (de) Verfahren und Einrichtung, um in einer Echtzeit die zweidimensionale diskrete Kosinustransformation zu erhalten.
DE69619364T2 (de) Verfahren und vorrichtung zur erzeugung von verschiedenen wellenformen bei der synthesierung von musiktonen
DE60312810T2 (de) Vorrichtung und Verfahren zur Basiskonvertierung in endliche Körper und einen Multiplizierer

Legal Events

Date Code Title Description
OP8 Request for examination as to paragraph 44 patent law
8139 Disposal/non-payment of the annual fee