EP4226256A1 - 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 - Google Patents

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

Info

Publication number
EP4226256A1
EP4226256A1 EP21790454.9A EP21790454A EP4226256A1 EP 4226256 A1 EP4226256 A1 EP 4226256A1 EP 21790454 A EP21790454 A EP 21790454A EP 4226256 A1 EP4226256 A1 EP 4226256A1
Authority
EP
European Patent Office
Prior art keywords
data
memory
vector
shift register
processing device
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Pending
Application number
EP21790454.9A
Other languages
German (de)
English (en)
Inventor
Eric Lenormand
Hadi SAOUD
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Thales SA
Original Assignee
Thales SA
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 SA filed Critical Thales SA
Publication of EP4226256A1 publication Critical patent/EP4226256A1/fr
Pending legal-status Critical Current

Links

Classifications

    • GPHYSICS
    • G06COMPUTING OR CALCULATING; 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 OR CALCULATING; 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 OR CALCULATING; 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
    • GPHYSICS
    • G06COMPUTING OR CALCULATING; 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/0464Convolutional networks [CNN, ConvNet]

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

Abstract

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; - génération de vecteurs W(u) en fonction desdites données stockées, chaque vecteur W(u) comportant K composantes (W(u)0, …, W(u)K-1) tel que W(u)k, k= 0 à K-1 = D(K0 + k*S2 + u*S1), où K est un entier strictement supérieur à 1, K0 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.

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
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.
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.
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.
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.
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.
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.
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.
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.
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.
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
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.
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.
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.
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.
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).
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.
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.
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.
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..
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.
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), ...
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.
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.
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 ;
- 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.
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.
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 ;
- 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.
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.
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 :
[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 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 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 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 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 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 8] la figure 8 représente les étapes d’un procédé dans un mode de réalisation de l’invention ;
[Fig 9] la figure 9 représente un système neuronal systolique dans un mode de réalisation de l’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.
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.
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.
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.
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.
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 .
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.
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.
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).
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.
Ces vecteurs, appliqués en entrée du système 27 de distribution interne, produisent la distribution de données attendue.
Dans un mode de réalisation, W(u)k= D(K0 +u*S1 + k*S2), k=0 à 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) .
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.
Les valeurs de S1 , S2, L1 , KO sont initialement choisies de manière à donner lieu à la distribution souhaitée.
Dans un mode de réalisation plus général, avec k = 0 à 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.
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.
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.
Les valeurs de S1 i, S2, L1 i, KO sont initialement choisies de manière à donner lieu à la distribution souhaitée.
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
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).
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.
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 .
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.
Dans une étape 201 , le dispositif de traitement 40 lit les résultats délivrés par le registre à décalage 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.
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 ).
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.
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.
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.
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
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.
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.
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.
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.
Dans 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
- 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.
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).
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.
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.
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.
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.
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.
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.
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).
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.
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.
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).
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.
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.
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).
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).
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.
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 .
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.
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’adresses
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.
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.

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 ;
- 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.
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 ;
- 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).
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.
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 ;
- 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).
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.
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.
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.
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.
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
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.
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.
EP21790454.9A 2020-10-12 2021-10-12 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 Pending EP4226256A1 (fr)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
FR2010391A FR3115136B1 (fr) 2020-10-12 2020-10-12 Procede, et dispositif, de traitement, de donnees a fournir en entree d'un premier registre a decalage d'un circuit electronique neuronal systolique
PCT/EP2021/078105 WO2022078982A1 (fr) 2020-10-12 2021-10-12 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

Publications (1)

Publication Number Publication Date
EP4226256A1 true EP4226256A1 (fr) 2023-08-16

Family

ID=74592066

Family Applications (1)

Application Number Title Priority Date Filing Date
EP21790454.9A Pending EP4226256A1 (fr) 2020-10-12 2021-10-12 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

Country Status (3)

Country Link
EP (1) EP4226256A1 (fr)
FR (1) FR3115136B1 (fr)
WO (1) WO2022078982A1 (fr)

Family Cites Families (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN107578098B (zh) 2017-09-01 2020-10-30 中国科学院计算技术研究所 基于脉动阵列的神经网络处理器
US10459876B2 (en) * 2018-01-31 2019-10-29 Amazon Technologies, Inc. Performing concurrent operations in a processing element

Also Published As

Publication number Publication date
FR3115136A1 (fr) 2022-04-15
WO2022078982A1 (fr) 2022-04-21
FR3115136B1 (fr) 2025-01-03

Similar Documents

Publication Publication Date Title
US12387091B2 (en) Activation functions for deep neural networks
EP3660849A1 (fr) Circuit mémoire adapté à mettre en oeuvre des opérations de calcul
CN107909148A (zh) 用于执行卷积神经网络中的卷积运算的装置
EP3803636B1 (fr) Processeur ntt incluant une pluralite de bancs de memoires
CN114270305B (zh) 具有转换电路系统的mac处理流水线和操作其的方法
FR2936626A1 (fr) Dispositif de traitement en parallele d&#39;un flux de donnees
FR2860313A1 (fr) Composant a architecture reconfigurable dynamiquement
WO2019084788A1 (fr) Appareil de calcul, circuit et procédé associé pour réseau neuronal
FR3042050A1 (fr)
EP3803574A1 (fr) Circuit de génération de facteurs de rotation pour processeur ntt
FR2568036A1 (fr) Circuit de calcul
FR3101980A1 (fr) Processeur
WO2022078982A1 (fr) Procédé, et dispositif, de traitement, de données à fournir en entrée d&#39;un premier registre à décalage d&#39;un circuit électronique neuronal systolique
EP4020475A1 (fr) Module mémoire adapté à mettre en oeuvre des fonctions de calcul
CN102982509B (zh) 图像处理电路
EP0924626A1 (fr) Processeur de calcul d&#39;une transformation rapide de Fourier à architecture dite &#34;pipelinée&#34;
EP2901411B1 (fr) Dispositif de decomposition d&#39;images par transformee en ondelettes
EP0667969A1 (fr) Dispositif electronique de calcul d&#39;une transformee de fourier et procede pour minimiser la taille des chemins de donnees internes d&#39;un tel dispositif
EP4206938B1 (fr) Système de transfert direct de données
CN111324793A (zh) 对存储感兴趣区域的数据的操作进行控制的方法和装置
FR2802668A1 (fr) Procede de transfert securise de donnees
FR3131429A1 (fr) Système de transfert direct de données
WO2023140778A1 (fr) Moteur à convolution et ses procédés de fonctionnement et de formation
FR3159250A1 (fr) Circuit électronique de type multiplieur-accumulateur (MAC)
EP2245474B1 (fr) Dispositif et procede d&#39;observation et d&#39;exploitation de signaux internes d&#39;un systeme programmable

Legal Events

Date Code Title Description
STAA Information on the status of an ep patent application or granted ep patent

Free format text: STATUS: UNKNOWN

STAA Information on the status of an ep patent application or granted ep patent

Free format text: STATUS: THE INTERNATIONAL PUBLICATION HAS BEEN MADE

PUAI Public reference made under article 153(3) epc to a published international application that has entered the european phase

Free format text: ORIGINAL CODE: 0009012

STAA Information on the status of an ep patent application or granted ep patent

Free format text: STATUS: REQUEST FOR EXAMINATION WAS MADE

17P Request for examination filed

Effective date: 20230412

AK Designated contracting states

Kind code of ref document: A1

Designated state(s): AL AT BE BG CH CY CZ DE DK EE ES FI FR GB GR HR HU IE IS IT LI LT LU LV MC MK MT NL NO PL PT RO RS SE SI SK SM TR

DAV Request for validation of the european patent (deleted)
DAX Request for extension of the european patent (deleted)
STAA Information on the status of an ep patent application or granted ep patent

Free format text: STATUS: EXAMINATION IS IN PROGRESS

17Q First examination report despatched

Effective date: 20240410