WO2022069221A1 - Device and method for performing multiplication operations and addition operations - Google Patents

Device and method for performing multiplication operations and addition operations Download PDF

Info

Publication number
WO2022069221A1
WO2022069221A1 PCT/EP2021/075281 EP2021075281W WO2022069221A1 WO 2022069221 A1 WO2022069221 A1 WO 2022069221A1 EP 2021075281 W EP2021075281 W EP 2021075281W WO 2022069221 A1 WO2022069221 A1 WO 2022069221A1
Authority
WO
WIPO (PCT)
Prior art keywords
matrix
values
processing units
matrix form
data
Prior art date
Application number
PCT/EP2021/075281
Other languages
German (de)
French (fr)
Inventor
Siegbert Steinlechner
Original Assignee
Robert Bosch Gmbh
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 Robert Bosch Gmbh filed Critical Robert Bosch Gmbh
Publication of WO2022069221A1 publication Critical patent/WO2022069221A1/en

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F7/00Methods or arrangements for processing data by operating upon the order or content of the data handled
    • G06F7/38Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation
    • G06F7/48Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation using non-contact-making devices, e.g. tube, solid state device; using unspecified devices
    • G06F7/544Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation using non-contact-making devices, e.g. tube, solid state device; using unspecified devices for evaluating functions by calculation
    • G06F7/5443Sum of products

Definitions

  • the disclosure relates to an apparatus for performing multiplication and addition.
  • the disclosure also relates to a method for performing multiplication and addition.
  • Exemplary embodiments relate to a device for performing multiplications and additions, for example for convolution operations, comprising: a plurality of processing units, each processing unit of the plurality of processing units having a storage device for at least temporarily storing at least a first input value and a second input value and a multiplier for multiplication of the first input value by the second input value, the device having an adder which is designed to add output values of the multipliers of each processing unit of the plurality of processing units, the device being designed to carry out the following steps: determine using the respective multiplier of the plurality of processing units, a respective output value by multiplying the respective first input value by the respective second input value t, and adding the output values of the multipliers of each processing unit by means of the adder, thereby obtaining a sum.
  • the device is designed to determine the respective output value for the plurality of processing units at the same time.
  • the device is designed to store the sum at least temporarily, for example in a volatile memory.
  • the memory device is a register memory or has memory registers.
  • processing units have a first data interface for, for example bidirectional, data exchange with at least one further processing unit of the plurality of processing units.
  • the first data interface has at least one, for example direct, data connection between at least two memory devices, the first data interface for example having a plurality of data and/or control lines.
  • processing units have a second data interface for, for example at least unidirectional, data exchange with at least one, for example external, unit.
  • the second data interface has a connection to a data bus.
  • the first input values can be transmitted efficiently, e.g. directly from a first column to a second column, e.g. via a respective direct data connection of the corresponding processing units, which means that, for example, no data bus has to be provided for this transmission(s).
  • the first input values can be transmitted efficiently, for example directly from a first line to a second line, for example via a respective direct data connection of the corresponding processing units, which means that no data bus has to be provided for this transmission(s).
  • the device is designed to at least temporarily initialize the first input values from a processing unit, e.g. any one, assigned to the first row of the matrix form and/or from a processing unit, e.g. to be set, for example, to a predefinable value in each case, with the device being designed, for example, to use one or the second data interface for the initialization.
  • a processing unit e.g. any one, assigned to the first row of the matrix form and/or from a processing unit, e.g. to be set, for example, to a predefinable value in each case, with the device being designed, for example, to use one or the second data interface for the initialization.
  • the device is designed to execute at least one of the following elements: a) initialization of the second input values of each processing element based on first initialization values which, for example, a first, a convolution kernel for a, for example, two-dimensional, convolution operation characterizing matrix or whose matrix elements correspond, for example by transmitting the first initialization values to the respective processing elements by means of a or the second data interface, b) initializing the first input values of each processing element based on second initialization values, which correspond, for example, to part of a second matrix or its matrix elements, wherein the second matrix characterizes or has, for example, input data for the convolution operation, for example by transferring the second initialization values to the respective V processing elements by means of a or the second data interface and/or by means of a or the first data interface, c) determining the sum by, for example simultaneously, multiplying the respective first input value by the respective second input value, and, for example following the multiplication, adding the output values of the multipliers
  • the device is designed to execute at least one of the following elements: a) initialization of the second input values of each processing element based on first initialization values which, for example, a first, a convolution kernel for a, for example, two-dimensional, convolution operation characterizing matrix or whose matrix elements correspond, for example by transmitting the first initialization values to the respective processing elements by means of a or the second data interface, b) initializing the first input values of each processing element based on second initialization values, which correspond, for example, to a first part of a second matrix or its matrix elements, wherein the second matrix characterizes or has input data for the convolution operation, for example, and wherein the first part of the second matrix with a first matrix element has a r corresponds to the third matrix characterizing a result of the convolution operation, forming the sum and assigning the sum to the first matrix element of the third Matrix, c) meandering shifting of the convolution kernel with respect to the second matrix by one column or row
  • FIG. 1 For exemplary embodiments, relate to a system for evaluating an artificial neural network, for example a neural network based on convolution operations (English: convolutional neural network), with at least one device according to the embodiments.
  • an artificial neural network for example a neural network based on convolution operations (English: convolutional neural network)
  • English convolutional neural network
  • FIG. 1 For exemplary embodiments, relate to using the device according to the embodiments and/or the system according to the embodiments for at least one of the following elements: a) performing, for example two-dimensional or higher-dimensional, e.g. three-dimensional, convolution operations, b) transmitting, e.g.
  • FIG. 1 schematically shows a simplified block diagram according to exemplary embodiments
  • FIG. 4A schematically shows a simplified flow chart of a method according to further exemplary embodiments
  • FIG. 7 schematically shows aspects of uses according to further exemplary embodiments
  • 8 schematically shows a diagram for illustrating a convolution operation according to further exemplary embodiments.
  • FIG. 1 relate to a device 100 for performing multiplications and additions, for example for convolution operations, comprising: a plurality M-110 of processing units 110-1 , 110-2, 110-3 . . . , cf 2, in which a single processing unit 110 is shown by way of example according to further exemplary embodiments, each processing unit 110-1, 110-2, 110-3, ... (FIG. 1) of the plurality M-110 of processing units has a memory device 112 (Fig. 2) for at least temporarily storing at least one first input value EW1 and a second input value EW2 and a multiplier 114 for multiplying the first input value EW1 by the second input value EW2, the device 100 (Fig.
  • Determining 200 by means of the respective multiplier 114 (Fig. 2) of the plurality of processing units, a respective output value AW by multiplying the respective first input value EW1 by the respective second input value EW2, and adding 210 (Fig. 3) the output values AW of the multipliers 114 of each processing unit 110-1, 110-2, 110-3, ... by means of the adder 120, thereby obtaining a sum SU.
  • the device 100 is designed to determine 200 the respective output value AW for the plurality of processing units simultaneously, e.g. parallel in time by the respective multiplier 114 of the respective processing unit.
  • the device 100 is designed to store the sum SU at least temporarily 220 (FIG. 3), for example in a volatile memory 130 (FIG. 1).
  • the memory device 112 (FIG. 2) is a register memory or has memory registers, for example a first memory register for the first input value EW1 and a second memory register for the second input value EW2.
  • the processing units have a first data interface 116a (FIG. 2) for, for example bidirectional, data exchange DA1 with at least one further processing unit of the plurality M-110 of processing units.
  • the bidirectional data exchange DA1 for example, is additionally symbolized by the optional block 230 according to FIG. 4A.
  • the first data interface 116a has at least one, for example direct, data connection between at least two memory devices 112 of respective processing units, with the first data interface 116a for example having a plurality of data and/or control lines.
  • data for example the first input values EW1
  • EW1 the first input values
  • At least some of the processing units have a second data interface 116b ( FIG. 2 ) for, for example at least unidirectional, data exchange DA2 with at least one, for example external, unit 10 .
  • the at least unidirectional data exchange DA2, for example, is additionally symbolized by the optional block 232 according to FIG. 4A.
  • the second data interface 116b has a connection to a data bus DB.
  • the external unit 10 can also access the data bus DB.
  • n is a square number, eg 9 or 16 or the like. In other exemplary embodiments, n is not a square number.
  • At least 2*(ZW-1)+SW many processing units have the second data interface 116b (FIG. 2), for example for connection to the data bus DB.
  • the processing units of the device 100a according to FIG. 5 are denoted by the reference symbols 110-1, 110-2, 110-3, 110-4, 110-5, 110-6, 110-7, 110-8, 110-9, for example , the memory device of the respective processing units 110-1, 110-2, 110-3, 110-4, 110-5, 110-6, 110-7, 110-8, 110-9 being given the reference symbols 112-1, 112-2, 112-3, 112-4, 112-5, 112-6, 112-7, 112-8, 112-9, and the respective multipliers are given the reference numerals 114-1, 114-2, for example , 114-3, 114-4, 114-5, 114-6, 114-7, 114-8, 114-9.
  • the output values AW (FIG.
  • the device 100a has an adder 120, for example a single one.
  • the respective input values EW1, EW2 (FIG. 2) of the processing units of FIG. 5 are given the reference symbols RA1, RW2, RA2, RW2, . . . RAg, RWg.
  • the further processing units 110-2, 110-5 in the present example do not have a direct data connection to the data bus DB, but can, for example, exchange data with neighboring processing units (send and/or receive) through respective direct data connections 116a (FIG. 2).
  • This is shown in FIG. 5 by way of example at the processing unit 110-2, which has a direct data connection DV1 to the processing unit 110-direct data connection DV2 to the processing unit 110-3 and a direct data connection DV3 to the processing unit 110-5.
  • the further processing units can have comparable further direct data connection(s) to processing units which are adjacent in the logical matrix form MF and are collectively referred to here with the reference symbol DV for the sake of clarity.
  • the device 100, 100a is designed to at least temporarily store the first input values RAi, RA4, RA? from one, e.g. any, first column S1 of the processing units 110-1, 110-4, 110-7 assigned to the matrix form MF to the first input values RA2, RA5, RAs from one, e.g. any, second column S2 of the processing units 110 assigned to the matrix form MF -2, 110-5, 110-6 to transmit, for example to copy, for example the first column S1 being an nth column of the matrix form and the second column S2 of the matrix form a) being an n+1th column of the matrix form is (corresponding, for example, to shifting or transferring the respective first input values to the right in Fig.
  • the first input values RAi, . DB must be provided for this transmission(s) 240.
  • the first input values can be transmitted efficiently, e.g. directly from a first row Z1 to a second row Z2, e.g. via a respective direct data connection DV, DV3 of the corresponding processing units, which means that e.g. no data bus DB is provided for this transmission(s). must become.
  • the initialization can also be carried out, for example, under the control of the device 10 (Fig. 2), as well as possible further steps executable by the device 100, 100a.
  • first initialization values IW which correspond, for example, to a first matrix W characterizing a convolution kernel for a convolution operation, for example two-dimensional, cf. the reference symbol MW from FIG Initialization values IW to the respective processing elements 110-1, .., 110-9 (FIG. 5) by means of the second
  • A() corresponds to an input matrix M-A, W to a convolution kernel M-W, and B to an output matrix M-B.
  • the convolution kernel W can be shifted in a successive meandering manner in relation to the input matrix A, cf. the block arrows A1, A2, A3, which can be done, for example, by corresponding initializations of the respective first input values EW1 or RA of the individual processing units is realizable.
  • the data transmissions required for the initializations can be carried out, for example, via at least one of the data connections 116a, 116b (FIG. 2).
  • the device 100, 100a has as many processing units as the convolution kernel has W elements.
  • the device 100, 100a is designed to execute at least one of the following elements: a) Initialization 260 of the second input values EW2, RW of each processing element based on first initialization values IW, which, for example, the first , a convolution core W for a matrix M-W characterizing, for example, two-dimensional convolution operations, or their matrix elements, for example by transmitting the first initialization values IW to the respective processing elements by means of a or the second data interface 116b or the data bus, b) initializing 262 the first Input values EW1 of each processing element based on second initialization values (IA), which correspond, for example, to a first part of a second matrix A or its matrix elements, the second matrix M-A (Fig.
  • IA second initialization values
  • the meandering shifting 264 re-initializing the first has input values, forming a new sum and assigning the new sum to a further matrix element B(1,0) of the third matrix M-B, which corresponds to a further part of the second matrix M-A.
  • FIG. 2 For evaluating an artificial neural network, for example a neural network based on convolution operations.
  • convolutional neural network CNN
  • the system 10 can efficiently carry out, for example, two-dimensional convolution operations which, in some embodiments, require comparatively little computing time and/or data transmissions via the data bus DB.
  • the system 10 has a device 100 and a control device 11 for at least temporarily controlling operation of the device 100.
  • the control device 11 is connected to the device 100 via the data bus DB, e.g. according to FIG. 5.
  • at least one control line CTRL can be provided via which the control device 11 can have a controlling effect on the device 100, e.g. in order to specify a clock for the initialization and/or execution of multiplications and/or the formation of the sum(s) SU.
  • Fig. 7 relate to a use 200 of the device 100, 100a according to the embodiments and/or the system 10 according to the embodiments, for at least one of the following elements: a) Execution 202 of, for example two-dimensional or higher-dimensional, e.g. three-dimensional, convolution operations, b) Transmission 204, e.g.
  • a controllable data exchange with several, e.g. three different, operating modes is provided between storage registers RA which are adjacent in the logical matrix form MF (FIG. 5).
  • the first input values ("RA values") in the middle column S2 in Fig. 5 are transferred, e.g. copied, to the right column S3, and the left column S1 to the middle column S2.
  • the left column S1 receives three new values from the input matrix M-A, e.g. suppliable via the data bus DB.
  • the RA values of the middle column S2 in Fig. 5 are transferred, e.g. copied, to the left column S1, and the right column S3 to the middle column S2.
  • the right column S3 receives three new values from the input matrix M-A, e.g. suppliable via the data bus DB.
  • the RA values of the middle row Z2 in FIG. 5 are transferred, e.g. copied, to the upper row Z1, and the lower row Z2 to the middle row Z2.
  • the lower row Z3 receives three new values from the matrix M-A, e.g. can be supplied via the data bus DB.
  • the registers RA, RW of the left and right columns S1, S3 in FIG. 5 and the registers RA, RW e.g. the lower row Z3 are connected directly to the data bus DB.
  • the course of the calculation of the result matrix B is as follows: Initialization: The registers RWi to RWg are filled with the values W(0,0), W(0,1), W(0,2), W(1,0), W(2,2) at the beginning of the convolution calculation. occupied, which can be done, for example, by a control computer 11 (FIG. 6) via the data bus DB. The registers RA1..9 with the values A(0,0), A(0,1), A( 0.2), A(1,0), .
  • All processing units 110-1, .., 110-9 multiply, preferably simultaneously, their RA values by their RW values and provide the output values S1 to Sg.
  • the adder 120 (FIG. 5) sums these output values S1 to Sg and calculates thus a value of the matrix B (here: first value B(0,0)), which is stored, for example, in a RAM 130 (FIG. 1).
  • three new values of the input matrix M-A here: A(0,3), A(1,3),A(2,3)
  • you get the next B value here: B(0,1)).
  • more than the three operating modes mentioned above as examples are also conceivable, e.g. shifting from left, right, down, up, i.e. four operating modes, with e.g. only three operating modes needing to be used to calculate convolution operations.
  • omitting one of the exemplary four modes of operation also yield working solutions (e.g., left, down, up slide).
  • an execution of 3D folding operations is also conceivable (e.g. based on a logical three-dimensional Arrangement of processing units, e.g. using sliding from left, right, down and from the front (in the 3rd dimension).
  • a physical arrangement of the processing units 110-1, 110-n relative to each other e.g., on a common substrate (not shown), e.g., according to the matrix form MF.

Abstract

The invention relates to a device for performing multiplication operations and addition operations, comprising a plurality of processing units, wherein each processing unit of the plurality of processing units has a memory apparatus for at least temporarily storing at least a first input value and a second input value and a multiplier for multiplying the first input value by the second input value. The device has an adder, which is designed to add output values of the multipliers of each processing unit of the plurality of processing units. The device is designed to perform the following steps: - determining, by means of each multiplier of the plurality of processing units, a respective output value by multiplication of the respective first input value by the respective second input value; and - adding the output values of the multipliers of each processing unit by means of the adder, whereby a sum is obtained.

Description

Beschreibung description
Titel title
Vorrichtung und Verfahren zum Ausführen von Multiplikationen und Additionen Apparatus and method for performing multiplication and addition
Stand der Technik State of the art
Die Offenbarung betrifft eine Vorrichtung zum Ausführen von Multiplikationen und Additionen. The disclosure relates to an apparatus for performing multiplication and addition.
Die Offenbarung betrifft ferner ein Verfahren zum Ausführen von Multiplikationen und Additionen. The disclosure also relates to a method for performing multiplication and addition.
Offenbarung der Erfindung Disclosure of Invention
Beispielhafte Ausführungsformen beziehen sich auf eine Vorrichtung zum Ausführen von Multiplikationen und Additionen, beispielsweise für Faltungsoperationen, aufweisend: eine Mehrzahl von Verarbeitungseinheiten, wobei jede Verarbeitungseinheit der Mehrzahl von Verarbeitungseinheiten eine Speichereinrichtung zur zumindest zeitweisen Speicherung wenigstens eines ersten Eingangswerts und eines zweiten Eingangswerts und einen Multiplizierer zur Multiplikation des ersten Eingangswerts mit dem zweiten Eingangswert aufweist, wobei die Vorrichtung einen Addierer aufweist, der dazu ausgebildet ist, Ausgangswerte der Multiplizierer jeder Verarbeitungseinheit der Mehrzahl von Verarbeitungseinheiten zu addieren, wobei die Vorrichtung zur Ausführung folgender Schritte ausgebildet ist: Ermitteln, mittels des jeweiligen Multiplizierers der Mehrzahl von Verarbeitungseinheiten, eines jeweiligen Ausgangswerts durch Multiplizieren des jeweiligen ersten Eingangswerts mit dem jeweiligen zweiten Eingangswert, und Addieren der Ausgangswerte der Multiplizierer jeder Verarbeitungseinheit mittels des Addierers, wodurch eine Summe erhalten wird. Bei weiteren beispielhaften Ausführungsformen ist vorgesehen, dass die Vorrichtung dazu ausgebildet ist, das Ermitteln des jeweiligen Ausgangswerts für die Mehrzahl der Verarbeitungseinheiten gleichzeitig auszuführen. Exemplary embodiments relate to a device for performing multiplications and additions, for example for convolution operations, comprising: a plurality of processing units, each processing unit of the plurality of processing units having a storage device for at least temporarily storing at least a first input value and a second input value and a multiplier for multiplication of the first input value by the second input value, the device having an adder which is designed to add output values of the multipliers of each processing unit of the plurality of processing units, the device being designed to carry out the following steps: determine using the respective multiplier of the plurality of processing units, a respective output value by multiplying the respective first input value by the respective second input value t, and adding the output values of the multipliers of each processing unit by means of the adder, thereby obtaining a sum. In further exemplary embodiments, it is provided that the device is designed to determine the respective output value for the plurality of processing units at the same time.
Bei weiteren beispielhaften Ausführungsformen ist vorgesehen, dass die Vorrichtung dazu ausgebildet ist, die Summe zumindest zeitweise zu speichern, beispielsweise in einem flüchtigen Speicher. In further exemplary embodiments, it is provided that the device is designed to store the sum at least temporarily, for example in a volatile memory.
Bei weiteren beispielhaften Ausführungsformen ist vorgesehen, dass die Speichereinrichtung ein Registerspeicher ist bzw. Speicherregister aufweist. In further exemplary embodiments, it is provided that the memory device is a register memory or has memory registers.
Bei weiteren beispielhaften Ausführungsformen ist vorgesehen, dass wenigstens manche der Verarbeitungseinheiten eine erste Datenschnittstelle zum, beispielsweise bidirektionalen, Datenaustausch, mit wenigstens einer weiteren Verarbeitungseinheit der Mehrzahl von Verarbeitungseinheiten aufweisen. In further exemplary embodiments it is provided that at least some of the processing units have a first data interface for, for example bidirectional, data exchange with at least one further processing unit of the plurality of processing units.
Bei weiteren beispielhaften Ausführungsformen ist vorgesehen, dass die erste Datenschnittstelle wenigstens eine, beispielsweise direkte, Datenverbindung zwischen wenigstens zwei Speichereinrichtungen aufweist, wobei beispielsweise die erste Datenschnittstelle eine Mehrzahl von Daten- und/oder Steuerleitungen aufweist. In further exemplary embodiments it is provided that the first data interface has at least one, for example direct, data connection between at least two memory devices, the first data interface for example having a plurality of data and/or control lines.
Bei weiteren beispielhaften Ausführungsformen ist vorgesehen, dass wenigstens manche der Verarbeitungseinheiten eine zweite Datenschnittstelle zum, beispielsweise wenigstens unidirektionalen, Datenaustausch, mit wenigstens einer, beispielsweise externen, Einheit aufweisen. In further exemplary embodiments it is provided that at least some of the processing units have a second data interface for, for example at least unidirectional, data exchange with at least one, for example external, unit.
Bei weiteren beispielhaften Ausführungsformen ist vorgesehen, dass die zweite Datenschnittstelle einen Anschluss an einen Datenbus aufweist. In further exemplary embodiments it is provided that the second data interface has a connection to a data bus.
Bei weiteren beispielhaften Ausführungsformen ist vorgesehen, dass die Mehrzahl von Verarbeitungseinheiten n viele Verarbeitungseinheiten aufweist, mit n = ZW * SW, wobei ZW und SW jeweils natürliche Zahlen größer gleich eins sind. Bei weiteren beispielhaften Ausführungsformen ist vorgesehen, dass wenigstens 2 * (ZW-1) + SW viele Verarbeitungseinheiten die zweite Datenschnittstelle, beispielsweise zum Anschluss an den Datenbus, aufweisen. In further exemplary embodiments, it is provided that the plurality of processing units has n many processing units, with n=ZW*SW, where ZW and SW are natural numbers greater than or equal to one. In further exemplary embodiments, it is provided that at least 2*(ZW-1)+SW many processing units have the second data interface, for example for connection to the data bus.
Bei weiteren beispielhaften Ausführungsformen ist vorgesehen, dass die n = ZW * SW vielen Verarbeitungseinheiten logisch in Matrixform mit ZW vielen Zeilen und mit SW vielen Spalten organisiert sind, wobei beispielsweise a) wenigstens eine direkte Datenverbindung zwischen jeweiligen, beispielsweise einer selben Spalte der Matrixform angehörenden, Verarbeitungseinheiten direkt aufeinander folgender Zeilen der Matrixform besteht und/oder wobei beispielsweise b) wenigstens eine direkte Datenverbindung zwischen jeweiligen, beispielsweise einer selben Zeile der Matrixform angehörenden, Verarbeitungseinheiten direkt aufeinander folgender Spalten der Matrixform besteht. In further exemplary embodiments it is provided that the n = ZW * SW many processing units are logically organized in matrix form with ZW many rows and with SW many columns, with for example a) at least one direct data connection between respective ones, for example belonging to the same column of the matrix form, Processing units consists of directly consecutive rows of the matrix form and/or wherein, for example, b) there is at least one direct data connection between respective processing units, for example belonging to the same row of the matrix form, directly consecutive columns of the matrix form.
Bei weiteren beispielhaften Ausführungsformen ist vorgesehen, dass die Vorrichtung dazu ausgebildet ist, zumindest zeitweise die ersten Eingangswerte von einer, z.B. beliebigen, ersten Spalte der Matrixform zugeordneten Verarbeitungseinheiten auf die ersten Eingangswerte von einer, z.B. beliebigen, zweiten Spalte der Matrixform zugeordneten Verarbeitungseinheiten zu übertragen, beispielsweise zu kopieren, wobei beispielsweise die erste Spalte eine n-te Spalte der Matrixform ist und wobei die zweite Spalte der Matrixform a) eine n+1-te Spalte der Matrixform ist, mit n = 0, 1, .., SW-2, oder b) eine n-1-te Spalte der Matrixform ist, mit n = 1, 2, .., SW-1 , wobei beispielsweise die Vorrichtung dazu ausgebildet ist, für das Übertragen eine bzw. die erste Datenschnittstelle zu verwenden. Dadurch können bei weiteren beispielhaften Ausführungsformen die ersten Eingangswerte effizient z.B. direkt von einer ersten Spalte zu einer zweiten Spalte übertragen werden, z.B. über eine jeweilige direkte Datenverbindung der entsprechenden Verarbeitungseinheiten, wodurch z.B. kein Datenbus für diese Übertragung(en) vorgesehen werden muss. In further exemplary embodiments, it is provided that the device is designed to at least temporarily transfer the first input values from one, e.g. any, processing units assigned to the first column of the matrix form to the first input values of one, e.g. any, second column of the matrix form assigned processing units, to copy, for example, where, for example, the first column is an nth column of matrix form and the second column of matrix form a) is an n+1th column of matrix form, with n=0,1,..,SW-2 , or b) is an n-1st column of the matrix form, with n=1, 2, . As a result, in further exemplary embodiments, the first input values can be transmitted efficiently, e.g. directly from a first column to a second column, e.g. via a respective direct data connection of the corresponding processing units, which means that, for example, no data bus has to be provided for this transmission(s).
Bei weiteren beispielhaften Ausführungsformen ist vorgesehen, dass die Vorrichtung dazu ausgebildet ist, zumindest zeitweise die ersten Eingangswerte von einer, z.B. beliebigen, ersten Zeile der Matrixform zugeordneten Verarbeitungseinheiten auf die ersten Eingangswerte von einer, z.B. beliebigen, zweiten Zeile der Matrixform zugeordneten Verarbeitungseinheiten zu übertragen, beispielsweise zu kopieren, wobei beispielsweise die erste Zeile eine m-te Zeile der Matrixform ist und wobei die zweite Zeile der Matrixform a) eine m- 1-te Zeile der Matrixform ist, mit m = 1, 2, ZW-1, oder b) eine m+1-te Zeile der Matrixform ist, mit m = 0, 1 , ZW-2, wobei beispielsweise die Vorrichtung dazu ausgebildet ist, für das Übertragen eine bzw. die erste Datenschnittstelle zu verwenden. Dadurch können bei weiteren beispielhaften Ausführungsformen die ersten Eingangswerte effizient z.B. direkt von einer ersten Zeile zu einer zweiten Zeile übertragen werden, z.B. über eine jeweilige direkte Datenverbindung der entsprechenden Verarbeitungseinheiten, wodurch z.B. kein Datenbus für diese Übertragung(en) vorgesehen werden muss. In further exemplary embodiments, it is provided that the device is designed to at least temporarily transfer the first input values from one, e.g. any, processing unit assigned to the first row of the matrix form to the first input values from one, e.g. any, second row of the matrix form assigned processing units, to copy, for example, where, for example, the first line is a mth row of matrix form and wherein the second row of matrix form is a) an m-1st row of matrix form, with m = 1, 2, ZW-1, or b) an m+1st row of matrix form is, with m=0, 1, ZW-2, the device being designed, for example, to use one or the first data interface for the transmission. As a result, in further exemplary embodiments, the first input values can be transmitted efficiently, for example directly from a first line to a second line, for example via a respective direct data connection of the corresponding processing units, which means that no data bus has to be provided for this transmission(s).
Bei weiteren beispielhaften Ausführungsformen ist vorgesehen, dass die Vorrichtung dazu ausgebildet ist, zumindest zeitweise die ersten Eingangswerte von einer, z.B. beliebigen, ersten Zeile der Matrixform zugeordneten Verarbeitungseinheiten und/oder von einer, z.B. beliebigen, ersten Spalte der Matrixform zugeordneten Verarbeitungseinheiten, zu initialisieren, beispielsweise auf jeweils einen vorgebbaren Wert zu setzen, wobei beispielsweise die Vorrichtung dazu ausgebildet ist, für das Initialisieren eine bzw. die zweite Datenschnittstelle zu verwenden. In further exemplary embodiments, it is provided that the device is designed to at least temporarily initialize the first input values from a processing unit, e.g. any one, assigned to the first row of the matrix form and/or from a processing unit, e.g. to be set, for example, to a predefinable value in each case, with the device being designed, for example, to use one or the second data interface for the initialization.
Bei weiteren beispielhaften Ausführungsformen ist vorgesehen, dass die Vorrichtung zur Ausführung wenigstens eines der folgenden Elemente ausgebildet ist: a) Initialisieren der zweiten Eingangswerte jedes Verarbeitungselements basierend auf ersten Initialisierungswerten, die beispielsweise einer ersten, einen Faltungskern für eine, beispielsweise zweidimensionale, Faltungsoperation charakterisierenden Matrix bzw. deren Matrixelementen entsprechen, beispielsweise durch Übertragen der ersten Initialisierungswerte zu den jeweiligen Verarbeitungselementen mittels einer bzw. der zweiten Datenschnittstelle, b) Initialisieren der ersten Eingangswerte jedes Verarbeitungselements basierend auf zweiten Initialisierungswerten, die beispielsweise einem Teil einer zweiten Matrix bzw. deren Matrixelementen entsprechen, wobei die zweite Matrix z.B. Eingangsdaten für die Faltungsoperation charakterisiert bzw. aufweist, beispielsweise durch Übertragen der zweiten Initialisierungswerte zu den jeweiligen Verarbeitungselementen mittels einer bzw. der zweiten Datenschnittstelle und/oder mittels einer bzw. der ersten Datenschnittstelle, c) Ermitteln der Summe durch, beispielsweise gleichzeitiges, Multiplizieren des jeweiligen ersten Eingangswerts mit dem jeweiligen zweiten Eingangswert, und, beispielsweise auf das Multiplizieren folgend, Addieren der Ausgangswerte der Multiplizierer jeder Verarbeitungseinheit mittels des Addierers, wodurch die Summe erhalten wird, d) optional, Zuweisen der Summe zu einem ersten Matrixelement einer dritten Matrix, die ein Ergebnis der Faltungsoperation charakterisiert, e) Übertragen von Daten der ersten Eingangswerte von Verarbeitungselementen einer i-ten Spalte der Matrixform, mit i = 1, 2, SW-2, auf die jeweiligen ersten Eingangswerte vonIn further exemplary embodiments, it is provided that the device is designed to execute at least one of the following elements: a) initialization of the second input values of each processing element based on first initialization values which, for example, a first, a convolution kernel for a, for example, two-dimensional, convolution operation characterizing matrix or whose matrix elements correspond, for example by transmitting the first initialization values to the respective processing elements by means of a or the second data interface, b) initializing the first input values of each processing element based on second initialization values, which correspond, for example, to part of a second matrix or its matrix elements, wherein the second matrix characterizes or has, for example, input data for the convolution operation, for example by transferring the second initialization values to the respective V processing elements by means of a or the second data interface and/or by means of a or the first data interface, c) determining the sum by, for example simultaneously, multiplying the respective first input value by the respective second input value, and, for example following the multiplication, adding the output values of the multipliers of each processing unit by means of the adder, whereby the sum is obtained, d) optionally, assigning the sum to a first matrix element of a third matrix characterizing a result of the convolution operation , e) transferring data of the first input values of processing elements of an i-th column of the matrix form, with i=1, 2, SW-2, to the respective first input values of
Verarbeitungselementen einer i-1-ten Spalte der Matrixform und Initialisieren der ersten Eingangswerte von Verarbeitungselementen der SW-1-ten Spalte der Matrixform basierend auf weiteren zweiten Initialisierungswerten, die beispielsweise einem weiteren Teil der zweiten Matrix entsprechen, f) Ermitteln einer weiteren Summe durch, beispielsweise gleichzeitiges, Multiplizieren des jeweiligen ersten Eingangswerts mit dem jeweiligen zweiten Eingangswert, und, beispielsweise auf das Multiplizieren folgend, Addieren der Ausgangswerte der Multiplizierer jeder Verarbeitungseinheit mittels des Addierers, wodurch die weitere Summe erhalten wird, g) optional, Zuweisen der weiteren Summe zu einem zweiten Matrixelement der dritten Matrix, und, h) optional, Wiederholen der Schritte des Übertragens, des Initialisierens, des Ermittelns und, optional, des Zuweisens. Processing elements of an i-1st column of the matrix form and initializing the first input values of processing elements of the SW-1st column of the matrix form based on further second initialization values which correspond, for example, to a further part of the second matrix, f) determining a further sum by, for example simultaneously, multiplying the respective first input value with the respective second input value, and, for example following the multiplication, adding the output values of the multipliers of each processing unit by means of the adder, whereby the further sum is obtained, g) optionally, assigning the further sum to a second matrix element of the third matrix, and, h) optionally, repeating the steps of transferring, initializing, determining and, optionally, assigning.
Bei weiteren beispielhaften Ausführungsformen ist vorgesehen, dass die Vorrichtung zur Ausführung wenigstens eines der folgenden Elemente ausgebildet ist: a) Initialisieren der zweiten Eingangswerte jedes Verarbeitungselements basierend auf ersten Initialisierungswerten, die beispielsweise einer ersten, einen Faltungskern für eine, beispielsweise zweidimensionale, Faltungsoperation charakterisierenden Matrix bzw. deren Matrixelementen entsprechen, beispielsweise durch Übertragen der ersten Initialisierungswerte zu den jeweiligen Verarbeitungselementen mittels einer bzw. der zweiten Datenschnittstelle, b) Initialisieren der ersten Eingangswerte jedes Verarbeitungselements basierend auf zweiten Initialisierungswerten, die beispielsweise einem ersten Teil einer zweiten Matrix bzw. deren Matrixelementen entsprechen, wobei die zweite Matrix z.B. Eingangsdaten für die Faltungsoperation charakterisiert bzw. aufweist und wobei der erste Teil der zweiten Matrix mit einem ersten Matrixelement einer dritten Matrix korrespondiert, die ein Ergebnis der Faltungsoperation charakterisiert, Bilden der Summe und zuweisen der Summe zu dem ersten Matrixelement der dritten Matrix, c) mäanderförmiges Verschieben des Faltungskerns bezüglich der zweiten Matrix um jeweils eine Spalte oder Zeile, wobei das mäanderförmige Verschieben ein erneutes Initialisieren der ersten Eingangswerte aufweist, Bilden einer neuen Summe und Zuweisen der neuen Summe zu einem weiteren Matrixelement der dritten Matrix, das mit einem weiteren Teil der zweiten Matrix korrespondiert. In further exemplary embodiments, it is provided that the device is designed to execute at least one of the following elements: a) initialization of the second input values of each processing element based on first initialization values which, for example, a first, a convolution kernel for a, for example, two-dimensional, convolution operation characterizing matrix or whose matrix elements correspond, for example by transmitting the first initialization values to the respective processing elements by means of a or the second data interface, b) initializing the first input values of each processing element based on second initialization values, which correspond, for example, to a first part of a second matrix or its matrix elements, wherein the second matrix characterizes or has input data for the convolution operation, for example, and wherein the first part of the second matrix with a first matrix element has a r corresponds to the third matrix characterizing a result of the convolution operation, forming the sum and assigning the sum to the first matrix element of the third Matrix, c) meandering shifting of the convolution kernel with respect to the second matrix by one column or row in each case, the meandering shifting having a reinitialization of the first input values, forming a new sum and assigning the new sum to a further matrix element of the third matrix, which with corresponds to another part of the second matrix.
Weitere beispielhafte Ausführungsformen beziehen sich auf ein System zum Auswerten eines künstlichen neuronalen Netzwerks, beispielsweise eines auf Faltungsoperationen basierenden neuronalen Netzwerks (englisch: convolutional neural network), mit wenigstens einer Vorrichtung gemäß den Ausführungsformen. Further exemplary embodiments relate to a system for evaluating an artificial neural network, for example a neural network based on convolution operations (English: convolutional neural network), with at least one device according to the embodiments.
Weitere beispielhafte Ausführungsformen beziehen sich auf eine Verwendung der Vorrichtung gemäß den Ausführungsformen und/oder des Systems gemäß den Ausführungsformen, für wenigstens eines der folgenden Elemente: a) Ausführen von, beispielsweise zweidimensionalen oder höherdimensionalen, z.B. dreidimensionalen, Faltungsoperationen, b) Übertragen, beispielsweise direktes Übertragen, von Daten einzelner Verarbeitungselemente der Vorrichtung zu weiteren Verarbeitungselementen der Vorrichtung, beispielsweise mittels wenigstens einer direkten Datenverbindung, die beispielsweise innerhalb der Vorrichtung angeordnet ist, c) Verwenden, beispielsweise Wiederverwenden, von in der Vorrichtung vorhandenen Initialisierungswerten, beispielsweise Wiederverwenden wenigstens eines Teils von für eine Ermittlung eines ersten Matrixelements einer Ergebnismatrix der Faltungsoperation verwendeten Initialisierungswerten für eine Ermittlung wenigstens eines zweiten Matrixelements der Ergebnismatrix der Faltungsoperation, d) Bereitstellen eines Hardwarebeschleunigers für ein- oder mehrdimensionale Faltungsoperationen, beispielsweise zur Auswertung von auf ein- oder mehrdimensionalen, beispielsweise zweidimensionalen, Faltungsoperationen beruhenden neuronalen Netzwerken. Further exemplary embodiments relate to using the device according to the embodiments and/or the system according to the embodiments for at least one of the following elements: a) performing, for example two-dimensional or higher-dimensional, e.g. three-dimensional, convolution operations, b) transmitting, e.g. directly Transmission of data from individual processing elements of the device to further processing elements of the device, for example by means of at least one direct data connection, which is arranged, for example, within the device, c) using, for example reusing, initialization values present in the device, for example reusing at least part of for a determination of a first matrix element of a result matrix of the convolution operation used initialization values for a determination of at least a second matrix element of the result matrix of the convolution gsoperation, d) providing a hardware accelerator for one- or multi-dimensional convolution operations, for example for evaluating neural networks based on one- or multi-dimensional, for example two-dimensional, convolution operations.
Weitere Merkmale, Anwendungsmöglichkeiten und Vorteile der Erfindung ergeben sich aus der nachfolgenden Beschreibung von Ausführungsbeispielen der Erfindung, die in den Figuren der Zeichnung dargestellt sind. Dabei bilden alle beschriebenen oder dargestellten Merkmale für sich oder in beliebiger Kombination den Gegenstand der Erfindung, unabhängig von ihrer Zusammenfassung in den Ansprüchen oder deren Rückbeziehung sowie unabhängig von ihrer Formulierung bzw. Darstellung in der Beschreibung bzw. in der Zeichnung. Further features, application possibilities and advantages of the invention result from the following description of exemplary embodiments of the invention, which are illustrated in the figures of the drawing. All of the features described or shown form on their own or in any combination Combination of the subject matter of the invention, regardless of their summary in the claims or their back reference and regardless of their wording or representation in the description or in the drawing.
In der Zeichnung zeigt: In the drawing shows:
Fig. 1 schematisch ein vereinfachtes Blockdiagramm gemäß beispielhaften Ausführungsformen, 1 schematically shows a simplified block diagram according to exemplary embodiments,
Fig. 2 schematisch ein vereinfachtes Blockdiagramm gemäß weiteren beispielhaften Ausführungsformen, 2 schematically shows a simplified block diagram according to further exemplary embodiments,
Fig. 3 schematisch ein vereinfachtes Flussdiagramm eines Verfahrens gemäß weiteren beispielhaften Ausführungsformen, 3 schematically shows a simplified flowchart of a method according to further exemplary embodiments,
Fig. 4A schematisch ein vereinfachtes Flussdiagramm eines Verfahrens gemäß weiteren beispielhaften Ausführungsformen, 4A schematically shows a simplified flow chart of a method according to further exemplary embodiments,
Fig. 4B schematisch ein vereinfachtes Flussdiagramm eines Verfahrens gemäß weiteren beispielhaften Ausführungsformen, 4B schematically shows a simplified flow chart of a method according to further exemplary embodiments,
Fig. 4C schematisch ein vereinfachtes Flussdiagramm eines Verfahrens gemäß weiteren beispielhaften Ausführungsformen, 4C schematically shows a simplified flow chart of a method according to further exemplary embodiments,
Fig. 4D schematisch ein vereinfachtes Flussdiagramm eines Verfahrens gemäß weiteren beispielhaften Ausführungsformen, 4D schematically shows a simplified flowchart of a method according to further exemplary embodiments,
Fig. 5 schematisch ein vereinfachtes Blockdiagramm gemäß weiteren beispielhaften Ausführungsformen, 5 schematically shows a simplified block diagram according to further exemplary embodiments,
Fig. 6 schematisch ein vereinfachtes Blockdiagramm gemäß weiteren beispielhaften Ausführungsformen, 6 schematically shows a simplified block diagram according to further exemplary embodiments,
Fig. 7 schematisch Aspekte von Verwendungen gemäß weiteren beispielhaften Ausführungsformen, und Fig. 8 schematisch ein Diagramm zur Veranschaulichung einer Faltungsoperation gemäß weiteren beispielhaften Ausführungsformen. 7 schematically shows aspects of uses according to further exemplary embodiments, and 8 schematically shows a diagram for illustrating a convolution operation according to further exemplary embodiments.
Beispielhafte Ausführungsformen, Fig. 1 , beziehen sich auf eine Vorrichtung 100 zum Ausführen von Multiplikationen und Additionen, beispielsweise für Faltungsoperationen, aufweisend: eine Mehrzahl M-110 von Verarbeitungseinheiten 110-1 , 110-2, 110-3, ... , vgl. auch Fig. 2, in der beispielhaft eine einzelne Verarbeitungseinheit 110 gemäß weiteren beispielhaften Ausführungsformen gezeigt ist, wobei jede Verarbeitungseinheit 110-1 , 110-2, 110-3, ... (Fig. 1) der Mehrzahl M-110 von Verarbeitungseinheiten eine Speichereinrichtung 112 (Fig. 2) zur zumindest zeitweisen Speicherung wenigstens eines ersten Eingangswerts EW1 und eines zweiten Eingangswerts EW2 aufweist und einen Multiplizierer 114 zur Multiplikation des ersten Eingangswerts EW1 mit dem zweiten Eingangswert EW2, wobei die Vorrichtung 100 (Fig. 1) einen, beispielsweise einen einzigen, Addierer 120 aufweist, der dazu ausgebildet ist, Ausgangswerte M-AW der Multiplizierer 114 jeder Verarbeitungseinheit 110-1 , 110-2, 110-3, ... der Mehrzahl M-110 von Verarbeitungseinheiten 110-1 , 110-2, 110-3, ... zu addieren, wobei die Vorrichtung 100 zur Ausführung folgender Schritte ausgebildet ist, Fig. 3: Exemplary embodiments, FIG. 1 , relate to a device 100 for performing multiplications and additions, for example for convolution operations, comprising: a plurality M-110 of processing units 110-1 , 110-2, 110-3 . . . , cf 2, in which a single processing unit 110 is shown by way of example according to further exemplary embodiments, each processing unit 110-1, 110-2, 110-3, ... (FIG. 1) of the plurality M-110 of processing units has a memory device 112 (Fig. 2) for at least temporarily storing at least one first input value EW1 and a second input value EW2 and a multiplier 114 for multiplying the first input value EW1 by the second input value EW2, the device 100 (Fig. 1) having a has, for example, a single adder 120 which is designed to add output values M-AW of the multipliers 114 of each processing unit 110-1, 110-2, 110-3, ... of the plurality M-110 of processing units 110-1, 110-2, 110-3, ..., the device 100 being designed to carry out the following steps, Fig. 3:
Ermitteln 200, mittels des jeweiligen Multiplizierers 114 (Fig. 2) der Mehrzahl von Verarbeitungseinheiten, eines jeweiligen Ausgangswerts AW durch Multiplizieren des jeweiligen ersten Eingangswerts EW1 mit dem jeweiligen zweiten Eingangswert EW2, und Addieren 210 (Fig. 3) der Ausgangswerte AW der Multiplizierer 114 jeder Verarbeitungseinheit 110-1 , 110-2, 110-3, ... mittels des Addierers 120, wodurch eine Summe SU erhalten wird. Determining 200, by means of the respective multiplier 114 (Fig. 2) of the plurality of processing units, a respective output value AW by multiplying the respective first input value EW1 by the respective second input value EW2, and adding 210 (Fig. 3) the output values AW of the multipliers 114 of each processing unit 110-1, 110-2, 110-3, ... by means of the adder 120, thereby obtaining a sum SU.
Bei weiteren beispielhaften Ausführungsformen ist vorgesehen, dass die Vorrichtung 100 dazu ausgebildet ist, das Ermitteln 200 des jeweiligen Ausgangswerts AW für die Mehrzahl der Verarbeitungseinheiten gleichzeitig auszuführen, z.B. zeitlich parallel durch den jeweiligen Multiplizierer 114 der jeweiligen Verarbeitungseinheit. In further exemplary embodiments, it is provided that the device 100 is designed to determine 200 the respective output value AW for the plurality of processing units simultaneously, e.g. parallel in time by the respective multiplier 114 of the respective processing unit.
Bei weiteren beispielhaften Ausführungsformen ist vorgesehen, dass die Vorrichtung 100 dazu ausgebildet ist, die Summe SU zumindest zeitweise zu speichern 220 (Fig. 3), beispielsweise in einem flüchtigen Speicher 130 (Fig. 1). Bei weiteren beispielhaften Ausführungsformen ist vorgesehen, dass die Speichereinrichtung 112 (Fig. 2) ein Registerspeicher ist bzw. Speicherregister aufweist, beispielsweise ein erstes Speicherregister für den ersten Eingangswert EW1 und ein zweites Speicherregister für den zweiten Eingangswert EW2. In further exemplary embodiments, it is provided that the device 100 is designed to store the sum SU at least temporarily 220 (FIG. 3), for example in a volatile memory 130 (FIG. 1). In further exemplary embodiments, it is provided that the memory device 112 (FIG. 2) is a register memory or has memory registers, for example a first memory register for the first input value EW1 and a second memory register for the second input value EW2.
Bei weiteren beispielhaften Ausführungsformen ist vorgesehen, dass wenigstens manche der Verarbeitungseinheiten eine erste Datenschnittstelle 116a (Fig. 2) zum, beispielsweise bidirektionalen, Datenaustausch DA1 , mit wenigstens einer weiteren Verarbeitungseinheit der Mehrzahl M-110 von Verarbeitungseinheiten aufweisen. Der beispielsweise bidirektionale Datenaustausch DA1 ist zusätzlich durch den optionalen Block 230 gemäß Fig. 4A symbolisiert. In further exemplary embodiments, it is provided that at least some of the processing units have a first data interface 116a (FIG. 2) for, for example bidirectional, data exchange DA1 with at least one further processing unit of the plurality M-110 of processing units. The bidirectional data exchange DA1, for example, is additionally symbolized by the optional block 230 according to FIG. 4A.
Bei weiteren beispielhaften Ausführungsformen ist vorgesehen, dass die erste Datenschnittstelle 116a wenigstens eine, beispielsweise direkte, Datenverbindung zwischen wenigstens zwei Speichereinrichtungen 112 jeweiliger Verarbeitungseinheiten aufweist, wobei beispielsweise die erste Datenschnittstelle 116a eine Mehrzahl von Daten- und/oder Steuerleitungen aufweist. Auf diese Weise können Daten, beispielsweise die ersten Eingangswerte EW1, bei weiteren beispielhaften Ausführungsformen, effizient und direkt zwischen den Speichereinrichtungen 112 der jeweiligen Verarbeitungseinheiten ausgetauscht werden. In further exemplary embodiments it is provided that the first data interface 116a has at least one, for example direct, data connection between at least two memory devices 112 of respective processing units, with the first data interface 116a for example having a plurality of data and/or control lines. In this way, data, for example the first input values EW1, can be exchanged efficiently and directly between the memory devices 112 of the respective processing units in further exemplary embodiments.
Bei weiteren beispielhaften Ausführungsformen ist vorgesehen, dass wenigstens manche der Verarbeitungseinheiten eine zweite Datenschnittstelle 116b (Fig. 2) zum, beispielsweise wenigstens unidirektionalen, Datenaustausch DA2, mit wenigstens einer, beispielsweise externen, Einheit 10 aufweisen. Der beispielsweise wenigstens unidirektionale Datenaustausch DA2 ist zusätzlich durch den optionalen Block 232 gemäß Fig. 4A symbolisiert. In further exemplary embodiments it is provided that at least some of the processing units have a second data interface 116b ( FIG. 2 ) for, for example at least unidirectional, data exchange DA2 with at least one, for example external, unit 10 . The at least unidirectional data exchange DA2, for example, is additionally symbolized by the optional block 232 according to FIG. 4A.
Bei weiteren beispielhaften Ausführungsformen ist vorgesehen, dass die zweite Datenschnittstelle 116b einen Anschluss an einen Datenbus DB aufweist. Bei weiteren beispielhaften Ausführungsformen ist vorgesehen, dass z.B. auch die externe Einheit 10 auf den Datenbus DB zugreifen kann. In further exemplary embodiments it is provided that the second data interface 116b has a connection to a data bus DB. In further exemplary embodiments it is provided that, for example, the external unit 10 can also access the data bus DB.
Bei weiteren beispielhaften Ausführungsformen ist vorgesehen, dass die Mehrzahl M-110 (Fig. 1) von Verarbeitungseinheiten n viele Verarbeitungseinheiten 110-1 , 110-2, ..aufweist, mit n = ZW * SW, wobei ZW und SW jeweils natürliche Zahlen größer gleich eins sind. Bei weiteren beispielhaften Ausführungsformen ist vorgesehen, dass n eine Quadratzahl, z.B. 9 oder 16 oder dergleichen ist. Bei weiteren beispielhaften Ausführungsformen ist n keine Quadratzahl. In further exemplary embodiments it is provided that the plurality M-110 (FIG. 1) of processing units n many processing units 110-1, 110-2, .., with n=ZW*SW, where ZW and SW are natural numbers greater than or equal to one. In further exemplary embodiments it is provided that n is a square number, eg 9 or 16 or the like. In other exemplary embodiments, n is not a square number.
Bei weiteren beispielhaften Ausführungsformen ist vorgesehen, dass wenigstens 2 * (ZW-1) + SW viele Verarbeitungseinheiten die zweite Datenschnittstelle 116b (Fig. 2), beispielsweise zum Anschluss an den Datenbus DB, aufweisen. In further exemplary embodiments it is provided that at least 2*(ZW-1)+SW many processing units have the second data interface 116b (FIG. 2), for example for connection to the data bus DB.
Bei weiteren beispielhaften Ausführungsformen 100a, Fig. 5, ist vorgesehen, dass die n = ZW * SW vielen Verarbeitungseinheiten logisch in Matrixform MF mit ZW (vorliegend z.B. ZW=3) vielen Zeilen Z1 , Z2, Z3 und mit SW (vorliegend z.B. SW=3) vielen Spalten S1 , S2, S3 organisiert sind, wobei beispielsweise a) wenigstens eine direkte Datenverbindung DV1 , DV2, DV3 zwischen jeweiligen, beispielsweise einer selben Spalte der Matrixform MF angehörenden, Verarbeitungseinheiten direkt aufeinander folgender Zeilen der Matrixform MF besteht und/oder wobei beispielsweise b) wenigstens eine direkte Datenverbindung zwischen jeweiligen, beispielsweise einer selben Zeile der Matrixform MF angehörenden, Verarbeitungseinheiten direkt aufeinander folgender Spalten der Matrixform MF besteht. In further exemplary embodiments 100a, Fig. 5, it is provided that the n = ZW * SW many processing units logically in matrix form MF with ZW (here e.g. ZW=3) many rows Z1, Z2, Z3 and with SW (here e.g. SW= 3) many columns S1, S2, S3 are organized, with, for example, a) at least one direct data connection DV1, DV2, DV3 between respective processing units, for example belonging to the same column of the matrix form MF, directly following rows of the matrix form MF and/or where for example b) there is at least one direct data connection between respective processing units, for example belonging to the same row of the matrix form MF, directly following columns of the matrix form MF.
Die Verarbeitungseinheiten der Vorrichtung 100a gemäß Fig. 5 sind beispielhaft mit den Bezugszeichen 110-1 , 110-2, 110-3, 110-4, 110-5, 110-6, 110-7, 110-8, 110-9 bezeichnet, wobei die Speichereinrichtung der jeweiligen Verarbeitungseinheiten 110-1 , 110-2, 110-3, 110-4, 110-5, 110-6, 110-7, 110-8, 110-9 beispielhaft mit den Bezugszeichen 112-1 , 112-2, 112-3, 112-4, 112-5, 112-6, 112-7, 112-8, 112-9 bezeichnet sind, und wobei die jeweiligen Multiplizierer beispielhaft mit den Bezugszeichen 114-1 , 114-2, 114-3, 114-4, 114-5, 114-6, 114-7, 114-8, 114-9 bezeichnet sind. Die Ausgangswerte AW (Fig. 2) der Multiplizierer 114-1 , 114-2, .., 114-9 gemäß Fig. 9 sind vorliegend mit den Bezugszeichen Si , S2, S3, S4, S5, Se, S7, Ss, Sg bezeichnet. Ferner weist die Vorrichtung 100a einen, z.B. einzigen, Addierer 120 auf. Die jeweiligen Eingangswerte EW1 , EW2 (Fig. 2) der Verarbeitungseinheiten der Fig. 5 sind vorliegend beispielhaft mit den Bezugszeichen RA1, RW2, RA2, RW2, .., RAg, RWg bezeichnet. Vorliegend sind beispielhaft die Verarbeitungseinheiten 110-1 , 110-3, 110-4, 110- 6, 110-7, 110-8, 110-9 mit jeweiligen zweiten Datenschnittstellen 116b (Fig. 2), vgl. die Pfeile DB' aus Fig. 5, an den Datenbus DB angebunden, an den auch der Addierer 120 angebunden ist, wodurch die Verarbeitungseinheiten 110-1 , 110-3, 110-4, 110-6, 110-7, 110-8, 110-9 effizient über den Datenbus DB mit Daten versorgbar sind. The processing units of the device 100a according to FIG. 5 are denoted by the reference symbols 110-1, 110-2, 110-3, 110-4, 110-5, 110-6, 110-7, 110-8, 110-9, for example , the memory device of the respective processing units 110-1, 110-2, 110-3, 110-4, 110-5, 110-6, 110-7, 110-8, 110-9 being given the reference symbols 112-1, 112-2, 112-3, 112-4, 112-5, 112-6, 112-7, 112-8, 112-9, and the respective multipliers are given the reference numerals 114-1, 114-2, for example , 114-3, 114-4, 114-5, 114-6, 114-7, 114-8, 114-9. The output values AW (FIG. 2) of the multipliers 114-1, 114-2, .., 114-9 according to FIG. 9 are given the reference symbols Si, S2, S3, S4, S5, Se, S7, Ss, Sg designated. Furthermore, the device 100a has an adder 120, for example a single one. The respective input values EW1, EW2 (FIG. 2) of the processing units of FIG. 5 are given the reference symbols RA1, RW2, RA2, RW2, . . . RAg, RWg. In the present example, the processing units 110-1, 110-3, 110-4, 110-6, 110-7, 110-8, 110-9 with respective second data interfaces 116b (FIG. 2), see the arrows DB′ 5, connected to the data bus DB, to which the adder 120 is also connected, whereby the processing units 110-1, 110-3, 110-4, 110-6, 110-7, 110-8, 110-9 efficiently can be supplied with data via the data bus DB.
Die weiteren Verarbeitungseinheiten 110-2, 110-5 weisen vorliegend beispielhaft keine direkte Datenanbindung an den Datenbus DB auf, können aber z.B. durch jeweilige direkte Datenverbindungen 116a (Fig. 2) zu benachbarten Verarbeitungseinheiten Daten mit diesen austauschen (Senden und/oder Empfangen). Dies ist in Fig. 5 beispielhaft an der Verarbeitungseinheit 110-2 gezeigt, die eine direkte Datenverbindung DV1 zu der Verarbeitungseinheit 110- direkte Datenverbindung DV2 zu der Verarbeitungseinheit 110-3 und eine direkte Datenverbindung DV3 zu der Verarbeitungseinheit 110-5 aufweist. Die weiteren Verarbeitungseinheiten können bei weiteren beispielhaften Ausführungsformen vergleichbare weitere direkte Datenverbindung(en) zu in der logischen Matrixform MF benachbarten Verarbeitungseinheiten aufweisen, die vorliegend der Übersichtlichkeit halber kollektiv mit dem Bezugszeichen DV bezeichnet sind. The further processing units 110-2, 110-5 in the present example do not have a direct data connection to the data bus DB, but can, for example, exchange data with neighboring processing units (send and/or receive) through respective direct data connections 116a (FIG. 2). This is shown in FIG. 5 by way of example at the processing unit 110-2, which has a direct data connection DV1 to the processing unit 110-direct data connection DV2 to the processing unit 110-3 and a direct data connection DV3 to the processing unit 110-5. In further exemplary embodiments, the further processing units can have comparable further direct data connection(s) to processing units which are adjacent in the logical matrix form MF and are collectively referred to here with the reference symbol DV for the sake of clarity.
Bei weiteren beispielhaften Ausführungsformen ist vorgesehen, dass die Vorrichtung 100, 100a dazu ausgebildet ist, zumindest zeitweise die ersten Eingangswerte RAi, RA4, RA? von einer, z.B. beliebigen, ersten Spalte S1 der Matrixform MF zugeordneten Verarbeitungseinheiten 110-1 , 110-4, 110-7 auf die ersten Eingangswerte RA2, RA5, RAs von einer, z.B. beliebigen, zweiten Spalte S2 der der Matrixform MF zugeordneten Verarbeitungseinheiten 110-2, 110-5, 110-6 zu übertragen, beispielsweise zu kopieren, wobei beispielsweise die erste Spalte S1 eine n-te Spalte der Matrixform ist und wobei die zweite Spalte S2 der Matrixform a) eine n+1-te Spalte der Matrixform ist (entsprechend z.B. einem in Fig. 5 nach rechts Verschieben bzw. Übertragen der jeweiligen ersten Eingangswerte), mit n = 0, 1, .., SW-2, oder b) eine n-1-te Spalte der Matrixform ist (entsprechend z.B. einem in Fig. 5 nach links Verschieben bzw. Übertragen der jeweiligen ersten Eingangswerte), mit n = 1, 2, .., SW-1 , wobei beispielsweise die Vorrichtung 100a dazu ausgebildet ist, für das Übertragen eine bzw. die erste Datenschnittstelle 116a zu verwenden. Dadurch können bei weiteren beispielhaften Ausführungsformen die ersten Eingangswerte RAi, .. effizient z.B. direkt von einer ersten Spalte S1 zu einer zweiten Spalte S2 der Matrixform MF übertragen werden, z.B. über eine jeweilige direkte Datenverbindung DV1 bzw. DV der entsprechenden Verarbeitungseinheiten, wodurch z.B. kein Datenbus DB für diese Übertragung(en) 240 vorgesehen werden muss. In further exemplary embodiments, it is provided that the device 100, 100a is designed to at least temporarily store the first input values RAi, RA4, RA? from one, e.g. any, first column S1 of the processing units 110-1, 110-4, 110-7 assigned to the matrix form MF to the first input values RA2, RA5, RAs from one, e.g. any, second column S2 of the processing units 110 assigned to the matrix form MF -2, 110-5, 110-6 to transmit, for example to copy, for example the first column S1 being an nth column of the matrix form and the second column S2 of the matrix form a) being an n+1th column of the matrix form is (corresponding, for example, to shifting or transferring the respective first input values to the right in Fig. 5), with n = 0, 1, .., SW-2, or b) is an n-1st column of the matrix form (corresponding to eg a shift to the left in FIG. 5 or transmission of the respective first input values) with n=1, 2, To use data interface 116a. As a result, in further exemplary embodiments, the first input values RAi, . DB must be provided for this transmission(s) 240.
Bei weiteren beispielhaften Ausführungsformen ist vorgesehen, dass die Vorrichtung 100, 100a dazu ausgebildet ist, zumindest zeitweise die ersten Eingangswerte RAi, RA2, RA3 von einer, z.B. beliebigen, ersten Zeile Z1 der Matrixform MF zugeordneten Verarbeitungseinheiten 110-1 , 110-2, 110-3 auf die ersten Eingangswerte RA4, RA5, RAe von einer, z.B. beliebigen, zweiten Zeile Z2 der Matrixform MF zugeordneten Verarbeitungseinheiten zu übertragen, vgl. Schritt 242 aus Fig. 4B, beispielsweise zu kopieren, wobei beispielsweise die erste Zeile Z1 eine m-te Zeile der Matrixform MF ist und wobei die zweite Zeile Z2 der Matrixform MF a) eine m-1-te Zeile der Matrixform ist, mit m = 1 , 2, .., ZW- 1 , oder b) eine m+1-te Zeile der Matrixform ist, mit m = 0, 1 , .., ZW-2, wobei beispielsweise die Vorrichtung 100, 100a dazu ausgebildet ist, für das Übertragen 242 eine bzw. die erste Datenschnittstelle 116a zu verwenden. Dadurch können bei weiteren beispielhaften Ausführungsformen die ersten Eingangswerte effizient z.B. direkt von einer ersten Zeile Z1 zu einer zweiten Zeile Z2 übertragen werden, z.B. über eine jeweilige direkte Datenverbindung DV, DV3 der entsprechenden Verarbeitungseinheiten, wodurch z.B. kein Datenbus DB für diese Übertragung(en) vorgesehen werden muss. In further exemplary embodiments, it is provided that the device 100, 100a is designed to at least temporarily receive the first input values RAi, RA2, RA3 from a processing unit 110-1, 110-2, 110 -3 to the first input values RA4, RA5, RAe of a processing unit assigned, e.g. any, second row Z2 of the matrix form MF, cf. step 242 from FIG. th row of the matrix form MF and where the second row Z2 of the matrix form MF is a) an m-1st row of the matrix form, with m = 1 , 2, .., ZW- 1 , or b) an m+1- th row of the matrix form is, with m=0, 1, . As a result, in further exemplary embodiments, the first input values can be transmitted efficiently, e.g. directly from a first row Z1 to a second row Z2, e.g. via a respective direct data connection DV, DV3 of the corresponding processing units, which means that e.g. no data bus DB is provided for this transmission(s). must become.
Bei weiteren beispielhaften Ausführungsformen ist vorgesehen, dass die Vorrichtung 100, 100a dazu ausgebildet ist, zumindest zeitweise die ersten Eingangswerte EW1 bzw. gemäß Fig. 5 RAj, mit i=1 , .., 9, von einer, z.B. beliebigen, ersten Zeile Z1 der Matrixform MF zugeordneten Verarbeitungseinheiten und/oder von einer, z.B. beliebigen, ersten Spalte S1 der Matrixform MF zugeordneten Verarbeitungseinheiten, zu initialisieren, vgl. Schritt 244 aus Fig. 4B, beispielsweise auf jeweils einen vorgebbaren Wert zu setzen, wobei beispielsweise die Vorrichtung 100, 100a dazu ausgebildet ist, für das Initialisieren 244 eine bzw. die zweite Datenschnittstelle 116b, z.B. unter Nutzung des Datenbus DB, zu verwenden. Das Initialisieren kann bei weiteren beispielhaften Ausführungsformen z.B. auch unter Steuerung der Vorrichtung 10 (Fig. 2) ausgeführt werden, ebenso wie mögliche weitere durch die Vorrichtung 100, 100a ausführbare Schritte. In further exemplary embodiments, it is provided that the device 100, 100a is designed to at least temporarily read the first input values EW1 or, according to FIG. 5 RAj, with i=1, processing units assigned to the matrix form MF and/or by one, e.g. any, first column S1 of the matrix form MF assigned processing units, cf. step 244 from FIG. 100a is designed to use one or the second data interface 116b for the initialization 244, for example using the data bus DB. In further exemplary embodiments, the initialization can also be carried out, for example, under the control of the device 10 (Fig. 2), as well as possible further steps executable by the device 100, 100a.
Bei weiteren beispielhaften Ausführungsformen, Fig. 4C, ist vorgesehen, dass die Vorrichtung 100, 100a zur Ausführung wenigstens eines der folgenden Elemente ausgebildet ist: a) Initialisieren 250 der zweiten Eingangswerte EW2 bzw. gemäß Fig. 5 RWj, mit i=1 , .., 9 jedes Verarbeitungselements basierend auf ersten Initialisierungswerten IW, die beispielsweise einer ersten, einen Faltungskern für eine, beispielsweise zweidimensionale, Faltungsoperation charakterisierenden Matrix W, vgl. das Bezugszeichen M-W aus Fig. 8, bzw. deren Matrixelementen entsprechen, beispielsweise durch Übertragen der ersten Initialisierungswerte IWzu den jeweiligen Verarbeitungselementen 110-1 , .., 110- 9 (Fig. 5) mittels der zweiten Datenschnittstelle 116b (Fig. 2), z.B. über den Datenbus DB, b) Initialisieren 252 (Fig. 4C) der ersten Eingangswerte EW1 bzw. gemäß Fig. 5 RAj, mit i=1 , .., 9 jedes Verarbeitungselements 110-1 , .., 110-9 basierend auf zweiten Initialisierungswerten IA, die beispielsweise einem Teil einer zweiten Matrix A bzw. deren Matrixelementen entsprechen, wobei die zweite Matrix A (vgl. Bezugszeichen M-A aus Fig. 8) z.B. Eingangsdaten für die Faltungsoperation charakterisiert bzw. aufweist, beispielsweise durch Übertragen der zweiten Initialisierungswerte IA zu den jeweiligen Verarbeitungselementen mittels der zweiten Datenschnittstelle 116b (Fig. 2) und/oder mittels der ersten Datenschnittstelle 116a, c) Ermitteln 254 der Summe SU durch, beispielsweise gleichzeitiges, Multiplizieren des jeweiligen ersten Eingangswerts RAj, mit i=1, .., 9 mit dem jeweiligen zweiten Eingangswert RWj, mit i=1, .., 9, und, beispielsweise auf das Multiplizieren folgend, Addieren der Ausgangswerte Sj, mit i=1, .., 9 der Multiplizierer jeder Verarbeitungseinheit 110-1 , 110-2, .., 110-9 mittels des Addierers 120, wodurch die Summe SU erhalten wird, d) optional, Zuweisen 254a (Fig. 4C) der Summe zu einem ersten Matrixelement einer dritten Matrix B (vgl. auch Bezugszeichen M-B gemäß Fig. 8), die ein Ergebnis der Faltungsoperation charakterisiert, e) Übertragen 255 (Fig. 4C) von Daten der ersten Eingangswerte EW1 bzw. RA von Verarbeitungselementen einer i-ten Spalte der Matrixform, mit i = 1 , 2, .., SW-2, auf die jeweiligen ersten Eingangswerte EW1 bzw. RA von Verarbeitungselementen einer i-1-ten Spalte der Matrixform und Initialisieren 256 der ersten Eingangswerte EW1 , RA von Verarbeitungselementen der SW-1-ten Spalte der Matrixform basierend auf weiteren zweiten Initialisierungswerten IA', die beispielsweise einem weiteren Teil der zweiten Matrix M-A entsprechen, f) Ermitteln 257 einer weiteren Summe SU' durch, beispielsweise gleichzeitiges, Multiplizieren des jeweiligen ersten Eingangswerts mit dem jeweiligen zweiten Eingangswert, und, beispielsweise auf das Multiplizieren folgend, Addieren der Ausgangswerte der Multiplizierer jeder Verarbeitungseinheit mittels des Addierers, wodurch die weitere Summe SU' erhalten wird, g) optional, Zuweisen 257a der weiteren Summe SU' zu einem zweiten Matrixelement der dritten Matrix M-B, und, h) optional, Wiederholen 258 der Schritte des Übertragens 255, des Initialisierens 256, des Ermittelns 257 und, optional, des Zuweisens 257a. In further exemplary embodiments, FIG. 4C, it is provided that the device 100, 100a is designed to execute at least one of the following elements: a) Initialization 250 of the second input values EW2 or, according to FIG. 5, RWj, with i=1, . ., 9 of each processing element based on first initialization values IW, which correspond, for example, to a first matrix W characterizing a convolution kernel for a convolution operation, for example two-dimensional, cf. the reference symbol MW from FIG Initialization values IW to the respective processing elements 110-1, .., 110-9 (FIG. 5) by means of the second data interface 116b (FIG. 2), eg via the data bus DB, b) initialization 252 (FIG. 4C) of the first input values EW1 or according to FIG. 5 RAj, with i=1, . . . 9 of each processing element 110-1 , il correspond to a second matrix A or its matrix elements, where the second matrix A (cf. Reference character MA from Fig. 8) characterizes or has, for example, input data for the convolution operation, for example by transmitting the second initialization values IA to the respective processing elements by means of the second data interface 116b (Fig. 2) and/or by means of the first data interface 116a, c) determination 254 of the sum SU by, for example simultaneously, multiplying the respective first input value RAj, with i=1, .., 9 with the respective second input value RWj, with i=1, .., 9, and, for example following the multiplication, adding the output values Sj, with i=1,.., 9 of the multipliers of each processing unit 110-1, 110-2,.., 110-9 by means of the adder 120, thereby obtaining the sum SU, d) optionally, assigning 254a (Fig. 4C) of the sum to a first matrix element of a third matrix B (cf. also reference symbol MB according to Fig. 8), which characterizes a result of the convolution operation, e) transmission 255 (Fig. 4C) of data of the first E input values EW1 or RA of processing elements of an i-th column of the matrix form, with i=1, 2, .., SW-2, to the respective first input values EW1 or RA of processing elements of an i-1-th column of the matrix form and Initialization 256 of the first input values EW1, RA of processing elements of the SW-1st column of the matrix form based on further second initialization values IA′, which for example are a further part correspond to the second matrix MA, f) determining 257 a further sum SU' by, for example simultaneously, multiplying the respective first input value by the respective second input value, and, for example following the multiplication, adding the output values of the multipliers of each processing unit by means of the adder, whereby the further sum SU' is obtained, g) optionally, assigning 257a the further sum SU' to a second matrix element of the third matrix MB, and, h) optionally, repeating 258 the steps of transferring 255, initializing 256, determining 257 and, optionally, assigning 257a.
Durch den vorstehend beispielhafte beschrieben Ablauf lassen sich effizient Teile einer Faltungsoperation ausführen, die z.B. basierend auf folgender Gleichung charakterisierbar ist:
Figure imgf000016_0001
The exemplary process described above allows parts of a convolution operation to be carried out efficiently, which can be characterized, for example, based on the following equation:
Figure imgf000016_0001
Hierbei entspricht A() einer Eingangsmatrix M-A, W einern Faltungskern M-W, und B einer Ausgangsmatrix M-B. Here A() corresponds to an input matrix M-A, W to a convolution kernel M-W, and B to an output matrix M-B.
Bei weiteren beispielhaften Ausführungsformen, vgl. Fig. 8, kann der Faltungskern W sukzessive mäanderförmig gegenüber der Eingangsmatrix A verschoben werden, vgl. die Blockpfeile A1 , A2, A3, was z.B. durch entsprechende Initialisierungen der jeweils ersten Eingangswerte EW1 bzw. RA der einzelnen Verarbeitungseinheiten realisierbar ist. Die für die Initialisierungen erforderlichen Datenübertragungen können z.B. über wenigstens eine der Datenverbindungen 116a, 116b (Fig. 2) ausgeführt werden. In further exemplary embodiments, cf. Fig. 8, the convolution kernel W can be shifted in a successive meandering manner in relation to the input matrix A, cf. the block arrows A1, A2, A3, which can be done, for example, by corresponding initializations of the respective first input values EW1 or RA of the individual processing units is realizable. The data transmissions required for the initializations can be carried out, for example, via at least one of the data connections 116a, 116b (FIG. 2).
Bei dem beispielhaft in Fig. 8 gezeigten Schema A1, A2, A3 zur Berechnung der Matrix B wird z.B. in jedem Schritt genau ein Wert der Matrix B berechnet. Pro Wert von B werden z.B. 9 Werte von A (Eingangsmatrix) benötigt, die gewählte Struktur gemäß Fig. 5 der Vorrichtung 100a und das mäanderförmige Vorgehen A1, A2, A3 bei der Berechnung der Matrix B sorgen aber dafür, dass nur jeweils 3 Werte der Eingangsmatrix A über den Datenbus DB neu eingelesen werden müssen (für das Initialisieren vor der Ausführung der Multiplikationen - die weiteren Werte der Eingangsmatrix A sind ja aus den vorangehenden Schritten schon z.B. in benachbarten Spalten der Matrixform MF vorhanden und können anstelle einer Übertragung durch den Datenbus BD z.B. direkt über die erste (direkte) Datenverbindung DV von Verarbeitungseinheit zu Verarbeitungseinheit übertragen werden), was Zeit und Energie einspart. In the scheme A1, A2, A3 for calculating the matrix B shown by way of example in FIG. 8, exactly one value of the matrix B is calculated in each step, for example. For example, 9 values of A (input matrix) are required for each value of B, but the selected structure according to FIG Input matrix A must be read in again via the data bus DB (for initialization before carrying out the multiplications - the The other values of the input matrix A from the previous steps are already present, for example, in adjacent columns of the matrix form MF and can be transmitted from processing unit to processing unit directly via the first (direct) data connection DV, for example, instead of being transmitted through the data bus BD), which takes time and saves energy.
Bei weiteren beispielhaften Ausführungsformen weist die Vorrichtung 100, 100a so viele Verarbeitungseinheiten auf, wie der Faltungskern W Elemente hat. In further exemplary embodiments, the device 100, 100a has as many processing units as the convolution kernel has W elements.
Bei weiteren beispielhaften Ausführungsformen, Fig. 4D, ist vorgesehen, dass die Vorrichtung 100, 100a zur Ausführung wenigstens eines der folgenden Elemente ausgebildet ist: a) Initialisieren 260 der zweiten Eingangswerte EW2, RW jedes Verarbeitungselements basierend auf ersten Initialisierungswerten IW, die beispielsweise der ersten, einen Faltungskern W für eine, beispielsweise zweidimensionale, Faltungsoperation charakterisierenden Matrix M-W bzw. deren Matrixelementen entsprechen, beispielsweise durch Übertragen der ersten Initialisierungswerte IW zu den jeweiligen Verarbeitungselementen mittels einer bzw. der zweiten Datenschnittstelle 116b bzw. den Datenbus, b) Initialisieren 262 der ersten Eingangswerte EW1 jedes Verarbeitungselements basierend auf zweiten Initialisierungswerten (IA), die beispielsweise einem ersten Teil einer zweiten Matrix A bzw. deren Matrixelementen entsprechen, wobei die zweite Matrix M-A (Fig. 8) z.B. Eingangsdaten für die Faltungsoperation charakterisiert bzw. aufweist und wobei der erste Teil der zweiten Matrix M-A mit einem ersten Matrixelement B(0, 0) einer dritten Matrix B bzw. M-B korrespondiert, die ein Ergebnis der Faltungsoperation charakterisiert, Bilden der Summe und zuweisen der Summe zu dem ersten Matrixelement der dritten Matrix, c) mäanderförmiges Verschieben 264, vgl. auch die Blockpfeile A1, A2, A3 gemäß Fig. 8, des Faltungskerns M-W bezüglich der zweiten Matrix M-A um jeweils eine Spalte oder Zeile, wobei das mäanderförmige Verschieben 264 ein erneutes Initialisieren der ersten Eingangswerte aufweist, Bilden einer neuen Summe und Zuweisen der neuen Summe zu einem weiteren Matrixelement B(1 ,0) der dritten Matrix M-B, das mit einem weiteren Teil der zweiten Matrix M-A korrespondiert. In further exemplary embodiments, Fig. 4D, it is provided that the device 100, 100a is designed to execute at least one of the following elements: a) Initialization 260 of the second input values EW2, RW of each processing element based on first initialization values IW, which, for example, the first , a convolution core W for a matrix M-W characterizing, for example, two-dimensional convolution operations, or their matrix elements, for example by transmitting the first initialization values IW to the respective processing elements by means of a or the second data interface 116b or the data bus, b) initializing 262 the first Input values EW1 of each processing element based on second initialization values (IA), which correspond, for example, to a first part of a second matrix A or its matrix elements, the second matrix M-A (Fig. 8) characterizing, for example, input data for the convolution operation t and wherein the first part of the second matrix M-A corresponds to a first matrix element B(0,0) of a third matrix B or M-B characterizing a result of the convolution operation, forming the sum and assigning the sum to the first matrix element of the third matrix, c) meandering shifting 264, cf. also the block arrows A1, A2, A3 according to Fig. 8, of the convolution core M-W with respect to the second matrix M-A by one column or row in each case, the meandering shifting 264 re-initializing the first has input values, forming a new sum and assigning the new sum to a further matrix element B(1,0) of the third matrix M-B, which corresponds to a further part of the second matrix M-A.
Weitere beispielhafte Ausführungsformen beziehen sich auf ein System 10 (Fig. 2) zum Auswerten eines künstlichen neuronalen Netzwerks, beispielsweise eines auf Faltungsoperationen basierenden neuronalen Netzwerks (englisch: convolutional neural network, CNN), mit wenigstens einer Vorrichtung 100, 100a gemäß den Ausführungsformen. Das System 10 kann mittels der Vorrichtung 100, 100a effizient z.B. zweidimensionale Faltungsoperationen ausführen, die bei manchen Ausführungsformen vergleichsweise wenige Rechenzeit und/oder Datenübertragungen über den Datenbus DB erfordern. Further exemplary embodiments relate to a system 10 (FIG. 2) for evaluating an artificial neural network, for example a neural network based on convolution operations. convolutional neural network, CNN), with at least one device 100, 100a according to the embodiments. Using the device 100, 100a, the system 10 can efficiently carry out, for example, two-dimensional convolution operations which, in some embodiments, require comparatively little computing time and/or data transmissions via the data bus DB.
Fig. 6 zeigt schematisch das System 10 gemäß weiteren beispielhaften Ausführungsformen. Das System 10 weist eine Vorrichtung 100 auf, und eine Steuereinrichtung 11 zur zumindest zeitweisen Steuerung eines Betriebs der Vorrichtung 100. Die Steuereinrichtung 11 ist über den Datenbus DB mit der Vorrichtung 100 verbunden, z.B. gemäß Fig. 5. Optional kann wenigstens eine Steuerleitung CTRL vorgesehen sein, über die die Steuereinrichtung 11 steuernd auf die Vorrichtung 100 einwirken kann, z.B. um einen Takt für die Initialisierung und/oder Ausführung von Multiplikationen und/oder der Bildung der Summe(n) SU vorzugeben. 6 schematically shows the system 10 according to further exemplary embodiments. The system 10 has a device 100 and a control device 11 for at least temporarily controlling operation of the device 100. The control device 11 is connected to the device 100 via the data bus DB, e.g. according to FIG. 5. Optionally, at least one control line CTRL can be provided via which the control device 11 can have a controlling effect on the device 100, e.g. in order to specify a clock for the initialization and/or execution of multiplications and/or the formation of the sum(s) SU.
Weitere beispielhafte Ausführungsformen, Fig. 7, beziehen sich auf eine Verwendung 200 der Vorrichtung 100, 100a gemäß den Ausführungsformen und/oder des Systems 10 gemäß den Ausführungsformen, für wenigstens eines der folgenden Elemente: a) Ausführen 202 von, beispielsweise zweidimensionalen oder höherdimensionalen, z.B. dreidimensionalen, Faltungsoperationen, b) Übertragen 204, beispielsweise direktes Übertragen, von Daten einzelner Verarbeitungselemente der Vorrichtung 100, 100a zu weiteren Verarbeitungselementen der Vorrichtung 100, 100a, beispielsweise mittels wenigstens einer direkten Datenverbindung 116a, DV, die beispielsweise innerhalb der Vorrichtung 100, 100a angeordnet ist, c) Verwenden 206, beispielsweise Wiederverwenden, von in der Vorrichtung 100, 100a vorhandenen Initialisierungswerten, beispielsweise Wiederverwenden wenigstens eines Teils von für eine Ermittlung eines ersten Matrixelements einer Ergebnismatrix M-B der Faltungsoperation verwendeten Initialisierungswerten IA für eine Ermittlung wenigstens eines zweiten Matrixelements der Ergebnismatrix M-B der Faltungsoperation, d) Bereitstellen 208 eines Hardwarebeschleunigers HWB für ein- oder mehrdimensionale Faltungsoperationen, beispielsweise zur Auswertung von auf ein- oder mehrdimensionalen, beispielsweise zweidimensionalen, Faltungsoperationen beruhenden neuronalen Netzwerken CNN, beispielsweise für Anwendungen des Maschinellen Lernens z.B. für Video-, Radar- und Lidarsysteme. Further exemplary embodiments, Fig. 7, relate to a use 200 of the device 100, 100a according to the embodiments and/or the system 10 according to the embodiments, for at least one of the following elements: a) Execution 202 of, for example two-dimensional or higher-dimensional, e.g. three-dimensional, convolution operations, b) Transmission 204, e.g. direct transmission, of data from individual processing elements of the device 100, 100a to further processing elements of the device 100, 100a, for example by means of at least one direct data connection 116a, DV, which, for example, within the device 100, 100a is arranged, c) using 206, for example re-using, initialization values present in the device 100, 100a, for example re-using at least some of the initialization values I used for determining a first matrix element of a result matrix MB of the convolution operation A for determining at least a second matrix element of the result matrix MB of the convolution operation, d) providing 208 a hardware accelerator HWB for one- or multi-dimensional convolution operations, for example for evaluating neural networks CNN based on one- or multi-dimensional, for example two-dimensional, convolution operations, for example for machine learning applications, e.g. for video, radar and lidar systems.
Nachfolgend sind weitere beispielhafte Aspekte und Ausführungsformen beschrieben, die jeweils einzeln für sich oder in Kombination miteinander mit wenigstens einer der vorstehend beispielhaft beschriebenen Ausführungsformen kombinierbar sind. Further exemplary aspects and embodiments are described below, which can each be combined individually or in combination with at least one of the exemplary embodiments described above.
Bei weiteren beispielhaften Ausführungsformen ist zwischen in der logischen Matrixform MF (Fig. 5) benachbarten Speicherregistern RA ein steuerbarer Datenaustausch mit mehreren, z.B. drei verschiedenen, Betriebsarten vorgesehen. In further exemplary embodiments, a controllable data exchange with several, e.g. three different, operating modes is provided between storage registers RA which are adjacent in the logical matrix form MF (FIG. 5).
In einer ersten Betriebsart werden z.B. die ersten Eingangswerte ("RA-Werte") der in Fig. 5 mittleren Spalte S2 auf die rechte Spalte S3 übertragen, z.B. kopiert, und die linke Spalte S1 auf die mittlere Spalte S2. Die linke Spalte S1 erhält drei neue Werte aus der Eingangsmatrix M-A, z.B. zuführbar über den Datenbus DB. In a first operating mode, for example, the first input values ("RA values") in the middle column S2 in Fig. 5 are transferred, e.g. copied, to the right column S3, and the left column S1 to the middle column S2. The left column S1 receives three new values from the input matrix M-A, e.g. suppliable via the data bus DB.
In einer zweiten Betriebsart werden die RA-Werte der in Fig. 5 mittleren Spalte S2 auf die linke Spalte S1 übertragen, z.B. kopiert, und die rechte Spalte S3 auf die mittlere Spalte S2. Die rechte Spalte S3 erhält drei neue Werte aus der Eingangsmatrix M-A, z.B. zuführbar über den Datenbus DB. In a second mode of operation, the RA values of the middle column S2 in Fig. 5 are transferred, e.g. copied, to the left column S1, and the right column S3 to the middle column S2. The right column S3 receives three new values from the input matrix M-A, e.g. suppliable via the data bus DB.
In einer dritten Betriebsart werden die RA-Werte der in Fig. 5 mittleren Zeile Z2 auf die obere Zeile Z1 übertragen, z.B. kopiert, und die untere Zeile Z2 auf die mittlere Zeile Z2. Die untere Zeile Z3 erhält drei neue Werte aus der Matrix M-A, z.B. zuführbar über den Datenbus DB. In a third mode of operation, the RA values of the middle row Z2 in FIG. 5 are transferred, e.g. copied, to the upper row Z1, and the lower row Z2 to the middle row Z2. The lower row Z3 receives three new values from the matrix M-A, e.g. can be supplied via the data bus DB.
Für alle drei Betriebsarten ist es nützlich, wenn bei weiteren beispielhaften Ausführungsformen die Register RA, RW der in Fig. 5 linken und rechten Spalte S1, S3 und die Register RA, RWz.B. der unteren Zeile Z3 direkt mit dem Datenbus DB verbunden sind. For all three operating modes it is useful if, in further exemplary embodiments, the registers RA, RW of the left and right columns S1, S3 in FIG. 5 and the registers RA, RW e.g. the lower row Z3 are connected directly to the data bus DB.
Der Ablauf der Berechnung der Ergebnismatrix B, beispielsweise im Sinne einer zweidimensionalen Faltungsoperation, gemäß weiteren beispielhaften Ausführungsformen ist folgendermaßen: I nitialisierung: Die Register RWi bis RWg werden zu Beginn der Faltungsberechnung mit den Werten W(0,0), W(0,1), W(0,2), W(1 ,0), W(2,2) belegt, was z.B. von einem Steuerrechner 11 (Fig. 6) über den Datenbus DB erfolgen kann, über den Datenbus DB werden die Register RA1..9 mit den Werten A(0,0), A(0,1), A(0,2), A(1 ,0), ... , A(2,2) gefüllt, was z.B. in der Betriebsart 2 ("nach links schieben", bezogen auf Fig. 5) geschehen kann. The course of the calculation of the result matrix B, for example in terms of a two-dimensional convolution operation, according to further exemplary embodiments is as follows: Initialization: The registers RWi to RWg are filled with the values W(0,0), W(0,1), W(0,2), W(1,0), W(2,2) at the beginning of the convolution calculation. occupied, which can be done, for example, by a control computer 11 (FIG. 6) via the data bus DB. The registers RA1..9 with the values A(0,0), A(0,1), A( 0.2), A(1,0), .
Berechnung der Ergebnismatrix B, M-B Calculation of the result matrix B, M-B
Alle Verarbeitungseinheiten 110-1 , .., 110-9 multiplizieren, bevorzugt gleichzeitig, ihre RA-Werte mit ihren RW-Werten und liefern die Ausgangswerte S1 bis Sg. Der Addierer 120 (Fig. 5) summiert diese Ausgangswerte S1 bis Sg und berechnet somit einen Wert der Matrix B (hier: erster Wert B(0,0)), der z.B. in einem RAM 130 (Fig. 1) abgelegt wird. Dann werden drei neue Werte der Eingangsmatrix M- A (hier: A(0,3), A(1 ,3),A(2,3)) in der Betriebsart 2 (in Fig. 5 von links) in die Register RA hineingeschrieben. Nach Multiplikation und Summation erhält man den nächsten B-Wert (hier: B(0,1)). Dies wird wiederholt, bis das Ende der Zeile von B erreicht ist. Dann schaltet man auf die Betriebsart 3 und liest 3 neue Werte der Eingangsmatrix M-A in Fig. 5 von unten (also in die Zeile Z3) ein. Danach schaltet man in die Betriebsart 1 und liest drei neue Werte der Eingangsmatrix A in Fig. 5 von links ein. Dies wird wiederholt, bis der Anfang der Zeile von B erreicht ist. Dann schaltet man wieder in die Betriebsart 3, liest drei neue Werte A von unten ein. Dieses mäanderförmige Vorgehen, vgl. die Blockpfeile A1 , A2, A3 gemäß Fig. 8, wird fortgesetzt, z.B. bis alle Werte der Ergebnismatrix M-B berechnet sind. All processing units 110-1, .., 110-9 multiply, preferably simultaneously, their RA values by their RW values and provide the output values S1 to Sg. The adder 120 (FIG. 5) sums these output values S1 to Sg and calculates thus a value of the matrix B (here: first value B(0,0)), which is stored, for example, in a RAM 130 (FIG. 1). Then three new values of the input matrix M-A (here: A(0,3), A(1,3),A(2,3)) in operating mode 2 (from the left in Fig. 5) are written to the registers RA written in. After multiplication and summation, you get the next B value (here: B(0,1)). This is repeated until the end of B's line is reached. Then you switch to operating mode 3 and read in 3 new values of the input matrix M-A in Fig. 5 from below (ie in line Z3). Then you switch to operating mode 1 and read in three new values of the input matrix A in FIG. 5 from the left. This is repeated until the beginning of B's line is reached. Then you switch back to operating mode 3 and read in three new values A from below. This meandering procedure, cf. the block arrows A1, A2, A3 according to Fig. 8, is continued, e.g. until all values of the result matrix M-B have been calculated.
Bei weiteren beispielhaften Ausführungsformen sind auch mehr als die vorstehend beispielhaft genannten drei Betriebsarten denkbar, z.B. ein Schieben von links, rechts, unten, oben, also vier Betriebsarten, wobei z.B. zur Berechnung von Faltungsoperationen nur jeweils drei Betriebsarten benutzt werden brauchen. Bei weiteren beispielhaften Ausführungsformen ergibt das Weglassen einer der beispielhaft vier Betriebsarten ebenfalls funktionierende Lösungen (z.B. Schieben von links, unten, oben). In further exemplary embodiments, more than the three operating modes mentioned above as examples are also conceivable, e.g. shifting from left, right, down, up, i.e. four operating modes, with e.g. only three operating modes needing to be used to calculate convolution operations. In other exemplary embodiments, omitting one of the exemplary four modes of operation also yield working solutions (e.g., left, down, up slide).
Bei weiteren beispielhaften Ausführungsformen ist auch eine Ausführung von 3D- Faltungsoperationen denkbar (z.B. basierend auf einer logisch dreidimensionalen Anordnung von Verarbeitungseinheiten, z.B. nutzend ein Schieben von links, rechts, unten und von vorne (in die 3. Dimension). In further exemplary embodiments, an execution of 3D folding operations is also conceivable (e.g. based on a logical three-dimensional Arrangement of processing units, e.g. using sliding from left, right, down and from the front (in the 3rd dimension).
Bei weiteren beispielhaften Ausführungsformen kann eine physische Anordnung der Verarbeitungseinheiten 110-1 , 110-n relativ zueinander, z.B. auf einem gemeinsamen Substrat (nicht gezeigt), z.B. gemäß der Matrixform MF erfolgen. In further exemplary embodiments, a physical arrangement of the processing units 110-1, 110-n relative to each other, e.g., on a common substrate (not shown), e.g., according to the matrix form MF.

Claims

Ansprüche Expectations
1. Vorrichtung (100; 100a) zum Ausführen von Multiplikationen und Additionen, beispielsweise für Faltungsoperationen, aufweisend: eine Mehrzahl (M-110) von Verarbeitungseinheiten (110; 110-1 , 110-2, 110-3, 110-9), wobei jede1. Device (100; 100a) for performing multiplications and additions, for example for convolution operations, comprising: a plurality (M-110) of processing units (110; 110-1, 110-2, 110-3, 110-9), where each
Verarbeitungseinheit (110; 110-1 , 110-2, 110-3, 110-9) der Mehrzahl (M-Processing unit (110; 110-1, 110-2, 110-3, 110-9) of the plurality (M-
110) von Verarbeitungseinheiten (110; 110-1, 110-2, 110-3, 110-9) eine110) of processing units (110; 110-1, 110-2, 110-3, 110-9).
Speichereinrichtung (112; 112-1 , 112-2, 112-3, 112-9) zur zumindest zeitweisen Speicherung wenigstens eines ersten Eingangswerts (EW1) und eines zweiten Eingangswerts (EW1, EW2) und einen Multiplizierer (114; 114-1 , 114-2, 114-3, 114-9) zur Multiplikation des ersten EingangswertsStorage device (112; 112-1, 112-2, 112-3, 112-9) for at least temporarily storing at least a first input value (EW1) and a second input value (EW1, EW2) and a multiplier (114; 114-1, 114-2, 114-3, 114-9) for multiplying the first input value
(EW1) mit dem zweiten Eingangswert (EW2) aufweist, wobei die Vorrichtung (100; 100a) einen Addierer (120) aufweist, der dazu ausgebildet ist, Ausgangswerte (M-AW) der Multiplizierer (114; 114-1 , 114-2, 114-3, 114-(EW1) with the second input value (EW2), the device (100; 100a) having an adder (120) which is designed to add output values (M-AW) of the multipliers (114; 114-1, 114-2 , 114-3, 114-
9) jeder Verarbeitungseinheit (110; 110-1 , 110-2, 110-3, 110-9) der9) each processing unit (110; 110-1, 110-2, 110-3, 110-9) of the
Mehrzahl (110) von Verarbeitungseinheiten (110; 110-1 , 110-2, 110-3, 110-9) zu addieren, wobei die Vorrichtung (100; 100a) zur Ausführung folgender Schritte ausgebildet ist: Ermitteln (200), mittels des jeweiligen Multiplizierers (114; 114-1 , 114-2, 114-3, 114-9) der Mehrzahl (M-110) vonAdding a plurality (110) of processing units (110; 110-1, 110-2, 110-3, 110-9), wherein the device (100; 100a) is designed to carry out the following steps: determining (200), by means of the respective multiplier (114; 114-1, 114-2, 114-3, 114-9) of the plurality (M-110) of
Verarbeitungseinheiten (110; 110-1 , 110-2, 110-3, 110-9), eines jeweiligenprocessing units (110; 110-1, 110-2, 110-3, 110-9) of a respective one
Ausgangswerts (AW; M-AW) durch Multiplizieren des jeweiligen ersten Eingangswerts (EW1) mit dem jeweiligen zweiten Eingangswert (EW2), und Addieren (210) der Ausgangswerte (AW) der Multiplizierer (114; 114-1, 114- 2, 114-3, 114-9) jeder Verarbeitungseinheit (110; 110-1 , 110-2, 110-3,output value (AW; M-AW) by multiplying the respective first input value (EW1) by the respective second input value (EW2), and adding (210) the output values (AW) of the multipliers (114; 114-1, 114-2, 114 -3, 114-9) of each processing unit (110; 110-1, 110-2, 110-3,
110-9) mittels des Addierers (120), wodurch eine Summe (SU) erhalten wird. 110-9) by means of the adder (120), whereby a sum (SU) is obtained.
2. Vorrichtung (100) nach Anspruch 1, wobei die Vorrichtung (100) dazu ausgebildet ist, das Ermitteln (200) des jeweiligen Ausgangswerts (AW; M- AW) für die Mehrzahl (M-110) der Verarbeitungseinheiten (110; 110-1 , 110- 2, 110-3, 110-9) gleichzeitig auszuführen. 2. The device (100) according to claim 1, wherein the device (100) is designed to determine (200) the respective output value (AW; M- AW) for the plurality (M-110) of the processing units (110; 110- 1, 110-2, 110-3, 110-9) to be executed simultaneously.
3. Vorrichtung (100) nach wenigstens einem der vorstehenden Ansprüche, wobei die Vorrichtung (100) dazu ausgebildet ist, die Summe (SU) zumindest zeitweise zu speichern (220), beispielsweise in einem flüchtigen Speicher (130). 3. Device (100) according to at least one of the preceding claims, wherein the device (100) is designed to store the sum (SU) at least temporarily (220), for example in a volatile memory (130).
4. Vorrichtung (100) nach wenigstens einem der vorstehenden Ansprüche, wobei die Speichereinrichtung (112; 112-1 , 112-2, 112-3, 112-9) ein4. Device (100) according to at least one of the preceding claims, wherein the memory device (112; 112-1, 112-2, 112-3, 112-9) a
Registerspeicher ist bzw. Speicherregister aufweist. Register memory is or has memory registers.
5. Vorrichtung (100) nach wenigstens einem der vorstehenden Ansprüche, wobei wenigstens manche der Verarbeitungseinheiten (110; 110-1 , 110-2, 110-3, .., 110-9) eine erste Datenschnittstelle (116a) zum, beispielsweise bidirektionalen, Datenaustausch (DA1 ; 230), mit wenigstens einer weiteren Verarbeitungseinheit (110; 110-1 , 110-2, 110-3, .., 110-9) der Mehrzahl (M- 110) von Verarbeitungseinheiten (110; 110-1 , 110-2, 110-3, .., 110-9) aufweisen. 5. Device (100) according to at least one of the preceding claims, wherein at least some of the processing units (110; 110-1, 110-2, 110-3, .., 110-9) a first data interface (116a) to, for example, bidirectional , Data exchange (DA1; 230), with at least one further processing unit (110; 110-1, 110-2, 110-3, .., 110-9) of the plurality (M- 110) of processing units (110; 110-1 , 110-2, 110-3, .., 110-9).
6. Vorrichtung (100) nach Anspruch 5, wobei die erste Datenschnittstelle (116a) wenigstens eine, beispielsweise direkte, Datenverbindung (DV1) zwischen wenigstens zwei Speichereinrichtungen (112; 112-1 , 112-2, 112-3, .., 112-9) aufweist, wobei beispielsweise die erste Datenschnittstelle (116a) eine Mehrzahl von Daten- und/oder Steuerleitungen aufweist. 6. Device (100) according to claim 5, wherein the first data interface (116a) has at least one, for example direct, data connection (DV1) between at least two storage devices (112; 112-1, 112-2, 112-3, .., 112 -9), wherein, for example, the first data interface (116a) has a plurality of data and/or control lines.
7. Vorrichtung (100) nach wenigstens einem der vorstehenden Ansprüche, wobei wenigstens manche der Verarbeitungseinheiten (110; 110-1 , 110-2, 110-3, .., 110-9) eine zweite Datenschnittstelle (116b) zum, beispielsweise wenigstens unidirektionalen, Datenaustausch (DA2; 232), mit wenigstens einer, beispielsweise externen, Einheit (10) aufweisen. 7. Device (100) according to at least one of the preceding claims, wherein at least some of the processing units (110; 110-1, 110-2, 110-3, .., 110-9) have a second data interface (116b) to, for example at least unidirectional data exchange (DA2; 232) with at least one, for example external, unit (10).
8. Vorrichtung (100) nach Anspruch 7, wobei die zweite Datenschnittstelle (116b) einen Anschluss an einen Datenbus (DB) aufweist. 8. Device (100) according to claim 7, wherein the second data interface (116b) has a connection to a data bus (DB).
9. Vorrichtung (100) nach wenigstens einem der vorstehenden Ansprüche, wobei die Mehrzahl (M-110) von Verarbeitungseinheiten (110; 110-1 , 110-2, 110-3, .., 110-9) n viele Verarbeitungseinheiten (110; 110-1 , 110-2, 110-3, .., 110-9) aufweist, mit n = ZW * SW, wobei ZW und SW jeweils natürliche Zahlen größer gleich eins sind. Vorrichtung (100) nach Anspruch 9, rückbezogen auf Anspruch 8, wobei wenigstens 2 * (ZW - 1) + SW viele Verarbeitungseinheiten (110; 110-1 , 110- 2, 110-3, 110-9) die zweite Datenschnittstelle (116b), beispielsweise zum9. The device (100) according to at least one of the preceding claims, wherein the plurality (M-110) of processing units (110; 110-1, 110-2, 110-3, .., 110-9) n many processing units (110 ; 110-1, 110-2, 110-3, .., 110-9), with n=ZW*SW, where ZW and SW are natural numbers greater than or equal to one. Device (100) according to claim 9, dependent on claim 8, wherein at least 2 * (ZW - 1) + SW many processing units (110; 110-1, 110- 2, 110-3, 110-9) the second data interface (116b ), for example to
Anschluss an den Datenbus (DB), aufweisen. Vorrichtung (100) nach wenigstens einem der Ansprüche 9 bis 10, wobei die n = ZW* SW vielen Verarbeitungseinheiten (110; 110-1 , 110-2, 110-3, .., 110-9) logisch in Matrixform (MF) mit ZW vielen Zeilen und mit SW vielen Spalten organisiert sind, wobei beispielsweise a) wenigstens eine direkte Datenverbindung zwischen jeweiligen, beispielsweise einer selben Spalte der Matrixform (MF) angehörenden, Verarbeitungseinheiten direkt aufeinander folgender Zeilen der Matrixform (MF) besteht und/oder wobei beispielsweise b) wenigstens eine direkte Datenverbindung zwischen jeweiligen, beispielsweise einer selben Zeile der Matrixform (MF) angehörenden, Verarbeitungseinheiten direkt aufeinander folgender Spalten der Matrixform (MF) besteht. Vorrichtung (100) nach Anspruch 11 , wobei die Vorrichtung (100) dazu ausgebildet ist, zumindest zeitweise die ersten Eingangswerte (EW1) von einer, z.B. beliebigen, ersten Spalte der Matrixform (MF) zugeordneten Verarbeitungseinheiten auf die ersten Eingangswerte (EW1) von einer, z.B. beliebigen, zweiten Spalte der Matrixform (MF) zugeordneten Verarbeitungseinheiten zu übertragen (240), beispielsweise zu kopieren, wobei beispielsweise die erste Spalte eine n-te Spalte der Matrixform (MF) ist und wobei die zweite Spalte der Matrixform (MF) a) eine n+1-te Spalte der Matrixform (MF) ist, mit n = 0, 1, .., SW-2, oder b) eine n-1-te Spalte der Matrixform (MF) ist, mit n = 1, 2, .., SW-1, wobei beispielsweise die Vorrichtung (100) dazu ausgebildet ist, für das Übertragen (240) eine bzw. die erste Datenschnittstelle (116a) zu verwenden. Vorrichtung (100) nach wenigstens einem der Ansprüche 11 bis 12, wobei die Vorrichtung (100) dazu ausgebildet ist, zumindest zeitweise die ersten Eingangswerte (EW1) von einer, z.B. beliebigen, ersten Zeile der Matrixform (MF) zugeordneten Verarbeitungseinheiten auf die ersten Eingangswerte (EW1) von einer, z.B. beliebigen, zweiten Zeile der Matrixform (MF) zugeordneten Verarbeitungseinheiten zu übertragen (242), beispielsweise zu kopieren, wobei beispielsweise die erste Zeile eine m-te Zeile der Matrixform (MF) ist und wobei die zweite Zeile der Matrixform (MF) a) eine m-1-te Zeile der Matrixform (MF) ist, mit m = 1, 2, ZW-1, oder b) eine m+1-te Zeile derHave connection to the data bus (DB). Device (100) according to at least one of claims 9 to 10, wherein the n = ZW* SW many processing units (110; 110-1, 110-2, 110-3, .., 110-9) logically in matrix form (MF) are organized with ZW many rows and with SW many columns, where, for example, a) there is at least one direct data connection between respective processing units belonging, for example, to the same column of the matrix form (MF), directly following rows of the matrix form (MF) and/or where, for example b) there is at least one direct data connection between respective processing units, for example belonging to the same row of the matrix form (MF), directly following columns of the matrix form (MF). Device (100) according to claim 11, wherein the device (100) is designed to at least temporarily convert the first input values (EW1) from one, e.g. any, first column of the matrix form (MF) to the first input values (EW1) of a , e.g. to transfer (240) any processing units assigned to the second column of the matrix form (MF), for example to copy it, for example the first column being an nth column of the matrix form (MF) and the second column of the matrix form (MF) being a ) is an n+1-th column of matrix form (MF), with n = 0, 1, .., SW-2, or b) is an n-1-th column of matrix form (MF), with n = 1 , 2, .., SW-1, wherein for example the device (100) is designed to use one or the first data interface (116a) for the transmission (240). Device (100) according to at least one of Claims 11 to 12, the device (100) being designed to at least temporarily convert the first input values (EW1) from a processing unit, e.g. any one, assigned to the first row of the matrix form (MF) to the first input values (EW1) from one, for example any, second line of the matrix form (MF) to transmit (242), for example to copy, the first line being an mth line of the matrix form (MF) and wherein the second row of matrix form (MF) is a) an m-1st row of matrix form (MF) with m = 1, 2, ZW-1, or b) an m+1st line of
Matrixform (MF) ist, mit m = 0, 1 , ZW-2, wobei beispielsweise die Vorrichtung (100) dazu ausgebildet ist, für das Übertragen (242) eine bzw. die erste Datenschnittstelle (116a) zu verwenden. Vorrichtung (100) nach wenigstens einem der Ansprüche 11 bis 13, wobei die Vorrichtung (100) dazu ausgebildet ist, zumindest zeitweise die ersten Eingangswerte (EW1) von einer, z.B. beliebigen, ersten Zeile der Matrixform (MF) zugeordneten Verarbeitungseinheiten und/oder von einer, z.B. beliebigen, ersten Spalte der Matrixform (MF) zugeordneten Verarbeitungseinheiten, zu initialisieren (244), beispielsweise auf jeweils einen vorgebbaren Wert zu setzen, wobei beispielsweise die Vorrichtung (100) dazu ausgebildet ist, für das Initialisieren (244) eine bzw. die zweite Datenschnittstelle (116b) zu verwenden. Vorrichtung (100) nach wenigstens einem der Ansprüche 11 bis 14, wobei die Vorrichtung (100) zur Ausführung wenigstens eines der folgenden Elemente ausgebildet ist: a) Initialisieren (250) der zweiten Eingangswerte (EW2) jedes Verarbeitungselements basierend auf ersten Initialisierungswerten (IW), die beispielsweise einer ersten, einen Faltungskern für eine, beispielsweise zweidimensionale, Faltungsoperation charakterisierenden Matrix (W) bzw. deren Matrixelementen entsprechen, beispielsweise durch Übertragen der ersten Initialisierungswerte (IW) zu den jeweiligen Verarbeitungselementen mittels einer bzw. der zweiten Datenschnittstelle (116b), b) Initialisieren (252) der ersten Eingangswerte (EW1) jedes Verarbeitungselements basierend auf zweiten Initialisierungswerten (IA), die beispielsweise einem Teil einer zweiten Matrix (A) bzw. deren Matrixelementen entsprechen, wobei die zweite Matrix (A) z.B. Eingangsdaten für die Faltungsoperation charakterisiert bzw. aufweist, beispielsweise durch Übertragen der zweiten Initialisierungswerte (IA) zu den jeweiligen Verarbeitungselementen mittels einer bzw. der zweiten Datenschnittstelle (116b) und/oder mittels einer bzw. der ersten Datenschnittstelle (116a), c) Ermitteln (254) der Summe (SU) durch, beispielsweise gleichzeitiges, Multiplizieren (200) des jeweiligen ersten Eingangswerts (EW1) mit dem jeweiligen zweiten Eingangswert (EW2), und, beispielsweise auf das Multiplizieren (200) folgend, Addieren (210) der Ausgangswerte (AW) der Multiplizierer jeder Verarbeitungseinheit (110; 110- 1 , 110-2, 110-3, 110-9) mittels des Addierers (120), wodurch die SummeMatrix form (MF) is, with m=0, 1, ZW-2, the device (100) being designed, for example, to use one or the first data interface (116a) for the transmission (242). Device (100) according to at least one of Claims 11 to 13, wherein the device (100) is designed to at least temporarily receive the first input values (EW1) from one, e.g. any, first row of the matrix form (MF) assigned processing units and/or from to initialize (244) a processing unit assigned, e.g. to use the second data interface (116b). Device (100) according to at least one of Claims 11 to 14, wherein the device (100) is designed to execute at least one of the following elements: a) Initializing (250) the second input values (EW2) of each processing element based on first initialization values (IW) , which correspond, for example, to a first matrix (W) characterizing a convolution kernel for a convolution operation, for example two-dimensional, or to its matrix elements, for example by transmitting the first initialization values (IW) to the respective processing elements by means of a or the second data interface (116b), b) initializing (252) the first input values (EW1) of each processing element based on second initialization values (IA), which correspond, for example, to a part of a second matrix (A) or its matrix elements, the second matrix (A) for example input data for the convolution operation characterizes or exhibits, for example you rch Transmission of the second initialization values (IA) to the respective processing elements by means of a or the second data interface (116b) and/or by means of a or the first data interface (116a), c) determining (254) the sum (SU) by, for example simultaneously multiplying (200) the respective first input value (EW1) by the respective second input value (EW2), and, for example following the multiplication (200), adding (210) the Output values (AW) of the multipliers of each processing unit (110; 110-1, 110-2, 110-3, 110-9) by means of the adder (120), whereby the sum
(SU) erhalten wird, d) optional, Zuweisen (254a) der Summe (SU) zu einem ersten Matrixelement einer dritten Matrix (B), die ein Ergebnis der Faltungsoperation charakterisiert, e) Übertragen (255) von Daten der ersten Eingangswerte (EW1) von Verarbeitungselementen einer i-ten Spalte der Matrixform, mit i = 1 , 2, SW-2, auf die jeweiligen ersten Eingangswerte(SU) is obtained, d) optionally, assigning (254a) the sum (SU) to a first matrix element of a third matrix (B) characterizing a result of the convolution operation, e) transmitting (255) data of the first input values (EW1 ) of processing elements of an i-th column of the matrix form, with i = 1 , 2, SW-2, to the respective first input values
(EW1) von Verarbeitungselementen einer i-1-ten Spalte der Matrixform (MF) und Initialisieren (256) der ersten Eingangswerte (EW1) von Verarbeitungselementen der SW-1-ten Spalte der Matrixform (MF) basierend auf weiteren zweiten Initialisierungswerten (IA1), die beispielsweise einem weiteren Teil der zweiten Matrix (A) entsprechen, f) Ermitteln (257) einer weiteren Summe (SU1) durch, beispielsweise gleichzeitiges, Multiplizieren (200) des jeweiligen ersten Eingangswerts (EW1) mit dem jeweiligen zweiten Eingangswert (EW2), und, beispielsweise auf das Multiplizieren (200) folgend, Addieren (210) der Ausgangswerte (AW) der Multiplizierer jeder Verarbeitungseinheit (110; 110-1 , 110-2, 110-3, 110-9) mittels des(EW1) of processing elements of an i-1st column of the matrix form (MF) and initialization (256) of the first input values (EW1) of processing elements of the SW-1st column of the matrix form (MF) based on further second initialization values (IA 1 ), which correspond, for example, to a further part of the second matrix (A), f) determining (257) a further sum (SU 1 ) by, for example simultaneously, multiplying (200) the respective first input value (EW1) by the respective second input value ( EW2), and, for example following the multiplication (200), adding (210) the output values (AW) of the multipliers of each processing unit (110; 110-1, 110-2, 110-3, 110-9) by means of the
Addierers (120), wodurch die weitere Summe (SU1) erhalten wird, g) optional, Zuweisen (257a) der weiteren Summe (SU1) zu einem zweiten Matrixelement der dritten Matrix (B), und, h) optional, Wiederholen (258) der Schritte des Übertragens (255), des Initialisierens (256), des Ermittelns (257) und, optional, des Zuweisens (257a). Vorrichtung (100) nach wenigstens einem der Ansprüche 11 bis 15, wobei die Vorrichtung (100) zur Ausführung wenigstens eines der folgenden Elemente ausgebildet ist: a) Initialisieren (260) der zweiten Eingangswerte (EW2) jedes Verarbeitungselements basierend auf ersten Initialisierungswerten (IW), die beispielsweise einer ersten, einen Faltungskern für eine, beispielsweise zweidimensionale, Faltungsoperation charakterisierenden Matrix (M-W) bzw. deren Matrixelementen entsprechen, beispielsweise durch Übertragen der ersten Initialisierungswerte (IW) zu den jeweiligen Verarbeitungselementen mittels einer bzw. der zweiten Datenschnittstelle (116b), b) Initialisieren (262) der ersten Eingangswerte (EW1) jedes Verarbeitungselements basierend auf zweiten Initialisierungswerten (IA), die beispielsweise einem ersten Teil einer zweiten Matrix (M-A) bzw. deren Matrixelementen entsprechen, wobei die zweite Matrix (M-A) z.B. Eingangsdaten für die Faltungsoperation charakterisiert bzw. aufweist und wobei der erste Teil der zweiten Matrix (M-A) mit einem ersten Matrixelement einer dritten Matrix (M-B) korrespondiert, die ein Ergebnis der Faltungsoperation charakterisiert, Bilden der Summe (SU) und zuweisen der Summe (SU) zu dem ersten Matrixelement der dritten Matrix (M-B), c) mäanderförmiges Verschieben (264) des Faltungskerns bezüglich der zweiten Matrix (M-A) um jeweils eine Spalte oder Zeile, wobei das mäanderförmige Verschieben (264) ein erneutes Initialisieren der ersten Eingangswerte (EW1) aufweist, Bilden einer neuen Summe (SU) und Zuweisen der neuen Summe (SU) zu einem weiteren Matrixelement der dritten Matrix (M-B), das mit einem weiteren Teil der zweiten Matrix (M-A) korrespondiert. System (10) zum Auswerten eines künstlichen neuronalen Netzwerks, beispielsweise eines auf Faltungsoperationen basierenden neuronalen Netzwerks, mit wenigstens einer Vorrichtung (100) nach wenigstens einem der vorstehenden Ansprüche. Verwendung (200) der Vorrichtung (100) nach wenigstens einem der Ansprüche 1 bis 16 und/oder des Systems (10) nach Anspruch 17, für wenigstens eines der folgenden Elemente: a) Ausführen (202) von, beispielsweise zweidimensionalen oder höherdimensionalen, z.B. dreidimensionalen, Faltungsoperationen, b) Übertragen (204), beispielsweise direktes Übertragen, von Daten einzelner Verarbeitungselemente der Vorrichtung (100) zu weiteren Verarbeitungselementen der Vorrichtung (100), beispielsweise mittels wenigstens einer direkten Datenverbindung (DV1), die beispielsweise innerhalb der Vorrichtung (100) angeordnet ist, c) Verwenden (206), beispielsweise Wiederverwenden, von in der Vorrichtung (100) vorhandenen Initialisierungswerten (IA), beispielsweise Wiederverwenden wenigstens eines Teils von für eine Ermittlung eines ersten Matrixelements einer Ergebnismatrix (B) der Faltungsoperation verwendeten Initialisierungswerten (IA) für eine Ermittlung wenigstens eines zweiten Matrixelements der Ergebnismatrix (B) der Faltungsoperation, d) Bereitstellen (208) eines Hardwarebeschleunigers (100; 100a; HWB) für ein- oder mehrdimensionale Faltungsoperationen, beispielsweise zur Auswertung von auf ein- oder mehrdimensionalen, beispielsweise zweidimensionalen,adder (120), whereby the further sum (SU 1 ) is obtained, g) optionally, assigning (257a) the further sum (SU 1 ) to a second matrix element of the third matrix (B), and, h) optionally repeating ( 258) the steps of transmitting (255), initializing (256), determining (257) and, optionally, assigning (257a). Device (100) according to at least one of Claims 11 to 15, the device (100) being designed to carry out at least one of the following elements: a) Initializing (260) the second input values (EW2) of each processing element based on first initializing values (IW) , which correspond, for example, to a first matrix (MW) characterizing a convolution kernel for a convolution operation, for example two-dimensional, or to its matrix elements, for example by transmitting the first initialization values (IW) to the respective processing elements by means of a or the second data interface (116b), b) initialization (262) of the first input values (EW1) of each processing element based on second initialization values (IA), which correspond, for example, to a first part of a second matrix (MA) or its matrix elements, the second Matrix (MA) characterizes or has input data for the convolution operation, for example, and wherein the first part of the second matrix (MA) corresponds to a first matrix element of a third matrix (MB), which characterizes a result of the convolution operation, forming the sum (SU) and assigning the sum (SU) to the first matrix element of the third matrix (MB), c) meandering shifting (264) of the convolution kernel with respect to the second matrix (MA) by one column or row, the meandering shifting (264) re-initializing of the first input values (EW1), forming a new sum (SU) and assigning the new sum (SU) to a further matrix element of the third matrix (MB), which corresponds to a further part of the second matrix (MA). System (10) for evaluating an artificial neural network, for example a neural network based on convolution operations, having at least one device (100) according to at least one of the preceding claims. Use (200) of the device (100) according to at least one of claims 1 to 16 and/or the system (10) according to claim 17, for at least one of the following elements: a) execution (202) of, for example, two-dimensional or higher-dimensional, e.g three-dimensional, folding operations, b) transmission (204), for example direct transmission, of data from individual processing elements of the device (100) to further processing elements of the device (100), for example by means of at least one direct data connection (DV1), which can be installed, for example, within the device (100 ) is arranged, c) using (206), for example reusing, initialization values (IA) present in the device (100), for example reusing at least part of the initialization values (IA) used to determine a first matrix element of a result matrix (B) of the convolution operation ) for a determination of at least one second matrix element of the result nization matrix (B) of the convolution operation, d) providing (208) a hardware accelerator (100; 100a; HWB) for one- or multi-dimensional convolution operations, for example to evaluate on one or multidimensional, for example two-dimensional,
Faltungsoperationen beruhenden neuronalen Netzwerken (CNN). Convolution based neural networks (CNN).
PCT/EP2021/075281 2020-09-29 2021-09-15 Device and method for performing multiplication operations and addition operations WO2022069221A1 (en)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
DE102020212276.8 2020-09-29
DE102020212276.8A DE102020212276A1 (en) 2020-09-29 2020-09-29 Apparatus and method for performing multiplication and addition

Publications (1)

Publication Number Publication Date
WO2022069221A1 true WO2022069221A1 (en) 2022-04-07

Family

ID=77914340

Family Applications (1)

Application Number Title Priority Date Filing Date
PCT/EP2021/075281 WO2022069221A1 (en) 2020-09-29 2021-09-15 Device and method for performing multiplication operations and addition operations

Country Status (2)

Country Link
DE (1) DE102020212276A1 (en)
WO (1) WO2022069221A1 (en)

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4937774A (en) * 1988-11-03 1990-06-26 Harris Corporation East image processing accelerator for real time image processing applications
DE69130390T2 (en) * 1990-08-20 1999-05-27 Eastman Kodak Co CIRCUIT SWITCHABLE AS A MATRIX MULTIPLIER OR CONVOLVER FOR COLOR IMAGE PROCESSING
US9600278B1 (en) * 2011-05-09 2017-03-21 Altera Corporation Programmable device using fixed and configurable logic to implement recursive trees

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4937774A (en) * 1988-11-03 1990-06-26 Harris Corporation East image processing accelerator for real time image processing applications
DE69130390T2 (en) * 1990-08-20 1999-05-27 Eastman Kodak Co CIRCUIT SWITCHABLE AS A MATRIX MULTIPLIER OR CONVOLVER FOR COLOR IMAGE PROCESSING
US9600278B1 (en) * 2011-05-09 2017-03-21 Altera Corporation Programmable device using fixed and configurable logic to implement recursive trees

Also Published As

Publication number Publication date
DE102020212276A1 (en) 2022-03-31

Similar Documents

Publication Publication Date Title
DE3804938C2 (en) Image processing device
DE102018105457A1 (en) Transpose matrices of neural networks in hardware
DE3049437C2 (en) Matrix arrangement of a plurality of processing elements
DE19835216B4 (en) Processor and method for parallel data processing
DE60314347T2 (en) Resource management device
DE112019005288T5 (en) EFFECTIVE AND SCALABLE BUILDING AND PROBING OF HASH TABLES USING MULTIPLE GPUs
DE2936763A1 (en) MULTIPLICATION ARRANGEMENT FOR DUAL NUMBERS IN TWO-COMPLEMENTARY DISPLAY
DE2157982A1 (en) Digital multiprocessor data processing system
DE102019126719A1 (en) Energy efficient storage systems and processes
DE19510879A1 (en) Simultaneous linear equations solving using distributed memory parallel processor
DE2855673A1 (en) ARRANGEMENT FOR HANDLING DIRECT ACCESS TO THE MEMORY OF A DATA PROCESSING SYSTEM
DE112020004067T5 (en) HYBRID DATA-MODEL PARALLELITY FOR EFFICIENT DEEP LEARNING
WO2022069221A1 (en) Device and method for performing multiplication operations and addition operations
WO1992009040A1 (en) Circuit arrangement for calculating matrix operations in signal processing
DE202014011350U1 (en) FFT accelerator
DE10204647A1 (en) Matrix calculator for matrix multiplication e.g. in image signal processing, sequentially calculates each element from multiplication result matrix by sequential addition
EP0499890A2 (en) Data interface to input and output data within parallel computers
DE1051030B (en) Electronic multiplication machine
DE4417932A1 (en) Parallel data processing system
DE3435816A1 (en) DEVICE FOR NUMERICAL SIGNAL PROCESSING
EP0009625A2 (en) Data transfer commutator with associative address selection in a virtual store
DE102019124676A1 (en) METHOD AND DEVICE FOR FAST FOURIER TRANSFORMATION IN SITU
DE1222290B (en) Binary computing device for the formation and accumulation of products
EP1038235B1 (en) Device for hierarchical connection of a plurality of functional units in a processor
DE3744128A1 (en) Method and circuit arrangement for programmed triggering of CCD and photodiode matrix arrays

Legal Events

Date Code Title Description
121 Ep: the epo has been informed by wipo that ep was designated in this application

Ref document number: 21777715

Country of ref document: EP

Kind code of ref document: A1

NENP Non-entry into the national phase

Ref country code: DE

122 Ep: pct application non-entry in european phase

Ref document number: 21777715

Country of ref document: EP

Kind code of ref document: A1