WO1992009040A1 - Schaltungsanordnung zur berechnung von matrixoperationen in der signalverarbeitung - Google Patents

Schaltungsanordnung zur berechnung von matrixoperationen in der signalverarbeitung Download PDF

Info

Publication number
WO1992009040A1
WO1992009040A1 PCT/DE1991/000858 DE9100858W WO9209040A1 WO 1992009040 A1 WO1992009040 A1 WO 1992009040A1 DE 9100858 W DE9100858 W DE 9100858W WO 9209040 A1 WO9209040 A1 WO 9209040A1
Authority
WO
WIPO (PCT)
Prior art keywords
matrix
circuit arrangement
multiplier
memory
adder
Prior art date
Application number
PCT/DE1991/000858
Other languages
English (en)
French (fr)
Inventor
Jörg BEICHTER
Ulrich Ramacher
Original Assignee
Siemens Aktiengesellschaft
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 Aktiengesellschaft filed Critical Siemens Aktiengesellschaft
Priority to US08/050,103 priority Critical patent/US5422836A/en
Priority to JP3517639A priority patent/JPH06502265A/ja
Publication of WO1992009040A1 publication Critical patent/WO1992009040A1/de

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

Definitions

  • the invention relates to a circuit arrangement for calculating matrix operations such as occur repeatedly in signal processing, especially in connection with neural networks. Because the computing operations required to calculate neural networks can be traced back to a manageable number of elementary matrix operations, it makes sense in view of the high computing speed required when executing these operations not to perform such computing operations with the aid of software, but rather in hardware to implement.
  • the value range of the matrix coefficients is not monitored in this circuit arrangement, and the value ranges of the matrix elements are not limited when an overflow occurs.
  • the object on which the invention is based is to provide a circuit arrangement with which the described disadvantages of the prior art are overcome, and with which the calculation of matrix products and the multi-
  • a systolic arrangement of multipliers and adders is also provided in the circuit arrangement according to the invention.
  • this systolic arrangement comprising multipliers and adders is followed by a recursive accumulator. tet. With the aid of this recursive accumulator, it is possible to carry out a much more extensive class of arithmetic operations.
  • circuit arrangement according to the invention it is in particular possible to multiply matrix products by scalars, to square matrices or matrix products, to form sums or differences of matrices and to multiply them by scalars, to calculate the absolute amount of matrix sums or matrix differences and their squares, and Transpose matrices.
  • the circuit arrangement according to the invention enables the calculation of rows or column sums of matrices or matrix products or sums or differences of matrices.
  • this circuit arrangement enables the search for maximum or minimum matrix elements in previously calculated matrices.
  • FIG. 1 shows a signal flow diagram of a circuit arrangement for calculating matrix operations.
  • FIG. 2 shows a preferred implementation of a partial circuit of the circuit from FIG. 1, which is referred to in FIG. 1 as a matrix multiplier.
  • FIGS 4, 5, 6 and 7 show signal flow diagrams for controlling the memory units B1, B2, B3 and B4.
  • FIG. 3 shows a preferred implementation of a partial circuit of the circuit arrangement from FIG. 1, which is referred to in FIG. 1 as a recursive accumulator.
  • the circuit arrangement according to the invention consists of two subcircuits, which are designated as matrix multipliers MM or as recursive accumulators AA.
  • the overall circuit has two inputs, which are denoted by in1 and in3, an output which is denoted by out3 and a bidirectional interface, which is denoted by inout2.
  • the bidirectional interface can be checked using the Port2c signal.
  • the coefficients of two matrices to be multiplied with one another are determined via the interfaces inl or.
  • inout2 and the associated memories B1 and B2 are fed to a systolic arrangement of four multipliers and four adders.
  • the input data of the multipliers of the system arrangement are selected with the aid of the switch S1, which is controlled by the signal SEN1.
  • the adder chain of the systolic arrangement is connected to the output of an EXOR gate, the first input of which is connected to the memory B2 via the switch S2, which is controlled by means of the signal SEN2.
  • the other inputs of the multipliers are connected to the memory B1.
  • This memory is a combination of four independent memories, each comprising two four words. Latches are provided in the systolic arrangement and in the overall circuit for intermediate storage of data and computing results.
  • a multiplier AM which is followed by an adder AA.
  • An input of this multiplier is connected to the output of the final adder of the matrix multiplier.
  • the second input of the multiplier can be connected to the output of the memory B4 or to the output of the final adder, or can be assigned the constant value 1.
  • the second input of the adder AA connected downstream of this multiplier is connected to the output of a second EXOR gate.
  • This second EXOR gate is connected to the signal LOOP via the switch S4, which is controlled by the signal SEN4.
  • this signal LOOP is identical with the signal of the input in3 or with the output of the memory B3.
  • the latter is also referred to as LOC in Figure 3.
  • the output of the adder AA is connected to a second final adder Fin2 via the switch S51, which is controlled by the signal SEN51.
  • This final adder Fin2 is a comparator Comp connected in parallel, which compares the output of the adder AA with zero and thus acts as a sign decider.
  • This sign signal together with the control signal SEN52, determines the position of the switch S52 which, depending on the switch position, connects the output signal of the final adder Fin2 labeled CHAIN or the loop signal delayed by B3 labeled B3 with a shifter controlled by the ShiftEn signal .
  • the output of the shifter is connected to an overflow control circuit Overflow, the output of which is connected to the memory unit B3.
  • the circuit arrangement according to the invention now enables, in addition to the matrix-matrix multiplication, also the matrix addition and the component-wise min / max comparison.
  • the input matrices, broken down into 4 x 4 submatrices, are transposed locally and then added or multiplied.
  • the components of the result matrix can either be squared or multiplied by a scalar. Either a global accumulation or a min / max comparison in the row or column direction can be applied to the resulting 4 x 4 submatrices.
  • the value range of the 16-bit weight values is monitored for overflow and the value is automatically limited if an overflow occurs.
  • the range of values of the weights can be specifically changed, e.g. be halved or doubled step by step in order to avoid an overflow and to use the 16 bit word width of the weight memory more effectively.
  • the development of the circuit arrangement according to the invention for calculating matrix operations is based on the idea of distributing the entire computing work over a predetermined number of elementary circuit arrangements and of partitioning the large matrices to be multiplied or added into 4 x 4 submatrices.
  • Each elementary circuit arrangement thus processes only a specific row or column area (submatrices) of the matrix held in local memories.
  • the calculation of large matrices is made up of the processing of the 4 x 4 submatrices. set. With this combination, the indices of the sub-matrices are extended to the entire running ranges of the large matrices. Operations that achieve the solution for large matrices from the calculation of subtracts are the local and global accumulation as well as the local or global min / max comparison of the components.
  • the circuit arrangement according to the invention carries out the following simple arithmetic operations, which, on different
  • submatrix is used to describe 4x4
  • Matrix blocks are used, which result from the partitioning of large matrices.
  • Submatrix B (in memory B2) is added to the submatrix
  • Submatrix B (in memory B2) is subtracted from submatrix A (in memory B1), previously multiplied by the unit matrixj
  • the computing operations 1.1 to 6.2 implemented in the circuit arrangement are carried out in different parts of the overall circuit and can be connected to one another in certain combinations in order to support different neural algorithms.
  • the two operations 6.1 and 6.2 can be combined with 4.1.
  • the execution of the individual arithmetic operations with the aid of the circuit arrangement and the control of the circuit arrangement are described in detail below.
  • Arithmetic operation 1.1 Submatrix in memory B1 multiplied by submatrix in memory B2.
  • the two matrices A and B are loaded in the memories B1 and B2.
  • Switch S1 is in position B2, switch S2 in position 0 and the signal S / Al has the value zero.
  • Memory B2 delivers the data B (1,1), B (2,1), ..., B (4,4) distributed over 16 cycles with each cycle, that is the matrix elements of the upper left 4 x submatrix matrix B.
  • the control signals CEN1, ..., CEN4 at the input registers of the multipliers have the values zero and are therefore not active, except at the following times:
  • CEN1 is active in cycle 1 and causes the input register of the top multiplier to be loaded with the matrix element B (1,1).
  • CEN2 is active and loads the input of the second multiplier with the matrix element B (2,1).
  • the input registers of the other two multipliers are loaded with CEN3 and CEN4.
  • Submatrix A (1,1), ..., A (4,4) in columns in four separate partial memory units and supplies this data to the multipliers of the systolic arrangement via four separate feed lines (see FIG. 2).
  • the first multiplier receives its first matrix element A (1, 1) from the memory B1 at the same time as the matrix element B (1, 1).
  • the memory B1 supplies the matrix elements A (2,1), A (3.1) and A (4.1) on the same line.
  • the matrix elements A (1,1), ..., A (4,1) are repeated.
  • the reading for the first multiplier of the chain has ended.
  • the second multiplier receives the matrix elements A (1,2) ..., A (4,2) from the memory Bl.
  • the third and fourth multipliers receive the matrix elements A (1,3) , ..., A (4,3) or A (1,4), ..., A (4,4) from the memory Bl.
  • the last multiplier in the 19th cycle receives the value of the matrix element A (4,4) for the fourth and last time.
  • Each multiplier can start multiplying two matrix elements of matrices A and B per cycle. Such a multiplication takes seven bars. The results are accumulated via the adder chain of the matrix multiplier in FIG. 2.
  • first adder receives the product A (1,1).
  • B (1,1) of the first multiplier adds the zero of switch S2 and passes the result in the following cycle (cycle 9) to the subsequent second adder. This receives the product B (1,2) at the same time as the sum of the first adder from the second multiplier.
  • a (2,1) which he adds to the sum (bar 10).
  • products B (1,3) are added.
  • a (4.1) in addition.
  • Arithmetic operation 1.2 submatrix in memory B1 multiplied by the unit matrix (no multiplication).
  • the arithmetic operation 1.2 proceeds analogously to the arithmetic operation 1.1, with the second matrix B being replaced by the unit matrix.
  • the switch S1 is switched cyclically between the value 1 and the value 0. In bars 1, 6, 11 and 16, Sl is 1, in all other bars 0.
  • Arithmetic operation 2.1 Submatrix in memory B2 added to submatrix in memory B1.
  • the arithmetic operation 1.2 which realizes a multiplication of the matrix A in the memory B1 by the unit matrix, is expanded by the addition of a matrix B, which is in the memory B2.
  • Switch S2 is in position E2.
  • the control signal S / Al has the value zero. All other steps correspond to those in operation 1.2.
  • the process is completely analogous to the process in arithmetic operation 2.1. All that is required is a sign reversal, which is carried out in which the signal S / Al receives the value 1.
  • the EXOR gate together with the adder connected downstream, forms the two's complement of the data in memory B2.
  • Arithmetic operation 2.3 Loading the data in spoke B2 into the recursive accumulator without addition, that is, bypassing the systolic adder chain.
  • the arithmetic operation 2.3 is carried out analogously to the arithmetic operation 2.1, but a zero matrix is fed in instead of a unit matrix. This happens because
  • Arithmetic operation 3.1 multiplication of a result submatrix by a coefficient. 0
  • the systolic Addie ⁇ ' provides rerkette those mentioned in the description of arithmetic operation 1.1 sums of products of matrix elements in rows of the matrix A with columns of the matrix B, in 5 order, that first the sum of products of matrix elements of the first row of matrix A with matrix elements of the first column of matrix B and finally the sum of products from matrix elements of the fourth row of matrix A with the fourth column of matrix B
  • the product P (i, j) is equal to the sum of the products of the matrix elements in the i-th row of matrix A and the matrix elements in the k-th column of matrix B.
  • the multiplier requires seven cycles, with each cycle being a new multiplication started. The results appear from the 21st to the 37th cycle at the output of the multiplier AM.
  • the switch S3 is always in the position B4.
  • Arithmetic operation 3.2 No multiplication.
  • the rest of the procedure is identical for arithmetic operation 3.1.
  • Arithmetic operation 3.3 squaring the matrix components.
  • Switch S3 is in position L2.
  • the values P (i, j) coming from the adder chain are applied to both inputs of the multiplier AM.
  • the multiplicand and multiplier words are thus identical. If all other steps are carried out analogously to arithmetic operation 3.1, then the product sums P (i, j) take the place of the coefficients K (i) and the product matrix is multiplied by itself. According to arithmetic operation 1.2, the product matrix can in particular also be one of the original matrices.
  • Arithmetic operation 4.1.1 Local accumulation of the matrix from 3.1 to 3.3
  • the product sums P (l, l), P (2, l), ..., P (4,4) coming from the adder chain of the matrix multiplier become the data S (l, l) stored in the memory B3, S (2, l), ..., S (4,4) added component by component.
  • the resulting new values of S (i, j) are then stored again in memory B3 (fetch-and-add).
  • the switch S4 is in the LOOP position, the switch S 51 in the ADD position, the switch S52 in the CHAIN position and the switch S6 in the LOC position.
  • the control signal S / A2 has the value zero here, the control signals ShiftEn and OflowEn (see FIG. 3) are both initially set to zero here.
  • the data S (.l, l), S (2, l), ..., S (4,4) are read in this order from the part of the memory B3 connected to the recursive loop. Via switches S6 and S4 and the EXOR gates, they arrive in adder AA, which is built up from a row of full adders.
  • S (l, l) is added to P (l, l)
  • bar S (2, l) is added to P (2, l).
  • the 50 bit wide final adder Fin2 is a complex circuit with a high throughput time, which is why it is preferably not implemented after each adder stage, but only at one point.
  • the runtime in the final adder Fin2 is two clock periods.
  • Arithmetic operation 4.1.2 Local accumulation: resetting the recursive loop.
  • Arithmetic operation 4.2 Distributed accumulation of the matrix
  • Switch S4 is in the LOOP position, switch S51 in the ADD position, switch S52 in the CHAIN position and switch 56 in the .GLOBIN position.
  • the old values of S (l, l), ... S (4,4) are not read from memory B3, but are obtained from the input in3.
  • the accumulation takes place via switches S6 and S4 and adders AA and Fin2 and switches S51 and S52.
  • the new values S (l, l), ..., S (4,4) are not written to the memory B3 via the shifter, but directly to the output via the switch S7 laid out3. Five cycles are required for this.
  • Computation operation 5.1 Component-wise min / max comparison of the result submatrix from 3.1 to 3.3 with the submatrix stored in the part of memory B3 belonging to the recursive loop.
  • Switch S4 is in the LOOP position, switch S6 in the LOC position.
  • the signal S / A2 has the value 1 and the EXOR gate and the subsequent adder stage AA are used to form the two's complement of the data running via the switch S4.
  • the switch S51 is in the MULT 5 position and the position of the switch S52 results from the result of the comparator Comp, which checks whether the result of the adder AA is greater than or equal to zero.
  • the adder determines the difference between the value originating from the multiplier AM and the value of the memory B3. If this difference is positive, the comparator sets the switch S52 to the MULT5 position for the MAX comparison and the ADD position for the MIN comparison. If, on the other hand, the calculated difference is negative, then the value from the memory B3 is greater than the product at the output of the multiplier AM, and the switch positions are reversed.
  • the result selected via the switch S52 is stored in the memory B3 without any further change.
  • Arithmetic operation 5.2 Component-wide MIN / MAX comparison of the result submatrix from 3.1 to 3.3 with the submatrix created simultaneously at the input in3.
  • switch S6 is in the GLOBIN position and switch S7 is in the GLOBOUT position. All further steps are analogous to arithmetic operation 5.1.
  • Arithmetic operation 6.1 Overflow detection and value saturation for the 16 bit data (weights) stored in memory B3.
  • the word width of the weights in neural networks is usually limited to 16 bits.
  • the overflow detection and saturation suppresses an overshoot / undershoot of the limit values which can be represented during the learning process.
  • Arithmetic operation 6.2 reformatting the weight matrices.
  • the interface inout2 is used as an input (11.1) and only for short, precisely specified steps as an output (11.2).
  • port side one of the memory halves belonging to the interface, on the loop side one of the recursive loops.
  • the data A (i, j) are fed in from the outside via the interface inl and reach the memory Bl. Their sequence is A (l, l), A (l, 2), ..., A (4,4) .
  • the memory Bl takes this
  • the word line signals are passed systolic from memory word to memory word with a built-in sequencer, so that only one memory word is written per cycle.
  • the sequencer
  • the data are stored in B1 in such a way that 5 the data A (l, l), ..., A (l, 4) are stored in the first memory line, and the data A ( 2, l), ..., A (2,4), etc.
  • the controller initializes the change of the memory halves via the control bit B1XCH.
  • the signal B1XCH is passed on in the memory unit B1 from memory line to memory line with a clock delay in order to reduce the runtime in the
  • the submatrix stored in B1 is required several times in succession for calculations. This data is not overwritten if the change in the memory halves is not necessary. The data stored on the multiplier side are retained until the next change in the storage halves. B1XCH does not change its value.
  • B2 has 16 memory cells.
  • the data B (i, j) are stored in the memory in sequence.
  • the memory fields are controlled by a sequencer, triggered by B2P0RN (see 7.1.1).
  • the change of the memory halves is controlled by the controller via B2XCH.
  • the change covers all buffer halves at the same time.
  • a change is possible for every new submatrix operation, at the earliest every 16 cycles.
  • the order of the read data corresponds to the transposed matrix: trigger pulse B2MULT.
  • the data to be written in 9.1 are read six clocks beforehand from the same memory cells of the memory B3, in which they are later stored again (trigger: B3L00P). 9.2.1 Changing the buffer halves
  • the change is controlled by the controller via B3XCH (see 8.2.1).
  • the data in B3 (port side) are stored in the
  • Order S (l, l), S (2, l), ..., S (4,4) read and replaced by values at the same time at the input.
  • the sequencer is triggered by B3P0RN.
  • the data in B3 (port side) are read in the order S (1, 1), S (1, 2), ..., S (4,4) and by values lying at the input of B3 at the same time replaced.
  • the sequencer is triggered by B3P0RT.
  • the data in B4 (coefficients) are fed to the circuit arrangement via the interface in3 (0UT3). Four cycles are necessary for loading.
  • the trigger pulse for the sequencer is B4P0RN.
  • the trigger pulse for reading is B4MULN.
  • the input drivers of the IN0UT2 interface are always active.
  • the interface IN0UT2 is switched to output operation via an external control bit P0RT2C in order to avoid external driver conflicts.
  • the circuit arrangement described is a circuit module which, combined with similar circuit modules, results in a coprocessor for performing matrix operations.
  • This coprocessor is supplied with the necessary control signals by a controller circuit.

Landscapes

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

Abstract

Schaltungsanordnung zur Berechnung von Matrixoperationen, wie sie in der Signalverarbeitung, speziell im Zusammenhang mit neuronalen Netzen, immer wieder auftreten, bestehend aus einem systolischen Array von Multiplizieren und Addierern, welchem ein rekursiver Akkumulator nachgeschaltet ist. Mit Hilfe dieser Schaltungsanordnung können neben Produkten, Summen und Differenzen von Matrizen auch Quadrate, Absolutbeträge von Summen und Differenzen sowie Quadrate von Summen und Differenzen zweier Matrizen sehr effizient berechnet werden. Mit Hilfe des rekursiven Akkumulators ist es darüber hinaus möglich, Matrizen zu transponieren, Zeilen- bzw. Spaltensummen zu berechnen und minimale oder maximale Matrixelemente aufzusuchen.

Description

Schaltungsanordnung zur Berechnung von Matrixoperationen in der Signalverarbeitung
Die Erfindung betrifft eine Schaltungsanordnung zur Berech¬ nung von Matrixoperationen, wie sie in der Signalverarbeitung, speziell im Zusammenhang mit neuronalen Netzen, immer wieder vorkommen. Weil sich die zur Berechnung neuronaler Netze er¬ forderlichen 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 Rechen¬ operationen 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.Ra acher, "Design of a first Generation Neurocomputer", VLSI Design of Neural Net¬ works, edited by U.Ramacher, U.Rückert, Kluwer Academic Publishers, Nov. 1990, wiedergegeben. In dieser Veröffent¬ lichung wird eine Schaltungsanordnung beschrieben, welche aus einer systolischen Anordnung von Multiplizierern und Addierern aufgebaut ist. Diese sytolische Anordnung er¬ möglicht das Berechnen von Matrixprodukten, wobei die zu multiplizierenden Matrizen in Blöcke der Größe x 4 zer¬ legt werden, und wobei mit Hilfe der systolischen Anord- nung jeweils Submatrizen dieser Größe multipliziert werden können. Die mit dieser Schaltungsanordnung ausführbaren Rechenoperationen sind für die Berechnung bestimmter neu¬ ronaler 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 Schaltungsanord¬ nung nicht unterstüzt werden.
LO
Ferner findet bei dieser Schaltungsanordnung keine Überwa¬ chung des Wertebereichs der Matrixkoeffizienten statt, und die Wertebereiche der Matrixelemente werden bei eingetre¬ tenem Überlauf nicht begrenzt.
L5
Die der Erfindung zugrundeliegende Aufgabe besteht darin, eine Schaltungsanordnung anzugeben, mit welcher die beschrie¬ benen Nachteile des Standes der Technik überwunden werden, und welche die Berechnung von Matrixprodukten sowie die Multi-
20 plikation von Matrixprodukten mit Skalaren, als auch die Qua¬ drierung von Matrixprodukten, die Summen und Differenzbildung von Matrizen, die Multiplikation von Matrixsummen bzw. Matrix¬ differenzen mit Skalaren, die Betragsbildung von Matrixsummen bzw. Matrixdifferenzen, die Quadrierung von Matrixsummen und
25 Differenzen, die Transposition von Matrizen und Matrixproduk¬ ten, 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
30 Merkmalen gemäß Anspruch 1 gelöst.
In der erfindungsgemäßen Schaltungsanordnung ist ebenfalls eine systolische Anordnung von Multiplizierern und Addierern vorgesehen. Im Gegensatz zu der aus dem Stand der Technik be- 35 kannten Schaltungsanordnung ist in der erfindungsgemäßen Schal¬ tungsanordnung dieser systolischen Anordnung aus Multipli¬ zierern und Addierern ein rekursiver Akkumulator nachgeschal- tet. Mit Hilfe dieses rekursiven Akkumulators ist die Durch¬ führung einer wesentlich umfassenderen Klasse von Rechenopera¬ tionen 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. Ma¬ trixdifferenzen und deren Quadrate zu berechnen, und Matrizen zu transponieren. Darüber hinaus ermöglicht die erfindungsge¬ mäße Schaltungsanordnung die Berechnung von Zeilen bzw. Spal¬ tensummen von Matrizen bzw. Matrixprodukten bzw. Summen oder Differenzen von Matrizen. Schließlich ermöglicht diese Schal¬ tungsanordnung die Suche nach maximalen bzw. minimalen Matrix- elementen in zuvor berechneten Matrizen.
Weiterbildungen der Erfindung ergeben sich aus den Unteran¬ sprüchen.
Im folgenden wird die Erfindung anhand von Figuren und anhand eines bevorzugten Ausführungsbeispieles beschrieben.
Figur 1 zeigt einen Signalflußplan einer Schaltungsanord¬ nung zur Berechnung von Matrixoperationen.
Figur 2 zeigt eine vorzugsweise Realisierung einer Teil¬ schaltung der Schaltung aus Figur 1, welche in Figur 1 als Matrixmultiplizierer bezeichnet ist.
Die Figuren 4, 5, 6 und 7 zeigen Signalflußpläne zur Ansteuerung der Speichereinheiten Bl, B2, B3 und B4.
Figur 3 zeigt eine bevorzugte Realisierung einer Teilschal¬ tung der Schaltungsanordnung aus Figur 1, welche in Figur 1 als rekursiver Akkumulator bezeichnet ist. Wie in Figur 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 inl bzw. mit in3 bezeichnet sind, einen Aus¬ gang welcher mit out3 bezeichnet ist und eine bidirektionale Schnittstelle, welche mit inout2 bezeichnet ist. Die bidirek¬ tionale Schnittstelle kann mit Hilfe des Signals Port2c kon- trolliert werden. Die Koeffizienten zwei miteinander zu multi¬ plizierender Matrizen werden über die Schnittstellen inl bwz. inout2 und die damit verbundenen Speicher Bl bzw. B2 einer systolischen Anordnung aus vier Multiplizierern und vier Addie¬ rern zugeführt. Die Eingangsdaten der Multiplizierer der systo- lischen Anordnung werden dabei mit Hilfe des Schalters Sl, wel¬ cher ü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 Bl verbunden. Dieser Speicher ist eine Zusammenfassung von vier unabhängigen Spei¬ chern, welche jeweils zweimal vier Worte umfassen. Zur Zwi- schenspeicherung von Daten und Rechenergebnissen sind in der systolischen Anordnung sowie in der Gesa tschaltuπg über¬ all Latches vorgesehen. Diese tragen keine rechnerischen Funktionen, sondern ermöglichen lediglich den synchronen Ab¬ lauf der Gesamtschaltung, und werden zur Realisierung algo¬ rithmisch bedingter Zeitverzögerungen benötigt. Am Ende der Addiererkette der systolischen Anordnung befindet sich ein finaler Addierer Finl, welcher die Überträge der mit Add be¬ zeichneten Carry Save Addierer zum Carry-Select-Format zusam¬ menfaßt. Eine bevorzugte Ausführungsform der Multiplizierer innerhalb der systolischen Anordnung ist in dem Aufsatz von U.Ramacher, 1990, beschrieben.
An den in Figur 1 abgebildeten Matrixmultiplizierer, welcher in Figur 2 näher beschrieben ist, schließt sich in der Gesamt- schaltung (s. Figur 1) ein rekursiver Akkumulator an, welcher in Figur 3 abgebildet ist. Am Eingang dieses rekursiven Akku¬ mulators befindet sich ein Multiplizierer AM, dem ein Addierer AA nachgeschaltet ist. Ein Eingang dieses Multiplizierers ist mit dem Ausgang des finalen Addierers des Matrixmulti- plizierers verbunden. Der zweite Eingang des Multiplizie¬ rers 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 Ein¬ gang des diesem Multiplizierer nachgeschalteten Addierers AA ist mit dem Ausgang eines zweiten EXOR-Gatters verbunden. Ein Eingang dieses zweiten EXOR-Gatters ist über den Schal- ter S4, welcher über das Signal SEN4 gesteuert wird, mit dem Signal LOOP verbunden. Dieses Signal LOOP ist je nach Stel¬ lung des Schalters S6, welcher über das Signal SEN6 gesteuert wird, mit dem Signεl des Eingangs in3, oder mit dem Ausgang des Speichers B3 ioentisch. Letzteres ist in Figur 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. Die¬ sem finalen Addierer Fin2 ist ein Komparator Comp parallelge¬ schaltet, welcher den Ausgang des Addierers AA mit Null ver- gleicht und damit als Vorzeichenentscheider wirkt. Dieses Vor¬ zeichensignal bestimmt zusammen mit dem Steuersignal SEN52 die Stellung des Schalters S52, welcher je nach Schalterstel¬ lung 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 Überl'ufkontrollschaltung Overflow verbunden, deren Aus¬ gang mit der Speichereinheit B3 verbunden ist.
Der Signalpfad über den Addierer AA, den finalen Addierer
Fin2 bzw. den Comparator Comp, den Shifter und die Überlauf¬ kontrollschaltung, sowie über die Speichereinheit B3 und das EXOR-Gatter, dessen Ausgang den zweiten Eingang des Addie¬ rers AA bildet, stellt eine rekursive Schleife dar, mit wel¬ cher die gegenüber dem Stand der Tchnik neuartigen Rechen- Operationen durchgeführt werden können.
Im Gegensatz zu der Schaltungsanordnung, welche in dem Aufsatz von U.Ramacher, 1990, beschrieben ist, er¬ möglicht die erfindungsgemäße Schaltungsanordnung neben der Matrix-Matrixmultiplikation nun auch die Matrixaddi¬ tion und den komponentenweisen Min/Max-Vergleich. Die Ein¬ gangsmatrizen, zerlegt in 4 x 4 Submatrizen, werden lokal transponiert und dann addiert oder multipliziert. Die Kompo¬ nenten der Ergebnismatrix können wahlweise quadriert oder mit einem Skalar multipliziert werden. Auf die hieraus entstehen¬ den 4 x 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 Schiebeeinrich¬ tung 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 Schaltungsanordung zur Berechnung von Matrixoperationen liegt der Gedanke zu- gründe, die gesamte Rechenarbeit auf eine vorgegebene An¬ zahl von elementaren Schaltungsanordnungen zu verteilen und die zu multiplizierenden bzw. zu addierenden großen Matrizen in 4 x 4 Submatrizen zu partitionieren. Jede ele¬ mentare Schaltungsanordnung bearbeitet so nur einen bestim - ten Zeilen- bzw. Spaltenbereich (Submatrizen) der in loklaen Speichern gehaltenen Matrix. Die Berechnung großer Matri¬ zen wird aus der Bearbeitung der 4 x 4 Submatrizen zusammen- gesetzt. Bei diesem Zusammensetzen werden die Indizes der Sub¬ matrizen auf die gesamten Laufbereiche der großen Matrizen erweitert. Operationen, die aus der Berechnung von Sub atri- zen 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 realisierern.
Dabei wird der Begriff Submatrix zur Bezeichnung von 4x4
Matrixblöcken verwendet, welche aus der Partitionierung großer Matrizen entstehen.
1. Multiplikation von Eingangssubmatrizen
1.1 Submatrix A (in Speicher Bl) multipliziert mit Submatrix B in Speicher (B2);
1.2 Submatrix A (in Speicher Bl) multipliziert mit der Einheits- matrix;
2. Addition/Substraktion von Eingangssubmatrizen
2.1 Submatrix B (in Speicher B2) wird addiert zur Submatrix
A (in Speicher Bl), zuvor multipliziert mit der Einheits- matrix;
2.2 Submatrix B (in Speicher B2) wird subtrahiert von Sub¬ matrix A (in Speicher Bl), zuvor multipliziert mit der Einheitsmatrixj
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 Koeffizien¬ ten (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 5 B3 gespeicherten Submatrix (lokale Akkumulation).
4.2 Addition der Ergebnissubmatrix zu der zeitgleich an Ein¬ gang in3 angelegten Submatrix (v.erteilte Akkumulation).
5. Komponentenweiser Min/Max Vergleich für die Ergebnissub- LO matrix 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 Sub¬ matrix.
5.2 Min/Max-Vergleich zwischen der Submatrix aus 3.1 bis
L5 3.3 und einer zeitgleich am Eingang in3 angelegten Sub¬ matrix.
6. Überlaufregulierung von die in Speichereinheit B3 gespei¬ cherten Gewichte.
20 6.1 Überlauferkennung und Wertsättigung der auf 16 Bit zu beschränkenden Gewichte. 6.2 Gesteuerte, globale Umformatierung aller Gewichtssubma¬ trizen.
25 Die in der Schaltungsanordnung implementierten Rechenopera¬ tionen 1.1 bis 6.2 werden in verschiedenen Teilen der Gesamt¬ schaltung durchgeführt und können in bestimmten Kombinationen miteinander verbunden werden, um verschiedene neuronale Algo¬ rithmen zu unterstützen.
30
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.
35
Die zwei Operationen 6.1 und 6.2 sind kombinierbar mit 4.1. Im folgenden wird die Durchführung der einzelnen Rechenopera¬ tionen mit Hilfe der Schaltungsanordnung und die Steuerung der Schaltungsanordnung im einzelnen beschrieben.
Rechenoperation 1.1: Submatrix in Speicher Bl multipliziert mit Submatrix in Speicher B2.
Die beiden Matrizen A und B sind in den Speichern Bl und B2 geladen. Schalter Sl steht in der Position B2, Schalter S2 in der Position 0 und das Signal S/Al hat den Wert Null. Spei¬ cher B2 liefert mit jedem Takt über 16 Takte verteilt die Daten B (1,1), B (2,1), ... , B (4,4), also die Matrixele¬ mente der linken oberen 4 x 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 ober¬ sten Multiplizierers mit dem Matrixelement B (1,1). Im nach- folgenden Takt ist CEN2 aktiv und lädt den Eingang des zwei¬ ten Multiplizierers mit dem Matrixelement B (2,1). Im dritten und vierten Takt werden mit CEN3 und CEN4 die Eingangsregi¬ ster der anderen zwei Multilizierer 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 Ma¬ trixelement B (4,4) durch CEN4 = aktiv in den vierten Multi¬ plizierer geladen ist.
Parallel zu diesem Vorgang hält die Speichereinheit Bl die
Submatrix A (1,1), ..., A (4,4) spaltenweise in vier getrenn¬ ten Teilspeichereinheiten und liefert diese Daten über vier getrennte Zuleitungen an die Multiplizierer der systolischen Anordnung (siehe Figur 2). Der erste Multiplizierer erhält sein erstes Matrixelement A (1,1) aus dem Speicher Bl zeit¬ gleich mit dem Matrixelement B (1, 1). In den drei nachfolgen¬ den Takten liefert der Speicher Bl 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 An- legen 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 ange¬ legt wurde, ist das Lesen für den ersten Multiplilzierer der Kette beendet. Der zweite Multiplizierer erhält die Matrix- elemente A (1,2) ..., A (4,2) von dem Speicher Bl. 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 Bl. 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 Matrixmultipli- zierers in Figur 2 bewerkstelligt. Im Takt 8 erhält der oberste, erste Addierer das Produkt A (1,1) . B (1,1) des ersten Multi- plizierers, 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 wei- teren Takten kommen die noch fehlenden Summen hinzu. Die ge¬ samt 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 Ma¬ trix B im 28. Takt am Ausgang der Addiererkette erscheint.
Rechenoperation 1.2: Submatrix in Speicher Bl 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 Sl zyklisch zwischen dem Wert 1 und dem Wert 0 geschaltet. In den Takten 1, 6, 11 und 16 steht Sl auf 1, in allen anderen Takten auf 0.
Rechenoperation 2.1: Submatrix in Speicher B2 addiert zu Submatrix in Speicher Bl.
Um die Rechenoperation 2.1 durchzuführen, wird die Rechen¬ operation 1.2, welche eine Multiplikation der in Speicher Bl 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 E2. Das Steuersignal S/Al 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 Bl.
Hier ist der Ablauf ganz analog zum Ablauf bei der Rechen¬ operation 2.1. Es ist lediglich eine Vorzeichenumkehr erfor- derlich, welche durchgeführt wird, in dem das Signal S/Al 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 Speiche B2 stehenden Daten in den rekursiven Akkumulator ohne Addition, also unter Umgehung der systolischen Addiererkette. Die Rechenoperation 2.3 wird analog zur Rechenoperations 2.1 durchgeführt, wobei aber anstelle einer Einheitsmatrix eine Nullmatrix eingespeist wird. Dies geschieht dadurch,
5 daß der Schalter Sl bei sämtlichen Takten in der Position Null steht.
Rechenoperation 3.1: Multiplikation einer Ergebnissubmatrix mit einem Koeffizienten. 0
Bei dieser Rechenoperation liefert die systolische Addie¬ rerkette 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 5 der Reihenfolge, daß zuerst die Summe über Produkte von Matrixelementen der ersten Zeile der Matrix A mit Matrix¬ elementen der ersten Spalte der Matrix B und zuletzt die Summe von Produkten aus Matrixelementεn der vierten Zeile der Matrix A mit der vierten Spalte der Matrix B berech-
10 net 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 Fin 1), bevor sie dem ersten Multiplizierer AM des rekursiven Akkumulators als Eingangsdaten zugeführt werden können. Dabei
_5 entsteht ein Takt Verzögerung durch den finalen Addierer Finl. Für die Bereitstellung der Daten an beiden Eingängen des Multiplizierers AM ergeben sich zwei weitere Takte.
Die vom finalen Addierer Finl kommenden Summen über Pro- 50 dukte von Matrixelementen treffen am Multiplizierer AM in der oben beschriebenen Reihenfolge ein und werden mit den Koeffizienten K(l), K(2), K(3) und K(4) multipliziert, welche im Speicher B4 gespeichert sind. Dabei werden der Reihe nach folgende Produkte gebildet:
35
K(l) . P(l,l), K(l) P(2,l), K(l) . P(3,l), K(l) . P(4,l), K(2) . P(l,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 er¬ scheinen vom 21. bis zum 37. Takt am. Ausgang des Multipli¬ zierers AM. Dabei steht der Schalter S3 stets in der Posi¬ tion 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 Rechenopera¬ tion 3.1.
Rechenoperation 3.3: Quadrieren der Matrixkomponenten.
Der Schalter S3 steht in der Position L2. Die von der Addie- rerkettε 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 insbe¬ sondere auch eine der ursprünglichen Matrizen sein.
Rechenoperation 4.1.1: Lokale Akkumulation der Matrix aus 3.1 bis 3.3
Die von der Addiererkette des Matrix ultiplizierers kommen¬ den Produktsummen P(l,l), P(2,l), ..., P(4,4) werden zu den im Speicher B3 abgelegten Daten S(l,l), S(2,l), ..., S(4,4) komponentenweise addiert. Die sich ergebenden neuen Werte der S(i,j) werden anschließend wieder im Speicher B3 abge¬ legt (fetch-and-add) . Der Schalter S4 befindet sich dabei in der Stellung LOOP, der Schalter S 51 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 Figur 3) werden hier zunächst beide auf Null gesetzt. Die Daten S(.l,l), S(2,l), ..., 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 auf¬ gebaut ist. Im Takt 22 wird S(l,l) zu P(l,l) addiert, im folgenden Takt S(2,l) zu P(2,l).
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 Addiererstufe, sondern nur an einer Stelle implementiert wird. Die Laufzeit im finalen Addierer Fin2 beträgt zwei Takt¬ perioden.
Die Ergebnisse, die neuen Werte S(l,l), ..., 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 Rechenopera¬ tion 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 56 in der Stellung .GLOBIN. Anders als bei der Operation 4.1.1 werden die alten Werte der S(l,l), ... S(4,4) nicht aus dem Speicher B3 gelesen, sondern von dem Eingang in3 bezogen. Die Akkumulation führt über die Schal¬ ter S6 und S4 und die Addierer AA und Fin2 sowie die Schal¬ ter S51 und S52. Hinter dem Schalter S52 werden die Ergeb¬ nisse, die neuen Werte S(l,l), ..., S(4,4), nicht über den Shifter in den Speicher B3 geschrieben, sondern dirkekt ü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 rekur- siven Schleife gehörenden Teil des Speicher 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 Addiererstufe AA wer¬ den zur Bildung des Zweierkomplements der über den Schal¬ ter S4 laufenden Daten eingesetzt. Der Schalter S51 steht in der Position MULT 5 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 Diffe¬ renz 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 Schal¬ ter 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 ge¬ wöhnlich auf 16 Bit begrenzt. Mit der Überlauferkennung und Sättigung wird ein Über-/Unterschreiten der darstell¬ baren 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 Bit- breite. 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) wer¬ den. Der darstellbar Zahlenbereich kann während des Lernvor- gangs somit dynamisch angepaßt werden. Die Ansteuerung über das Signal ShiftEn geschieht vom Controller aus. Damit sind die mit Hilfe der Schaltungsanordnung ausführ¬ baren Matrixoperationen beschrieben. Im folgenden sollen die Operationen in den Speichereinheiten Bl, ..., B4 aus- führlich beschrieben werden. Diese weiteren Operationen in den Speichereinheiten Bl, ..., 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 Schaltungs¬ anordnung umsortiert und je nach Wunsch transponiert. Die An¬ steuerung der einzelnen Speichereinheiten erfolgt auf die in den Signalflußplänen der Figuren 4 bis 7 dargestellte Art und Weise.
7. Operationen im Matrixspeicher Bl
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 Speicher¬ hälfte, transponiert 10. Operationen im Koeffizientenpuffer B4
10.1 Laden der Daten
10.2 Lesen der Daten
5 10.3 Wechsel der Speicherhälften
11. Steuerung der bidirektionalen Schnittstelle inout2.
11.1 Schnittstelle auf Eingang geschaltet
11.2 Schnittstelle auf Ausgabe geschaltet LO
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).
L5 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 Spei¬ cherhälfte, unter loopseitig eine der rekursiven Schleife zu-
20 gewandte Speicherhälfte verstanden werden.
Die Daten A(i,j) werden über die Schnittstelle inl von außen zugeführt und gelangen in den Speicher Bl. Ihre Reihenfolge ist A(l,l), A(l,2), ..., A(4,4). Der Speicher Bl nimmt diese
25 16 Matrixelemente so auf, daß die Matrixelemente A(l,l), ... A(4,l), also die erste Spalte der 4 x 4 Submatrix von A im obersten Teil des Speichers stehen und später dem Multipli¬ zierer 1 zugeordnet werden können. Die Matrixelemente A(l,2), ... A(4,2), also die Elemente der zweiten Spalte, werden in
30 der zweiten Speicherzeile für den Multiplizierer 2 abgelegt, usw.. Für die Ansteuerung der Speicherzellen werden die Wort¬ leitungssignale systolisch von Speicherwort zu Speicherwort mit einem eingebauten Sequencer weitergegeben, so daß je Takt nur ein Speicherwort beschrieben wird. Der Sequencer
35 wird über einen Triggerpuls B1P0RN vom Controller angestoßen. Ferner gilt BIPORT = 0. 7.1.2 Laden, transponiert
Im Unterschied zu 7.1.1 werden die Daten so in Bl abgelegt, 5 daß in der ersten Speicherzeile die Daten A(l,l), ..., A(l,4) gespeichert werden, in der zweiten Speicherzeile die Daten A(2,l), ... , A(2,4), usw.. Für die veränderte Reihenfolge wird ein eigener Sequencer notwendig, der über BIPORT angestoßen wird (B1P0RN = 0). .0
7.2.1 Wechsel der Speicherhälften
Die Zuordnungen der beiden Hälften der Speichereinheit Bl, die eine Hälfte zum Eingang in 1 (Laden), die andere Hälfte
.5 zur Multipliziererkette (Lesen), werden getauscht. Der Con¬ troller initialisiert über das Steuerbit B1XCH den Wechsel der Speicherhälften. Das Signal B1XCH wird in der Speicher¬ einheit Bl von Speicherzeile zu Speicherzeile mit einem Takt Verzögerung weitergegeben, um die Laufzeit in der Addierer-
!0 kette auszugleichen. Ein Wechsel der Zuordnung der Speicher¬ hälften ist nur vor einer Sub atrixoperation möglich, somit frühestens alle 16 Takte.
7.2.2 Kein Wechsel der Pufferhälften
_5
Die in Bl gespeicherte Submatrix wird mehrmals hintereinander für Berechnungen benötigt .-Lernvorgang). Ein Überschreiben dieser Daten wird verhindert, wenn der Wechsel der Speicher¬ hälften entfällt. Die multipliziererseitig gespeicherten Da- 50 ten bleiben erhalten bis zum nächsten Wechsel der Speicher¬ hälften. B1XCH ändert seinen Wert nicht.
7.3 Lesen der Daten
5 Das Lesen geschieht über einen Sequencer, der über BIMULN ange¬ stoß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 Speicher¬ felder erfolgt durch einen Sequencer, Anstoß erfolgt über B2P0RN (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 Submatrixopera- tion, frühestens alle 16 Takte möglich.
8.2.1 Kein Wechsel der Pufferhälften
Durch Beibehalten des Wertes für B2XCH werden die Puffer¬ hä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 trans- ponierten Matrix: Triggerpuls B2MULT.
9.1 Fetch-and-add in B3, loopseitig
Für den Fetch-and-add Betrieb werden die in 9.1 zu schreiben- den Daten sechs Takte zuvor aus dem gleichen Speicherzellen des Speichers B3 gelesen, in denen sie später wieder abge¬ legt werden (Trigger: B3L00P). 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(l,l), S(2,l), ..., S(4,4) gelesen und durch gleichzeitig am Eingang liegende Werte ersetzt. Der Sequencer wird durch B3P0RN getriggert.
9.3.2 Lesen, portseitig, transponiert
Die in B3 (portseitig) befindlichen Daten werden in der Reihen¬ folge S(l,l), S(l,2), ..., S(4,4) gelesen und durch gleich¬ zeitig am Eingang von B3 liegende Werte ersetzt. Der Sequencer wird durch B3P0RT getriggert.
10.1 Laden der Daten in B4
Die Daten in B4 (Koeffizienten) werden über die Schnittstelle in3 (0UT3) der Schaltungsanordnung zugeführt. Für das Laden sind vier Takte notwendig. Der Triggerpuls für den Sequencer ist B4P0RN.
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 IN0UT2 auf Eingang geschaltet.
Die Eingangstreiber der Schnittstelle IN0UT2 sind immer aktiv.
11.2 Schnittstelle IN0UT2 auf Ausgabe geschaltet.
Die Umschaltung der Schnittstelle IN0UT2 auf Ausgangsbe¬ trieb erfolgt über ein externes Steuerbit P0RT2C, um externe Treiberkonflikte zu vermeiden.
Bei der beschriebenen Schaltungsanordnung handelt es sich um einen Schaltungsmodul, welcher mit gleichartigen Schal¬ tungsmodulen zusammengeschlossen, einen Coprozessor zur Durch- führung von Matrixoperationen ergibt. Dieser Coprozessor wird von einer Controllerschaltung mit den nötigen Steuer¬ signalen versorgt.
Der interne Aufbau des Controllers und auch der Speicher- einheiten ist in der Diplomarbeit von U.Hachmann, "Controller Architektur für einen Neuroemulator in Form eines systolischen Arrays", Lehrstuhl für Bauelemente der Elektrotechnik, Uni- seritä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, Archi- tecture and Design", John Wiley & Sons, 1979, erklärt.

Claims

Patentansprüche
1. Schaltungsanordnung zur Berechnung von Matrixoperationen, welche einen Matrixmultiplizierer (MM) und einen diesem Ma¬ trixmultiplizierer nachgeschalteten rekursiven Akkumulator (RA) zur Berechnung von Transpositionen, Zeilensummen und Spaltensummen und zur Suche extremaler Matrixelemente um¬ faßt.
2. Schaltungsanordnung zur Berechnung von Transpositionen, Zeilensummen und Spaltensummen von Matr_?en und zur Suche extremaler Matrixelemente, welche einen Multiplizie¬ rer (AM) und einen diesem Multiplizierer nachge- schalteten Addierer (AA), welcher den Ausgang des Multi¬ plizierers mit einem Ausgang dieser Schaltungsanordnung in re¬ kursiver Weise verknüpft, umfaßt.
3. Schaltungsanordnung zur Berechnung von Matrixoperationen, welche einen Matrixmultiplizierer und einen diesem Matrix- multiplilzierer nachgeschalteten rekursiven Akkumulator zur Berechnung von Transpositionen, Zeilensummen und Spal¬ tensummen und zur Suche extremaler Matrixelemente umfaßt, wobei der Akkumulator einen Multiplizierer und einen diesem Multiplizierer nachgeschalteten Addierer umfaßt, welcher den Ausgang des Multiplizierers mit einem Ausgang dieser Schal¬ tungsanordnung in rekursiver Weise verknüpft.
4. Schaltungsanordnung nach einem der Ansprüche 1 oder 3, dadurch g e k e n n z e i c h n e t , daß der Matrixmultiplizierer zwei Dual-Port-Speicherein¬ heiten (Bl bzw. B2) und eine diesen Speichereinheiten nach¬ geschaltete systolische Kette aus Multiplizierern (Mul) und Addierern (Add) umfaßt.
5. Schaltungsanordnung nach Anspruch 4, dadurch g e k e n n z e i c h n e t 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 g e k e n n z e i c h n e t , daß der Matrixmultiplizierer eine systolische Kette aus Multiplizierern (Mul) und Addierern (Add) umfaßt, an deren Ende ein erster finaler Addierer (Finl) vom Carry-Select-Typ vorgesehen ist.
7. Schaltungsanordnung nach einem der vorhergehenden Ansprüche, dadurch g e k e n n z e i c h n e t , 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 g e k e n n z e i c h n e t , daß der rekursive Akkumulator einen Komparator (Comp) umfaßt, welcher das Ergebnis des Addierers (AA) mit Null vergleicht.
PCT/DE1991/000858 1990-11-15 1991-11-04 Schaltungsanordnung zur berechnung von matrixoperationen in der signalverarbeitung WO1992009040A1 (de)

Priority Applications (2)

Application Number Priority Date Filing Date Title
US08/050,103 US5422836A (en) 1990-11-15 1991-11-04 Circuit arrangement for calculating matrix operations in signal processing
JP3517639A JPH06502265A (ja) 1990-11-15 1991-11-04 信号処理におけるマトリクス演算の計算回路装置

Applications Claiming Priority (2)

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

Publications (1)

Publication Number Publication Date
WO1992009040A1 true WO1992009040A1 (de) 1992-05-29

Family

ID=6418338

Family Applications (1)

Application Number Title Priority Date Filing Date
PCT/DE1991/000858 WO1992009040A1 (de) 1990-11-15 1991-11-04 Schaltungsanordnung zur berechnung von matrixoperationen in der signalverarbeitung

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
WO1994007208A2 (en) * 1992-09-17 1994-03-31 Eastman Kodak Company Selectively configurable integrated circuit device for performing multiple digital signal processing functions

Families Citing this family (13)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
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
CN107315574B (zh) * 2016-04-26 2021-01-01 安徽寒武纪信息科技有限公司 一种用于执行矩阵乘运算的装置和方法
WO2018113597A1 (zh) * 2016-12-20 2018-06-28 上海寒武纪信息科技有限公司 矩阵乘加运算装置、神经网络运算装置和方法
US11105437B2 (en) * 2017-07-03 2021-08-31 Continental Automotive Systems, Inc. Combined inlet and outlet check valve seat
CN111859273A (zh) * 2017-12-29 2020-10-30 华为技术有限公司 矩阵乘法器
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

Citations (1)

* 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

Family Cites Families (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
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
EP0314809B1 (de) * 1987-05-14 1993-07-21 Fujitsu Limited Vektorprozessor zur schnellen verarbeitung von rekursiven gleichungen
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

Patent Citations (1)

* 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

Non-Patent Citations (5)

* Cited by examiner, † Cited by third party
Title
PROCCEDINGS OF THE 1985 IEEE INT.CONF. ON ROBOTICS AND AUTOMATION, IEEE COMPUTER SOCIETY PRESS, NEW YORK,US 25. M{rz 1985, ST.LOUIS,MISSOURI,US Seiten 779 - 784; J.G.NASH: 'A SYSTOLIC/CELLULAR COMPUTER ARCHITECTURE FOR LINEAR ALGEBRAIC OPERATIONS' *
PROCEEDINGS OF 1989 IEEE INT. CONF. ON COMPUTER DESIGN:VLSI IN COMPUTERS AND PROCESSORS; IEEE COMPUTER SOCIETY PRESS; NEW YORK US; 2. Oktober 1989, CAMBRIDGE, MASSACHUSETTS,US Seiten 86 - 89; SAILESH K. RAO: 'THE MATRIX TRANSFORM CHIP' *
PROCEEDINGS OF IEEE REGION 5 CONFERENCE "SPANNING THE PEAKS OF ELECTROTECHNOLOGY"; IEEE COMPUTER SOCIETY PRESS, NEW YORK,US 21. M{rz 1988, COLORADO SPRINGS,US Seiten 116 - 126; B.HAMILTON: 'PROGRAMMABLE ARCHITECTURES FOR MATRIX AND SIGNAL PROCESSING' *
PROCEEDINGS OF THE 6TH SYMPOSIUM ON COMPUTER ARITHMETIC; IEEE COMPUTER SOCIETY PRESS, NEW YORK, US; 20. Juni 1983, AARHU, DK Seiten 144 - 150; L.M.NI AND K.HWANG: 'VECTOR REDUCTION METHODS FOR ARITHMETIC PIPELINES' *
RADIO FERNSEHEN ELEKTRONIK; VEB VERLAG TECHNIK; Bd. 37, Nr. 10, 1988, BERLIN,GE Seiten 626 - 630; B.SCH\NFELDER, D.HARTUNG: 'MULTIPLIZIERER UND AKKUMULATOR U 1520 PC 001' *

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO1994007208A2 (en) * 1992-09-17 1994-03-31 Eastman Kodak Company Selectively configurable integrated circuit device for performing multiple digital signal processing functions
WO1994007208A3 (en) * 1992-09-17 1994-04-28 Eastman Kodak Co Selectively configurable integrated circuit device for performing multiple digital signal processing functions

Also Published As

Publication number Publication date
EP0557314A1 (de) 1993-09-01
DE4036455C1 (de) 1992-04-02
US5422836A (en) 1995-06-06
JPH06502265A (ja) 1994-03-10

Similar Documents

Publication Publication Date Title
DE3049437C2 (de) Matrixanordnung einer Vielzahl von Verarbeitungselementen
DE19835216B4 (de) Prozessor und Verfahren zur parallelen Datenverarbeitung
DE4036455C1 (de)
DE202018101330U1 (de) Transportieren von Matrizen neuronaler Netze in Hardware
DE2724125C2 (de)
DE102020122174A1 (de) Berechne-in/nahe speicher- (cim) schaltungsarchitektur für vereinheitlichte matrix-matrix- und matrix-vektor-berechnungen
DE3933171A1 (de) Einzelchip-prozessor fuer komplexe gleitkommazahlen
DE3632639C2 (de) Einrichtung zum Hochgeschwindigkeitsverarbeiten von Bilddaten durch Faltung
DE2803425A1 (de) Digitaleinrichtung zur ermittlung des wertes von komplexen arithmetischen ausdruecken
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
DE102020205623A1 (de) Speichervorrichtung mit neuronaler netzwerk-verarbeitungsschaltung
DE102021107093A1 (de) Speicherinterne rechenschaltung und verfahren
DE19635113A1 (de) Multiplizierer
EP0629943B1 (de) Multiplizierer für reelle und komplexe Zahlen
EP0424410B1 (de) Multiplizierer
DE19635111A1 (de) Multiplizierer
DE3607241A1 (de) Rechner
DE4026410C2 (de) Verfahren zur Matrizen-Multiplikation auf SIMD-Prozessoren

Legal Events

Date Code Title Description
AK Designated states

Kind code of ref document: A1

Designated state(s): JP US

AL Designated countries for regional patents

Kind code of ref document: A1

Designated state(s): AT BE CH DE DK ES FR GB GR IT LU NL SE

WWE Wipo information: entry into national phase

Ref document number: 1991918713

Country of ref document: EP

WWP Wipo information: published in national office

Ref document number: 1991918713

Country of ref document: EP

WWW Wipo information: withdrawn in national office

Ref document number: 1991918713

Country of ref document: EP