DE10204647A1 - Matrizenrechner des Zeitteilungstyps - Google Patents
Matrizenrechner des ZeitteilungstypsInfo
- 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
Links
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/52—Multiplying; Dividing
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F17/00—Digital computing or data processing equipment or methods, specially adapted for specific functions
- G06F17/10—Complex mathematical operations
- G06F17/16—Matrix 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
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.
10
1. Block
20
2. Block
30
3. Block
70
Elementauswahlteil
40
Berechnungsteil
60
Speicherteil
50
Steuersignal-Erzeugungsteil
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.
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.
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).
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.
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)
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)
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 | シャープ株式会社 | 行列演算装置 |
-
2001
- 2001-02-05 KR KR10-2001-0005334A patent/KR100416250B1/ko not_active IP Right Cessation
-
2002
- 2002-02-01 US US10/060,232 patent/US6965909B2/en not_active Expired - Fee Related
- 2002-02-01 JP JP2002025474A patent/JP2002328915A/ja active Pending
- 2002-02-05 GB GB0202641A patent/GB2377292B/en not_active Expired - Fee Related
- 2002-02-05 DE DE10204647A patent/DE10204647A1/de not_active Withdrawn
- 2002-02-05 CN CNB021035253A patent/CN1198206C/zh not_active Expired - Fee Related
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 |