DE4036455C1 - - Google Patents

Info

Publication number
DE4036455C1
DE4036455C1 DE4036455A DE4036455A DE4036455C1 DE 4036455 C1 DE4036455 C1 DE 4036455C1 DE 4036455 A DE4036455 A DE 4036455A DE 4036455 A DE4036455 A DE 4036455A DE 4036455 C1 DE4036455 C1 DE 4036455C1
Authority
DE
Germany
Prior art keywords
matrix
circuit arrangement
multiplier
adder
memory
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Expired - Fee Related
Application number
DE4036455A
Other languages
English (en)
Inventor
Joerg Dipl.-Ing. Beichter
Ulrich Dr.Rer.Nat. 8000 Muenchen De Ramacher
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.)
Siemens AG
Original Assignee
Siemens AG
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 Siemens AG filed Critical Siemens AG
Priority to DE4036455A priority Critical patent/DE4036455C1/de
Priority to US08/050,103 priority patent/US5422836A/en
Priority to PCT/DE1991/000858 priority patent/WO1992009040A1/de
Priority to EP91918713A priority patent/EP0557314A1/de
Priority to JP3517639A priority patent/JPH06502265A/ja
Application granted granted Critical
Publication of DE4036455C1 publication Critical patent/DE4036455C1/de
Anticipated expiration legal-status Critical
Expired - Fee Related legal-status Critical Current

Links

Classifications

    • 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

Description

Die Erfindung betrifft eine Schaltungsanordnung zur Berechnung von Matrixoperationen, wie sie in der Signalverarbeitung, speziell im Zusammenhang mit neuronalen Netzen, immer wieder vorkommen. Weil sich die zur Berechnung neuronaler Netze erforderlichen Rechenoperationen auf eine überschaubare Anzahl elementarer Matrixoperationen zurückführen lassen, ist es im Hinblick auf die erforderliche hohe Rechengeschwindigkeit bei der Ausführung dieser Operationen sinnvoll, solche Rechenoperationen nicht mit Hilfe von Software auszuführen, sondern in Hardware zu implementieren.
Ein der Erfindung am nächsten liegender Stand der Technik wird in der Veröffentlichung von U. Ramacher, "Design of a first Generation Neurocomputer", VLSI Design of Neural Networks, edited by U. Ramacher, U. Rückert, Kluwer Academic Publishers, Nov. 1990, wiedergegeben. In dieser Veröffentlichung wird eine Schaltungsanordnung beschrieben, welche aus einer systolischen Anordnung von Multiplizierern und Addierern aufgebaut ist. Diese systolische Anordnung ermöglicht das Berechnen von Matrixprodukten, wobei die zu multiplizierenden Matrizen in Blöcke der Größe 4×4 zerlegt werden, und wobei mit Hilfe der systolischen Anordnung jeweils Submatrizen dieser Größe multipliziert werden können. Die mit dieser Schaltungsanordnung ausführbaren Rechenoperationen sind für die Berechnung bestimmter neuronaler Netztypen, wie z. B. mehrlagiger rückgekoppelter Perceptronnetze geeignet.
Nachteile dieser Schaltungsanordnung, wie sie in der Veröffentlichung von U. Ramacher 1990 beschrieben ist, sind vor allem darin zu sehen, daß
  • - die Transposition, Addition und Subtraktion von Matrizen nicht unterstützt wird,
  • - Ergebnismatrizen nicht quadriert oder mit einem Skalar multipliziert werden können und daß
  • - die Berechnung von Zeilen- bzw. Spaltensummen bzw. die Suche extremaler Matrixelemente von dieser Schaltungsanordnung nicht unterstützt werden.
Ferner findet bei dieser Schaltungsanordnung keine Überwachung des Wertebereichs der Matrixkoeffizienten statt, und die Wertebereiche der Matrixelemente werden bei eingetretenem Überlauf nicht begrenzt.
Die der Erfindung zugrundeliegende Aufgabe besteht darin, eine Schaltungsanordnung anzugeben, mit welcher die beschriebenen Nachteile des Standes der Technik überwunden werden, und welche die Berechnung von Matrixprodukten sowie die Multiplikation von Matrixprodukten mit Skalaren, als auch die Quadrierung von Matrixprodukten, die Summen und Differenzbildung von Matrizen, die Multiplikation von Matrixsummen bzw. Matrixdifferenzen mit Skalaren, die Betragsbildung von Matrixsummen bzw. Matrixdifferenzen, die Quadrierung von Matrixsummen und Differenzen, die Transposition von Matrizen und Matrixprodukten, die Berechnung von Zeilen- bzw. Spaltensummen von Matrizen sowie die Suche extremaler, d. h. minimaler bzw. maximaler Matrixelemente unterstützt. Diese Aufgabe wird durch eine Schaltungsanordnung zur Berechnung von Matrixoperationen mit Merkmalen gemäß Anspruch 1 gelöst.
In einer Weiterbildung der erfindungsgemäßen Schaltungsanordnung ist ebenfalls eine systolische Anordnung von Multiplizierern und Addierern vorgesehen. Im Gegensatz zu der aus dem Stand der Technik bekannten Schaltungsanordnung ist in der erfindungsgemäßen Schaltungsanordnung dieser systolischen Anordnung aus Multiplizierern und Addierern ein rekursiver Akkumulator nachgeschaltet. Mit Hilfe dieses rekursiven Akkumulators ist die Durchführung einer wesentlich umfassenderen Klasse von Rechenoperationen möglich. Mit der erfindungsgemäßen Schaltungsanordnung ist es insbesondere möglich, Matrixprodukte mit Skalaren zu multiplizieren, Matrizen oder Matrixprodukte zu quadrieren, Summen oder Differenzen von Matrizen zu bilden und mit Skalaren zu multiplizieren, den Absolutbetrag von Matrixsummen bzw. Matrixdifferenzen und deren Quadrate zu berechnen und Matrizen zu transponieren. Darüber hinaus ermöglicht die erfindungsgemäße Schaltungsanordnung die Berechnung von Zeilen bzw. Spaltensummen von Matrizen bzw. Matrixprodukten bzw. Summen oder Differenzen von Matrizen. Schließlich ermöglicht diese Schaltungsanordnung die Suche nach maximalen bzw. minimalen Matrixelementen in zuvor berechneten Matrizen.
Weiterbildungen der Erfindung ergeben sich aus den Unteransprüchen.
Im folgenden wird die Erfindung anhand von Figuren und anhand eines bevorzugten Ausführungsbeispiels beschrieben.
Fig. 1 zeigt einen Signalflußplan einer Schaltungsanordnung zur Berechnung von Matrixoperationen.
Fig. 2 zeigt eine vorzugsweise Realisierung einer Teilschaltung der Schaltung aus Fig. 1, welche in Fig. 1 als Matrixmultiplizierer bezeichnet ist.
Die Fig. 4, 5, 6 und 7 zeigen Signalflußpläne zur Ansteuerung der Speichereinheiten B1, B2, B3 und B4.
Fig. 3 zeigt eine bevorzugte Realisierung einer Teilschaltung der Schaltungsanordnung aus Fig. 1, welche in Fig. 1 als rekursiver Akkumulator bezeichnet ist.
Wie in Fig. 1 dargestellt, besteht die erfindungsgemäße Schaltungsanordnung aus zwei Teilschaltungen, welche als Matrixmultiplizierer MM bzw. als rekursiver Akkumulator AA bezeichnet sind. Die Gesamtschaltung hat zwei Eingänge, welche mit in1 bzw. in3 bezeichnet sind, einen Ausgang welcher mit out3 bezeichnet ist und eine bidirektionale Schnittstelle, welche mit inout2 bezeichnet ist. Die bidirektionale Schnittstelle kann mit Hilfe des Signals Port2c gesteuert werden. Die Koeffizienten zwei miteinander zu multiplizierender Matrizen werden über die Schnittstellen in1 bzw. inout2 und die damit verbundenen Speicher B1 bzw. B2 einer systolischen Anordnung aus vier Multiplizierern und vier Addierern zugeführt. Die Eingangsdaten der Multiplizierer der systolischen Anordnung werden dabei mit Hilfe des Schalters S1, welcher über das Signal SEN1 gesteuert wird, ausgewählt. Die Addiererkette der systolischen Anordnung ist mit dem Ausgang eines EXOR-Gatters verbunden, dessen erster Eingang über den Schalter S2, welcher mit Hilfe des Signals SEN2 gesteuert wird, mit dem Speicher B2 verbunden ist. Die anderen Eingänge der Multiplizierer sind mit dem Speicher B1 verbunden. Dieser Speicher ist eine Zusammenfassung von vier unabhängigen Speichern, welche jeweils zweimal vier Worte umfassen. Zur Zwischenspeicherung von Daten und Rechenergebnissen sind in der systolischen Anordnung sowie in der Gesamtschaltung überall Latches vorgesehen. Diese tragen keine rechnerischen Funktionen, sondern ermöglichen lediglich den synchronen Ablauf der Gesamtschaltung, und werden zur Realisierung algorithmisch bedingter Zeitverzögerungen benötigt. Am Ende der Addiererkette der systolischen Anordnung befindet sich ein finaler Addierer Fin1, welcher die Überträge der mit Add bezeichneten Carry-Save-Addierer zum Carry-Select-Format zusammenfaßt. Eine bevorzugte Ausführungsform der Multiplizierer innerhalb der systolischen Anordnung ist in dem Aufsatz von U. Ramacher, 1990, beschrieben.
An den in Fig. 1 abgebildeten Matrixmultiplizierer, welcher in Fig. 2 näher beschrieben ist, schließt sich in der Gesamtschaltung (siehe Fig. 1) ein rekursiver Akkumulator an, welcher in Fig. 3 abgebildet ist. Am Eingang dieses rekursiven Akkumulators befindet sich ein Multiplizierer AM, dem ein Addierer AA nachgeschaltet ist. Ein Eingang dieses Multiplizierers ist mit dem Ausgang des finalen Addierers des Matrixmultiplizierers verbunden. Der zweite Eingang des Multiplizierers kann je nach Stellung des Schalters S3, welcher über das Signal SEN3 gesteuert wird, mit dem Ausgang des Speichers B4 oder mit dem Ausgang des finalen Addierers verbunden werden oder mit dem konstanten Wert 1 belegt werden. Der zweite Eingang des diesem Multiplizierer nachgeschalteten Addierers AA ist mit dem Ausgang eines zweiten EXOR-Gatters verbunden. Ein Eingang dieses zweiten EXOR-Gatters ist über den Schalter S4, welcher über das Signal SEN4 gesteuert wird, mit dem Signal LOOP verbunden. Dieses Signal LOOP ist je nach Stellung des Schalters S6, welcher über das Signal SEN6 gesteuert wird, mit dem Signal des Eingangs in3 oder mit dem Ausgang des Speichers B3 identisch. Letzteres ist in Fig. 3 auch als LOC bezeichnet. Der Ausgang des Addierers AA ist über den Schalter S51, welcher über das Signal SEN51 gesteuert wird, mit einem zweiten finalen Addierer Fin2 verbunden. Diesem finalen Addierer Fin2 ist ein Komparator Comp parallelgeschaltet, welcher den Ausgang des Addierers AA mit Null vergleicht und damit als Vorzeichenentscheider wirkt. Dieses Vorzeichensignal bestimmt zusammen mit dem Steuersignal SEN52 die Stellung des Schalters S52, welcher je nach Schalterstellung das mit CHAIN bezeichnete Ausgangssignal des finalen Addierers Fin2 oder das mit B3 bezeichnete über drei Latches verzögerte Schleifensignal mit einem durch das Signal ShiftEn gesteuerte Shifter verbindet. Der Ausgang des Shifters ist mit einer Überlaufkontrollschaltung Overflow verbunden, deren Ausgang mit der Speichereinheit B3 verbunden ist.
Der Signalpfad über den Addierer AA, den finalen Addierer Fin2 bzw. den Comparator Comp, den Shifter und die Überlaufkontrollschaltung sowie über die Speichereinheit B3 und das EXOR-Gatter, dessen Ausgang den zweiten Eingang des Addierers AA bildet, stellt eine rekursive Schleife dar, mit welcher die gegenüber dem Stand der Technik neuartigen Rechenoperationen durchgeführt werden können.
Im Gegensatz zu der Schaltungsanordnung, welche in dem Aufsatz von U. Ramacher, 1990, beschrieben ist, ermöglicht die erfindungsgemäße Schaltungsanordnung neben der Matrix-Matrixmultiplikation nun auch die Matrixaddition und den komponentenweisen Min/Max-Vergleich. Die Eingangsmatrizen, zerlegt in 4×4 Submatrizen, werden lokal transponiert und dann addiert oder multipliziert. Die Komponenten der Ergebnismatrix können wahlweise quadriert oder mit einem Skalar multipliziert werden. Auf die hieraus entstehenden 4×4 Submatrizen kann entweder eine globale Akkumulation oder ein Min/Max-Vergleich in Zeilen oder Spaltenrichtung angewendet werden.
Der Wertebereich der 16bit-Gewichtswerte wird auf Überlauf hin überwacht, und bei eingetretenem Überlauf wird der Wert automatisch begrenzt. Mit einer speziellen Schiebeeinrichtung kann der Wertebereich der Gewichte gezielt verändert, z. B. schrittweise halbiert bzw. verdoppelt werden, um so einen Überlauf zu vermeiden und die 16 bit Wortbreite des Gewichtsspeichers effektiver zu nutzen.
Der Entwicklung der erfindungsgemäßen Schaltungsanordnung zur Berechnung von Matrixoperationen liegt der Gedanke zugrunde, die gesamte Rechenarbeit auf eine vorgegebene Anzahl von elementaren Schaltungsanordnungen zu verteilen und die zu multiplizierenden bzw. zu addierenden großen Matrizen in 4×4 Submatrizen zu partitionieren. Jede elementare Schaltungsanordnung bearbeitet so nur einen bestimmten Zeilen- bzw. Spaltenbereich (Submatrizen) der in lokalen Speichern gehaltenen Matrix. Die Berechnung großer Matrizen wird aus der Bearbeitung der 4×4 Submatrizen zusammengesetzt. Bei diesem Zusammensetzen werden die Indizes der Submatrizen auf die gesamten Laufbereiche der großen Matrizen erweitert. Operationen, die aus der Berechnung von Submatrizen die Lösung für große Matrizen erzielen, sind die lokale und die globale Akkumulation sowie der lokale oder globale Min/Max-Vergleich der Komponenten.
Die erfindungsgemäße Schaltungsanordnung führt folgende einfache Rechenoperationen aus, welche, auf verschiedene Weise verknüpft, die neuronalen Algorithmen realisieren. Dabei wird der Begriff Submatrix zur Bezeichnung von 4×4 Matrixblöcken verwendet, welche aus der Partitionierung großer Matrizen entstehen.
  • 1. Multiplikation von Eingangssubmatrizen
    • 1.1 Submatrix A (in Speicher B1) multipliziert mit Submatrix B in Speicher (B2);
    • 1.2 Submatrix A (in Speicher B1) multipliziert mit der Einheitsmatrix;
  • 2. Addition/Subtraktion von Eingangssubmatrizen
    • 2.1 Submatrix B (in Speicher B2) wird addiert zur Submatrix A (in Speicher B1), zuvor multipliziert mit der Einheitsmatrix;
    • 2.2 Submatrix B (in Speicher B2) wird subtrahiert von Submatrix A (in Speicher B1), zuvor multipliziert mit der Einheitsmatrix;
    • 2.3 Submatrix B (in Speicher B2) durch Addiererkette führen, keine Addition;
  • 3. Multiplikation der Ergebnissubmatrizen aus 1.1 bis 2.2
    • 3.1 Multiplikation der Ergebnissubmatrix mit einem Koeffizienten (für jede Submatrixspalte ein eigener Koeffizient).
    • 3.2. Keine Multiplikation (Multiplikation mit 1).
    • 3.3 Multiplikation der einzelnen Submatrixkomponenten mit sich selbst (Quadrieren).
  • 4. Addition/Akkumulation von Ergebnissubmatrizen aus 3.1 bis 3.3.
    • 4.1 Addition der Ergebnissubmatrix zu der in Speichereinheit B3 gespeicherten Submatrix (lokale Akkumulation).
    • 4.2 Addition der Ergebnissubmatrix zu der zeitgleich an Eingang in3 angelegten Submatrix (verteilte Akkumulation).
  • 5. Komponentenweiser Min/Max-Vergleich für die Ergebnissubmatrix aus 3.1 bis 3.3.
    • 5.1 Min/Max-Vergleich zwischen den Ergebnissen von 3.1 bis 3.3 und der in Speichereinheit B3 gespeicherten Submatrix.
    • 5.2 Min/Max-Vergleich zwischen der Submatrix aus 3.1 bis 3.3 und einer zeitgleich am Eingang in3 angelegten Submatrix.
  • 6. Überlaufregulierung von die in Speichereinheit B3 gespeicherten Gewichte.
    • 6.1 Überlauferkennung und Wertsättigung der auf 16 Bit zu beschränkenden Gewichte.
    • 6.2 Gesteuerte, globale Umformatierung aller Gewichtssubmatrizen.
Die in der Schaltungsanordnung implementierten Rechenoperationen 1.1 bis 6.2 werden in verschiedenen Teilen der Gesamtschaltung durchgeführt und können in bestimmten Kombinationen miteinander verbunden werden, um verschiedene neuronale Algorithmen zu unterstützen.
Kombiniert werden können:
  • - Je eine Operation 1.1 bis 2.2 mit
  • - je einer Operation 3.1 bis 3.3 und
  • - je einer Operation 4.1 bis 5.2.
Die zwei Operationen 6.1 und 6.2 sind kombinierbar mit 4.1.
Im folgenden wird die Durchführung der einzelnen Rechenoperationen mit Hilfe der Schaltungsanordnung und die Steuerung der Schaltungsanordnung im einzelnen beschrieben.
Rechenoperation 1.1 Submatrix in Speicher B1 multipliziert mit Submatrix in Speicher B2
Die beiden Matrizen A und B sind in den Speichern B1 und B2 geladen. Schalter S1 steht in der Position B2, Schalter S2 in der Position 0 und das Signal S/A1 hat den Wert Null. Speicher B2 liefert mit jedem Takt über 16 Takte verteilt die Daten B(1,1), B(2,1), . . ., B(4,4), also die Matrixelemente der linken oberen 4×4 Submatrix der Matrix B. Die Steuersignale CEN1, . . ., CEN4 an den Eingangsregistern der Multiplizierer haben die Werte Null, sind also nicht aktiv, außer zu folgenden Zeitpunkten: Im Takt 1 ist CEN1 aktiv und bewirkt das Laden des Eingangsregisters des obersten Multiplizierers mit dem Matrixelement B(1,1). Im nachfolgenden Takt ist CEN2 aktiv und lädt den Eingang des zweiten Multiplizierers mit dem Matrixelement B(2,1). Im dritten und vierten Takt werden mit CEN3 und CEN4 die Eingangsregister der anderen zwei Multiplizierer geladen. Im fünften Takt ist CEN1 wieder aktiv und lädt das Matrixelement B(1,2) in den ersten Multiplizierer. Dieser Verteilungsvorgang setzt sich zyklisch fort und endet nach dem 16. Takt, wenn das Matrixelement B(4,4) durch CEN4=aktiv in den vierten Multiplizierer geladen ist.
Parallel zu diesem Vorgang hält die Speichereinheit B1 die Submatrix A(1,1), . . ., A(4,4) spaltenweise in vier getrennten Teilspeichereinheiten und liefert diese Daten über vier getrennte Zuleitungen an die Multiplizierer der systolischen Anordnung (siehe Fig. 2). Der erste Multiplizierer erhält sein erstes Matrixelement A(1,1) aus dem Speicher B1 zeitgleich mit dem Matrixelement B(1,1). In den drei nachfolgenden Takten liefert der Speicher B1 die Matrixelemente A(2,1), A(3,1) und A(4,1) über die gleiche Leitung. Zwischen dem fünften und achten Takt, wenn am Multiplizierer auch das Matrixelement B(1,2) geladen ist, wiederholt sich das Anlegen der Matrixelemente A(1,1), . . ., A(4,1). Nach 16 Takten, während also die Folge der Matrixelemente A(1,1), . . ., A(4,1) viermal an die Multiplizierer der systolischen Anordnung angelegt wurde, ist das Lesen für den ersten Multiplizierer der Kette beendet. Der zweite Multiplizierer erhält die Matrixelemente A(1,2), . . ., A(4,2) von dem Speicher B1. Mit je einer weiteren Taktverzögerung bekommen der dritte bzw. der vierte Multiplizierer die Matrixelemente A(1,3), . . ., A(4,3) bzw. A(1,4), . . .,A(4,4) aus dem Speicher B1. Insgesamt ergibt sich eine Verzögerung von drei Takten zwischen dem ersten und dem vierten Multiplizierer der Kette. Folglich erhält der letzte Multiplizierer im 19. Takt zum vierten und letzten Male den Wert des Matrixelements A(4,4).
Jeder Multiplizierer kann pro Takt eine Multiplikation zweier Matrixelemente der Matrizen A bzw. B beginnen. Eine solche Multiplikation dauert sieben Takte. Die Akkumulation der Ergebnisse wird über die Addiererkette des Matrixmultiplizierers in Fig. 2 bewerkstelligt. Im Takt 8 erhält der oberste, erste Addierer das Produkt A(1,1) · B(1,1) des ersten Multiplizierers, addiert die Null von Schalter S2 dazu und gibt das Ergebnis im folgenden Takt (Takt 9) an den nachfolgenden zweiten Addierer weiter. Dieser erhält gleichzeitig mit der Summe des ersten Addierers vom zweiten Multiplizierer das Produkt B(1,2) · A(2,1), das er zu der Summe addiert (Takt 10). In den folgenden zwei Takten kommen noch die Produkte B(1,3) · A(3,1) sowie B(1,4) · A(4,1) dazu. Im Takt 12 liegt am Ausgang des vierten letzten Addierers die Summe aus den vier Produkten der Matrixelemente der ersten Zeile der Submatrix A mit der ersten Spalte der Submatrix B vor. In weiteren Takten kommen die noch fehlenden Summen hinzu. Die gesamte Ergebnismatrix ist vollständig berechnet, wenn die Summe über die Produkte der Matrixelemente der vierten Zeile der Matrix A mit den Matrixelementen der vierten Spalte der Matrix B im 28. Takt am Ausgang der Addiererkette erscheint.
Rechenoperation 1.2 Submatrix in Speicher B1 multipliziert mit der Einheitsmatrix (keine Multiplikation)
Die Rechenoperation 1.2 läuft analog zur Rechenoperation 1.1 ab, wobei die zweite Matrix B durch die Einheitsmatrix ersetzt wird. Dazu wird der Schalter S1 zyklisch zwischen dem Wert 1 und dem Wert 0 geschaltet. In den Takten 1, 6, 11 und 16 steht S1 auf 1, in allen anderen Takten auf 0.
Rechenoperation 2.1 Submatrix in Speicher B2 addiert zu Submatrix in Speicher B1
Um die Rechenoperation 2.1 durchzuführen, wird die Rechenoperation 1.2, welche eine Multiplikation der in Speicher B1 stehenden Matrix A mit der Einheitsmatrix verwirklicht, um die Addition einer Matrix B, welche in Speicher B2 steht, erweitert. Hierbei steht der Schalter S2 in der Position B2. Das Steuersignal S/A1 hat den Wert Null. Alle anderen Schritte entsprechen denen in der Rechenoperation 1.2.
Rechenoperation 2.2 Submatrix in Speicher B2 subtrahiert von Submatrix in Speicher B1
Hier ist der Ablauf ganz analog zum Ablauf bei der Rechenoperation 2.1. Es ist lediglich eine Vorzeichenumkehr erforderlich, welche durchgeführt wird, in dem das Signal S/A1 den Wert 1 erhält. Dadurch bildet das EXOR-Gatter zusammen mit dem ihm nachgeschalteten Addierer das Zweierkomplement der in Speicher B2 stehenden Daten.
Rechenoperation 2.3 Laden der in Speicher B2 stehenden Daten in den rekursiven Akkumulator ohne Addition, also unter Umgehung der systolischen Addiererkette
Die Rechenoperation 2.3 wird analog zur Rechenoperation 2.1 durchgeführt, wobei aber anstelle einer Einheitsmatrix eine Nullmatrix eingespeist wird. Dies geschieht dadurch, daß der Schalter S1 bei sämtlichen Takten in der Position Null steht.
Rechenoperation 3.1 Multiplikation einer Ergebnissubmatrix mit einem Koeffizienten
Bei dieser Rechenoperation liefert die systolische Addiererkette die bei der Beschreibung der Rechenoperation 1.1 erwähnten Summen aus Produkten von Matrixelementen aus Zeilen der Matrix A mit Spalten der Matrix B, und zwar in der Reihenfolge, daß zuerst die Summe über Produkte von Matrixelementen der ersten Zeile der Matrix A mit Matrixelementen der ersten Spalte der Matrix B und zuletzt die Summe von Produkten aus Matrixelementen der vierten Zeile der Matrix A mit der vierten Spalte der Matrix B berechnet wird, beginnend vom 27. Takt an. Die oberen 19 Bit der Daten liegen in Carry-Save-Darstellung vor und müssen in Binärdarstellung umgewandelt werden (finaler Addierer Fin1), bevor sie dem ersten Multiplizierer AM des rekursiven Akkumulators als Eingangsdaten zugeführt werden können. Dabei entsteht ein Takt Verzögerung durch den finalen Addierer Fin1. Für die Bereitstellung der Daten an beiden Eingängen des Multiplizierers AM ergeben sich zwei weitere Takte.
Die vom finalen Addierer Fin1 kommenden Summen über Produkte von Matrixelementen treffen am Multiplizierer AM in der oben beschriebenen Reihenfolge ein und werden mit den Koeffizienten K(1), K(2), K(3) und K(4) multipliziert, welche im Speicher B4 gespeichert sind. Dabei werden der Reihe nach folgende Produkte gebildet:
K(1) · P(1,1), K(1) · P(2,1), K(1) · P(3,1), K(1) · P(4,1), K(2) · P(1,2), K(2) · P(2,2), . . ., K(4) · P(4,4).
Dabei ist das Produkt P(i, j) gleich der Summe über die Produkte der Matrixelemente in der i-ten Zeile der Matrix A mit den Matrixelementen in der k-ten Spalte der Matrix B. Der Multiplizierer benötigt sieben Takte, bei jedem Takt wird eine neue Multiplikation begonnen. Die Ergebnisse erscheinen vom 21. bis zum 37. Takt am Ausgang des Multiplizierers AM. Dabei steht der Schalter S3 stets in der Position B4.
Rechenoperation 3.2 Keine Multiplikation
Der Schalter S3 steht in der Position 1, wodurch allen Koeffizienten K(i) für i=1, . . ., 4 der Wert 1 zugewiesen wird. Der sonstige Ablauf ist identisch bei der Rechenoperation 3.1.
Rechenoperation 3.3 Quadrieren der Matrixkomponenten
Der Schalter S3 steht in der Position L2. Die von der Addiererkette kommenden Werte P(i, j) werden an beide Eingänge des Multiplizierers AM angelegt. Somit sind Multiplikanden- und Multiplikatorwort identisch. Führt man alle anderen Schritte analog zur Rechenoperation 3.1 durch, dann treten somit die Produktsummen P(i, j) an die Stelle der Koeffizienten K(i), und die Produktmatrix wird mit sich selbst multipliziert. Gemäß der Rechenoperation 1.2 kann die Produktmatrix insbesondere auch eine der ursprünglichen Matrizen sein.
Rechenoperation 4.1 Lokale Akkumulation der Matrix aus 3.1 bis 3.3
Die von der Addiererkette des Matrixmultiplizierers kommenden Produktsummen P(1,1), P(2,1), . . ., P(4,4) werden zu den im Speicher B3 abgelegten Daten S(1,1), S(2,1), . . ., S(4,4) komponentenweise addiert. Die sich ergebenden neuen Werte der S(i, j) werden anschließend wieder im Speicher B3 abgelegt (fetch-and-add).
Der Schalter S4 befindet sich dabei in der Stellung LOOP, der Schalter S51 in der Stellung ADD, der Schalter S52 in der Stellung CHAIN und der Schalter S6 in Stellung LOC. Das Steuersignal S/A2 hat hier den Wert Null, die Steuersignale ShiftEn und OflowEn (siehe Fig. 3) werden hier zunächst beide auf Null gesetzt. Die Daten S(1,1), S(2,1), . . ., S(4,4) werden in dieser Reihenfolge aus dem mit der rekursiven Schleife verbundenen Teil des Speichers B3 gelesen. Über die Schalter S6 und S4 und die EXOR-Gatter gelangen sie in den Addierer AA, der aus einer Reihe Volladdierer aufgebaut ist. Im Takt 22 wird S(1,1) zu P(1,1) addiert, im folgenden Takt S(2,1) zu P(2,1).
In dem nachgeschalteten Final-Adder Fin2 werden Carry und Summenwort zu einem einzigen Binärwert verknüpft. Der 50 bit breite finale Addierer Fin2 ist eine komplexe Schaltung mit einer hohen Durchlaufzeit, weshalb er möglichst nicht nach jeder Addierstufe, sondern nur an einer Seite implementiert wird. Die Laufzeit im finalen Addierer Fin2 beträgt zwei Taktperioden.
Die Ergebnisse, die neuen Werte S(1,1), . . ., S(4,4) gelangen über den Schalter S52 zur Shiftstufe (Shifter). Hat das Signal ShiftEn den Wert Null, so bleiben die Daten unverändert. Auch die nachgeschaltete Überlaufsteuerung hat bei OflowEn=0 keinen Einfluß auf die Daten. Sechs Takte nachdem die alten Werte der S(i, j) aus dem Speicher B3 gelesen wurden, werden die neuen Werte der S(i, j) geschrieben.
Rechenoperation 4.1.2 Lokale Akkumulation: Rücksetzen der rekursiven Schleife
Anstelle der alten Werte S(i, j) wird jeweils eine Null zu den Produktsummen P(i, j) addiert. Dabei steht der Schalter S4 auf Null. Der sonstige Ablauf ist wie bei der Rechenoperation 4.1.1.
Rechenoperation 4.2 Verteilte Akkumulation der Matrix aus 3.1 bis 3.3
Der Schalter S4 steht in der Position LOOP, der Schalter S51 in der Position ADD, der Schalter S52 in der Position CHAIN und der Schalter S6 in der Stellung GLOBIN. Anders als bei der Operation 4.1.1 werden die alten Werte der S(1,1), . . ., S(4,4) nicht aus dem Speicher B3 gelesen, sondern von dem Eingang in3 bezogen. Die Akkumulation führt über die Schalter S6 und S4 und die Addierer AA und Fin2 sowie die Schalter S51 und S52. Hinter dem Schalter S52 werden die Ergebnisse, die neuen Werte S(1,1), . . ., S(4,4), nicht über den Shifter in den Speicher B3 geschrieben, sondern direkt über den Schalter S7 an den Ausgang out3 gelegt. Hierfür sind fünf Takte Laufzeit notwendig.
Rechenoperation 5.1 Komponentenweiser Min/Max-Vergleich der Ergebnissubmatrix aus 3.1 bis 3.3 mit der im zur rekursiven Schleife gehörenden Teil des Speichers B3 gespeicherten Submatrix
Der Schalter S4 steht in der Stellung LOOP, der Schalter S6 in der Stellung LOC. Das Signal S/A2 hat den Wert 1, und das EXOR-Gatter und die nachfolgende Addierstufe AA werden zur Bildung des Zweierkomplements der über den Schalter S4 laufenden Daten eingesetzt. Der Schalter S51 steht in der Position MULT5, und die Stellung des Schalters S52 ergibt sich aus dem Ergebnis des Komparators Comp, welcher prüft, ob das Ergebnis des Addierers AA größer oder gleich Null ist. Der Addierer bestimmt die Differenz aus dem vom Multiplizierer AM stammenden Wert und dem Wert des Speichers B3. Ist diese Differenz positiv, stellt der Komparator beim MAX-Vergleich den Schalter S52 in die Stellung MULT5, beim MIN-Vergleich in die Stellung ADD. Ist die berechnete Differenz dagegen negativ, dann ist der Wert aus dem Speicher B3 größer als das Produkt am Ausgang des Multiplizierers AM, und die Schalterstellungen sind vertauscht. Das über den Schalter S52 ausgewählte Ergebnis wird ohne weitere Veränderung im Speicher B3 gespeichert.
Rechenoperation 5.2 Komponentenweiser MIN/MAX-Vergleich der Ergebnissubmatrix aus 3.1 bis 3.3 mit der zeitgleich am Eingang in3 angelegten Submatrix
Im Unterschied zur Rechenoperation 5.1 steht hier der Schalter S6 in der Stellung GLOBIN und der Schalter S7 in der Position GLOBOUT. Alle weiteren Schritte sind analog zur Rechenoperation 5.1.
Rechenoperation 6.1 Überlauferkennung und Wertsättigung für die im Speicher B3 gespeicherten 16 Bit Daten (Gewichte)
Die Wortbreite der Gewichte in neuronalen Netzen ist gewöhnlich auf 16 Bit begrenzt. Mit der Überlauferkennung und Sättigung wird ein Über-/Unterschreiten der darstellbaren Grenzwerte beim Lernvorgang unterdrückt. Die vom Schalter S52 kommenden Daten werden in der Overflow-Einheit auf Überlauf geprüft und ggf. gesättigt, sofern vom Controller OflowEn=1 gesetzt ist (16 Bit Wortbreite). Bei OflowEn=0 wird keine Sättigung vorgenommen, der Datenpfad hat 50 Bitbreite. Mit jedem erkannten Überlauf (OflowStat=1) wird ein Überlaufzähler inkrementiert, der vom Controller lesbar ist.
Rechenoperation 6.2 Umformatierung der Gewichtsmatrizen
Bevor Daten in den zur rekursiven Schleife gehörigen Teil des Speichers B3 geschrieben werden, können sie um eine Stelle nach rechts oder nach links geschoben (Shift) werden. Der darstellbare Zahlenbereich kann während des Lernvorgangs somit dynamisch angepaßt werden. Die Ansteuerung über das Signal ShiftEn geschieht vom Controller aus.
Damit sind die mit Hilfe der Schaltungsanordnung ausführbaren Matrixoperationen beschrieben. Im folgenden sollen die Operationen in den Speichereinheiten B1, . . ., B4 ausführlich beschrieben werden. Diese weiteren Operationen in den Speichereinheiten B1, . . ., B4 werden ausgeführt, um einen einfachen und effektiven Datentransport zwischen der Schaltungsanordnung und ihrer Umgebung zu ermöglichen (z. B. gleichzeitiges Laden, Rechnen und Entladen). Ferner werden die Matrixkomponenten für die Verarbeitung in der Schaltungsanordnung umsortiert und je nach Wunsch transponiert. Die Ansteuerung der einzelnen Speichereinheiten erfolgt auf die in den Signalflußplänen der Fig. 4 bis 7 dargestellte Art und Weise.
  • 7. Operationen im Matrixspeicher B1
      • 7.1.1 Laden, nichttransponiert
      • 7.1.2 Laden, transponiert
      • 7.2.1 Wechseln der Speicherhälften
      • 7.2.2 Kein Wechsel der Speicherhälften
    • 7.3 Lesen der Daten
  • 8. Operationen im Matrixspeicher B2
    • 8.1 Laden der Daten
      • 8.2.1 Wechsel der Speicherhälften
      • 8.2.2 Kein Wechsel der Speicherhälften
      • 8.3.1 Lesen, nicht transponiert
      • 8.3.2 Lesen, transponiert
  • 9. Operationen im Matrixspeicher B3
    • 9.1 Fetch-and-Add, in der zur Schleife gehörigen Hälfte des Speichers B3
      • 9.2.1 Wechsel der Speicherhälften
      • 9.2.2 Kein Wechsel der Speicherhälften
      • 9.3.1 Laden/Lesen, in der zur Schnittstelle (Port) gehörigen Speicherhälfte, nicht transponiert
      • 9.3.2 Laden/Lesen, in der zur Schnittstelle gehörigen Speicherhälfte, transponiert.
  • 10. Operationen im Koeffizientenpuffer B4
    • 10.1 Laden der Daten
    • 10.2 Lesen der Daten
    • 10.3 Wechsel der Speicherhälften
  • 11. Steuerung der bidirektionalen Schnittstelle inout2.
    • 11.1 Schnittstelle auf Eingang geschaltet
    • 11.2 Schnittstelle auf Ausgabe geschaltet
In Verbindung mit den meisten Rechenoperationen wird die Schnittstelle inout2 als Eingang benutzt (11.1) und nur für kurze, genau spezifizierte Schritte als Ausgang (11.2).
Im folgenden werden die Operationen in den Speichereinheiten ausführlich beschrieben. Der Kürze halber werden bei dieser Beschreibung die Begriffe portseitig und loopseitig verwendet. Unter portseitig soll eine der Schnittstelle zugehörige Speicherhälfte, unter loopseitig eine der rekursiven Schleife zugewandte Speicherhälfte verstanden werden.
Die Daten A(i, j) werden über die Schnittstelle in1 von außen zugeführt und gelangen in den Speicher B1. Ihre Reihenfolge ist A(1,1), A(1,2), . . ., A(4,4). Der Speicher B1 nimmt diese 16 Matrixelemente so auf, daß die Matrixelemente A(1,1), . . ., A(4,1), also die erste Spalte der 4×4 Submatrix von A im obersten Teil des Speichers stehen und später dem Multiplizierer 1 zugeordnet werden können. Die Matrixelemente A(1,2), . . . A(4,2), also die Elemente der zweiten Spalte, werden in der zweiten Speicherzeile für den Multiplizierer 2 abgelegt, usw. Für die Ansteuerung der Speicherzellen werden die Wortleitungssignale systolisch von Speicherwort zu Speicherwort mit einem eingebauten Sequencer weitergegeben, so daß je Takt nur ein Speicherwort beschrieben wird. Der Sequencer wird über einen Triggerpuls B1PORN vom Controller angestoßen. Ferner gilt B1PORT=0.
7.1.2 Laden, transponiert
Im Unterschied zu 7.1.1 werden die Daten so in B1 abgelegt, daß in der ersten Speicherzeile die Daten A(1,1), . . ., A(1,4) gespeichert werden, in der zweiten Speicherzeile die Daten A(2,1), . . ., A(2,4), usw. Für die veränderte Reihenfolge wird ein eigener Sequencer notwendig, der über B1PORT angestoßen wird (B1PORN=0).
7.2.1 Wechsel der Speicherhälften
Die Zuordnungen der beiden Hälften der Speichereinheit B1, die eine Hälfte zum Eingang in 1 (Laden), die andere Hälfte zur Multiplizierkette (Lesen), werden getauscht. Der Controller initialisiert über das Steuerbit B1XCH den Wechsel der Speicherhälften. Das Signal B1XCH wird in der Speichereinheit B1 von Speicherzeile zu Speicherzeile mit einem Takt Verzögerung weitergegeben, um die Laufzeit in der Addiererkette auszugleichen. Ein Wechsel der Zuordnung der Speicherhälften ist nur vor einer Submatrixoperation möglich, somit frühestens alle 16 Takte.
7.2.2 Kein Wechsel der Pufferhälften
Die in B1 gespeicherte Submatrix wird mehrmals hintereinander für Berechnungen benötigt (Lernvorgang). Ein Überschreiben dieser Daten wird verhindert, wenn der Wechsel der Speicherhälften entfällt. Die multipliziererseitig gespeicherten Daten bleiben erhalten bis zum nächsten Wechsel der Speicherhälften. B1XCH ändert seinen Wert nicht.
7.3 Lesen der Daten
Das Lesen geschieht über einen Sequencer, der über B1MULN angestoßen wird. Für den Ablauf siehe hierzu 1.1 bis 2.3.
8.1 Laden von B2
B2 besitzt 16 Speicherzellen. Die Daten B(i, j) werden der Reihe nach im Speicher abgelegt. Die Ansteuerung der Speicherfelder erfolgt durch einen Sequencer, Anstoß erfolgt über B2PORN (s. 7.1.1).
8.2.1 Wechsel der Speicherhälften
Der Wechsel der Speicherhälften wird vom Controller über B2XCH gesteuert. Der Wechsel erfaßt alle Pufferhälften zur gleichen Zeit. Ein Wechsel ist zu jeder neuen Submatrixoperation, frühestens alle 16 Takte möglich.
8.2.1 Kein Wechsel der Pufferhälften
Durch Beibehalten des Wertes für B2XCH werden die Pufferhälften nicht gewechselt.
8.3.1 Lesen, nicht transponiert
Parallel zum Schreiben werden in der anderen Speicherhälfte die Speicherzellen in gleicher Reihenfolge gelesen:
Triggerpuls B2MULN.
8.3.2 Lesen, transponiert
Die Reihenfolge der gelesenen Daten entspricht der transponierten Matrix: Triggerpuls B2MULT.
9.1 Fetch-and-add in B3, loopseitig
Für den Fetch-and-add-Betrieb werden die in 9.1 zu schreibenden Daten sechs Takte zuvor aus den gleichen Speicherzellen des Speichers B3 gelesen, in denen sie später wieder abgelegt werden (Trigger: B3LOOP).
9.2.1 Wechsel der Pufferhälften
Der Wechsel wird über B3XCH vom Controller gesteuert (s. 8.2.1).
9.2.2 Kein Wechsel der Pufferhälften
Beibehalten des Werts von B3XCH (s. auch 8.2.2).
9.3.1 Lesen, portseitig, nicht transponiert
Die in B3 (portseitig) befindlichen Daten werden in der Reihenfolge S(1,1), S(2,1), . . ., S(4,4) gelesen und durch gleichzeitig am Eingang liegende Werte ersetzt. Der Sequencer wird durch B3PORN getriggert.
9.3.2 Lesen, portseitig, transponiert
Die in B3 (portseitig) befindlichen Daten werden in der Reihenfolge S(1,1), S(1,2), . . ., S(4,4) gelesen und durch gleichzeitig am Eingang von B3 liegende Werte ersetzt. Der Sequencer wird durch B3PORT getriggert.
10.1 Laden der Daten in B4
Die Daten in B4 (Koeffizienten) werden über die Schnittstelle in3 (OUT3) der Schaltungsanordnung zugeführt. Für das Laden sind vier Takte notwendig. Der Triggerpuls für den Sequencer ist B4PORN.
10.2 Lesen der Daten
Der Triggerpuls für das Lesen ist B4MULN.
10.3 Wechsel der Speicherhälften
Zur Speicherung eines zweiten Satzes von Koeffizienten sind vier weitere Speicherfelder vorgesehen. Ansteuerung erfolgt über B4XCH.
11.1 Schnittstelle INOUT2 auf Eingang geschaltet
Die Eingangstreiber der Schnittstelle INOUT2 sind immer aktiv.
11.2 Schnittstelle INOUT2 auf Ausgabe geschaltet
Die Umschaltung der Schnittstelle INOUT2 auf Ausgangsbetrieb erfolgt über ein externes Steuerbit PORT2C, um externe Treiberkonflikte zu vermeiden.
Bei der beschriebenen Schaltungsanordnung handelt es sich um einen Schaltungsmodul, welcher mit gleichartigen Schaltungsmoduln zusammengeschlossen, einen Coprozessor zur Durchführung von Matrixoperationen ergibt. Dieser Coprozessor wird von einer Controllerschaltung mit den nötigen Steuersignalen versorgt.
Der interne Aufbau des Controllers und auch der Speichereinheiten ist in der Diplomarbeit von U. Hachmann, "Controller Architektur für einen Neuroemulator in Form eines systolischen Arrays", Lehrstuhl für Bauelemente der Elektrotechnik, Universität Dortmund, Dortmund 1990, beschrieben.
In dieser Patentanmeldung verwendete, allgemein übliche Fachbegriffe zur Kennzeichnung digitaler Schaltungen sind z. B. in Kai Hwang, "Computer Arithmetic: Principles, Architecture and Design", John Wiley, 1979, erklärt.

Claims (8)

1. Schaltungsanordnung zur Berechnung von Matrixoperationen, welche einen Matrixmultiplizierer (MM) und einen diesem Matrixmultiplizierer nachgeschalteten rekursiven Akkumulator (RA) zur Berechnung von Transpositionen, Zeilensummen und Spaltensummen und zur Suche extremaler Matrixelemente umfaßt.
2. Schaltungsanordnung zur Berechnung von Transpositionen, Zeilensummen und Spaltensummen von Matrizen und zur Suche extremaler Matrixelemente, welche einen Multiplizierer (AM) und einen diesem Multiplizierer nachgeschalteten Addierer (AA), welcher den Ausgang des Multiplizierers mit einem Ausgang dieser Schaltungsanordnung in rekursiver Weise verknüpft, umfaßt.
3. Schaltungsanordnung nach Anspruch 1, wobei der Akkumulator einen Multiplizierer und einen diesem Multiplizierer nachgeschalteten Addierer umfaßt, welcher den Ausgang des Multiplizierers mit einem Ausgang dieser Schaltungsanordnung in rekursiver Weise verknüpft.
4. Schaltungsanordnung nach einem der Ansprüche 1 oder 3, dadurch gekennzeichnet, daß der Matrixmultiplizierer zwei Dual-Port-Speichereinheiten (B1 bzw. B2) und eine diesen Speichereinheiten nachgeschaltete systolische Kette aus Multiplizierern (Mul) und Addierern (Add) umfaßt.
5. Schaltungsanordnung nach Anspruch 4, dadurch gekennzeichnet, daß die Addierer (Add) der systolischen Kette vom Carry-Save-Typ sind.
6. Schaltungsanordnung nach einem der Ansprüche 1, 3, 4 oder 5, dadurch gekennzeichnet, daß der Matrixmultiplizierer eine systolische Kette aus Multiplizierern (Mul) und Addierern (Add) umfaßt, an deren Ende ein erster finaler Addierer (Fin1) vom Carry-Select-Typ vorgesehen ist.
7. Schaltungsanordnung nach einem der vorhergehenden Ansprüche, dadurch gekennzeichnet, daß der rekursive Akkumulator einen zweiten finalen Addierer (Fin2) umfaßt, welcher dem Addierer (AA) nachgeschaltet und vom Carry-Select-Typ ist.
8. Schaltungsanordnung nach einem der vorhergehenden Ansprüche, dadurch gekennzeichnet, daß der rekursive Akkumulator einen Komparator (Comp) umfaßt, welcher das Ergebnis des Addierers (AA) mit Null vergleicht.
DE4036455A 1990-11-15 1990-11-15 Expired - Fee Related DE4036455C1 (de)

Priority Applications (5)

Application Number Priority Date Filing Date Title
DE4036455A DE4036455C1 (de) 1990-11-15 1990-11-15
US08/050,103 US5422836A (en) 1990-11-15 1991-11-04 Circuit arrangement for calculating matrix operations in signal processing
PCT/DE1991/000858 WO1992009040A1 (de) 1990-11-15 1991-11-04 Schaltungsanordnung zur berechnung von matrixoperationen in der signalverarbeitung
EP91918713A EP0557314A1 (de) 1990-11-15 1991-11-04 Schaltungsanordnung zur berechnung von matrixoperationen in der signalverarbeitung
JP3517639A JPH06502265A (ja) 1990-11-15 1991-11-04 信号処理におけるマトリクス演算の計算回路装置

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
DE4036455A DE4036455C1 (de) 1990-11-15 1990-11-15

Publications (1)

Publication Number Publication Date
DE4036455C1 true DE4036455C1 (de) 1992-04-02

Family

ID=6418338

Family Applications (1)

Application Number Title Priority Date Filing Date
DE4036455A Expired - Fee Related DE4036455C1 (de) 1990-11-15 1990-11-15

Country Status (5)

Country Link
US (1) US5422836A (de)
EP (1) EP0557314A1 (de)
JP (1) JPH06502265A (de)
DE (1) DE4036455C1 (de)
WO (1) WO1992009040A1 (de)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP3726399A4 (de) * 2017-12-29 2021-02-17 Huawei Technologies Co., Ltd. Matrixmultiplizierer

Families Citing this family (13)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5311459A (en) * 1992-09-17 1994-05-10 Eastman Kodak Company Selectively configurable integrated circuit device for performing multiple digital signal processing functions
FR2757973B1 (fr) * 1996-12-27 1999-04-09 Sgs Thomson Microelectronics Processeur de traitement matriciel
KR100451147B1 (ko) * 1997-02-25 2004-11-26 엘지전자 주식회사 고속곱셈기
KR100457040B1 (ko) * 2000-06-21 2004-11-10 패러데이 테크놀로지 코퍼레이션 곱셈 누산 명령을 이용한 데이터 처리 장치 및 방법
US7216140B1 (en) * 2000-09-30 2007-05-08 Intel Corporation Efficient implementation of n-point DCT, n-point IDCT, SA-DCT and SA-IDCT algorithms
JP3940714B2 (ja) * 2003-09-25 2007-07-04 株式会社東芝 演算装置、および、暗号・復号演算装置
NZ532757A (en) * 2004-05-04 2005-07-29 Canterprise Method and apparatus for identifying a maximum subarray
FR2880446A1 (fr) * 2005-01-04 2006-07-07 France Telecom Indexation par transposition de matrice de grande dimension
US10304008B2 (en) * 2015-03-20 2019-05-28 Nec Corporation Fast distributed nonnegative matrix factorization and completion for big data analytics
CN112612521A (zh) * 2016-04-26 2021-04-06 安徽寒武纪信息科技有限公司 一种用于执行矩阵乘运算的装置和方法
CN108205700B (zh) * 2016-12-20 2021-07-30 上海寒武纪信息科技有限公司 神经网络运算装置和方法
US11105437B2 (en) * 2017-07-03 2021-08-31 Continental Automotive Systems, Inc. Combined inlet and outlet check valve seat
US10795678B2 (en) * 2018-04-21 2020-10-06 Microsoft Technology Licensing, Llc Matrix vector multiplier with a vector register file comprising a multi-port memory

Family Cites Families (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
GB226899A (en) * 1923-10-09 1925-01-08 Robert Sohner Improvements in motor ploughs
JPS5932216A (ja) * 1982-08-17 1984-02-21 Sony Corp ディジタル信号処理回路及びディジタルフィルタ
DE3735654C2 (de) * 1986-10-21 1996-05-02 Sharp Kk Elektronischer Rechner
US4815019A (en) * 1987-02-26 1989-03-21 Texas Instruments Incorporated Fast ALU equals zero circuit
KR920004772B1 (ko) * 1987-05-14 1992-06-15 후지쓰 가부시끼가이샤 순환 방정식을 고속으로 처리하는 벡터 프로세서
US4958312A (en) * 1987-11-09 1990-09-18 Lsi Logic Corporation Digital multiplier circuit and a digital multiplier-accumulator circuit which preloads and accumulates subresults
GB2226899A (en) * 1989-01-06 1990-07-11 Philips Electronic Associated An electronic circuit and signal processing arrangements using it
US5179531A (en) * 1990-04-27 1993-01-12 Pioneer Electronic Corporation Accelerated digital signal processor
EP0466997A1 (de) * 1990-07-18 1992-01-22 International Business Machines Corporation Verbesserte digitale Signal-Verarbeitungsarchitektur

Non-Patent Citations (2)

* Cited by examiner, † Cited by third party
Title
DE-Z.: Informationstechnik (it), 1989,1, S. 50-58 *
U. Ramacker: "Design of a first Generation Neurocomputer", VLSI Design of Neural Networks, Kluwer Academic Publishers, Nov. 1990 *

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP3726399A4 (de) * 2017-12-29 2021-02-17 Huawei Technologies Co., Ltd. Matrixmultiplizierer
US11334648B2 (en) 2017-12-29 2022-05-17 Huawei Technologies Co., Ltd. Matrix multiplier
US11934481B2 (en) 2017-12-29 2024-03-19 Huawei Technologies Co., Ltd. Matrix multiplier

Also Published As

Publication number Publication date
EP0557314A1 (de) 1993-09-01
JPH06502265A (ja) 1994-03-10
US5422836A (en) 1995-06-06
WO1992009040A1 (de) 1992-05-29

Similar Documents

Publication Publication Date Title
DE4036455C1 (de)
DE19835216B4 (de) Prozessor und Verfahren zur parallelen Datenverarbeitung
DE3049437C2 (de) Matrixanordnung einer Vielzahl von Verarbeitungselementen
DE3901995C2 (de)
DE3933171A1 (de) Einzelchip-prozessor fuer komplexe gleitkommazahlen
DE4403917C2 (de) Vorrichtung zum Berechnen einer Bit-Besetzungszählung
DE102019126719A1 (de) Energieeffiziente Speichersysteme und Verfahren
DE4345029C2 (de) Schaltkreis für diskrete Kosinustransformation
DE102022100920A1 (de) Compute-in-memory-akkumulator
DE2423265C3 (de) Optimierende Rechenmaschine
DE102021120080A1 (de) Compute-in-memory
DE19504089A1 (de) Pipelined SIMD-Systolic Array Prozessor und dessen Arbeitsverfahren
EP0349819B1 (de) In integrierter Schaltungstechnik ausgeführtes digitales neuronales Netz
EP0629943B1 (de) Multiplizierer für reelle und komplexe Zahlen
DE19635113A1 (de) Multiplizierer
EP1038235B1 (de) Vorrichtung zum hierarchischen verbinden einer mehrzahl von funktionseinheiten in einem prozessor
EP0424410B1 (de) Multiplizierer
DE3803183A1 (de) Verfahren zum analysieren einer physikalischen erscheinung, insbesondere nach der methode der finiten elemente
DE4026410C2 (de) Verfahren zur Matrizen-Multiplikation auf SIMD-Prozessoren
DE2508141A1 (de) Verfahren zur transformation von reellen zahlen
DE4432269C2 (de) Lernverfahren für ein selbstorganisierendes Neuronales Netzwerk sowie Vorrichtung zur Durchführung des Verfahrens
DE102019216946A1 (de) Vorrichtung und Rechensystem zum Erproben eines Regelsystems
DE102020113088A1 (de) Verfahren zur analogen Multiplikation und/oder Berechnung eines Skalarproduktes mit einer Schaltungsanordnung, insbesondere für künstliche neuronale Netzwerke
DE202023106035U1 (de) Vorrichtung zur Kompression von Gewichtsblöcken in neuronalen Netzwerken in einem Rechenbeschleuniger
DE202023104864U1 (de) Vorrichtung zur Matrixberechnung unter Verwendung von Datenumwandlung in einem Rechenbeschleuniger

Legal Events

Date Code Title Description
8100 Publication of the examined application without publication of unexamined application
D1 Grant (no unexamined application published) patent law 81
8364 No opposition during term of opposition
8339 Ceased/non-payment of the annual fee