WO2022078982A1 - Method and device for processing data to be supplied as input for a first shift register of a systolic neural electronic circuit - Google Patents

Method and device for processing data to be supplied as input for a first shift register of a systolic neural electronic circuit Download PDF

Info

Publication number
WO2022078982A1
WO2022078982A1 PCT/EP2021/078105 EP2021078105W WO2022078982A1 WO 2022078982 A1 WO2022078982 A1 WO 2022078982A1 EP 2021078105 W EP2021078105 W EP 2021078105W WO 2022078982 A1 WO2022078982 A1 WO 2022078982A1
Authority
WO
WIPO (PCT)
Prior art keywords
data
memory
vector
shift register
processing device
Prior art date
Application number
PCT/EP2021/078105
Other languages
French (fr)
Inventor
Eric Lenormand
Hadi SAOUD
Original Assignee
Thales
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 Thales filed Critical Thales
Priority to EP21790454.9A priority Critical patent/EP4226256A1/en
Publication of WO2022078982A1 publication Critical patent/WO2022078982A1/en

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N3/00Computing arrangements based on biological models
    • G06N3/02Neural networks
    • G06N3/06Physical realisation, i.e. hardware implementation of neural networks, neurons or parts of neurons
    • G06N3/063Physical realisation, i.e. hardware implementation of neural networks, neurons or parts of neurons using electronic means
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F15/00Digital computers in general; Data processing equipment in general
    • G06F15/76Architectures of general purpose stored program computers
    • G06F15/80Architectures of general purpose stored program computers comprising an array of processing units with common control, e.g. single instruction multiple data processors
    • G06F15/8046Systolic arrays
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N3/00Computing arrangements based on biological models
    • G06N3/02Neural networks
    • G06N3/04Architecture, e.g. interconnection topology
    • G06N3/045Combinations of networks

Definitions

  • TITLE Process and device for processing data to be supplied as input to a first shift register of a systolic neural electronic circuit
  • the invention lies in the field of the implementation of convolutional-type neural processing (CNN) on reconfigurable calculation circuits in on-board equipment.
  • CNN convolutional-type neural processing
  • the fields of application of embedded neural networks are numerous, for example in image processing, and/or to classify data or detect specific elements on signals, etc.
  • An effective way of implementing these processing operations is to implement a systolic architecture, which can take the form of an at least two-dimensional array of elementary processors (EPs), reduced to their purely arithmetic part, which are powered column by column by a progressively downward propagating input data stream (in a shift register).
  • EPs elementary processors
  • This organization on an FPGA ("field-programmable gate array") or an ASIC ("application-specific integrated circuit”), simplifies placement-routing operations and makes it possible to make the best use of circuit resources and integrate a large number (hundreds or thousands) of PEs.
  • Systolic architectures make it possible to obtain very compact implementations of PEs reduced to their simplest expression, which in particular process the data which passes within their reach over time.
  • CNN httDs://www.siaarch.org/dnn-accelerator-architecture-simd-or-svstolic
  • the range of functionalities offered by the systolic grid largely depends on the composition of the data streams sent to it.
  • the data flows entering or leaving the circuit are most of the time connected to one or more memories of the DDR (Double Data Rate) type, which require to be read or written by sequences of consecutive addresses, which reduces greatly the choice of the distribution of these data on the calculation grid.
  • DDR Double Data Rate
  • FIG. 1 In FIG. 1 are represented an external high capacity DDR memory 10 and a systolic neural electronic circuit 20.
  • the circuit 20 is implemented by a programmable logic circuit, for example FGPA, and the DDR memory 10 is external to the FGPA.
  • FGPA programmable logic circuit
  • the circuit 20 comprises a grid 22, here in 2 dimensions (in other embodiments, the dimension is greater than two) of elementary processors PEs, arranged in columns and rows, a line 23 of memories, a system 27 of distribution of data.
  • Each memory m is associated with a respective column of processors PEs.
  • a memory m receives, from the data distribution system 27, the data that the PEs of the column which is associated with this memory will process and returns their calculation results to the distribution system 27.
  • This data is initially supplied to the data distribution system 27 by the DDR memory 10 and the results are delivered by the data distribution system 27 to the DDR memory 10
  • the distribution system 27 comprises two buses 28, 29 (which can in some cases be combined into a circular ring bus) adapted to each convey K data (K integer, here equal to 4, K can take any value greater than or equal to 1) every clock cycle.
  • Bus 28 is a data input bus supplied by the DDR 10 memory and bus 29 is a results output bus intended for the DDR 10 memory.
  • each of these buses 28, 29 operate as a shift register.
  • a stage of the register corresponding to the input bus 28 supplies in parallel K (here therefore 4) column memories with data and the addresses of the memories for which these data are intended.
  • a stage of the register corresponding to the output bus 29 collects in parallel K (here therefore 4) data coming from the memories m to which it is connected, and supplies the addresses where these data are written in the memories m..
  • this data is part of the next stage of the register and is thus presented/collected to the next set of K memories m.
  • the other line of memories, vertical which stores the CNN processing coefficients, has not been represented in figure 1.
  • the DDR 10 memory contains the processing input data, for example groups of images called feature maps. This 3D data is stored dimension by dimension in the memory, typically line by line. Data of one dimension (typically row) is stored at consecutive addresses in DDR 10 memory. DDR 10 is read in address sequences sequences (bursts), with an initiation delay at each start of the burst which slows down the useful bit rate all the more as the burst is short.
  • bursts address sequences sequences
  • DDR 10 reads produce long sequences of adjacent pixels of the same line.
  • the prior art way of connecting the DDR memory output port 10 to the distribution system 27 is to use a counter that generates consecutive addresses.
  • Manufacturers like Xilinx provide IPs optimized for this type of function (IP CDMA for example).
  • the dimension (the line) of the input table (or similarly a result) which is contiguous in DDR is found distributed identically on the column memories in the prior art ; once this DDR stream is connected to the data distribution system internal to the FPGA, each of the internal memories receives the pixel following that of its neighbor in the read line.
  • Convolution is the weighted sum of consecutive or fixed-stepped input data (called dilation). Convolution can be applied to input data with several dimensions (row, column, channel, ). In the systolic architecture of the neural circuit 20, the calculations are parallelized by distributing one of the dimensions (generally the line) on the columns of the grid.
  • a one-column PE then needs to access data that has been placed in neighboring columns.
  • physical paths that give access to a few neighboring memories at the head of the column are generally added to the architecture; these extensions, beyond a certain width, are paid for in increased complexity and risk of limiting the clock frequency.
  • the architecture can only execute convolutions with a width equal to the number of memories accessible from a column.
  • FIG. 2 shows the data distribution of a row of a data structure (consecutive data of a row named D1, D2, D3, etc.), possibly multi-dimensional, presented as input to the systolic grid 22 for a convolution of the same dimension as the array of data stored in DDR 10. Only the row dimension can pose a problem, the other dimensions of the array being local to each memory m, and directly accessible to the PEs of the column associated with the memory m.
  • the data above the columns are those stored in the columns by the distribution system 27, before the start of the calculations by the columns of PEs.
  • the invention proposes a method for processing, in an electronic processing device, data to be supplied as input to a first shift register of a systolic neural electronic circuit comprising a grid of processors elementary processors, said first shift register conveying a data vector of size K at each clock cycle to K columns of elementary processors of said grid, said processing method comprising the following steps implemented by said electronic processing device : obtaining a sequence of successive data D(0), D(1), D(2) ... D(d) extracted by reading said data classified consecutively in a first storage memory and storing said data in a second memory of the processing device;
  • the invention thus makes it possible, through this input/output data management solution, to implement adequate data flows and thus to reduce the limitations of the prior art in the performance of a systolic neural circuit, such as than convolution of width 1 to 3, loss of performance in case of stride greater than 1, etc.
  • a processing method further comprises one or more of the following characteristics: the following steps implemented by said electronic processing device: o obtaining a data vector w of size K provided by a second shift register of the systolic neural circuit, said second shift register conveying at each clock cycle a data vector of size K corresponding to the results of K respective columns of elementary processors of said grid; o the K components of w being (w 0 , ...
  • the present invention proposes a device for processing data to be supplied as input to a first shift register of a systolic neural electronic circuit comprising a grid of elementary processors, said first shift register being adapted to convey a vector of data of size K at each clock cycle intended for K columns of elementary processors of said grid, said electronic processing device being adapted to obtain a sequence of successive data D(0), D(1), D( 2)...D(d) extracted by reading said data classified consecutively in a first storage memory and for storing said data in a second memory of the processing device; said electronic processing device being adapted to generate vectors W(u) as a function of said stored data, each vector W(u) comprising K components (W(u)o, ...
  • FIG 1 shows a schematic view of a 2D grid for calculating a systolic neural electronic circuit
  • Figure 2 illustrates an input data distribution for a systolic neural circuit
  • Figure 3 illustrates another distribution of input data for a systolic neural circuit, which may be implemented in one embodiment of the invention
  • Figure 4 illustrates another distribution of input data for a systolic neural circuit, which may be implemented in one embodiment of the invention
  • Figure 5 illustrates another distribution of input data for a systolic neural circuit, which may be implemented in one embodiment of the invention
  • Figure 6 illustrates another distribution of input data for a systolic neural circuit, which may be implemented in one embodiment of the invention
  • Figure 7 illustrates another distribution of input data for a systolic neural circuit, which may be implemented in one embodiment of the invention
  • Figure 8 shows the steps of a method in one embodiment of the invention
  • Figure 9 depicts a systolic neural system in one embodiment of the invention.
  • Figure 9 shows a systolic neural system 1 in one embodiment of the invention. This system is for example embedded in an aircraft.
  • the system 1 comprises a memory, for example mass storage, an electronic circuit physically implementing a neural network and a processing device 40.
  • the memory is for example the DDR memory 10 as mentioned previously with reference to FIG. 1
  • the electronic circuit is the systolic neural circuit 20 on FGPA as described in relation to FIG. 1
  • the processing device 40 according to the invention is interposed between the DDR memory 10 and the circuit 20, for example in the FGPA.
  • the processing device 40 comprises a memory MP 41 and a control block 42 comprising in particular a unit 420 for timing the operations.
  • the control block 42 comprises for example a memory and a microprocessor (not shown), the memory comprising instructions software, which when executed on the microprocessor, implement the following operations, described in Figure 8.
  • control block 42 obtains a sequence of successive data D(0), D(1), D(2)...D(d) extracted by reading, for example in burst, of said classified data consecutively in the memory 10 (for example the data of an image line, d being for example a value lying in the range going for example from 16 to 256 and stores said data in the memory MP 41 .
  • control block 42 In a step 102, the control block 42 generates vectors W(u) as a function of said stored data, according to formula (1) described below.
  • Each vector W(u) is made up of 4 components (W(u)o, ... , W(u) K -i) (remember that in the example K is equal to 4, as explained above with reference in Figure 1, but K can take any value).
  • a step 103 the control block 42 successively supplies, at the input of the shift register 28, a vector W(u), for u an integer ranging from 0 to L1 -1 , and L1 a predefined constant strictly greater than one (for example strictly greater than 2), at each clock stroke, accompanied by the indication of the addresses of the K consecutive columns for which the K components of W(u) are intended.
  • KO is a predefined constant
  • steps S1 and S2 are predefined constants, non-zero or zero depending on the case (in the case of an implementation based on a memory with a prime number of banks, S2 will not be a multiple of the number of banks ) .
  • the memory mk thus contains the datum D(K0 +u*S1 + k*S2), for each u from 0 to L1 -1 , after the input shift register 28 has presented this datum W(u) to it. k accompanied by the memory indication mk.
  • the incrementation of the Ui is done in the order of increasing i: i ⁇ j, for each j starting from 0, i is incremented, from 0 to L1 i-i: for each value of i, we provide the W(u); then we increment j by 1 , reset i to 0 and start again.
  • S1 i, S2, L1 i, KO are initially chosen so as to give rise to the desired distribution.
  • All of these operations performed by the control block 41 are clocked by the operations sequencing unit 420 (all the operations are clocked at the rate of the clock 20, which is the or one of the clocks used by the FPGA) .
  • the formula (1) is defined so as to obtain the desired distribution of the data between the columns of processors, according to the definition of the convolutions to be calculated.
  • the processing device 40 according to the invention is suitable for writing a sequence of data in the column memories in a different order from that in which they were read in DDR 10 memory. Similarly, the processing device 40 according to the invention is suitable for reading a data sequence in the column memories in an order different from that in which they are then written in DDR 10.
  • a step 201 the processing device 40 reads the results delivered by the shift register 29.
  • the data to be exported by the processing device 40 to the DDR 10 are distributed in the memories m with a pitch equal to S2 from one column to another and a pitch S1 within each column.
  • a step 203 the processing device 40 writes these sequences extracted from the MP memory 41 in the form of long bursts in DDR 10 at consecutive addresses.
  • the processing device 40 according to the invention is suitable for carrying out data distributions according to a predefined formula, in the memories m while remaining compatible with the constraints of the DDR accesses and of the internal distribution system.
  • the data stream read by the processing device 40 is the series of consecutive pixels on a row of the input image table
  • the sequence conveyed is a sequence of vectors of K (here 4) data, intended for 4 consecutive column memories, which makes it possible to use the buses 28, 29 as a shift register which reduces the interconnections and simplifies the clock distributions in the FPGA.
  • the processing device 40 is of a size that is independent of the size of the computing grid that it supplies and is moreover inexpensive in terms of resources. It is possible to load or read the column memories of the grid with data patterns conforming to formula (1) and this considerably widens the field of action of the architecture.
  • one vector is written and another vector is read from MP 41, clocked from timing unit 420.
  • this step is fixed at 1 (consecutive addresses) in MP 41 for read or write exchanges between the processing device 40 and the DDR 10.
  • the processing device 40 contains two pairs of address generators respectively for transfers between DDR 10 and pivot memory MP 41 (address generators 421, 422) and transfers between pivot memory MP 41 and circuit 20 (address generators 423, 424).
  • the memory MP 41 being of limited capacity, the transfer of data blocks between DDR 10 and circuit 20 takes place for example in several consecutive phases. For reasons of efficiency, these transfers are done in a pipeline: sub-block N is read at the same time as sub-block N+1 is written. Both sides of MP memory 41 are mostly active simultaneously.
  • the sequencing of these operations is controlled by the sequencing unit 420 which sequences the inputs/outputs and which executes a firmware containing in particular the parameters of the address generators.
  • the invention makes it possible to significantly extend the range of CNN operations of the systolic circuit making it possible to break out of the prior art data distribution scheme presented above, where adjacent pixels are distributed in the same order in the memories. column m.
  • FIGS. 3 to 5 give examples of distribution of data in a system implementing the invention and which make processing possible which was not in the distribution of the prior art where the datum of index i0+i on the line is written in the memory of column i and only in this memory and for which the matrix of PEs is used at full capacity.
  • a datum (for example here the datum D2 or D3 or D4 or D5) can thus be stored in several memories while limiting the calculations of non-useful PEs.
  • the distribution does not include a copy in the case of figure 4 also corresponding to a convolution of width 5, but with a stride Str equal to 2.
  • the result of the column associated with the memory m2 must be the convolution of (D1 , D2, D3, D4, D5)
  • the result of the column associated with memory m3 must be the convolution of (D3, D4, D5, D6, D7)
  • the result of the column associated with memory m4 must be the convolution of (D5, D6, D7, D8, D9), etc.
  • the convolution carried out by the column of PEs associated with the memory 3 will use the data inside the surface delimited in dotted lines: the data D3 to D6 are in memory m3 and D7 is in m4.
  • the convolution width is 3 and the dilation value is 2; the result of the column associated with memory m2 must be the convolution of (D1 , D3, D5), the result of the column associated with memory m3 must be the convolution of (D3, D5, D7), the result of the column associated with memory m4 must be the convolution of (D5, D7, D9).
  • FIG. 6 illustrates a case where several stages of the CNN graph are chained to the grid 22, from an initial data distribution in one embodiment of the invention.
  • This mode of operation called fusion, has the advantage of avoiding storage outside of intermediate results and drastically reducing the need for input-output bandwidth.
  • Merging is an important factor in improving the performance of circuit 20: in fact, the systolic allowing the integration of high computing power, this is accompanied by a need of the same order in terms of input output rate. , which usually becomes the limiting factor for at least part of the CNN processing.
  • the invention makes it possible to significantly broaden the field of operations of the systolic neural circuit 20 while maintaining the compactness of the systolic grid architecture and of its internal distribution system 27.
  • the intermediate processing, of input/output management, implemented by the processing device 40 between the DDR memory 10 and the distribution system 27 makes it possible to carry out particular data distributions in the grid 22 and to process convolutions at any characteristics (nucleus sizes, stride, dilation), making it possible to cover a wide range of CNNs, while optimizing the performance of the grid.
  • the type of data distribution according to the invention opens the door to CNN processing by stage merging, which divides the I/O throughput requirement from or to the DDR by the number of merged stages.
  • stage merging which divides the I/O throughput requirement from or to the DDR by the number of merged stages.
  • This artifice avoids the capping of the performance of the circuit on a part of the graph (in general the upper part of the graph, where the number of feature maps is lower).
  • the resource cost of the processing device 40 of the invention remains low compared to the density of current FPGAs: less than 4% for an FPGA of size medium (7Z045 from Xilinx).
  • the size of the device is moreover the same whatever the size of the grid of PEs.
  • the device processing 40 using a parallel memory MP 41, i.e. capable of manipulating a multi-component vector at each clock cycle, and taking into account the data patterns to be manipulated (multi-dimensional affine addressing laws).
  • the parallel memory 41 comprises several memory banks M 410 as illustrated in FIG. 9. To access a vector in such a set of banks M 410 at each cycle, it must be ensured that the components of the vectors are always found in distinct banks. .
  • the pivot memory MP 41 is therefore a set of K identical double-port memory banks M 410 (allowing read or write access to each of its ports at each cycle), numbered from 1 to K. These memories M 410 are seen collectively as a larger memory (MP), the capacity of which is the sum of the individual capacities. Address A in memory MP 41 corresponds to address A/K in memory bank M 410 with number A%K (i.e. A modulo K).
  • the invention can be implemented in embedded systems of a very varied nature, for example in the processing of images by neural network on board a satellite, and/or configurable on a radiation-hardened FPGA, and/or more generally relating to classification, detection or recognition on real-time images or signals.

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Biomedical Technology (AREA)
  • Biophysics (AREA)
  • Health & Medical Sciences (AREA)
  • Life Sciences & Earth Sciences (AREA)
  • General Engineering & Computer Science (AREA)
  • Computing Systems (AREA)
  • Molecular Biology (AREA)
  • General Health & Medical Sciences (AREA)
  • Evolutionary Computation (AREA)
  • Data Mining & Analysis (AREA)
  • Computational Linguistics (AREA)
  • Artificial Intelligence (AREA)
  • Mathematical Physics (AREA)
  • Software Systems (AREA)
  • Computer Hardware Design (AREA)
  • Neurology (AREA)
  • Complex Calculations (AREA)

Abstract

Disclosed is a method for processing, in an electronic processing device, data to be supplied as input to a first shift register of a systolic neural electronic circuit comprising an array of elementary processors, the first shift register conveying a data vector of size K at each clock cycle intended for K columns of elementary processors of the array, the processing method comprising the following steps implemented by the electronic processing device: - obtaining a series of successive data D(0), D(1), D(2) …D(d) extracted by reading the data classed consecutively in a first storage memory and storage of said data in a second memory of the processing device; - generating vectors W(u) according to the stored data, each vector W(u) comprising K components (W(u)0, …, W(u)K-1) such as W(u)k, k= 0 to K-1 = D(K0 + k*S2 + u*S1), where K is an integer strictly greater than 1, K0 as a predefined constant, the steps S1 and S2 are predefined integer constants; - providing, at the input of the shift register, the vector W(u), such that successive values W(u) are provided during successive clock beats, with u being an integer between 0 and L1-1, and L1 an integer constant strictly greater than one.

Description

TITRE : Procédé, et dispositif, de traitement, de données à fournir en entrée d’un premier registre à décalage d’un circuit électronique neuronal systolique TITLE: Process and device for processing data to be supplied as input to a first shift register of a systolic neural electronic circuit
L’invention se situe dans le domaine de la mise en œuvre de traitements neuronaux de type convolutionnels (CNN) sur des circuits de calcul reconfigurables dans des équipements embarqués. Les domaines d’application des réseaux de neurones embarqués sont nombreux, par exemple en traitement d’images, et/ou pour classifier des données ou détecter des éléments spécifiques sur des signaux, etc. The invention lies in the field of the implementation of convolutional-type neural processing (CNN) on reconfigurable calculation circuits in on-board equipment. The fields of application of embedded neural networks are numerous, for example in image processing, and/or to classify data or detect specific elements on signals, etc.
Il s’agit ici de traitements dit d’inférence, demandant des puissances de calcul très élevées (typiquement des centaines ou milliers de Giga-Opérations/s), mais très répétitifs et se prêtant bien à la parallélisation. This involves so-called inference processing, requiring very high computing power (typically hundreds or thousands of Giga-Operations/s), but very repetitive and well suited to parallelization.
Une façon efficace d’implémenter ces traitements est de mettre en œuvre une architecture systolique, qui peut se présenter sous la forme d’un tableau au moins à deux dimensions de processeurs élémentaires (PEs), réduits à leur partie purement arithmétique, qui sont alimentés colonne par colonne par un flux de données d’entrée se propageant progressivement vers le bas (dans un registre à décalage). Cette organisation, sur un FPGA (« field-programmable gate array ») ou un ASIC (« application-specific integrated circuit »), simplifie les opérations de placement- routage et permet d’exploiter au mieux les ressources du circuit et intégrer un grand nombre (centaines ou milliers) de PEs. An effective way of implementing these processing operations is to implement a systolic architecture, which can take the form of an at least two-dimensional array of elementary processors (EPs), reduced to their purely arithmetic part, which are powered column by column by a progressively downward propagating input data stream (in a shift register). This organization, on an FPGA ("field-programmable gate array") or an ASIC ("application-specific integrated circuit"), simplifies placement-routing operations and makes it possible to make the best use of circuit resources and integrate a large number (hundreds or thousands) of PEs.
Les architectures systoliques permettent d’obtenir des implémentations très compactes de PEs réduits à leur plus simple expression, qui en particulier traitent les données qui passent à leur portée au cours du temps. Systolic architectures make it possible to obtain very compact implementations of PEs reduced to their simplest expression, which in particular process the data which passes within their reach over time.
Il existe un certain nombre d’implémentations systoliques de CNN (Ref : httDs://www.siaarch.org/dnn-accelerator-architecture-simd-or-svstolic), par exemple dans CN107578098. There are a number of systolic implementations of CNN (Ref: httDs://www.siaarch.org/dnn-accelerator-architecture-simd-or-svstolic), for example in CN107578098.
Le champ de fonctionnalités offert par la grille systolique dépend largement de la composition des flux de données qu’on lui envoie. Or, les flux de données entrant ou sortant du circuit sont la plupart du temps connectés à une ou plusieurs mémoires de type DDR (en anglais Double Data Rate), qui demandent à être lues ou écrites par séquences d’adresses consécutives, ce qui réduit grandement le choix de la distribution de ces données sur la grille de calcul. The range of functionalities offered by the systolic grid largely depends on the composition of the data streams sent to it. However, the data flows entering or leaving the circuit are most of the time connected to one or more memories of the DDR (Double Data Rate) type, which require to be read or written by sequences of consecutive addresses, which reduces greatly the choice of the distribution of these data on the calculation grid.
Sur la figure 1 sont représentés une mémoire DDR externe de grande capacité 10 et un circuit électronique neuronal systolique 20. Le circuit 20 est implémenté par un circuit logique programmable, par exemple FGPA, et la mémoire DDR 10 est externe au FGPA. In FIG. 1 are represented an external high capacity DDR memory 10 and a systolic neural electronic circuit 20. The circuit 20 is implemented by a programmable logic circuit, for example FGPA, and the DDR memory 10 is external to the FGPA.
Le circuit 20 comporte une grille 22, ici en 2 dimensions (dans d’autres modes de réalisation, la dimension est supérieure à deux) de processeurs élémentaires PEs, disposés en colonnes et lignes, une ligne 23 de mémoires, un système 27 de distribution de données. The circuit 20 comprises a grid 22, here in 2 dimensions (in other embodiments, the dimension is greater than two) of elementary processors PEs, arranged in columns and rows, a line 23 of memories, a system 27 of distribution of data.
Chaque mémoire m est associée à une colonne respective de processeurs PEs. Une mémoire m reçoit, depuis le système 27 de distribution de données, les données que vont traiter les PEs de la colonne qui est associée à cette mémoire et renvoie leurs résultats de calcul au système 27 de distribution. Each memory m is associated with a respective column of processors PEs. A memory m receives, from the data distribution system 27, the data that the PEs of the column which is associated with this memory will process and returns their calculation results to the distribution system 27.
Ces données sont initialement fournies au système 27 de distribution de données par la mémoire DDR 10 et les résultats sont délivrés par le système 27 de distribution de données à la mémoire DDR 10 This data is initially supplied to the data distribution system 27 by the DDR memory 10 and the results are delivered by the data distribution system 27 to the DDR memory 10
Le système 27 de distribution comprend deux bus 28, 29 (qui peuvent dans certains cas être réunis en un bus circulaire en anneau) adaptés pour véhiculer chacun K données (K nombre entier, égal ici à 4, K pouvant prendre une valeur quelconque supérieure ou égale à 1) à chaque cycle d’horloge. The distribution system 27 comprises two buses 28, 29 (which can in some cases be combined into a circular ring bus) adapted to each convey K data (K integer, here equal to 4, K can take any value greater than or equal to 1) every clock cycle.
Le bus 28 est un bus d’entrée de données fournies par la mémoire DDR 10 et le bus 29 est un bus de sortie de résultats à destination de la mémoire DDR 10. Bus 28 is a data input bus supplied by the DDR 10 memory and bus 29 is a results output bus intended for the DDR 10 memory.
Dans le même esprit que l’architecture systolique des processeurs, pour favoriser la compacité et la vitesse, chacun de ces bus 28, 29 fonctionnent en registre à décalage. Un étage du registre correspondant au bus d’entrée 28 alimente en parallèle K (ici donc 4) mémoires colonnes par des données et les adresses des mémoires auxquelles ces données sont destinées. Un étage du registre correspondant au bus de sortie 29 recueille en parallèle K (ici donc 4) données provenant des mémoires m auxquelles il est connecté, et fournit les adresses où ces données sont écrites dans les mémoires m.. Au coup d’horloge suivant, ces données font partie de l’étage suivant du registre et sont ainsi présentées/recueillies à l’ensemble suivant de K mémoires m. On n’a pas représenté sur la figure 1 l’autre ligne de mémoires, verticale, qui stocke les coefficients des traitements CNN. In the same spirit as the systolic architecture of the processors, to promote compactness and speed, each of these buses 28, 29 operate as a shift register. A stage of the register corresponding to the input bus 28 supplies in parallel K (here therefore 4) column memories with data and the addresses of the memories for which these data are intended. A stage of the register corresponding to the output bus 29 collects in parallel K (here therefore 4) data coming from the memories m to which it is connected, and supplies the addresses where these data are written in the memories m.. At the following clock stroke , this data is part of the next stage of the register and is thus presented/collected to the next set of K memories m. The other line of memories, vertical, which stores the CNN processing coefficients, has not been represented in figure 1.
La mémoire DDR 10 contient les données d’entrée du traitement, par exemple des groupes d’images appelées feature maps. Ces données 3D sont stockées dimension après dimension dans la mémoire, typiquement ligne par ligne. Les données d’une dimension (typiquement la ligne) sont stockées à des adresses consécutives dans la mémoire DDR 10. La DDR 10 se lit par séquences d’adresses consécutives (bursts), avec un délai d’amorçage à chaque début de burst qui ralentit le débit utile d’autant plus que le burst est court. The DDR 10 memory contains the processing input data, for example groups of images called feature maps. This 3D data is stored dimension by dimension in the memory, typically line by line. Data of one dimension (typically row) is stored at consecutive addresses in DDR 10 memory. DDR 10 is read in address sequences sequences (bursts), with an initiation delay at each start of the burst which slows down the useful bit rate all the more as the burst is short.
De ce fait, sauf à accepter une perte significative de rendement, les lectures de la DDR 10 produisent de longues séquences de pixels adjacents d’une même ligne. La façon de l’art antérieur de connecter le port de sortie de la mémoire DDR 10 au système de distribution 27 est d’utiliser un compteur qui génère des adresses consécutives. Des fabricants comme Xilinx fournissent des IPs optimisées pour ce type de fonction (IP CDMA par exemple). Therefore, unless you accept a significant loss in performance, DDR 10 reads produce long sequences of adjacent pixels of the same line. The prior art way of connecting the DDR memory output port 10 to the distribution system 27 is to use a counter that generates consecutive addresses. Manufacturers like Xilinx provide IPs optimized for this type of function (IP CDMA for example).
Ainsi selon l’art antérieur : comme dit plus haut, la dimension (la ligne) du tableau d’entrée (ou similairement un résultat) qui est contiguë en DDR se retrouve distribuée à l’identique sur les mémoires colonnes dans l’art antérieur ; une fois ce flux DDR raccordé au système de distribution de données interne au FPGA, chacune des mémoires internes reçoit le pixel suivant celui de sa voisine dans la ligne en lecture. Thus according to the prior art: as said above, the dimension (the line) of the input table (or similarly a result) which is contiguous in DDR is found distributed identically on the column memories in the prior art ; once this DDR stream is connected to the data distribution system internal to the FPGA, each of the internal memories receives the pixel following that of its neighbor in the read line.
L’opération dominante dans les CNNs est la convolution, qui fait la somme pondérée de données d’entrée consécutives ou espacées d’un pas fixe (appelé dilation). La convolution peut s’appliquer à des données d’entrée à plusieurs dimensions (ligne, colonne, canal, ...). Dans l’architecture systolique du circuit neuronal 20, les calculs sont parallélisés en distribuant une des dimensions (généralement la ligne) sur les colonnes de la grille. The dominant operation in CNNs is convolution, which is the weighted sum of consecutive or fixed-stepped input data (called dilation). Convolution can be applied to input data with several dimensions (row, column, channel, ...). In the systolic architecture of the neural circuit 20, the calculations are parallelized by distributing one of the dimensions (generally the line) on the columns of the grid.
Un PE d’une colonne a alors besoin d’accéder à des données qui ont été placées dans des colonnes voisines. Pour y parvenir, des chemins physiques qui donnent accès à quelques mémoires voisines en tête de colonne, sont ajoutées en général à l’architecture ; ces extensions, au-delà d’une certaine largeur, se paient en augmentation de complexité et risque de limitation de la fréquence d’horloge. Dans cette configuration étendue, l’architecture ne peut toutefois exécuter que des convolutions d’une largeur égale au nombre de mémoires accessibles depuis une colonne. A one-column PE then needs to access data that has been placed in neighboring columns. To achieve this, physical paths that give access to a few neighboring memories at the head of the column are generally added to the architecture; these extensions, beyond a certain width, are paid for in increased complexity and risk of limiting the clock frequency. In this extended configuration, however, the architecture can only execute convolutions with a width equal to the number of memories accessible from a column.
La figure 2 montre la distribution de données d’une ligne d’une structure de données (données consécutives d’une ligne nommées D1 , D2, D3 ....) éventuellement multi-dimensionnelle, présentée en entrée de la grille systolique 22 pour une convolution de même dimension que le tableau de données mémorisé en DDR 10. Seule la dimension ligne peut poser problème, les autres dimensions du tableau étant locales à chaque mémoire m, et directement accessibles aux PEs de la colonne associée à la mémoire m. Sur les figures, les données au-dessus des colonnes sont celles stockées dans les colonnes par le système de distribution 27, avant le début des calculs par les colonnes de PEs.. FIG. 2 shows the data distribution of a row of a data structure (consecutive data of a row named D1, D2, D3, etc.), possibly multi-dimensional, presented as input to the systolic grid 22 for a convolution of the same dimension as the array of data stored in DDR 10. Only the row dimension can pose a problem, the other dimensions of the array being local to each memory m, and directly accessible to the PEs of the column associated with the memory m. In the figures, the data above the columns are those stored in the columns by the distribution system 27, before the start of the calculations by the columns of PEs.
Sur la figure 2, Di est ainsi fournie à la mémoire mi, pour i = 1 à 5. Dans cet exemple correspondant, une colonne voit 3 mémoires, ce qui permet de faire des convolutions de largeur maximale égale à 3. In figure 2, Di is thus supplied to the memory mi, for i = 1 to 5. In this corresponding example, a column sees 3 memories, which makes it possible to make convolutions of maximum width equal to 3.
Un cas fréquent dans les CNNs est celui des étages de convolutions dits avec « stride » de valeur Str, où les calculs à faire ne sont plus comme dans la figure 2 : convolution de (D1 ,D2, D3), convolution de (D2, D3, D4), convolution de (D3,D4,D5), convolution de (D4,D5,D6), mais, dans le cas où le stride Str vaut 2 : convolution de (D1 ,D2,D3), (D3,D4,D5), (D5,D6,D7), ... A frequent case in CNNs is that of so-called convolution stages with “stride” of value Str, where the calculations to be made are no longer as in figure 2: convolution of (D1 ,D2, D3), convolution of (D2, D3, D4), convolution of (D3,D4,D5), convolution of (D4,D5,D6), but, in the case where the stride Str is equal to 2: convolution of (D1 ,D2,D3), (D3, D4,D5), (D5,D6,D7), ...
Dans ces cas, dans l’art antérieur, même si les PEs effectuent les calculs, une colonne sur 2 de PEs (en fait (Str-1 ) colonnes toutes les Str colonnes) calcule des résultats qui ne seront pas utilisés, ce qui se traduit par une sous-utilisation des ressources. In these cases, in the prior art, even if the PEs perform the calculations, one out of 2 columns of PEs (in fact (Str-1 ) columns all the Str columns) calculates results which will not be used, which translated into an underutilization of resources.
D’autres types d’opérations ne sont pas faisables avec l’alimentation des données du circuit neuronal systolique 20 par la mémoire DDR 10 telle qu’effectuée par l’art antérieur ou encore conduisent à une perte de ressources de calcul. Other types of operations are not feasible with the supply of data from the systolic neural circuit 20 by the DDR memory 10 as performed by the prior art or even lead to a loss of calculation resources.
A cet effet, suivant un premier aspect, l’invention propose un procédé de traitement, dans un dispositif électronique de traitement, de données à fournir en entrée d’un premier registre à décalage d’un circuit électronique neuronal systolique comportant une grille de processeurs élémentaires, ledit premier registre à décalage véhiculant un vecteur de données de taille K à chaque cycle d’horloge à destination de K colonnes de processeurs élémentaires de ladite grille, ledit procédé de traitement comprenant les étapes suivantes mises en œuvre par ledit dispositif électronique de traitement : obtention d’une suite de données successives D(0), D(1), D(2) ... D(d) extraites par lecture desdites données classées consécutivement dans une première mémoire de stockage et stockage desdites données dans une deuxième mémoire du dispositif de traitement ; To this end, according to a first aspect, the invention proposes a method for processing, in an electronic processing device, data to be supplied as input to a first shift register of a systolic neural electronic circuit comprising a grid of processors elementary processors, said first shift register conveying a data vector of size K at each clock cycle to K columns of elementary processors of said grid, said processing method comprising the following steps implemented by said electronic processing device : obtaining a sequence of successive data D(0), D(1), D(2) ... D(d) extracted by reading said data classified consecutively in a first storage memory and storing said data in a second memory of the processing device;
- génération de vecteurs W(u) en fonction desdites données stockées, chaque vecteur W(u) comportant K composantes (W(u)o, ... , W(u)K-i) tel que W(u)k,k=oàK-i = D(K0 + k*S2 + u*S1 ), où K est un entier strictement supérieur à 1 , KO est une constante prédéfinie, les pas S1 et S2 sont des constantes entières prédéfinies; - fourniture, en entrée dudit registre à décalage, du vecteur W(u), telle que des valeurs successives W(u) sont fournies lors de coups d’horloge successifs, avec u entier allant de 0 à L1 -1 , et L1 constante entière strictement supérieure à un. - generation of vectors W(u) as a function of said stored data, each vector W(u) comprising K components (W(u)o, ... , W(u) K -i) such that W(u)k, k=oàK-i = D(K0 + k*S2 + u*S1 ), where K is an integer strictly greater than 1 , KO is a predefined constant, the steps S1 and S2 are predefined integer constants; - provision, at the input of said shift register, of the vector W(u), such that successive values W(u) are provided during successive clock strokes, with u an integer ranging from 0 to L1 -1 , and L1 constant integer strictly greater than one.
L’invention permet ainsi, par cette solution de gestion des données d’entrée/sortie, de mettre en œuvre des flux de données adéquats et ainsi de réduire des limitations de l’art antérieur dans les performances d’un circuit neuronal systolique, telle que convolution de largeur 1 à 3, perte de rendement en cas de stride supérieur à 1 , etc. The invention thus makes it possible, through this input/output data management solution, to implement adequate data flows and thus to reduce the limitations of the prior art in the performance of a systolic neural circuit, such as than convolution of width 1 to 3, loss of performance in case of stride greater than 1, etc.
Dans des modes de réalisation, un procédé de traitement suivant l’invention comporte en outre une ou plusieurs des caractéristiques suivantes : les étapes suivantes mises en œuvre par ledit dispositif électronique de traitement : o obtention d’un vecteur de données w de taille K fournies par un deuxième registre à décalage du circuit neuronal systolique, ledit deuxième registre à décalage véhiculant à chaque cycle d’horloge un vecteur de données de taille K correspondant aux résultats de K colonnes respectives de processeurs élémentaires de ladite grille ; o les K composantes de w étant (w0, ... , wK-i), stockage dans la deuxième mémoire, de Wk, k=oàK-i à l’adresse indO +K*C*S2 + x*S1 + k*S2 , où indO est une constante prédéfinie, C est le numéro de colonne et x est un indice allant de 0 à L1 -1 ; o fourniture à la première mémoire de stockage d’une suite de données successives extraites par lecture desdites données classées consécutivement dans la deuxième mémoire ; In embodiments, a processing method according to the invention further comprises one or more of the following characteristics: the following steps implemented by said electronic processing device: o obtaining a data vector w of size K provided by a second shift register of the systolic neural circuit, said second shift register conveying at each clock cycle a data vector of size K corresponding to the results of K respective columns of elementary processors of said grid; o the K components of w being (w 0 , ... , w K -i), storage in the second memory, of Wk, k=oàK-i at the address indO +K*C*S2 + x*S1 + k*S2 , where indO is a predefined constant, C is the column number and x is an index ranging from 0 to L1 -1; o supply to the first storage memory of a sequence of successive data extracted by reading said data classified consecutively in the second memory;
- pour k= 0 à K-1 , W(u)k = D(K0 + Ei=iàn ui*S1 i + k*S2), les pas S1 i et S2 sont des constantes prédéfinies ; le vecteur étant fourni en entrée dudit registre à décalage, avec ui entier allant de 0 à L1 i-1 , et L1 i constante strictement supérieure à un ; les étapes suivantes sont mises en œuvre par ledit dispositif électronique de traitement : o obtention d’un vecteur de données w de taille K fournies par un deuxième registre à décalage du circuit neuronal systolique, ledit deuxième registre à décalage véhiculant à chaque cycle d’horloge un vecteur de données de taille K correspondant aux résultats de K colonnes respectives de processeurs élémentaires de ladite grille ; o les K composantes de w étant (wO, wK-1 ), le stockage dans la deuxième mémoire de wk, k= 0 à K-1 est effectué à l’adresse indO+4*C*S2 + Sxt=o àLii -i ( xi * S1 i ) + k*S2, où indO est une constante prédéfinie, C est le numéro de colonne et xi est un indice entier allant de 0 à L1 i-1 ; o fourniture à la première mémoire de stockage d’une suite de données successives extraites par lecture desdites données classées consécutivement dans la deuxième mémoire ; la deuxième mémoire comporte au minimum K bancs de mémoire distincts, et le stockage des données dans la deuxième mémoire est effectué de manière à vérifier que des données qui sont des composantes d’un même vecteur W(u) ne peuvent être stockées dans un même banc. - for k=0 to K-1, W(u)k=D(K0 + Ei=iàn ui*S1 i + k*S2), the steps S1 i and S2 are predefined constants; the vector being provided at the input of said shift register, with ui an integer ranging from 0 to L1 i-1 , and L1 i a constant strictly greater than one; the following steps are implemented by said electronic processing device: o obtaining a vector of data w of size K provided by a second shift register of the systolic neural circuit, said second shift register conveying at each clock cycle a data vector of size K corresponding to the results of K respective columns of elementary processors of said grid; o the K components of w being (wO, wK-1 ), the storage in the second memory of wk, k= 0 to K-1 is carried out at the address indO+4*C*S2 + Sxt=o àLii - i ( xi * S1 i ) + k*S2, where indO is a predefined constant, C is the column number and xi is an integer index ranging from 0 to L1 i-1; o supply to the first storage memory of a sequence of successive data extracted by reading said data classified consecutively in the second memory; the second memory comprises at least K distinct memory banks, and the storage of the data in the second memory is carried out in such a way as to verify that data which are components of the same vector W(u) cannot be stored in the same bench.
Suivant un deuxième aspect, la présente invention propose un dispositif de traitement de données à fournir en entrée d’un premier registre à décalage d’un circuit électronique neuronal systolique comportant une grille de processeurs élémentaires, ledit premier registre à décalage étant adapté pour véhiculer un vecteur de données de taille K à chaque cycle d’horloge à destination de K colonnes de processeurs élémentaires de ladite grille, ledit dispositif électronique de traitement étant adapté pour obtenir une suite de données successives D(0), D(1), D(2) ... D(d) extraites par lecture desdites données classées consécutivement dans une première mémoire de stockage et pour stocker lesdites données dans une deuxième mémoire du dispositif de traitement ; ledit dispositif électronique de traitement étant adapté pour générer des vecteurs W(u) en fonction desdites données stockées, chaque vecteur W(u) comportant K composantes (W(u)o, ... , W(u)K-i) tel que W(u)k,k=oàK-i = D(K0 + k*S2 + u*S1 ), où K est un entier strictement supérieur à 1 , KO est une constante prédéfinie, les pas S1 et S2 sont des constantes entières prédéfinies ; ledit dispositif électronique de traitement étant adapté pour fournir, en entrée dudit registre à décalage, le vecteur W(u), telle que des valeurs successives W(u) sont fournies lors de coups d’horloge successifs, avec u entier allant de 0 à L1 -1 , et L1 constante entière strictement supérieure à un. According to a second aspect, the present invention proposes a device for processing data to be supplied as input to a first shift register of a systolic neural electronic circuit comprising a grid of elementary processors, said first shift register being adapted to convey a vector of data of size K at each clock cycle intended for K columns of elementary processors of said grid, said electronic processing device being adapted to obtain a sequence of successive data D(0), D(1), D( 2)...D(d) extracted by reading said data classified consecutively in a first storage memory and for storing said data in a second memory of the processing device; said electronic processing device being adapted to generate vectors W(u) as a function of said stored data, each vector W(u) comprising K components (W(u)o, ... , W(u) K -i) such that W(u)k,k=oàK-i = D(K0 + k*S2 + u*S1 ), where K is an integer strictly greater than 1 , KO is a predefined constant, steps S1 and S2 are constants predefined integers; said electronic processing device being adapted to supply, at the input of said shift register, the vector W(u), such that successive values W(u) are supplied during successive clock strokes, with u an integer ranging from 0 to L1 -1 , and L1 integer constant strictly greater than one.
Ces caractéristiques et avantages de l’invention apparaîtront à la lecture de la description qui va suivre, donnée uniquement à titre d’exemple, et faite en référence aux dessins annexés, sur lesquels : These characteristics and advantages of the invention will appear on reading the following description, given solely by way of example, and made with reference to the appended drawings, in which:
[Fig 1 ] la figure 1 représente une vue schématique d’une grille 2D de calcul d’un circuit électronique neuronal systolique ; [Fig 2] la figure 2 illustre une distribution de données d’entrée pour un circuit neuronal systolique ; [Fig 1] Figure 1 shows a schematic view of a 2D grid for calculating a systolic neural electronic circuit; [Fig 2] Figure 2 illustrates an input data distribution for a systolic neural circuit;
[Fig 3] la figure 3 illustre une autre distribution de données d’entrée pour un circuit neuronal systolique, qui peut être mise en œuvre dans un mode de réalisation de l’invention ; [Fig 3] Figure 3 illustrates another distribution of input data for a systolic neural circuit, which may be implemented in one embodiment of the invention;
[Fig 4] la figure 4 illustre une autre distribution de données d’entrée pour un circuit neuronal systolique, qui peut être mise en œuvre dans un mode de réalisation de l’invention ; [Fig 4] Figure 4 illustrates another distribution of input data for a systolic neural circuit, which may be implemented in one embodiment of the invention;
[Fig 5] la figure 5 illustre une autre distribution de données d’entrée pour un circuit neuronal systolique, qui peut être mise en œuvre dans un mode de réalisation de l’invention ; [Fig 5] Figure 5 illustrates another distribution of input data for a systolic neural circuit, which may be implemented in one embodiment of the invention;
[Fig 6] la figure 6 illustre une autre distribution de données d’entrée pour un circuit neuronal systolique, qui peut être mise en œuvre dans un mode de réalisation de l’invention; [Fig 6] Figure 6 illustrates another distribution of input data for a systolic neural circuit, which may be implemented in one embodiment of the invention;
[Fig 7] la figure 7 illustre une autre distribution de données d’entrée pour un circuit neuronal systolique, qui peut être mise en œuvre dans un mode de réalisation de l’invention ; [Fig 7] Figure 7 illustrates another distribution of input data for a systolic neural circuit, which may be implemented in one embodiment of the invention;
[Fig 8] la figure 8 représente les étapes d’un procédé dans un mode de réalisation de l’invention ; [Fig 8] Figure 8 shows the steps of a method in one embodiment of the invention;
[Fig 9] la figure 9 représente un système neuronal systolique dans un mode de réalisation de l’invention ; [Fig 9] Figure 9 depicts a systolic neural system in one embodiment of the invention;
La figure 9 représente un système neuronal systolique 1 dans un mode de réalisation de l’invention. Ce système est par exemple embarqué dans un aéronef. Figure 9 shows a systolic neural system 1 in one embodiment of the invention. This system is for example embedded in an aircraft.
Le système 1 comprend une mémoire, par exemple à stockage de masse, un circuit électronique implémentant physiquement un réseau de neurones et un dispositif de traitement 40. The system 1 comprises a memory, for example mass storage, an electronic circuit physically implementing a neural network and a processing device 40.
La mémoire est par exemple la mémoire DDR 10 comme mentionné précédemment en référence à la figure 1 , le circuit électronique est le circuit neuronal systolique 20 sur FGPA tel que décrit relativement à la figure 1 , le dispositif de traitement 40 selon l’invention est interposé entre la mémoire DDR 10 et le circuit 20, par exemple dans le FGPA. The memory is for example the DDR memory 10 as mentioned previously with reference to FIG. 1, the electronic circuit is the systolic neural circuit 20 on FGPA as described in relation to FIG. 1, the processing device 40 according to the invention is interposed between the DDR memory 10 and the circuit 20, for example in the FGPA.
Le dispositif de traitement 40 comporte une mémoire MP 41 et un bloc 42 de contrôle comportant notamment une unité de cadencement 420 des opérations. The processing device 40 comprises a memory MP 41 and a control block 42 comprising in particular a unit 420 for timing the operations.
Le bloc 42 de contrôle comprend par exemple une mémoire et un microprocesseur (non représentés), la mémoire comprenant des instructions logicielles, qui lorsqu’elles sont exécutées sur le microprocesseur, mettent en œuvre les opérations suivantes, décrites en figure 8. The control block 42 comprises for example a memory and a microprocessor (not shown), the memory comprising instructions software, which when executed on the microprocessor, implement the following operations, described in Figure 8.
Ainsi dans une étape 101 , le bloc 42 de contrôle obtient une suite de données successives D(0), D(1), D(2) ... D(d) extraites par lecture, par exemple en burst, desdites données classées consécutivement dans la mémoire 10 (par exemple les données d’une ligne d’image, d étant par exemple une valeur comprise dans la plage allant par exemple de 16 à 256 et stocke lesdites données dans la mémoire MP 41 . Thus in a step 101, the control block 42 obtains a sequence of successive data D(0), D(1), D(2)...D(d) extracted by reading, for example in burst, of said classified data consecutively in the memory 10 (for example the data of an image line, d being for example a value lying in the range going for example from 16 to 256 and stores said data in the memory MP 41 .
Par exemple les données D(n) sont lues par bursts de la DDR 10 sous la forme de vecteurs V(t), chaque vecteur contenant, pour K=4, les données D(4t), D(4t+1 ), D(4t+2), D(4t+3) qui sont écrites consécutivement en mémoire MP 41 : la donnée D(n) est écrite à l’adresse ADO + n. For example, the data D(n) are read by bursts from the DDR 10 in the form of vectors V(t), each vector containing, for K=4, the data D(4t), D(4t+1), D (4t+2), D(4t+3) which are written consecutively in memory MP 41: data D(n) is written at address ADO+n.
Dans une étape 102, le bloc 42 de contrôle génère des vecteurs W(u) en fonction desdites données stockées, selon la formule (1 ) décrite plus loin. In a step 102, the control block 42 generates vectors W(u) as a function of said stored data, according to formula (1) described below.
Chaque vecteur W(u) est constitué de 4 composantes (W(u)o, ... , W(u)K-i) (on rappelle que dans l’exemple K est égal à 4, comme expliqué plus haut en référence à la figure 1 , mais K peut prendre une valeur quelconque). Each vector W(u) is made up of 4 components (W(u)o, ... , W(u) K -i) (remember that in the example K is equal to 4, as explained above with reference in Figure 1, but K can take any value).
Dans une étape 103, le bloc 42 de contrôle fournit successivement, en entrée du registre à décalage 28, un vecteur W(u), pour u entier allant de 0 à L1 -1 , et L1 constante prédéfinie strictement supérieure à un (par exemple strictement supérieur à 2), à chaque coup d’horloge, accompagné de l’indication des adresses des K colonnes consécutives auxquelles les K composantes de W(u) sont destinées. In a step 103, the control block 42 successively supplies, at the input of the shift register 28, a vector W(u), for u an integer ranging from 0 to L1 -1 , and L1 a predefined constant strictly greater than one (for example strictly greater than 2), at each clock stroke, accompanied by the indication of the addresses of the K consecutive columns for which the K components of W(u) are intended.
Ces vecteurs, appliqués en entrée du système 27 de distribution interne, produisent la distribution de données attendue. These vectors, applied as input to the internal distribution system 27, produce the expected data distribution.
Dans un mode de réalisation, W(u)k= D(K0 +u*S1 + k*S2), k=0 à K-1 , In one embodiment, W(u)k= D(K0 +u*S1 + k*S2), k=0 to K-1 ,
KO est une constante prédéfinie, les pas S1 et S2 sont des constantes prédéfinies, non nulles ou nulles selon les cas (dans le cas d’implémentation basé sur une mémoire à nombre premier de bancs, S2 ne sera pas un multiple du nombre de bancs) . KO is a predefined constant, steps S1 and S2 are predefined constants, non-zero or zero depending on the case (in the case of an implementation based on a memory with a prime number of banks, S2 will not be a multiple of the number of banks ) .
Et la mémoire mk contient ainsi la donnée D(K0 +u*S1 + k*S2), pour chaque u de 0 à L1 -1 , après que le registre à décalage d’entrée 28 lui ait présenté cette donnée W(u)k accompagnée de l’indication de la mémoire mk. And the memory mk thus contains the datum D(K0 +u*S1 + k*S2), for each u from 0 to L1 -1 , after the input shift register 28 has presented this datum W(u) to it. k accompanied by the memory indication mk.
Les valeurs de S1 , S2, L1 , KO sont initialement choisies de manière à donner lieu à la distribution souhaitée. The values of S1, S2, L1, KO are initially chosen so as to give rise to the desired distribution.
Dans un mode de réalisation plus général, avec k = 0 à K-1 : In a more general embodiment, with k = 0 to K-1:
W(u)k = D(K0 + 2i=i àn Ui*S1 i + k*S2) formule (1 ) Ui allant de 0 à L1 i-1 , i = 1 à n (n entier supérieur ou égal à 2 ) et L1 i constante prédéfinie non nulle et par exemple strictement supérieure à un (par exemple strictement supérieur à 2) (LÜ=1 revient à ajouter la somme des Sii à KO et enlever la somme de la formule) , les pas S1 i et S2 sont des constantes prédéfinies. W(u) k = D(K0 + 2i=i to n Ui*S1 i + k*S2) formula (1 ) Ui ranging from 0 to L1 i-1 , i = 1 to n (n integer greater than or equal to 2 ) and L1 i non-zero predefined constant and for example strictly greater than one (for example strictly greater than 2) (LÜ=1 amounts to adding the sum of the Sii to KO and removing the sum from the formula), the steps S1 i and S2 are predefined constants.
Pour la fourniture des données au circuit 20, l’incrémentation des Ui se fait dans l’ordre des i croissants : soit i<j, pour chaque j en partant de 0, on incrémente i, de 0 à L1 i-i : pour chaque valeur de i, on fournit les W(u) ; puis on incrémente j de 1 , on remet i à 0 et on recommence. For the supply of data to the circuit 20, the incrementation of the Ui is done in the order of increasing i: i<j, for each j starting from 0, i is incremented, from 0 to L1 i-i: for each value of i, we provide the W(u); then we increment j by 1 , reset i to 0 and start again.
Et la mémoire mk contient ainsi la donnée D(K0 +u *S1 i + k*S2), pour chaque Ui de 0 à L1 i-1, i = 1 à n après que le registre à décalage d’entrée 28 lui ait présenté cette donnée W(u)k accompagnée de l’indication de la mémoire mk. And the memory mk thus contains the data D(K0 +u *S1 i + k*S2), for each Ui from 0 to L1 i-1, i = 1 to n after the input shift register 28 has given it presented this data W(u)k accompanied by the indication of the memory mk.
Les valeurs de S1 i, S2, L1 i, KO sont initialement choisies de manière à donner lieu à la distribution souhaitée. The values of S1 i, S2, L1 i, KO are initially chosen so as to give rise to the desired distribution.
Si on considère toutes les colonnes de la grille (par exemple Ctot colonnes, avec Ctot allant de 1 à quelques centaines, chaque colonne mC contient ainsi la donnée D(K0 +Ui*S1 i + C*S2), C=0 à Ctot-1 If we consider all the columns of the grid (for example C to t columns, with Ctot ranging from 1 to a few hundred, each column mC thus contains the data D(K0 +Ui*S1 i + C*S2), C=0 to C tot -1
L’ensemble de ces opérations réalisées par le bloc de contrôle 41 sont cadencées par l’unité de séquencement 420 des opérations (toutes les opérations sont cadencées au rythme de l’horloge 20, qui est la ou une des horloges utilisées par le FPGA). All of these operations performed by the control block 41 are clocked by the operations sequencing unit 420 (all the operations are clocked at the rate of the clock 20, which is the or one of the clocks used by the FPGA) .
La formule (1 ) est définie de manière à obtenir la distribution souhaitée des données entre les colonnes de processeurs, en fonction de la définition des convolutions à calculer. The formula (1) is defined so as to obtain the desired distribution of the data between the columns of processors, according to the definition of the convolutions to be calculated.
A titre d’exemple, sur la figure 7 ont été représentées les données enregistrées successivement dans la mémoire qui se trouvent sous elles, à la verticale, KO ayant été fixé à 0 pour la formule suivante tirée de la formule 1 générale : W(u)k = D(K0 +u*S1 + v*S3 + k*S2), avec u allant de 0 à L1 - 1 et v allant de 0 à L3 -1 , L1 = 3, S1 = 2, L3 = 2 et S3 = 50, la mémoire m1 étant associé à la colonne n°0 des PEs, la mémoire m2 à la colonne n°1 , ... la mémoire mK à la colonne n°K-1 . By way of example, in FIG. 7 have been represented the data recorded successively in the memory which are located under them, vertically, KO having been fixed at 0 for the following formula taken from general formula 1: W(u )k = D(K0 +u*S1 + v*S3 + k*S2), with u ranging from 0 to L1 - 1 and v ranging from 0 to L3 -1 , L1 = 3, S1 = 2, L3 = 2 and S3=50, memory m1 being associated with column No. 0 of the PEs, memory m2 with column No. 1, ... memory mK with column No. K-1.
Ce type de distribution introduit des recopies, et ne peut pas se faire juste en chargeant le système de distribution interne 27 dans l’ordre où les données sortent de la DDR 10. Le dispositif de traitement 40 selon l’invention est adapté pour écrire une séquence de données dans les mémoires colonne dans un ordre différent de celui dans lequel elles ont été lues en mémoire DDR 10. Similairement le dispositif de traitement 40 selon l’invention est adapté pour lire une séquence de données dans les mémoires colonne dans un ordre différent de celui dans lequel elles sont ensuite écrites en DDR 10. This type of distribution introduces copies, and cannot be done just by loading the internal distribution system 27 in the order in which the data comes out of the DDR 10. The processing device 40 according to the invention is suitable for writing a sequence of data in the column memories in a different order from that in which they were read in DDR 10 memory. Similarly, the processing device 40 according to the invention is suitable for reading a data sequence in the column memories in an order different from that in which they are then written in DDR 10.
Dans une étape 201 , le dispositif de traitement 40 lit les résultats délivrés par le registre à décalage 29. In a step 201, the processing device 40 reads the results delivered by the shift register 29.
L’ordre dans lequel les données dans les mémoires m peuvent être lues est contraint par le fonctionnement du bus 29, qui lit les K (=4 ici) données qui sont situées à la même adresse dans 4 colonnes consécutives. The order in which the data in memories m can be read is constrained by the operation of bus 29, which reads the K (=4 here) data which are located at the same address in 4 consecutive columns.
Les données à exporter par le dispositif de traitement 40 vers la DDR 10 sont distribuées dans les mémoires m avec un pas égal à S2 d’une colonne à l’autre et un pas S1 au sein de chaque colonne. La lecture produira des vecteurs W(C,x) contenant les données d’indice 4*C*S2 + x*S1 + k*S2 avec 0<=k<K=4 (en supposant ici que l’indice commence à 0 (C étant un indice allant de 0 à L1 -1 ; si on considère que l’indice ne commence pas à zéro mais à indo, alors la formule donnant l’indice est indo+4*C*S2 + x*S1 + k*S2). Note : pour une formule générique, x, S1 , et L1 deviennent des vecteurs de même taille n ; soit Xi les composantes de l’indice vecteur x (Xi entier allant de 0 à L1 i -1 ), on remplace le x*S1 par x/=0 à Lli _x ( Xi * S1 i ), (dans la référence ci-dessus à la figure 7 où on utilise S1 et S3 comme pas dans la colonne, S1 et S3 de cet exemple sont alors les deux composantes du vecteur S1 ). The data to be exported by the processing device 40 to the DDR 10 are distributed in the memories m with a pitch equal to S2 from one column to another and a pitch S1 within each column. The read will produce vectors W(C,x) containing the data of index 4*C*S2 + x*S1 + k*S2 with 0<=k<K=4 (assuming here that the index starts at 0 (C being an index ranging from 0 to L1 -1; if we consider that the index does not start at zero but at indo, then the formula giving the index is indo+4*C*S2 + x*S1 + k *S2) Note: for a generic formula, x, S1 , and L1 become vectors of the same size n; let Xi be the components of the vector index x (Xi an integer ranging from 0 to L1 i -1 ), we replace the x*S1 by x/=0 to Lli _ x ( Xi * S1 i ), (in the above reference to Figure 7 where we use S1 and S3 as the step in the column, S1 and S3 in this example are then the two components of the vector S1 ).
Dans une étape 202, le dispositif de traitement 40 écrit les K (=4) données du vecteur W(C,x) aux adresses 4*C*S2 + x*S1 + k*S2 avec 0<k<K ; en mémoire MP 41 , une séquence de données d’indices consécutifs est ainsi écrite, avec les données d’indice consécutif écrites à des adresses consécutives. In a step 202, the processing device 40 writes the K (=4) data of the vector W(C,x) to the addresses 4*C*S2+x*S1+k*S2 with 0<k<K; in memory MP 41 , a sequence of consecutive index data is thus written, with the consecutive index data written to consecutive addresses.
Dans une étape 203, le dispositif de traitement 40 écrit ces séquences extraites de la mémoire MP 41 sous forme de longs bursts en DDR 10 à des adresses consécutives. In a step 203, the processing device 40 writes these sequences extracted from the MP memory 41 in the form of long bursts in DDR 10 at consecutive addresses.
Le dispositif de traitement 40 selon l’invention est adapté pour effectuer des distributions de données selon une formule prédéfinie, dans les mémoires m en restant compatible avec les contraintes des accès DDR et du système de distribution interne. The processing device 40 according to the invention is suitable for carrying out data distributions according to a predefined formula, in the memories m while remaining compatible with the constraints of the DDR accesses and of the internal distribution system.
Du côté de la DDR 10, le flux de données lus par le dispositif de traitement 40 est la suite de pixels consécutifs sur une ligne du tableau d’images d’entrée On the DDR 10 side, the data stream read by the processing device 40 is the series of consecutive pixels on a row of the input image table
Du côté du système de distribution interne 27, la séquence véhiculée est une suite de vecteurs de K (ici 4) données, destinées à 4 mémoires colonne consécutives, ce qui permet d’utiliser les bus 28, 29 en registre à décalage qui réduisent les interconnexions et simplifient les distributions d’horloge dans le FPGA. On the side of the internal distribution system 27, the sequence conveyed is a sequence of vectors of K (here 4) data, intended for 4 consecutive column memories, which makes it possible to use the buses 28, 29 as a shift register which reduces the interconnections and simplifies the clock distributions in the FPGA.
Le dispositif de traitement 40 est de taille indépendante de la taille de la grille de calcul qu’il alimente et s’avère par ailleurs peu coûteux en ressources. Il est possible de charger ou de lire les mémoires colonne de la grille avec des patrons de données conformes à la formule (1 ) et ceci permet d’élargir considérablement le champ d’action de l’architecture. The processing device 40 is of a size that is independent of the size of the computing grid that it supplies and is moreover inexpensive in terms of resources. It is possible to load or read the column memories of the grid with data patterns conforming to formula (1) and this considerably widens the field of action of the architecture.
Les fonctionnalités de stockage, puis de relecture dans un ordre différent se font aisément dans le dispositif de traitement 40 avec une mémoire MP 41 à double port si elle ne produit qu’une donnée par cycle. L’objectif dans un mode de réalisation étant de produire un vecteur à plusieurs (K) composantes (4 dans l’exemple), cela demande une fonctionnalité de mémoire parallèle décrite dans la suite. The functions of storage, then of re-reading in a different order are easily carried out in the processing device 40 with a dual-port MP memory 41 if it only produces one piece of data per cycle. The objective in one embodiment being to produce a vector with several (K) components (4 in the example), this requires a parallel memory functionality described below.
Au cours d’un cycle, un vecteur est écrit et un autre vecteur est lu dans MP 41 , sous le cadencement de l’unité de cadencement 420. During one cycle, one vector is written and another vector is read from MP 41, clocked from timing unit 420.
Dans MP 41 : In MP 41:
- concernant les échanges de données en lecture ou écriture entre le dispositif de traitement 40 et le circuit 20, le vecteur est lu ou écrit dans MP 41 à des adresses séparées par un pas S, alors que - Concerning the exchanges of data in read or write mode between the processing device 40 and the circuit 20, the vector is read or written in MP 41 at addresses separated by a step S, whereas
- ce pas est fixé à 1 (adresses consécutives) dans MP 41 pour les échanges en lecture ou écriture entre le dispositif de traitement 40 et la DDR 10.- this step is fixed at 1 (consecutive addresses) in MP 41 for read or write exchanges between the processing device 40 and the DDR 10.
Dans un mode de réalisation, le dispositif de traitement 40 contient deux paires de générateurs d’adresses pour respectivement les transferts entre DDR 10 et mémoire pivot MP 41 (générateurs d’adresses 421 , 422) et les transferts entre mémoire pivot MP 41 et circuit 20 (générateurs d’adresses 423, 424). In one embodiment, the processing device 40 contains two pairs of address generators respectively for transfers between DDR 10 and pivot memory MP 41 (address generators 421, 422) and transfers between pivot memory MP 41 and circuit 20 (address generators 423, 424).
Un générateur d’adresses est un compteur multi-dimensionnel qui fournit la suite d’adresses : AdO + n1*S1 + n2*S2 + ... avec 0<=ni<Li , les ni s’incrémentant dans l’ordre lexicographique, et les Si étant des entiers donnant les pas d’incrémentation dans chaque dimension du compteur. An address generator is a multi-dimensional counter that provides the sequence of addresses: AdO + n1*S1 + n2*S2 + ... with 0<=ni<Li , the ni incrementing in lexicographic order , and the Si being integers giving the incrementation steps in each dimension of the counter.
La mémoire MP 41 étant de capacité limitée, le transfert de blocs de données entre DDR 10 et circuit 20 s’effectue par exemple en plusieurs phases consécutives. Pour des raisons d’efficacité ces transferts se font en pipeline : le sous-bloc N est lu en même temps que le sous-bloc N+1 s’écrit. Les deux côtés de la mémoire MP 41 sont la plupart du temps actifs simultanément. Le séquencement de ces opérations est contrôlé par l’unité de séquencement 420 qui séquence les entrées/sorties et qui exécute un microprogramme où figurent en particulier les paramètres des générateurs d’adresses. L’invention permet d’étendre significativement l’éventail d’opérations CNN du circuit systolique permettant de sortir du schéma de distribution de données de l’art antérieur présenté ci-dessus, où les pixels adjacents sont répartis dans le même ordre dans les mémoires colonne m. The memory MP 41 being of limited capacity, the transfer of data blocks between DDR 10 and circuit 20 takes place for example in several consecutive phases. For reasons of efficiency, these transfers are done in a pipeline: sub-block N is read at the same time as sub-block N+1 is written. Both sides of MP memory 41 are mostly active simultaneously. The sequencing of these operations is controlled by the sequencing unit 420 which sequences the inputs/outputs and which executes a firmware containing in particular the parameters of the address generators. The invention makes it possible to significantly extend the range of CNN operations of the systolic circuit making it possible to break out of the prior art data distribution scheme presented above, where adjacent pixels are distributed in the same order in the memories. column m.
Les limitations de fonctionnalité de l’architecture (convolution de largeur 1 à 3, perte de rendement en cas de stride supérieur à 1 ) sont ainsi levées grâce à une distribution adaptée des données de la dimension ligne. The functionality limitations of the architecture (convolution of width 1 to 3, loss of performance in the event of a stride greater than 1) are thus lifted thanks to an adapted distribution of the row dimension data.
Les figures 3 à 5 donnent des exemples de distribution de données dans un système mettant en œuvre l’invention et qui rendent possibles des traitements qui n’étaient pas dans la distribution de l’art antérieur où la donnée d’indice i0+ i sur la ligne est écrite dans la mémoire de la colonne i et uniquement dans cette mémoire et pour lesquels la matrice de PEs est utilisée à plein rendement. FIGS. 3 to 5 give examples of distribution of data in a system implementing the invention and which make processing possible which was not in the distribution of the prior art where the datum of index i0+i on the line is written in the memory of column i and only in this memory and for which the matrix of PEs is used at full capacity.
La figure 3 illustre un exemple de distribution dans un mode de réalisation (où S1 = 1 , S2 = 2, dans le cas d’une convolution de largeur 5 et de stride 1 ; le résultat de la colonne associée à la mémoire m2 doit être la convolution de (D1 , D2, D3, D4, D5), le résultat de la colonne associée à la mémoire m3 doit être la convolution de (D2, D3, D4, D5, D6), le résultat de la colonne associée à la mémoire m4 doit être la convolution de (D3, D4, D5, D6, D7), etc. Dans ce cas de mise en œuvre de l’invention, une donnée (par exemple ici la donnée D2 ou D3 ou D4 ou D5) peut ainsi être stockée dans plusieurs mémoires tout en limitant les calculs des PEs non utiles. Figure 3 illustrates an example distribution in one embodiment (where S1 = 1, S2 = 2, in the case of a convolution of width 5 and stride 1; the result of the column associated with memory m2 must be the convolution of (D1 , D2, D3, D4, D5), the result of the column associated with the memory m3 must be the convolution of (D2, D3, D4, D5, D6), the result of the column associated with the memory m4 must be the convolution of (D3, D4, D5, D6, D7), etc. In this case of implementation of the invention, a datum (for example here the datum D2 or D3 or D4 or D5) can thus be stored in several memories while limiting the calculations of non-useful PEs.
La distribution ne comporte pas de recopie dans le cas de la figure 4 correspondant également à une convolution de largeur 5, mais avec un stride Str égal à 2. Le résultat de la colonne associée à la mémoire m2 doit être la convolution de (D1 , D2, D3, D4, D5), le résultat de la colonne associée à la mémoire m3 doit être la convolution de (D3, D4, D5, D6, D7), le résultat de la colonne associée à la mémoire m4 doit être la convolution de (D5, D6, D7, D8, D9), etc. Dans ce cas de mise en œuvre de l’invention (où S1 =1 , S2=2), la convolution effectuée par la colonne de PEs associée à la mémoire 3 utilisera les données à l’intérieur de la surface délimitée en pointillés : les données D3 à D6 sont dans la mémoire m3 et D7 est dans m4. The distribution does not include a copy in the case of figure 4 also corresponding to a convolution of width 5, but with a stride Str equal to 2. The result of the column associated with the memory m2 must be the convolution of (D1 , D2, D3, D4, D5), the result of the column associated with memory m3 must be the convolution of (D3, D4, D5, D6, D7), the result of the column associated with memory m4 must be the convolution of (D5, D6, D7, D8, D9), etc. In this case of implementation of the invention (where S1=1, S2=2), the convolution carried out by the column of PEs associated with the memory 3 will use the data inside the surface delimited in dotted lines: the data D3 to D6 are in memory m3 and D7 is in m4.
La figure 5 illustre un exemple de distribution dans un mode de réalisation (où L1 =1 , S2=2- et donc S1 quelconque), dans le cas des étages dits à « dilation » où l’écart, i.e. la valeur de dilatation, entre les données successives d’une même convolution n’est pas 1. Dans le mode de réalisation de l’invention ici illustré, la largeur de convolution est 3 et la valeur de dilatation est 2 ; le résultat de la colonne associée à la mémoire m2 doit être la convolution de (D1 , D3, D5), le résultat de la colonne associée à la mémoire m3 doit être la convolution de (D3, D5, D7), le résultat de la colonne associée à la mémoire m4 doit être la convolution de (D5, D7, D9). FIG. 5 illustrates an example of distribution in one embodiment (where L1=1, S2=2- and therefore any S1), in the case of so-called “dilation” stages where the difference, ie the expansion value, between the successive data of the same convolution is not 1. In the embodiment of the invention illustrated here, the convolution width is 3 and the dilation value is 2; the result of the column associated with memory m2 must be the convolution of (D1 , D3, D5), the result of the column associated with memory m3 must be the convolution of (D3, D5, D7), the result of the column associated with memory m4 must be the convolution of (D5, D7, D9).
Enfin, la figure 6 illustre un cas où il est fait enchaîner à la grille 22 plusieurs étages du graphe CNN, à partir d’une distribution de données initiale dans un mode de mise en œuvre de l’invention. Ce mode de fonctionnement, dit fusion, a l’avantage d’éviter des stockages à l’extérieur des résultats intermédiaires et de réduire drastiquement le besoin de bande passante d’entrées-sorties. La fusion est un facteur important d’amélioration de la performance du circuit 20 : en effet, le systolique permettant d’intégrer une forte puissance de calcul, celle-ci s’accompagne d’un besoin du même ordre en débit d’entrées sorties, qui devient généralement le facteur limitant pour une partie au moins du traitement CNN. Il peut y avoir, parmi les étages fusionnés, des étages à valeur de stride Str supérieure à 1 , comme illustré en figure 6 (un étage de convolution de largeur K = 5 et valeur de stride Str égale à1 et un étage de convolution de largeur K=3 et de valeur de stride Str égale à 2). Si l’on distribue les données comme indiqué sur la figure 6 (où L1 =3 S1 =1 S2=2), les PEs peuvent enchaîner les calculs pour les deux étages sans avoir besoin de redistribution de données à la fin du premier étage. La fusion s’applique à un nombre d’étages quelconque, la limitation en pratique venant d’autres critères, dont la capacité des mémoires colonnes m. Finally, FIG. 6 illustrates a case where several stages of the CNN graph are chained to the grid 22, from an initial data distribution in one embodiment of the invention. This mode of operation, called fusion, has the advantage of avoiding storage outside of intermediate results and drastically reducing the need for input-output bandwidth. Merging is an important factor in improving the performance of circuit 20: in fact, the systolic allowing the integration of high computing power, this is accompanied by a need of the same order in terms of input output rate. , which usually becomes the limiting factor for at least part of the CNN processing. There may be, among the merged stages, stages with a stride value Str greater than 1, as illustrated in figure 6 (a convolution stage of width K = 5 and stride value Str equal to 1 and a convolution stage of width K=3 and stride value Str equal to 2). If the data is distributed as shown in Figure 6 (where L1 =3 S1 =1 S2=2), the PEs can chain the calculations for the two stages without the need for data redistribution at the end of the first stage. Merging applies to any number of stages, the limitation in practice coming from other criteria, including the capacity of the column memories m.
En résumé, l’invention permet d’élargir significativement le champ d’opérations du circuit neuronal systolique 20 tout en conservant la compacité de l’architecture de grille systolique et de son système 27 de distribution interne. Le traitement intermédiaire, de gestion d’entrées/sorties, mis en œuvre par le dispositif de traitement 40 entre la mémoire DDR 10 et le système de distribution 27 permet de réaliser des distributions de données particulières dans la grille 22 et de traiter des convolutions à caractéristiques (tailles de noyau, stride, dilation) quelconques, permettant de couvrir une large gamme de CNNs, en optimisant le rendement de la grille. In summary, the invention makes it possible to significantly broaden the field of operations of the systolic neural circuit 20 while maintaining the compactness of the systolic grid architecture and of its internal distribution system 27. The intermediate processing, of input/output management, implemented by the processing device 40 between the DDR memory 10 and the distribution system 27 makes it possible to carry out particular data distributions in the grid 22 and to process convolutions at any characteristics (nucleus sizes, stride, dilation), making it possible to cover a wide range of CNNs, while optimizing the performance of the grid.
De plus, le type de distribution de données selon l’invention ouvre la porte au traitement de CNN par fusion d’étages, qui divise le besoin en débit d’entrées sorties de ou vers la DDR par le nombre d’étages fusionnés. Cet artifice évite le plafonnement de la performance du circuit sur une partie du graphe (en général la partie haute du graphe, où le nombre de feature maps est plus faible). In addition, the type of data distribution according to the invention opens the door to CNN processing by stage merging, which divides the I/O throughput requirement from or to the DDR by the number of merged stages. This artifice avoids the capping of the performance of the circuit on a part of the graph (in general the upper part of the graph, where the number of feature maps is lower).
Le coût en ressources du dispositif de traitement 40 de l’invention reste faible par rapport à la densité des FPGAs actuels : moins de 4% pour un FPGA de taille moyenne (7Z045 de Xilinx). La taille du dispositif est par ailleurs la même quelle que soit la taille de la grille de PEs. The resource cost of the processing device 40 of the invention remains low compared to the density of current FPGAs: less than 4% for an FPGA of size medium (7Z045 from Xilinx). The size of the device is moreover the same whatever the size of the grid of PEs.
Par ailleurs, une mémoire individuelle n’étant en général capable de stocker, ou de produire qu’une seule donnée par cycle d’horloge (une pour chaque port s’il s’agit d’une mémoire à double accès), le dispositif de traitement 40 utilisant une mémoire parallèle MP 41 , i.e. capable de manipuler à chaque cycle d’horloge un vecteur à plusieurs composantes, et compte-tenu des motifs de données à manipuler (lois d’adressage affines multi-dimensionnelles). La mémoire parallèle 41 comporte plusieurs bancs mémoire M 410 comme illustré en figure 9. Pour accéder à chaque cycle à un vecteur dans un tel ensemble de bancs M 410, il faut s’assurer que les composantes des vecteurs se trouvent toujours dans des bancs distincts. Furthermore, since an individual memory is generally only capable of storing or producing a single piece of data per clock cycle (one for each port if it is a dual-port memory), the device processing 40 using a parallel memory MP 41, i.e. capable of manipulating a multi-component vector at each clock cycle, and taking into account the data patterns to be manipulated (multi-dimensional affine addressing laws). The parallel memory 41 comprises several memory banks M 410 as illustrated in FIG. 9. To access a vector in such a set of banks M 410 at each cycle, it must be ensured that the components of the vectors are always found in distinct banks. .
Une implémentation possible est la mémoire parallèle composée d’un nombre premier de bancs. Cette technique de mémoire parallèle est connue (décrite en particulier par D. H. Lawrie and C. R. Vora, “The prime memory system for array access" en 1982). One possible implementation is parallel memory composed of a prime number of banks. This parallel memory technique is known (described in particular by D. H. Lawrie and C. R. Vora, “The prime memory system for array access" in 1982).
La mémoire pivot MP 41 est donc un ensemble de K bancs mémoires M 410 identiques à double port (permettant un accès en lecture ou écriture sur chacun de ses ports à chaque cycle), numéroté de 1 à K. Ces mémoires M 410 sont vues collectivement comme une mémoire plus grande (MP), dont la capacité est la somme des capacités individuelles. L’adresse A dans la mémoire MP 41 correspond à l’adresse A/K dans le banc mémoire M 410 de numéro A%K (i.e. A modulo K). The pivot memory MP 41 is therefore a set of K identical double-port memory banks M 410 (allowing read or write access to each of its ports at each cycle), numbered from 1 to K. These memories M 410 are seen collectively as a larger memory (MP), the capacity of which is the sum of the individual capacities. Address A in memory MP 41 corresponds to address A/K in memory bank M 410 with number A%K (i.e. A modulo K).
Dans le sens depuis la mémoire DDR 10 vers la grille 22, l’objectif du dispositif de traitement 40 est de pouvoir lire en un cycle d’horloge un vecteur de K (ici 4 ) composantes y(k) = MP( ADR_A + k*S ) avec 0<k<K-1 (correspond à un cas où N0 =0, S1 = 0, S=S2 et S3 = 0 ). Ceci n’est possible que si les K composantes se trouvent dans des bancs distincts, puisqu’un banc ne peut fournir qu’une valeur par cycle. In the direction from the DDR memory 10 to the gate 22, the objective of the processing device 40 is to be able to read in one clock cycle a vector of K (here 4) components y(k)=MP(ADR_A+k *S ) with 0<k<K-1 (corresponds to a case where N0 =0, S1 = 0, S=S2 and S3 = 0 ). This is only possible if the K components are in separate banks, since a bank can only provide one value per cycle.
Donc (ADR_A+k1 *S)%K doit être différent de (ADR_A+k2*S)%K si k2 est différent de k1 pour k1 et k2 entre 0 et K-1 . So (ADR_A+k1*S)%K must be different from (ADR_A+k2*S)%K if k2 is different from k1 for k1 and k2 between 0 and K-1 .
La condition est vérifiée si (k1 -k2)*S %K n’est nul que si k2=k1 , condition toujours vraie si S et K sont premiers entre eux. Dans l’implémentation actuelle, K=5, nombre premier garantissant qu’on pourra accéder à tous les vecteurs d’adresses ADR_A+k*S dans la mémoire virtuelle MP 41 , tant que S ne sera pas multiple de 5, cas pathologique que l’on peut toujours éviter ou contourner. The condition is verified if (k1 -k2)*S %K is zero only if k2=k1 , condition always true if S and K are coprime. In the current implementation, K=5, a prime number guaranteeing that all the address vectors ADR_A+k*S in the virtual memory MP 41 can be accessed, as long as S is not a multiple of 5, a pathological case that one can always avoid or circumvent.
Outre les bancs mémoires eux-mêmes, le dispositif de traitement 40 comporte alors en outre de chaque côté (i.e. côté mémoire DDR 10 et côté circuit 20) et dans chaque sens (lecture et écriture) des blocs logiques, nommés Shuffler, 430, 431 , 432, 433, qui connectent chaque banc mémoire à la composante du vecteur qu’il doit lire ou écrire : si le vecteur vise les adresses ADO + n*S, 0<=n<4, le numéro du banc concerné par la composante n étant (ADO +n*S)%5 mémorise les composantes du vecteur. II est rappelé qu’il y a également de chaque côté un convertisseur d’adressesIn addition to the memory banks themselves, the processing device 40 then further comprises on each side (ie DDR memory side 10 and circuit side 20) and in each direction (read and write) logic blocks, named Shuffler, 430, 431 , 432, 433, which connect each memory bank to the component of the vector that it must read or write: if the vector targets the addresses ADO + n*S, 0<=n<4, the number of the bank concerned by the component n being ( ADO +n*S)%5 stores the components of the vector. It is recalled that there is also on each side an address converter
421 , 422, 423, 424 qui transforme une adresse virtuelle A en 5 adresses destinées à chacun des bancs : si la composante n d’un vecteur est destinée au banc b = (ADO +n*S)%5, l’adresse dans ce banc sera égale à (ADO +n*S -b )/5. 421 , 422, 423, 424 which transforms a virtual address A into 5 addresses intended for each of the banks: if the component n of a vector is intended for bank b = (ADO +n*S)%5, the address in this bench will be equal to (ADO +n*S -b )/5.
L’invention peut être mise en œuvre dans des systèmes embarqués de nature très variée, par exemple dans le traitement d’images par réseau de neurones à bord de satellite, et/ou configurable sur un FPGA durci aux radiations, et/ou plus généralement relatifs à la classification, détection ou reconnaissance sur des images ou signaux temps réel. The invention can be implemented in embedded systems of a very varied nature, for example in the processing of images by neural network on board a satellite, and/or configurable on a radiation-hardened FPGA, and/or more generally relating to classification, detection or recognition on real-time images or signals.

Claims

REVENDICATIONS
1. Procédé de traitement, dans un dispositif électronique de traitement (40), de données à fournir en entrée d’un premier registre à décalage (28) d’un circuit électronique neuronal systolique (1 ) comportant une grille de processeurs élémentaires (22) , ledit premier registre à décalage véhiculant un vecteur de données de taille K à chaque cycle d’horloge à destination de K colonnes de processeurs élémentaires (PE) de ladite grille, ledit procédé de traitement comprenant les étapes suivantes mises en œuvre par ledit dispositif électronique de traitement : obtention d’une suite de données successives D(0), D(1 ), D(2) ... D(d) extraites par lecture desdites données classées consécutivement dans une première mémoire de stockage et stockage desdites données dans une deuxième mémoire (m) du dispositif de traitement ; 1. Process for processing, in an electronic processing device (40), data to be supplied as input to a first shift register (28) of a systolic neural electronic circuit (1) comprising a grid of elementary processors (22 ), said first shift register conveying a data vector of size K at each clock cycle to K columns of elementary processors (PE) of said grid, said processing method comprising the following steps implemented by said device processing electronics: obtaining a sequence of successive data D(0), D(1), D(2) ... D(d) extracted by reading said data classified consecutively in a first storage memory and storing said data in a second memory (m) of the processing device;
- génération de vecteurs W(u) en fonction desdites données stockées, chaque vecteur W(u) comportant K composantes (W(u)o, , W(u)K-i) tel que W(u)k,k=oàK-i = D(K0 + k*S2 + u*S1 ), où K est un entier strictement supérieur à 1 , KO est une constante prédéfinie, les pas S1 et S2 sont des constantes entières prédéfinies; - generation of vectors W(u) as a function of said stored data, each vector W(u) comprising K components (W(u)o, , W(u) K -i) such that W(u)k,k=oàK -i = D(K0 + k*S2 + u*S1 ), where K is an integer strictly greater than 1 , KO is a predefined constant, steps S1 and S2 are predefined integer constants;
- fourniture, en entrée dudit registre à décalage, du vecteur W(u), telle que des valeurs successives W(u) sont fournies lors de coups d’horloge successifs, avec u entier allant de 0 à L1 -1 , et L1 constante entière strictement supérieure à un. - provision, at the input of said shift register, of the vector W(u), such that successive values W(u) are provided during successive clock strokes, with u an integer ranging from 0 to L1 -1 , and L1 constant integer strictly greater than one.
2. Procédé de traitement selon la revendication 1 , comprenant en outre les étapes suivantes mises en œuvre par ledit dispositif électronique de traitement (40) : obtention d’un vecteur de données w de taille K fournies par un deuxième registre à décalage (29) du circuit neuronal systolique (1 ), ledit deuxième registre à décalage véhiculant à chaque cycle d’horloge un vecteur de données de taille K correspondant aux résultats de K colonnes respectives de processeurs élémentaires de ladite grille ; 2. Processing method according to claim 1, further comprising the following steps implemented by said electronic processing device (40): obtaining a data vector w of size K supplied by a second shift register (29) the systolic neural circuit (1), said second shift register conveying at each clock cycle a data vector of size K corresponding to the results of K respective columns of elementary processors of said grid;
- les K composantes de w étant (w0, ... , wK-i), stockage dans la deuxième mémoire (m), de Wk, k= o à K-i à l’adresse indO +K*C*S2 + x*S1 + k*S2 , où indO est une constante prédéfinie, C est le numéro de colonne et x est un indice allant de 0 à L1 -1 ; fourniture à la première mémoire de stockage (10) d’une suite de données successives extraites par lecture desdites données classées consécutivement dans la deuxième mémoire (m). - the K components of w being (w 0 , ... , w K -i), storage in the second memory (m), from Wk, k= o to Ki at the address indO +K*C*S2 + x*S1 + k*S2 , where indO is a predefined constant, C is the column number and x is an index ranging from 0 to L1 -1; supplying the first storage memory (10) with a sequence of successive data extracted by reading said data classified consecutively in the second memory (m).
3. Procédé de traitement selon la revendication 1 ou 2, selon lequel, pour k= 0 à K-1 , W(u)k = D(K0 + St=i àn Ui*S1 i + k*S2), les pas S1 i et S2 sont des constantes prédéfinies ; le vecteur étant fourni en entrée dudit registre à décalage, avec Ui entier allant de 0 à L1 i-1 , et L1 i constante strictement supérieure à un. 3. Processing method according to claim 1 or 2, according to which, for k=0 to K-1, W(u)k=D(K0 + St=i to n Ui*S1 i + k*S2), the steps S1 i and S2 are predefined constants; the vector being provided at the input of said shift register, with Ui an integer ranging from 0 to L1 i-1 , and L1 i a constant strictly greater than one.
4. Procédé de traitement selon la revendication 3, comprenant en outre les étapes suivantes mises en œuvre par ledit dispositif électronique de traitement (40) : obtention d’un vecteur de données w de taille K fournies par un deuxième registre à décalage (29) du circuit neuronal systolique (1 ), ledit deuxième registre à décalage véhiculant à chaque cycle d’horloge un vecteur de données de taille K correspondant aux résultats de K colonnes respectives de processeurs élémentaires de ladite grille ; 4. Processing method according to claim 3, further comprising the following steps implemented by said electronic processing device (40): obtaining a data vector w of size K supplied by a second shift register (29) the systolic neural circuit (1), said second shift register conveying at each clock cycle a data vector of size K corresponding to the results of K respective columns of elementary processors of said grid;
- les K composantes de w étant (w0, wK-i), le stockage dans la deuxième mémoire de Wk, k= o à K-I est effectué à l’adresse indO+4*C*S2 + Sxi=o à Lii -i ( Xi * S1 i ) + k*S2, où indO est une constante prédéfinie, C est le numéro de colonne et Xi est un indice entier allant de 0 à L1 i-1 ; fourniture à la première mémoire de stockage (10) d’une suite de données successives extraites par lecture desdites données classées consécutivement dans la deuxième mémoire (m). - the K components of w being (w 0 , w K -i), the storage in the second memory of Wk, k= o to KI is carried out at the address indO+4*C*S2 + Sxi=o to Lii -i ( Xi * S1 i ) + k*S2, where indO is a predefined constant, C is the column number and Xi is an integer index ranging from 0 to L1 i-1; supplying the first storage memory (10) with a sequence of successive data extracted by reading said data classified consecutively in the second memory (m).
5. Procédé de traitement selon l’une des revendications précédentes, selon lequel la deuxième mémoire (m) comporte au minimum K bancs de mémoire distincts, et le stockage des données dans la deuxième mémoire est effectué de manière à vérifier que des données qui sont des composantes d’un même vecteur W(u) ne peuvent être stockées dans un même banc. 5. Processing method according to one of the preceding claims, according to which the second memory (m) comprises at least K distinct memory banks, and the storage of the data in the second memory is carried out in such a way as to verify that data which are components of the same vector W(u) cannot be stored in the same bank.
6. Dispositif (40) de traitement de données à fournir en entrée d’un premier registre à décalage (28) d’un circuit électronique neuronal systolique (1 ) comportant une grille de processeurs élémentaires (22), ledit premier registre à décalage étant adapté pour véhiculer un vecteur de données de taille K à chaque cycle d’horloge à destination de K colonnes de processeurs élémentaires (PE) de ladite grille, ledit 18 dispositif électronique de traitement (40) étant adapté pour obtenir une suite de données successives D(0), D(1), D(2) ... D(d) extraites par lecture desdites données classées consécutivement dans une première mémoire de stockage (10) et pour stocker lesdites données dans une deuxième mémoire (m) du dispositif de traitement ; ledit dispositif électronique de traitement étant adapté pour générer des vecteurs W(u) en fonction desdites données stockées, chaque vecteur W(u) comportant K composantes (W(u)o, ... , W(u)K-i) tel que W(u)k, k=oàK-i = D(K0 + k*S2 + u*S1 ), où K est un entier strictement supérieur à 1 , KO est une constante prédéfinie, les pas S1 et S2 sont des constantes entières prédéfinies ; ledit dispositif électronique de traitement (40) étant adapté pour fournir, en entrée dudit registre à décalage (28), le vecteur W(u), telle que des valeurs successives W(u) sont fournies lors de coups d’horloge successifs, avec u entier allant de 0 à L1 -1 , et L1 constante entière strictement supérieure à un. 6. Device (40) for processing data to be supplied as input to a first shift register (28) of a systolic neural electronic circuit (1) comprising a grid of elementary processors (22), said first shift register being adapted to convey a vector of data of size K at each clock cycle to K columns of elementary processors (PE) of said grid, said 18 electronic processing device (40) being adapted to obtain a sequence of successive data D(0), D(1), D(2)...D(d) extracted by reading said data classified consecutively in a first memory of storage (10) and for storing said data in a second memory (m) of the processing device; said electronic processing device being adapted to generate vectors W(u) as a function of said stored data, each vector W(u) comprising K components (W(u)o, ... , W(u) K -i) such that W(u)k, k=oàK-i = D(K0 + k*S2 + u*S1 ), where K is an integer strictly greater than 1 , KO is a predefined constant, steps S1 and S2 are constants predefined integers; said electronic processing device (40) being adapted to supply, as input to said shift register (28), the vector W(u), such that successive values W(u) are supplied during successive clock strokes, with u integer ranging from 0 to L1 -1 , and L1 integer constant strictly greater than one.
7. Dispositif (40) de traitement de données selon la revendication 6, adapté en outre pour obtenir un vecteur de données w de taille K fournies par un deuxième registre à décalage (29) du circuit neuronal systolique (1 ), ledit deuxième registre à décalage étant adapté pour véhiculer à chaque cycle d’horloge un vecteur de données de taille K correspondant aux résultats de K colonnes respectives de processeurs élémentaires de ladite grille, les K composantes de w étant (w0, wK- 1) ; ledit dispositif électronique de traitement étant adapté pour stocker dans la deuxième mémoire (m), Wk, k=oàK-i à l’adresse indO +K*C*S2 + x*S1 + k*S2 , où indO est une constante prédéfinie, C est le numéro de colonne et x est un indice allant de 0 à L1 -1 et pour fournir à la première mémoire de stockage une suite de données successives extraites par lecture desdites données classées consécutivement dans la deuxième mémoire. 7. Data processing device (40) according to claim 6, further adapted to obtain a data vector w of size K provided by a second shift register (29) of the systolic neural circuit (1), said second register to offset being adapted to convey at each clock cycle a data vector of size K corresponding to the results of K respective columns of elementary processors of said grid, the K components of w being (w 0 , w K -1); said electronic processing device being adapted to store in the second memory (m), Wk, k=oàK-i at the address indO +K*C*S2 + x*S1 + k*S2 , where indO is a predefined constant , C is the column number and x is an index ranging from 0 to L1 -1 and to provide the first storage memory with a sequence of successive data extracted by reading said data classified consecutively in the second memory.
8. Dispositif de traitement (40) selon la revendication 6 ou 7, dans lequel, pour k= 0 à K-1 , W(u)k = D(K0 + Ei=iàn u *S1 i + k*S2), les pas S1i et S2 sont des constantes prédéfinies ; le vecteur étant fourni en entrée dudit registre à décalage, avec Ui entier allant de 0 à L1 i-1 , et L1 i constante strictement supérieure à un. 8. Processing device (40) according to claim 6 or 7, in which, for k=0 to K-1, W(u)k=D(K0 + Ei=iàn u *S1 i + k*S2), steps S1i and S2 are predefined constants; the vector being provided at the input of said shift register, with Ui an integer ranging from 0 to L1 i-1 , and L1 i a constant strictly greater than one.
9. Dispositif de traitement (40) selon la revendication 8, adapté pour obtenir un vecteur de données w de taille K fournies par un deuxième registre à décalage (29) du circuit neuronal systolique (1 ), ledit deuxième registre à décalage véhiculant à chaque cycle d’horloge un vecteur de données de taille K correspondant aux résultats de K colonnes respectives de processeurs élémentaires de ladite grille, les 19 9. Processing device (40) according to claim 8, adapted to obtain a data vector w of size K provided by a second shift register (29) of the systolic neural circuit (1), said second shift register conveying at each clock cycle a data vector of size K corresponding to the results of K respective columns of elementary processors of said grid, the 19
K composantes de w étant (w0, wK-i), ledit dispositif électronique de traitement (40)étant adapté pour stocker dans la deuxième mémoire de wk, k=o àK-i à l’adresse indO+4*C*S2 + Sxi=oàLii-i ( Xi * S1 i ) + k*S2, où indO est une constante prédéfinie, C est le numéro de colonne et Xi est un indice entier allant de 0 à L1 i-1 ; ledit dispositif électronique de traitement étant adapté pour fournir à la première mémoire de stockage une suite de données successives extraites par lecture desdites données classées consécutivement dans la deuxième mémoire. K components of w being (w 0 , w K -i), said electronic processing device (40) being adapted to store in the second memory of w k , k=o to K-i at the address indO+4*C *S2 + Sxi=oàLii-i ( Xi * S1 i ) + k*S2, where indO is a predefined constant, C is the column number and Xi is an integer index ranging from 0 to L1 i-1; said electronic processing device being suitable for supplying the first storage memory with a sequence of successive data extracted by reading said data classified consecutively in the second memory.
10. Dispositif de traitement (40) selon l’une des revendications 6 à 9, la deuxième mémoire comportant au minimum K bancs de mémoire distincts, et ledit dispositif de traitement étant adapté pour effectuer le stockage des données dans la deuxième mémoire de manière à vérifier que des données qui sont des composantes d’un même vecteur W(u) ne peuvent être stockées dans un même banc. 10. Processing device (40) according to one of claims 6 to 9, the second memory comprising at least K separate memory banks, and said processing device being adapted to perform the storage of data in the second memory so as to check that data which are components of the same vector W(u) cannot be stored in the same bank.
PCT/EP2021/078105 2020-10-12 2021-10-12 Method and device for processing data to be supplied as input for a first shift register of a systolic neural electronic circuit WO2022078982A1 (en)

Priority Applications (1)

Application Number Priority Date Filing Date Title
EP21790454.9A EP4226256A1 (en) 2020-10-12 2021-10-12 Method and device for processing data to be supplied as input for a first shift register of a systolic neural electronic circuit

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
FRFR2010391 2020-10-12
FR2010391A FR3115136A1 (en) 2020-10-12 2020-10-12 METHOD AND DEVICE FOR PROCESSING DATA TO BE PROVIDED AS INPUT OF A FIRST SHIFT REGISTER OF A SYSTOLIC NEURONAL ELECTRONIC CIRCUIT

Publications (1)

Publication Number Publication Date
WO2022078982A1 true WO2022078982A1 (en) 2022-04-21

Family

ID=74592066

Family Applications (1)

Application Number Title Priority Date Filing Date
PCT/EP2021/078105 WO2022078982A1 (en) 2020-10-12 2021-10-12 Method and device for processing data to be supplied as input for a first shift register of a systolic neural electronic circuit

Country Status (3)

Country Link
EP (1) EP4226256A1 (en)
FR (1) FR3115136A1 (en)
WO (1) WO2022078982A1 (en)

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN107578098A (en) 2017-09-01 2018-01-12 中国科学院计算技术研究所 Neural network processor based on systolic arrays
US20190236049A1 (en) * 2018-01-31 2019-08-01 Amazon Technologies, Inc. Performing concurrent operations in a processing element

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN107578098A (en) 2017-09-01 2018-01-12 中国科学院计算技术研究所 Neural network processor based on systolic arrays
US20190236049A1 (en) * 2018-01-31 2019-08-01 Amazon Technologies, Inc. Performing concurrent operations in a processing element

Non-Patent Citations (2)

* Cited by examiner, † Cited by third party
Title
KUNG H ET AL: "Two-level pipelined systolic array for multidimensional convolution", IMAGE AND VISION COMPUTING, ELSEVIER, GUILDFORD, GB, vol. 1, no. 1, 2 February 1983 (1983-02-02), pages 30 - 36, XP024237511, ISSN: 0262-8856, [retrieved on 19830201], DOI: 10.1016/0262-8856(83)90005-7 *
KUNG H T ET AL: "Maestro: A Memory-on-Logic Architecture for Coordinated Parallel Use of Many Systolic Arrays", 2019 IEEE 30TH INTERNATIONAL CONFERENCE ON APPLICATION-SPECIFIC SYSTEMS, ARCHITECTURES AND PROCESSORS (ASAP), IEEE, vol. 2160-052X, 15 July 2019 (2019-07-15), pages 42 - 50, XP033612005, DOI: 10.1109/ASAP.2019.00-31 *

Also Published As

Publication number Publication date
FR3115136A1 (en) 2022-04-15
EP4226256A1 (en) 2023-08-16

Similar Documents

Publication Publication Date Title
EP3660849B1 (en) Memory circuit suitable for performing computing operations
US20230041966A1 (en) Activation Functions for Deep Neural Networks
US20200234124A1 (en) Winograd transform convolution operations for neural networks
WO2010037570A1 (en) Device for the parallel processing of a data stream
WO2005031493A2 (en) Component with a dynamically reconfigurable architecture
WO2019084788A1 (en) Computation apparatus, circuit and relevant method for neural network
FR2711436A1 (en) An improved method of parallel operation of several computing units, in particular in image processing, and corresponding architecture.
EP3803636B1 (en) Ntt processor including a plurality of memory banks
FR3042050B1 (en) COMPUTER DEVICE WITH MEMORY PROCESSING AND NARROW ACCESS PORTS
JP2022137247A (en) Processing for a plurality of input data sets
FR3101980A1 (en) Processor
EP3803574A1 (en) Twiddle factor generating circuit for an ntt processor
FR2724741A1 (en) ELECTRONIC CIRCUIT FOR MODULAR CALCULATION IN A FINISHED BODY
EP4226256A1 (en) Method and device for processing data to be supplied as input for a first shift register of a systolic neural electronic circuit
US20200026989A1 (en) Performing consecutive mac operations on a set of data using different kernels in a mac circuit
FR3118528A1 (en) Memory module suitable for implementing calculation functions
EP0924626A1 (en) Pipelined fast Fourier processor
WO2000026790A1 (en) Memory with vectorial access
EP0947913B1 (en) Improved method of implementing integer division
FR2802668A1 (en) SECURE DATA TRANSFER METHOD
EP2901411A1 (en) Device for image decomposition using a wavelet transform
WO2023140778A1 (en) Convolution engine and methods of operating and forming thereof
EP4242855B1 (en) Address generator for a computer having a single instruction multiple data architecture
EP2245474B1 (en) Device and method for monitoring and using internal signals in a programmable system
WO2022129156A1 (en) Exploitation of low data density or nonzero weights in a weighted sum computer

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: 21790454

Country of ref document: EP

Kind code of ref document: A1

NENP Non-entry into the national phase

Ref country code: DE

ENP Entry into the national phase

Ref document number: 2021790454

Country of ref document: EP

Effective date: 20230512