WO2017108398A1 - Circuit electronique, notamment apte a l'implementation de reseaux de neurones a plusieurs niveaux de precision - Google Patents

Circuit electronique, notamment apte a l'implementation de reseaux de neurones a plusieurs niveaux de precision Download PDF

Info

Publication number
WO2017108398A1
WO2017108398A1 PCT/EP2016/079998 EP2016079998W WO2017108398A1 WO 2017108398 A1 WO2017108398 A1 WO 2017108398A1 EP 2016079998 W EP2016079998 W EP 2016079998W WO 2017108398 A1 WO2017108398 A1 WO 2017108398A1
Authority
WO
WIPO (PCT)
Prior art keywords
subwords
processors
electronic circuit
columns
word
Prior art date
Application number
PCT/EP2016/079998
Other languages
English (en)
Inventor
Jean-Marc Philippe
Alexandre CARBON
Marc Duranton
Original Assignee
Commissariat A L'energie Atomique Et Aux Energies Alternatives
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 Commissariat A L'energie Atomique Et Aux Energies Alternatives filed Critical Commissariat A L'energie Atomique Et Aux Energies Alternatives
Priority to EP16809743.4A priority Critical patent/EP3394799A1/fr
Priority to US15/781,680 priority patent/US11308388B2/en
Publication of WO2017108398A1 publication Critical patent/WO2017108398A1/fr

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
    • 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/061Physical realisation, i.e. hardware implementation of neural networks, neurons or parts of neurons using biological neurons, e.g. biological neurons connected to an integrated circuit
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N3/00Computing arrangements based on biological models
    • G06N3/02Neural networks
    • G06N3/08Learning methods

Definitions

  • the present invention relates to an electronic circuit, particularly adapted to the implementation of neural networks on silicon for the processing of various signals, including multidimensional signals such as images.
  • Neural networks are used in many applications, including devices, systems or methods using approaches or learning mechanisms to define the function to be performed.
  • the hardware architectures of neural systems generally comprise elementary modules able to implement a set of neurons.
  • a neuron of order i in a neuronal system realizes a function of the type:
  • w y and E. being respectively the synaptic weights associated with the neuron and its inputs, / being a function called activation.
  • Integrated circuits related to the implementation of neural networks were primarily of the ASIC type (Application-Specific Integrated Circuit). Then architectures on FPGA (Field Programmable Gate Array) were born. In first approach, we can classify neural architectures along two axes. The first axis concerns their implementation, which can be digital or analog, or even hybrid. The second axis concerns their degree of specialization vis-à-vis the neural networks implementable, the architectures can be specialized in the implementation of some types of well-defined neural networks, for example a Radial-Basis Function (RBF) network or a Kohonen map, or that can be programmable to implement a wider variety of networks.
  • RBF Radial-Basis Function
  • the architectures targeted by the present invention are related to circuits with digital implementation, these circuits being generic or specialized.
  • a technical problem to be solved is in particular to enable the efficient realization on silicon of a complete signal processing chain, in the generic sense, by the approach of neural networks and this with several levels of precision in the coding of the data manipulated by course of treatment. This problem is divided into several problems.
  • Signal processing chains of this type generally include more conventional signal processing, for example convolutions on a signal or an image, pre or post-processing.
  • Conventional systems use specialized processors to perform this type of processing in addition to the actual neural architecture, resulting in a more complex and bulky system, consuming more energy.
  • neural network used depends very strongly on the application, or even the input dataset.
  • circuits used to implement neural networks are specialized for some types of networks. There would therefore be a definite advantage in being able to effectively implement several types of network on the same circuit in order to broaden its application domain.
  • another implantation parameter that can vary is the size of the network, in particular as regards the number of inputs and the number of neurons.
  • Some circuits used for neural processing are not extensible, which does not allow the implementation of neural networks whose size exceeds their material capacity.
  • the invention combines mechanisms to achieve this scalability, both in cascade, or unidirectional extension, and in broadcast (broadcast) or multidirectional extension. This extensibility is also extended by mechanisms of virtualization of weights or coefficients.
  • the dynamics required for the coding of the weights and inputs of a neural network is highly variable.
  • the dynamics necessary for the coding of the weights can vary according to the phase in which one is in the case of an online learning. In typical cases, a 16-bit coding of the weights during the learning phase is necessary, while in the processing phase an 8-bit coding is sufficient.
  • Architectures classics are worst-case, both at the level of the operators and the interconnections as at the level of the memory. To avoid this worst-case sizing, it is necessary to be able to operate with a flexible dynamic, adapted to the operating phase (allowing to code more or fewer values depending on the required accuracy).
  • an object of the invention is notably to overcome these drawbacks, more particularly by allowing an efficient use of the silicon surface used to produce the calculation units on which the neural networks are implanted, while allowing calculations with several levels of precision.
  • the subject of the invention is an electronic circuit capable of implementing neural networks, said circuit comprising at least:
  • a transformation block connected to said calculation blocks by a communication means and able to be connected at the input of said circuit to an external data bus, said transformation block performing the transformation of the format of the input data and transmitting said data to all or part of said calculation blocks by means of K independent communication channels, an input data word being divided into subwords so that said subwords are transmitted over several successive communication cycles, a subword being transmitted by communication cycle on a communication channel dedicated to said word so that said K channels are able to transmit in parallel K words in several communication cycles.
  • each calculation block comprises at least one calculation module incorporating:
  • elementary processors in parallel capable of implementing each of the operations of a formal neuron;
  • a memory storing said data intended for said elementary processors, organized in columns each having a width of N bits, N being greater than or equal to 1;
  • a transformation module able to split or join the subwords transmitted by said transformation block into other subwords adapted to the width of said columns; a set of subwords at the output of said transformation module forming a word, the subwords of said set being distributed over one or more of said columns as a function of the coupling mode of said processors for which they are intended.
  • the width of said channels is for example equal to the width of said columns, each channel having a width of N bits.
  • the granularity of said elementary processors is for example equal to the width of said columns, the granularity being the maximum number of bits in parallel on any input of said elementary processors.
  • a processor is temporally coupled to itself, at least two subwords which are for example intended for it are stored in the same column to be routed to said processor over several successive communication cycles.
  • the subwords which are intended for them are for example stored in several columns at the same address, said subwords being routed to said processors in one or more cycles of successive communication.
  • the subwords constituting the same word are for example stored at the same time on several addresses and on several columns of said memory.
  • Said electronic circuit comprises for example a routing module connected between said memory and said processors, said routing module having a number of inputs at least equal to the number of columns, each input being connected to a column and only one, said module of routing being able to route the subwords to said processors.
  • Said routing module is for example able to broadcast data from one column to several processors.
  • Said electronic circuit comprises for example a virtualization block of the memory connected to the memories of all the blocks and to an external memory via a DMA type circuit.
  • the invention also relates to a signal processing system capable of implementing neural networks, wherein said system comprises a plurality of electronic circuits such as that described above.
  • FIG. 1 an example of a hardware architecture according to the invention
  • FIG. 2 is a block diagram of a data transformation block located at the input / output of a circuit according to the invention
  • FIG. 3 a presentation of elementary blocks composing a calculation block used in a circuit according to the invention.
  • FIG. 1 presents a hardware architecture according to the invention for the implementation of a neural network but also for other signal processing applications. The invention will be described later for an application of neural networks.
  • This architecture is therefore described by a circuit 10 able to implement a neural network.
  • This circuit can itself be connected to other identical circuits, in cascade and / or juxtaposed, to form a complete chain of neuronal processing, including pre and post-processing of images and / or signals in general.
  • This architecture is composed of one or more blocks 6 of input and output data transformation 7, of a general control block 5, of more local control blocks 3 controlling a series of calculation blocks 1 each comprising processors elementary. Each calculation block is able to implement a set of neurons. Other types of signal processing can of course be implemented in these blocks.
  • the calculation blocks 1 are distributed by branches.
  • a branch then comprises several calculation blocks 1, a control block 3 and a communication bus 2 shared by these blocks 1, 3.
  • the branches more specifically the communication buses 2, are connected to the general control block 5 and to a transformation block 6 via an interconnection bus 4.
  • the communication between the blocks is controlled by the general control block. This communication is for example asynchronous.
  • the buses 2, 4 can be replaced by any other means of communication.
  • the function of a block 6 of data transformation is in particular to cut an input word 7, coming for example from a system memory, into several subwords of a smaller number of bits, transmitted on the bus. interconnection 4 sequentially.
  • the input word can be 32-bit coded and the subwords can be 8-bit coded. More generally, it is considered by way of example that an input word of 2 P bits is divided into 2 Q subwords of 2 P / 2 Q bits, Q being strictly less than P, with a transmission mode of 2 P / 2 bits. internal circuit 10 as described below with reference to Figure 2. It will be seen later that the input words can be encoded on a number of bits that is not a power of 2, type 2 Q . An input word can thus be formed of 10 or 12 bits for example.
  • the transformation block has the resources to do the inverse transformation from the output to the input.
  • the conversion block 6 advantageously makes it possible to convert the input data of the circuit to the internal precision of the most efficient architecture in terms of the area or energy consumed, or even the transfer capacity of the circuit. data, regarding the various components of the interconnection, including buses 2, 4.
  • aspects related to the conversion of the input and output words associated with the internal mechanisms can optimize the circuit manufacturing in depending on the constraints related to the data, the application or the characteristics of the circuit in terms of surface area and consumption.
  • Figure 2 is an internal block diagram of the transformation block 6 illustrating the splitting of the input words. Operation is described for 32-bit input words.
  • the internal buses of the architecture have a width 32 bits in total for the data and 4 independent channels have been chosen. Thus, the granularity of each channel is 8 bits.
  • the subwords are thus encoded on 8 bits in the transformation block. Partial parallel coding is thus used throughout the internal structure of the circuit, in particular in the various interconnections 2, 4.
  • a first word M1 composed of the subwords SM1 1, SM12, SM13, SM14;
  • a second word M2 composed of the subwords SM21, SM22, SM23, SM24;
  • a third word M3 composed of the subwords SM31, SM32, SM33, SM34;
  • a fourth word M4 composed of the subwords SM41, SM42, SM43, SM44;
  • SM31 and SM41 are respectively transmitted on the first channel 21, on the second channel 22, on the third channel 23 and on the fourth channel 24.
  • the subwords SM12, SM22, SM32 and SM42 are respectively transmitted on the first channel 21, on the second channel 22, on the third channel 23 and on the fourth channel 24.
  • the subwords SM13, SM23, SM33 and SM43 are respectively transmitted on the first channel 21, on the second channel 22, on the third channel 23 and on the fourth channel 24.
  • the subwords SM14, SM24, SM34 and SM44 are respectively transmitted on the first channel 21, on the second channel 22, on the third channel 23 and on the fourth channel 24.
  • the first word M1 is transmitted on the first channel 21
  • the second word M2 is transmitted on the second channel 22
  • the third word M3 is transmitted on the third channel 23 and the fourth word M4 on the fourth channel 24, all on four cycles.
  • To transmit a 32-bit word four communication cycles are required.
  • a 2 P bit input word is split into 2 P / 2 Q subwords of 2 Q bits then It is transmitted in 2 P / 2 Q cycles in one of the communication channels 21, 22, 23, 24.
  • 2 Q words can thus be transmitted in parallel in 2 Q cycles.
  • P is equal to 5 and Q is 2.
  • the granularity of the different channels of the interconnections of the circuit may also not be a power of 2 (ie the subwords may not be coded on 2 Q bits).
  • the input words of the transformation block are not necessarily coded on a number of bits which is a power of 2.
  • an input word is broken down into sub-words so that these subwords are transmitted in successive communication cycles, a sub-word being transmitted per cycle on a communication channel dedicated to this word. If the block 6 has K independent communication channels at its output, it can thus transmit K words in parallel over several successive communication cycles.
  • the calculation blocks can be configured to couple their operators so as to process data of greater precision than the basic granularity of their operators.
  • the characteristics mentioned above define a compromise between speed, low latency, and the desired accuracy.
  • the coupling possibilities make it possible, on an optimized architecture by means of word splitting, to execute applications requiring coded data with different precisions than the nominal accuracy of the operators. This characteristic therefore makes it possible, after manufacturing the circuit, to implement applications of various domains.
  • compromises for the same hardware configuration and data of the same size to be processed, it may be preferable to have low processing latency for each datum, or the possibility of processing more data at the same time in more time. Similarly, it may be preferable to reduce the accuracy of the processed data so as to process more in parallel, or vice versa. These choices of compromise are specified later.
  • FIG. 3 schematically illustrates the modules making up a calculation block 1. Such a block is able to implement a set of neurons.
  • a block 1 comprises a local transformation module 31, a memory 32 (for example RAM type for Random Access Memory), a routing module 33, a control module 34 and a calculation module composed of several elementary processors PE.
  • Each elementary processor can realize at least one function of the type of the relation (1):
  • the memory 32 stores inter alia synaptic coefficients and intermediate calculation results, all these data being intended for the elementary processors PE. This memory is therefore trivialized.
  • This memory 32 is organized in columns 40 each having a width of N bits, N being greater than 1.
  • the subwords constituting each stored word are distributed over one or more columns as a function of the coupling mode of the elementary processors PE. The storage and the coupling modes will be described more precisely with reference to FIG. 4.
  • the data processed by block 1 are the subwords recovered on the communication bus 2 by the local transformation module 31, these subwords coming from the transformation block 6.
  • This allows the data to take the least possible space in memory 32, or to be processed directly by the PE processors on the granularity best suited for the application in progress.
  • this transformation block 31 advantageously makes it possible to convert the input data of the calculation block 1 to the most efficient internal precision in terms of the area or energy consumed, the memory blocks having, for example, very different characteristics depending on their form factor (width, height) for the same total capacity.
  • the transformation carried out by the transformation module 31 consists of cutting or joining the subwords transmitted by the communication bus 2 into other subwords adapted to the width of the columns of the memory 32. In certain cases, this adaptation is not necessary because the subwords from the transformation block 6 may have the same width as the columns of the memory 32. This is for example the case when each channel 21, 22, 23, 24 has the same width as the columns, carrying N bits in parallel. After adaptation or not by the transformation module 31, these data are written in the memory 32.
  • the association of the control module 44 and the routing module 33 allows to couple the elementary processors PE so as to make them cooperate if necessary, either temporally (a module processes the same data in several calculation cycles) or spatially (several modules process a data item in a calculation cycle, possibly over several clock cycles ), temporally and spatially at a time.
  • the control module 44 controls the interconnection of the elementary processors with each other.
  • FIG. 4 illustrates these different couplings. More particularly, FIG. 4 illustrates the various possible modes of execution, by presenting the different word storage modes in the memory 32 and the interactions between this memory and the calculation module 35 via the routing module 33.
  • the basic granularity chosen inside the circuit defines the width of columns 40 inside the memory 32.
  • the basic granularity is in particular the maximum number of bits in parallel at the input of the operators of the elementary processor PE (for example , an 8-bit adder processes 8-bit input data, etc.). More generally, the granularity is the maximum number of bits in parallel on any input of an elementary processor.
  • the memory comprises eight 8-bit columns, the memory having a width of 64 bits. It would be possible to provide a 32-bit memory consisting of four columns, for example or any other combination.
  • the calculation module 35 comprises the same number of elementary processors PE as columns 40 in the memory, the words or subwords of each column being directed to the processors PE by the routing 33.
  • the routing unit makes it possible to associate any column to each elementary processor PE, or even to disseminate the data of a column to all (full broadcast) or part (partial broadcast) PE elementary processors. In addition, using this principle, the data of several columns can be partially broadcast to different elementary processors PE.
  • the granularity of the PE processors (the number of bits that they process in parallel in a single cycle) is the same as that of the columns 40.
  • the first mechanism performs a temporal coupling on each elementary processor PE.
  • Each of the PE processors of the calculation block has the possibility of coupling with itself temporally so as to process in several cycles data of larger size than its original granularity. In the example of Figure 4, this granularity is equal to 8 bits.
  • an elementary processor PE could process 16-bit data over two cycles, in particular for an addition. More cycles would be needed for multiplication.
  • each PE processor communicates directly with a single column of the memory 32 and does not interact with its neighbors.
  • the storage of a word requires several subwords 421, 422 on a single column, thus several memory addresses.
  • the processor 420 performs the operations in several cycles. Data encoded on a large number of bits requires as many cycles as the granularity of the operators chosen at design is low.
  • the second mechanism performs spatial coupling between the PE processors. By this mechanism, they can be coupled together so as to increase the size of the processed data without increasing the number of cycles necessary for their treatment, especially for addition. For other operations, this may not be the case.
  • This spatial coupling is illustrated on the third and fourth columns of the memory 32.
  • two elementary processors PE for example neighbors, are coupled in order to process words twice as wide as their granularity.
  • a processed word is then composed of two subwords 43, 44 stored at the same memory address, on two columns.
  • the two processors 430, 440 process 16-bit data together. It is of course possible to provide a treatment of larger words, for example 24 or 32 bits. In these cases, the word processed will be composed of three or four subwords stored at the same memory address.
  • This case combines both mechanisms. In other words, it combines temporal coupling and spatial coupling. More precisely, in this case the spatial coupling is realized with a finer control of the routing module in order to maximize or optimize the use of the memory and its space. In this case, one seeks by way of example to optimize the space for the processing of four words of 24 bits. In this example four words 46, 47, 48, 49 of 24 bits are stored on only three memory addresses, for example three successive addresses. All of these words are stored on a 32-bit width.
  • the first word 46 is sent directly to the processors 450, 460, 470 corresponding to the three columns on which the word 46 is stored, at the same memory address. This is done while the subword of the second word 47, stored at the same memory address on the last column is set for the second cycle, and stored in a temporary register, for example. During this second cycle, the two other subwords of the second word 47, stored at the following address, are routed in order to be processed at the same time as the first subword, two subwords of the third word 48 stored. at the same address being kept for the third cycle.
  • the last subword of the third word is routed to the processors to be processed at the same time as the two subwords stored at the previous address.
  • the fourth cycle no memory access takes place, the fourth word 49 being directly available.
  • four words could be processed. This makes it possible both to maximize the memory space and to reduce the energy consumption linked to the reading of the memory 32, of the RAM or SRAM (Synchronous Random Access Memory) type, for example.
  • FIG. 4 illustrates another significant advantage of the invention that makes multi-precision processing possible, for example 16-bit data processing by 8-bit operators by extending the processing over time or by physically coupling between the operators. , by interconnection of two neighboring operators.
  • the general control block 5 has in particular the task of configuring these couplings, temporal or spatial, by temporally sending control signals to the various calculation blocks 1 to apply the sequences of operations necessary for the current or future processing, the signals order being transmitted to the internal control units 34.
  • the preceding lines have described a circuit, in particular adapted to implement a neural network.
  • This circuit can be advantageously used for the execution of neural networks.
  • the structure of a circuit according to the invention by its various hierarchical broadcast and routing mechanisms makes it possible, at a lower cost in silicon, to produce neural networks ranging from very little connected to fully connected (called “fully-connected”).
  • this structure allows scalability (routing) or diffusion (“broadcast”) between several circuits 10 of the same type, while keeping the coding partially parallel, pledge of generality in the dynamics of calculations or in other words, adaptation to all implementable dynamics. Interconnection and extensibility are facilitated by the asynchronous communication mechanism between calculation blocks 1.
  • an intelligent Direct Memory Access (DMA) mechanism connects all the calculation blocks. It is thus possible to perform a data virtualization, making it possible to produce neural networks or processes on images exceeding the size of the internal memory of the circuit.
  • the circuit 10 includes a memory virtualization block, not shown, connected to the memories 32 of all the blocks and to an external memory via a direct memory access circuit (DMA).
  • DMA Direct Memory Access
  • interconnection and virtualization mechanisms also allows effective weight sharing, very useful in the implementation of new types of neural networks. Indeed, it is possible to increase the total memory available for the architecture, either to store large amounts of input data in the signal processing mode, or to store large amounts of synaptic weights for the complex networks in the recognition mode. .

Landscapes

  • Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • Health & Medical Sciences (AREA)
  • Life Sciences & Earth Sciences (AREA)
  • Biomedical Technology (AREA)
  • Biophysics (AREA)
  • Theoretical Computer Science (AREA)
  • Molecular Biology (AREA)
  • Evolutionary Computation (AREA)
  • General Physics & Mathematics (AREA)
  • Computational Linguistics (AREA)
  • General Health & Medical Sciences (AREA)
  • Artificial Intelligence (AREA)
  • Computing Systems (AREA)
  • General Engineering & Computer Science (AREA)
  • Data Mining & Analysis (AREA)
  • Mathematical Physics (AREA)
  • Software Systems (AREA)
  • Neurology (AREA)
  • Microelectronics & Electronic Packaging (AREA)
  • Logic Circuits (AREA)
  • Multi Processors (AREA)
  • Image Processing (AREA)

Abstract

Le circuit comporte au moins : - Une série de blocs de calcul aptes à implémenter chacun un ensemble de neurones; - Un bloc (6) de transformation relié auxdits blocs de calcul par un moyen de communication et apte à être relié en entrée dudit circuit à un bus de données externe (7), ledit bloc de transformation (6) effectuant la transformation du format des données d'entrée et transmettant lesdites données auxdits blocs de calcul au moyen de K canaux de communications indépendants (21, 22, 23, 24), un mot de donnée d'entrée (M1) étant découpé en sous-mots de sorte que lesdits sous-mots sont transmis sur plusieurs cycles de communication successifs, un sous-mot étant transmis par cycle de communication sur un canal de communication (21) dédié audit mot (M1) de sorte que lesdits N canaux sont aptes à transmettre parallèlement K mots (M1, M2, M3, M4).

Description

CIRCUIT ELECTRONIQUE,
NOTAMMENT APTE A L'IMPLEMENTATION DE RESEAUX DE
NEURONES A PLUSIEURS NIVEAUX DE PRECISION. La présente invention concerne un circuit électronique, notamment apte à l'implémentation de réseaux de neurones sur silicium pour le traitement de signaux divers, y compris des signaux multidimensionnels comme des images. Les réseaux de neurones sont utilisés dans de nombreuses applications, notamment dans les dispositifs, systèmes ou procédés faisant appel à des approches ou des mécanismes d'apprentissage servant à définir la fonction à réaliser.
Les architectures matérielles de systèmes neuronaux comportent en général des modules élémentaires aptes à implémenter un ensemble de neurones. Un neurone d'ordre i dans un système neuronal réalise une fonction du type :
Figure imgf000003_0001
wy et E . étant respectivement les poids synaptiques associés au neurone et ses entrées, / étant une fonction dite d'activation.
Les circuits intégrés liés à l'implémentation de réseaux de neurones étaient au début essentiellement de type ASIC (Application-Specific Integrated Circuit). Puis des architectures sur FPGA (Field Programmable Gâte Array) ont vu le jour. En première approche, on peut classer les architectures neuronales selon deux axes. Le premier axe concerne leur implémentation, celle-ci pouvant être numérique ou analogique, voire hybride. Le second axe concerne leur degré de spécialisation vis-à-vis des réseaux de neurones implémentables, les architectures pouvant être spécialisées dans l'implémentation de quelques types de réseaux de neurones bien définis, par exemple un réseau RBF (Radial-Basis Function) ou une carte de Kohonen, ou pouvant être programmables pour implémenter une plus grande variété de réseaux.
Les architectures visées par la présente invention sont liées à des circuits à implémentation numérique, ces circuits étant génériques ou spécialisés. Un problème technique à résoudre est notamment de permettre la réalisation efficace sur silicium d'une chaîne complète de traitement du signal, au sens générique, par l'approche de réseaux de neurones et cela avec plusieurs niveaux de précision dans le codage des données manipulées au cours du traitement. Cette problématique se décline en plusieurs problèmes.
Les chaînes de traitement de signal de ce type incluent en général des traitements du signal plus classiques, par exemple des convolutions sur un signal ou une image, en pré ou post-traitement. Les systèmes classiques utilisent des processeurs spécialisés pour effectuer ce type de traitement en plus de l'architecture neuronale proprement dite, aboutissant à un système plus complexe et plus volumineux, consommant plus d'énergie.
Le type de réseau de neurones utilisé dépend très fortement de l'application, voire du jeu de données en entrée. En règle générale, les circuits utilisés pour implémenter des réseaux de neurones sont spécialisés pour quelques types de réseaux. Il y aurait donc un avantage certain à pouvoir implémenter efficacement plusieurs types de réseau sur un même circuit afin d'élargir son domaine applicatif.
En liaison avec le point précédent, un autre paramètre d'implantation pouvant varier est la taille du réseau, en particulier en ce qui concerne le nombre d'entrées et le nombre de neurones. Certains circuits utilisés pour le traitement neuronal ne sont pas extensibles, ce qui ne permet pas l'implémentation de réseaux de neurones dont la taille dépasse leur capacité matérielle. L'invention combine des mécanismes permettant d'obtenir cette extensibilité, à la fois en cascade, ou extension unidirectionnelle, et en diffusion (« broadcast ») ou extension multidirectionnelle. Cette extensibilité est aussi étendue par des mécanismes de virtualisation des poids ou des coefficients.
Enfin, les domaines applicatifs des réseaux de neurones étant très variés, la dynamique nécessaire au codage des poids et des entrées d'un réseau de neurones est très variable. De plus, pour une même application et un même réseau, la dynamique nécessaire au codage des poids peut varier en fonction de la phase dans laquelle on se trouve dans le cas d'un apprentissage en ligne. Sur des cas typiques, un codage sur 1 6 bits des poids lors de la phase d'apprentissage est nécessaire, tandis que dans la phase de traitement un codage sur 8 bits est suffisant. Les architectures classiques sont dimensionnées au pire cas, tant au niveau des opérateurs et des interconnexions qu'au niveau de la mémoire. Pour éviter ce dimensionnement au pire cas, il est nécessaire de pouvoir fonctionner avec une dynamique flexible, adaptée à la phase de fonctionnement (permettant de coder plus ou moins de valeurs en fonction de la précision requise).
Une analyse des solutions connues montre qu'elles ne parviennent pas à résoudre la problématique évoquée précédemment, ou la résolvent de façon insatisfaisante. Aucune solution de l'art antérieur ne surmonte tous les inconvénients exposés ci-dessus.
Un but de l'invention est notamment de pallier ces inconvénients, plus particulièrement en permettant une utilisation efficace de la surface silicium utilisée pour réaliser les unités de calcul sur lesquelles sont implantés les réseaux de neurones, tout en permettant des calculs avec plusieurs niveaux de précision. A cet effet, l'invention a pour objet un circuit électronique apte à l'implémentation de réseaux de neurones, ledit circuit comportant au moins :
- Une série de blocs de calcul aptes à implémenter chacun un ensemble de neurones ;
- Un bloc de transformation relié auxdits blocs de calcul par un moyen de communication et apte à être relié en entrée dudit circuit à un bus de données externe, ledit bloc de transformation effectuant la transformation du format des données d'entrée et transmettant lesdites données à tout ou partie desdits blocs de calcul au moyen de K canaux de communication indépendants, un mot de donnée d'entrée étant découpé en sous-mots de sorte que lesdits sous-mots sont transmis sur plusieurs cycles de communication successifs, un sous-mot étant transmis par cycle de communication sur un canal de communication dédié audit mot de sorte que lesdits K canaux sont aptes à transmettre parallèlement K mots en plusieurs cycles de communication.
Ledit moyen de communication est par exemple apte à router ou à diffuser les données transmises par lesdits K canaux vers un ou plusieurs desdits blocs de calcul. Dans un mode de réalisation possible, chaque bloc de calcul comporte au moins un module de calcul incorporant :
- des processeurs élémentaires en parallèle apte à implémenter chacun les opérations d'un neurone formel ; - une mémoire stockant lesdites données à destination desdits processeurs élémentaires, organisée en colonnes ayant chacune une largeur de N bits, N étant supérieur ou égal à 1 ;
- un module de transformation apte à découper ou à réunir les sous- mots transmis par ledit bloc de transformation en d'autres sous-mots adaptés à la largeur desdites colonnes ; un ensemble de sous-mots en sortie dudit module de transformation formant un mot, les sous-mots dudit ensemble étant répartis sur une ou plusieurs desdites colonnes en fonction du mode de couplage desdits processeurs auxquels ils sont destinés. La largeur desdits canaux est par exemple égale à la largeur desdites colonnes, chaque canal ayant une largeur de N bits.
La granularité desdits processeurs élémentaires est par exemple égale à la largeur desdites colonnes, la granularité étant le nombre de bits maximum en parallèle sur une quelconque entrée desdits processeurs élémentaires. Dans un premier mode de couplage où un processeur est couplé temporellement à lui-même, au moins deux sous-mots qui lui sont par exemple destinés sont stockés dans une même colonne pour être routés vers ledit processeur sur plusieurs cycles de communication successifs.
Dans un deuxième mode de couplage où au moins deux processeurs sont couplés spatialement, les sous-mots qui leurs sont destinés sont par exemple stockés sur plusieurs colonnes à une même adresse, lesdits sous- mots étant routés vers lesdits processeurs en un ou plusieurs cycles de communication successifs.
Les sous-mots constituant un même mot sont par exemple stockés à la fois sur plusieurs adresses et sur plusieurs colonnes de ladite mémoire. Ledit circuit électronique comporte par exemple un module de routage connecté entre ladite mémoire et lesdits processeurs, ledit module de routage ayant un nombre d'entrées au moins égal au nombre de colonnes, chaque entrée étant reliée à une colonne et une seule, ledit module de routage étant apte à router les sous-mots vers lesdits processeurs.
Ledit module de routage est par exemple apte à diffuser des données d'une colonne vers plusieurs processeurs.
Ledit circuit électronique comporte par exemple un bloc de virtualisation de la mémoire relié aux mémoires de tous les blocs et à une mémoire externe via un circuit de type DMA.
L'invention concerne également un système de traitement du signal, apte à l'implémentation de réseaux de neurones, dans lequel ledit système comporte une pluralité de circuits électroniques tels que celui décrit précédemment.
D'autres caractéristiques et avantages de l'invention apparaîtront à l'aide de la description qui suit, faite en regard de dessins annexés qui représentent :
- La figure 1 , un exemple d'architecture matérielle selon l'invention ;
- La figure 2, un schéma fonctionnel d'un bloc de transformation de données situé en entrée/sortie d'un circuit selon l'invention ;
- La figure 3, une présentation de blocs élémentaires composant un bloc de calcul utilisé dans un circuit selon l'invention ;
- La figure 4, une illustration des différents modes de couplage possibles entre les processeurs élémentaires en relation avec l'organisation de stockage de la mémoire, à l'intérieur d'un bloc de calcul. La figure 1 présente une architecture matérielle selon l'invention pour l'implémentation d'un réseau de neurones mais aussi pour d'autres applications de traitement du signal. L'invention sera décrite par la suite pour une application de réseaux de neurones. Cette architecture est donc décrite par un circuit 10 apte à implémenter un réseau de neurones. Ce circuit peut lui-même être connecté à d'autres circuits identiques, en cascade et/ou juxtaposés, pour former une chaîne complète de traitement neuronal, incluant des pré et post-traitements d'images et/ou de signaux en général. Cette architecture est composée d'un ou plusieurs blocs 6 de transformation de données 7 en entrée et en sortie, d'un bloc 5 de contrôle général, de blocs 3 de contrôle plus locaux contrôlant une série de blocs de calcul 1 comprenant chacun des processeurs élémentaires. Chaque bloc de calcul est apte à implémenter un ensemble de neurones. D'autres types de traitement du signal peuvent bien sûr être implémentés dans ces blocs.
Dans l'exemple de la figure 1 , les blocs de calcul 1 sont répartis par branches. Une branche comporte alors plusieurs blocs de calcul 1 , un bloc de contrôle 3 et un bus de communication 2 que partagent ces blocs 1 , 3. Les branches, plus précisément les bus de communication 2, sont reliés au bloc de contrôle général 5 et à un bloc de transformation 6 via un bus d'interconnexion 4. La communication entre les blocs est commandée par le bloc de contrôle général. Cette communication est par exemple asynchrone. Les bus 2, 4 peuvent être remplacés par tout autre moyen de communication.
La fonction d'un bloc 6 de transformation de données est notamment de découper un mot d'entrée 7, venant par exemple d'une mémoire système, en plusieurs sous-mots d'un nombre de bits inférieur, transmis sur le bus d'interconnexion 4 de manière séquentielle. Typiquement, le mot d'entrée peut être codé sur 32 bits et les sous-mots peuvent être codés sur 8 bits. Plus généralement, on considère à titre d'exemple un mot d'entrée de 2P bits est découpé en 2Q sous-mots de 2P/ 2Q bits, Q étant strictement inférieur à P, avec un mode de transmission à l'intérieur du circuit 10 tel que décrit ci- après en regard de la figure 2. On verra par la suite que les mots d'entrée peuvent être codés sur un nombre de bits qui n'est pas une puissance de 2, du type 2Q. Un mot d'entrée peut ainsi être formé de 10 ou 12 bits par exemple.
Le bloc de transformation comporte les ressources nécessaires pour faire la transformation inverse, de la sortie vers l'entrée. Comme on le verra par la suite, le bloc 6 de transformation permet avantageusement de convertir les données en entrée du circuit vers la précision interne de l'architecture la plus efficace en termes de surface ou d'énergie consommée, voire de capacité de transfert de données, en ce qui concerne les différents composants de l'interconnexion, notamment les bus 2, 4. Ainsi, les aspects liés à la conversion des mots en entrée et en sortie associés aux mécanismes internes permettent d'optimiser le circuit à la fabrication en fonction des contraintes liées aux données, à l'application ou encore aux caractéristiques du circuit en termes de surface et de consommation.
La figure 2 est un schéma fonctionnel interne du bloc de transformation 6 illustrant le découpage des mots d'entrée. Le fonctionnement est décrit pour des mots d'entrée de 32 bits. Dans cet exemple, les bus internes de l'architecture ont une largeur 32 bits au total pour les données et 4 canaux indépendants ont été choisis. Ainsi, la granularité de chaque canal est de 8 bits. Les sous-mots sont donc codés sur 8 bits dans le bloc de transformation. Un codage parallèle partiel est ainsi utilisé dans toute la structure interne du circuit, notamment dans les différentes interconnexions 2, 4.
Dans l'exemple de la figure 2, quatre canaux 21 , 22, 23, 24 de communication indépendants sont en sortie du bloc de transformation, chaque canal ayant une capacité de 8 bits. Dans cette configuration, un mot d'entrée de 32 bits est transmis par l'un des quatre canaux en quatre cycles de communication (possiblement appelés transactions).
Pour illustrer cette transformation et transmission, on considère à titre d'exemple quatre mots d'entrée successifs codés chacun sur 32 bits, chaque mot étant composé de quatre sous-mots de 8 bits.
Par ordre d'arrivée, les mots suivants sont présentés en entrée du bloc de transformation 6 :
- Un premier mot M1 composé des sous-mots SM1 1 , SM12, SM13, SM14 ;
- Un deuxième mot M2 composé des sous-mots SM21 , SM22, SM23, SM24 ; - Un troisième mot M3 composé des sous-mots SM31 , SM32, SM33, SM34 ;
- Un quatrième mot M4 composé des sous-mots SM41 , SM42, SM43, SM44 ;
Lors d'un premier cycle de communication, les sous-mots SM1 1 , SM21 ,
SM31 et SM41 sont transmis respectivement sur le premier canal 21 , sur le deuxième canal 22, sur le troisième canal 23 et sur le quatrième canal 24.
Lors du deuxième cycle, les sous-mots SM12, SM22, SM32 et SM42 sont transmis respectivement sur le premier canal 21 , sur le deuxième canal 22, sur le troisième canal 23 et sur le quatrième canal 24.
Lors du troisième cycle, les sous-mots SM13, SM23, SM33 et SM43 sont transmis respectivement sur le premier canal 21 , sur le deuxième canal 22, sur le troisième canal 23 et sur le quatrième canal 24.
Lors du quatrième cycle, les sous-mots SM14, SM24, SM34 et SM44 sont transmis respectivement sur le premier canal 21 , sur le deuxième canal 22, sur le troisième canal 23 et sur le quatrième canal 24.
Ainsi, le premier mot M1 est transmis sur le premier canal 21 , le deuxième mot M2 est transmis sur le deuxième canal 22, le troisième mot M3 est transmis sur le troisième canal 23 et le quatrième mot M4 sur le quatrième canal 24, tous en quatre cycles. Pour transmettre un mot de 32 bits, il faut donc quatre cycles de communication.
Dans un cas plus général, avec une granularité de 2Q pour chaque canal des interconnexions à l'intérieur du circuit 10, un mot d'entrée de 2P bits est découpé en 2P / 2Q sous-mots de 2Q bits puis est transmis en 2P / 2Q cycles dans un des canaux de communication 21 , 22, 23, 24. Dans le cas où l'on a 2Q canaux en parallèle, 2Q mots peuvent ainsi être transmis parallèlement en 2Q cycles. Dans l'exemple de la figure 2, P est égal à 5 et Q est égal à 2. La description est poursuivie par la suite avec cet exemple numérique. Il faut noter ici que la granularité des différents canaux des interconnexions du circuit peut aussi ne pas être une puissance de 2 (i.e. les sous-mots peuvent ne pas être codés sur 2Q bits).
Comme indiqué précédemment, les mots en entrée du bloc de transformation ne sont pas nécessairement codés sur un nombre de bits qui est une puissance de 2. De façon générale, un mot d'entrée est découpé en sous-mots de sorte que ces sous-mots soient transmis en plusieurs cycles de communication successifs, un sous-mot étant transmis par cycle sur un canal de communication dédié à ce mot. Si le bloc 6 comporte K canaux de communications indépendants à sa sortie, il peut ainsi transmettre K mots en parallèle sur plusieurs cycles de communication successifs.
Ces mots M1 , M2, M3, M4 sont ensuite transmis vers les blocs de calcul 1 aptes à les traiter. La transmission se fait par routage s'il y a une seule destination ou par diffusion, possiblement partielle, si tous ou partie des blocs de calcul doivent recevoir ces mots. Des lignes de contrôle, non représentées, complètent ces canaux pour contrôler les échanges. Le type de transmission est notamment commandé par les blocs de contrôle 3 affectés aux branches en association avec le bloc de contrôle général.
En fonction des caractéristiques souhaitées et du découpage des données à traiter, les blocs de calcul peuvent être configurés afin de coupler leurs opérateurs de manière à traiter des données de précision plus grande que la granularité de base de leurs opérateurs. Les caractéristiques mentionnées ci- dessus définissent un compromis entre la rapidité, faible latence, et la précision souhaitée. De plus, les possibilités de couplage permettent, sur une architecture optimisée grâce au découpage des mots, d'exécuter des applications ayant besoin de données codées avec des précisions différentes de la précision nominale des opérateurs. Cette caractéristique permet donc, après fabrication du circuit, d'implémenter des applications de domaines variés. En ce qui concerne les compromis, pour une même configuration matérielle et des données de même taille à traiter, on pourra préférer une faible latence de traitement pour chaque donnée, ou la possibilité de traiter plus de données en même temps en plus de temps. De même, on pourra préférer diminuer la précision des données traitées de manière à en traiter plus en parallèle, ou inversement. Ces choix de compromis sont précisés par la suite.
La figure 3 illustre de façon schématique les modules composant un bloc de calcul 1 . Un tel bloc est apte à implémenter un ensemble de neurones.
Un bloc 1 comporte un module de transformation local 31 , une mémoire 32 (par exemple de type RAM pour Random Access Memory), un module de routage 33, un module de contrôle 34 et un module de calcul composé de plusieurs processeurs élémentaires PE. Chaque processeur élémentaire peut réaliser a minima une fonction du type de la relation (1 ) :
* = /(∑»·^, > ·
La mémoire 32 stocke notamment des coefficients synaptiques et des résultats de calculs intermédiaires, toutes ces données étant destinées aux processeurs élémentaires PE. Cette mémoire est donc banalisée.
Cette mémoire 32 est organisée en colonnes 40 ayant chacune une largeur de N bits, N étant supérieur à 1 . Les sous-mots constituant chaque mot mémorisé sont répartis sur une ou plusieurs colonnes en fonction du mode de couplage des processeurs élémentaires PE. Le stockage et les modes de couplage seront décrits plus précisément en regard de la figure 4.
Les données traitées par le bloc 1 sont les sous-mots récupérées sur le bus de communication 2 par le module de transformation local 31 , ces sous-mots étant issus du bloc de transformation 6. Ce module de transformation a notamment pour fonction de transformer les données adaptées au bus de communication 2, par le bloc de transformation 6, en données adaptées au stockage dans la mémoire 32, ou adaptées au calcul par les processeurs élémentaires PE. Cela permet notamment aux données de prendre le moins de place possible en mémoire 32, ou d'être traitées directement par les processeurs PE sur la granularité la mieux adaptée pour l'application en cours. Ainsi, ce bloc 31 de transformation permet avantageusement de convertir les données en entrée du bloc de calcul 1 vers la précision interne la plus efficace en termes de surface ou d'énergie consommée, les blocs mémoires (« memory cuts ») ayant par exemple des caractéristiques très différentes en fonction de leur facteur de forme (largeur, hauteur) pour une même capacité totale.
La transformation opérée par le module de transformation 31 consiste à découper ou à réunir les sous-mots transmis par le bus de communication 2 en d'autres sous-mots adaptés à la largeur des colonnes de la mémoire 32. Dans certains cas, cette adaptation n'est pas nécessaire car les sous-mots issus du bloc de transformation 6 peuvent avoir la même largeur que les colonnes de la mémoire 32. C'est par exemple le cas lorsque chaque canal 21 , 22, 23, 24 a la même largeur que les colonnes, véhiculant N bits en parallèle. Après adaptation ou non par le module de transformation 31 , ces données sont écrites dans la mémoire 32. Au moment de l'exécution de la suite d'opérations, l'association du module de contrôle 44 et du module de routage 33 permet de coupler les processeurs élémentaires PE de manière à les faire coopérer si besoin, soit temporellement (un module traite une même donnée en plusieurs cycles de calcul), soit spatialement (plusieurs modules traitent une donnée en un cycle de calcul, possiblement sur plusieurs cycles d'horloge), soit temporellement et spatialement à la fois. En particulier, le module de contrôle 44 commande l'interconnexion des processeurs élémentaires entre eux.
La figure 4 illustre ces différents couplages. Plus particulièrement, la figure 4 illustre les différents modes d'exécution possibles, en présentant les différents modes de stockage des mots dans la mémoire 32 et les interactions entre cette mémoire et le module de calcul 35 via le module de routage 33.
La granularité de base choisie à l'intérieur du circuit définit la largeur de colonnes 40 à l'intérieur de la mémoire 32. La granularité de base est notamment le nombre de bits maximum en parallèle en entrée des opérateurs du processeur élémentaire PE (par exemple, un additionneur 8 bits traite des données d'entrée sur 8 bits, etc.). Plus généralement, la granularité est le nombre de bits maximum en parallèle sur une quelconque entrée d'un processeur élémentaire.
Dans l'exemple de la figure 4, la mémoire comporte huit colonnes de 8 bits, la mémoire ayant une largeur de 64 bits. Il serait possible de prévoir une mémoire de 32 bits composée de quatre colonnes, par exemple ou toute autre combinaison. Le module de calcul 35 comporte le même nombre de processeurs élémentaires PE que de colonnes 40 dans la mémoire, les mots ou sous-mots de chaque colonne étant dirigés vers les processeurs PE par le routage 33. L'unité de routage permet d'associer n'importe quelle colonne à chaque processeur élémentaire PE, voire même de diffuser la donnée d'une colonne à tout (diffusion totale) ou partie (diffusion partielle) des processeurs élémentaires PE. En outre, en utilisant ce principe, les données de plusieurs colonnes peuvent être diffusées partiellement à différents processeurs élémentaires PE. La granularité des processeurs PE (le nombre de bits qu'ils traitent en parallèle en un seul cycle) est la même que celle des colonnes 40.
Cette granularité des opérateurs de base est choisie à la conception du circuit 10 et peut être un compromis entre les exigences de consommation, des contraintes de surface, des exigences de vitesse d'exécution et des besoins de l'application. Par la suite, en fonctionnement, deux mécanismes internes à un bloc de calcul 1 permettent de faire varier dynamiquement le nombre de bits des données traitées, et donc la précision.
Le premier mécanisme réalise un couplage temporel sur chaque processeur élémentaire PE. Chacun des processeurs PE du bloc de calcul dispose d'une possibilité de se coupler avec lui-même temporellement de manière à traiter en plusieurs cycles des données de taille plus importante que sa granularité originale. Dans l'exemple de la figure 4, cette granularité est égale à 8 bits. Dans ce premier mécanisme, avec un chemin de données de 8 bits par exemple un processeur élémentaire PE pourrait traiter des données de 16 bits sur deux cycles, notamment pour une addition. Un nombre plus important de cycles serait nécessaire pour une multiplication. Dans cette configuration, chaque processeur PE communique directement avec une seule colonne de la mémoire 32 et n'interagit pas avec ses voisins.
Avant de décrire ce couplage temporel sur la figure 4, on décrit un premier mode d'exécution, illustré sur la première colonne, correspondant au cas simple ou la taille du mot de données 41 de la colonne est parfaitement adaptée à la granularité du processeur 410. Ainsi, une seule ligne et une seule colonne de mémoire suffisent à stocker ce mot 41 .
Un second cas, illustré sur la deuxième colonne de la mémoire, présente un exemple de couplage temporel. Dans ce cas, le stockage d'un mot nécessite plusieurs sous-mots 421 , 422 sur une seule colonne, donc plusieurs adresses mémoires. Le processeur 420 effectue les opérations en plusieurs cycles. Des données codées sur un grand nombre de bits nécessitent d'autant plus de cycles que la granularité des opérateurs choisies à la conception est faible. Le second mécanisme réalise un couplage spatial entre les processeurs PE. Par ce mécanisme, ceux-ci peuvent être couplés entre eux de manière à augmenter la taille des données traitées sans augmenter le nombre de cycles nécessaires à leur traitement, notamment pour l'addition. Pour d'autres opérations, ce peut ne pas être le cas.
Ce couplage spatial est illustré sur les troisième et quatrième colonnes de la mémoire 32. Dans cet exemple, deux processeurs élémentaires PE, par exemple voisins, sont couplés afin de traiter ensemble des mots deux fois plus large que leur granularité. Un mot traité est alors composé de deux sous-mots 43, 44 stockés à la même adresse de mémoire, sur deux colonnes. Par couplage C1 , les deux processeurs 430, 440 traitent ensemble des données de 16 bits. Il est bien sûr possible de prévoir un traitement de mots plus larges, par exemple 24 ou 32 bits. Dans ces cas, le mot traité sera composé de trois ou quatre sous-mots stockés à une même adresse mémoire.
Un quatrième cas, illustré sur les trois dernières colonnes, illustre un couplage spatial C2 pour traiter un mot 45 de 24 bits, stocké sur ces trois colonnes à une même adresse. Un cinquième cas plus complexe, illustré sur les quatre dernières colonnes de la figure, montre que l'organisation de la mémoire 32 permet un remplissage optimum de celle-ci.
Ce cas combine les deux mécanismes. En d'autres termes, il combine le couplage temporel et le couplage spatial. Plus précisément, dans ce cas le couplage spatial est réalisé avec un contrôle plus fin du module de routage afin de maximiser, ou d'optimiser, l'utilisation de la mémoire et de son espace. Dans ce cas, on cherche à titre d'exemple à optimiser l'espace pour le traitement de quatre mots de 24 bits. Dans cet exemple quatre mots 46, 47, 48, 49 de 24 bits sont stockés sur seulement trois adresses mémoires, par exemple trois adresses successives. L'ensemble de ces mots est stocké sur une largeur de 32 bits.
Pour l'exécution des opérations, dans un premier cycle le premier mot 46 est envoyé directement aux processeurs 450, 460, 470 correspondant aux trois colonnes sur lesquelles est stocké le mot 46, à une même adresse mémoire. Cela est effectué pendant que le sous-mot du deuxième mot 47, stocké à la même adresse mémoire sur la dernière colonne est positionné pour le deuxième cycle, et stocké dans un registre temporaire, par exemple. Lors de ce deuxième cycle, les deux autres sous-mots du deuxième mot 47, stockés à l'adresse suivante, sont routés afin d'être traités en même temps que le premier sous-mot, deux sous-mots du troisième mot 48 stockés à la même adresse étant gardés pour le troisième cycle. Lors de ce troisième cycle, le dernier sous-mot du troisième mot est routé vers les processeurs pour être traité en même temps que les deux sous-mots stockés à l'adresse précédente. Au quatrième cycle, aucun accès mémoire n'a lieu, le quatrième mot 49 étant directement disponible. Ainsi, avec seulement trois lectures mémoire dans cette configuration, quatre mots ont pu être traités. Cela permet à la fois de maximiser la place mémoire et de diminuer la consommation énergétique liée à la lecture de la mémoire 32, de type RAM ou SRAM (Synchronous Random Access Memory) par exemple.
La figure 4 illustre un autre avantage notable de l'invention qui rend possible des traitements multi-précision, par exemple des traitements de données 16 bits par des opérateurs 8 bits en étendant le traitement dans le temps ou en effectuant un couplage physique entre les opérateurs, par interconnexion de deux opérateurs voisins.
Le bloc de contrôle général 5 a notamment pour mission de configurer ces couplages, temporels ou spatiaux, en envoyant temporellement des signaux de commande aux différents blocs de calcul 1 pour appliquer les suites d'opérations nécessaires au traitement en cours ou à venir, les signaux de commande étant transmis aux unités de contrôle interne 34.
Les lignes précédentes ont décrit un circuit, notamment apte à implémenter un réseau de neurones. Ce circuit peut être avantageusement utilisé pour l'exécution de réseaux de neurones. D'une part, la structure d'un circuit selon l'invention par ses différents mécanismes de diffusion (« broadcast ») hiérarchiques et de routage permet, à moindre coût en silicium, de réaliser des réseaux de neurones allant du très peu connecté au totalement connecté (dit « fully-connected »). D'autre part, cette structure permet une extensibilité par cascade (routage) ou par diffusion (« broadcast ») entre plusieurs circuits 10 du même type, tout en gardant le codage partiellement parallèle, gage de généralité au niveau de la dynamique des calculs ou en d'autres termes de l'adaptation à toutes les dynamiques implémentables. L'interconnexion et l'extensibilité sont facilitées par le mécanisme de communication asynchrone entre les blocs de calcul 1 .
Dans un mode de réalisation particulier, un mécanisme de DMA (« Direct Memory Access ») intelligent relie tous les blocs de calcul. On peut ainsi réaliser une virtualisation des données, permettant de réaliser des réseaux de neurones ou des traitements sur des images dépassant la taille de la mémoire interne du circuit. A cet effet, le circuit 10 comporte un bloc de virtualisation de la mémoire, non représenté, relié aux mémoires 32 de tous les blocs et à une mémoire externe via un circuit à accès direct mémoire (DMA).
La combinaison de l'interconnexion et des mécanismes de virtualisation permet de plus un partage des poids efficace, très utile dans l'implémentation de nouveaux types de réseaux de neurones. En effet, on peut ainsi augmenter la mémoire totale disponible pour l'architecture, soit pour stocker de grandes quantités de données en entrée dans le mode traitement du signal, soit pour stocker de grandes quantités de poids synaptiques pour les réseaux complexes dans le mode reconnaissance.

Claims

REVENDICATIONS
1 . Circuit électronique apte à l'implémentation de réseaux de neurones, caractérisé en ce qu'il comporte au moins : - Une série de blocs de calcul (1 ) aptes à implémenter chacun un ensemble de neurones ;
- Un bloc (6) de transformation relié auxdits blocs de calcul (1 ) par un moyen de communication (2, 4) et apte à être relié en entrée dudit circuit (10) à un bus de données externe (7), ledit bloc de transformation (6) effectuant la transformation du format des données d'entrée et transmettant lesdites données à tout ou partie desdits blocs de calcul (1 ) au moyen de K canaux de communication indépendants (21 , 22, 23, 24), un mot de donnée d'entrée (M1 ) étant découpé en sous-mots (SM1 1 , SM12, SM13, SM14) de sorte que lesdits sous-mots sont transmis sur plusieurs cycles de communication successifs, un sous-mot étant transmis par cycle de communication sur un canal de communication (21 ) dédié audit mot (M1 ) de sorte que lesdits K canaux sont aptes à transmettre parallèlement K mots (M1 , M2, M3, M4) en plusieurs cycles de communication.
2. Circuit électronique selon la revendication 1 , caractérisé en ce que ledit moyen de communication (2, 4) est apte à router ou à diffuser les données transmises par lesdits K canaux vers un ou plusieurs desdits blocs de calcul (1 ).
3. Circuit électronique selon l'une quelconque des revendications précédentes, caractérisé en ce que chaque bloc de calcul (1 ) comporte au moins un module de calcul (35) incorporant : - des processeurs élémentaires (PE) en parallèle apte à implémenter chacun les opérations d'un neurone formel ; - une mémoire (32) stockant lesdites données à destination desdits processeurs élémentaires, organisée en colonnes (40) ayant chacune une largeur de N bits, N étant supérieur ou égal à 1 ;
- un module de transformation (31 ) apte à découper ou à réunir les sous-mots transmis par ledit bloc de transformation (6) en d'autres sous- mots adaptés à largeur desdites colonnes (40) ; un ensemble de sous-mots (421 , 422, 43, 44) en sortie dudit module de transformation (31 ) formant un mot, les sous-mots (421 , 422, 43, 44) dudit ensemble étant répartis sur une ou plusieurs desdites colonnes en fonction du mode de couplage desdits processeurs (PE) auxquels ils sont destinés.
4. Circuit électronique selon la revendication 3, caractérisé en ce que la largeur desdits canaux est égale à la largeur desdites colonnes, chaque canal ayant une largeur de N bits.
5. Circuit électronique selon l'une quelconque des revendications 3 ou 4, caractérisé en ce que la granularité desdits processeurs élémentaires (PE) est égale à la largeur desdites colonnes, ladite granularité étant le nombre de bits maximum en parallèle sur une quelconque entrée desdits processeurs élémentaires.
6. Circuit électronique selon l'une quelconque des revendications 3 à 5, caractérisé en ce que, dans un premier mode de couplage, un processeur (PE, 420) étant couplé temporellement à lui-même, au moins deux sous- mots (421 , 422) qui lui sont destinés sont stockés dans une même colonne pour être routés (33) vers ledit processeur (420) sur plusieurs cycles de communication successifs.
7. Circuit électronique selon l'une quelconque des revendications 3 à 6, caractérisé en ce que, dans un deuxième mode de couplage, au moins deux processeurs (PE, 430, 440) étant couplés spatialement, les sous-mots (43, 44) qui leurs sont destinés sont stockés sur plusieurs colonnes à une même adresse, lesdits sous-mots (43, 44) étant routés (33) vers lesdits processeurs en un ou plusieurs cycles de communication successifs.
8. Circuit électronique selon l'une quelconque des revendications 5 ou 6, caractérisé en ce que les sous-mots constituant un même mot (47, 48) peuvent être stockés à la fois sur plusieurs adresses et sur plusieurs colonnes de ladite mémoire (32).
9. Circuit électronique selon l'une quelconque des revendications 3 à 7, caractérisé en ce qu'il comporte un module de routage (33) connecté entre ladite mémoire (32) et lesdits processeurs (PE), ledit module de routage ayant un nombre d'entrées au moins égal au nombre de colonnes (40), chaque entrée étant reliée à une colonne et une seule, ledit module de routage (33) étant apte à router les sous-mots vers lesdits processeurs (PE).
10. Circuit électronique selon l'une quelconque des revendications 3 à 9, caractérisé en ce que ledit module de routage (33) est apte à diffuser des données d'une colonne (40) vers plusieurs processeurs (PE).
1 1 . Circuit électronique selon l'une quelconque des revendications 3 à 8, caractérisé en ce qu'il comporte un bloc de virtualisation de la mémoire relié aux mémoires (32) de tous les blocs et à une mémoire externe audit circuit, via un circuit de type DMA.
12. Système de traitement du signal, apte à l'implémentation de réseaux de neurones, caractérisé en ce qu'il comporte une pluralité de circuits électroniques selon l'une quelconque des revendications 1 à 10.
PCT/EP2016/079998 2015-12-21 2016-12-07 Circuit electronique, notamment apte a l'implementation de reseaux de neurones a plusieurs niveaux de precision WO2017108398A1 (fr)

Priority Applications (2)

Application Number Priority Date Filing Date Title
EP16809743.4A EP3394799A1 (fr) 2015-12-21 2016-12-07 Circuit electronique, notamment apte a l'implementation de reseaux de neurones a plusieurs niveaux de precision
US15/781,680 US11308388B2 (en) 2015-12-21 2016-12-07 Electronic circuit, particularly for the implementation of neural networks with multiple levels of precision

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
FR1562912 2015-12-21
FR1562912A FR3045893B1 (fr) 2015-12-21 2015-12-21 Circuit electronique, notamment apte a l'implementation de reseaux de neurones a plusieurs niveaux de precision.

Publications (1)

Publication Number Publication Date
WO2017108398A1 true WO2017108398A1 (fr) 2017-06-29

Family

ID=56068978

Family Applications (1)

Application Number Title Priority Date Filing Date
PCT/EP2016/079998 WO2017108398A1 (fr) 2015-12-21 2016-12-07 Circuit electronique, notamment apte a l'implementation de reseaux de neurones a plusieurs niveaux de precision

Country Status (4)

Country Link
US (1) US11308388B2 (fr)
EP (1) EP3394799A1 (fr)
FR (1) FR3045893B1 (fr)
WO (1) WO2017108398A1 (fr)

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2019104638A1 (fr) * 2017-11-30 2019-06-06 深圳市大疆创新科技有限公司 Procédé et appareil de traitement de réseaux neuronaux, accélérateur, système, et dispositif mobile
EP3971785A1 (fr) 2020-09-22 2022-03-23 Commissariat À L'Énergie Atomique Et Aux Énergies Alternatives Calculateur électronique de mise en oeuvre d'un réseau de neurones artificiels, avec blocs de calcul de plusieurs types

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN110596668B (zh) * 2019-09-20 2021-06-04 中国人民解放军国防科技大学 基于互逆深度神经网络的目标外辐射源被动定位方法

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20130282945A1 (en) * 2012-04-19 2013-10-24 Lockheed Martin Corporation Apparatus and method emulating a parallel interface to effect parallel data transfer from serial flash memory
WO2015090885A1 (fr) * 2013-12-18 2015-06-25 Commissariat A L'energie Atomique Et Aux Energies Alternatives Module de traitement du signal, notamment pour reseau de neurones et circuit neuronal.

Family Cites Families (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
FR3011659B1 (fr) 2013-10-04 2015-10-16 Commissariat Energie Atomique Circuit electronique, notamment apte a l'implementation d'un reseau de neurones, et systeme neuronal
US9805303B2 (en) * 2015-05-21 2017-10-31 Google Inc. Rotating data for neural network computations
US10061537B2 (en) * 2015-08-13 2018-08-28 Microsoft Technology Licensing, Llc Data reordering using buffers and memory

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20130282945A1 (en) * 2012-04-19 2013-10-24 Lockheed Martin Corporation Apparatus and method emulating a parallel interface to effect parallel data transfer from serial flash memory
WO2015090885A1 (fr) * 2013-12-18 2015-06-25 Commissariat A L'energie Atomique Et Aux Energies Alternatives Module de traitement du signal, notamment pour reseau de neurones et circuit neuronal.

Non-Patent Citations (3)

* Cited by examiner, † Cited by third party
Title
CLEMENT FARABET ET AL: "NeuFlow: A runtime reconfigurable dataflow processor for vision", COMPUTER VISION AND PATTERN RECOGNITION WORKSHOPS (CVPRW), 2011 IEEE COMPUTER SOCIETY CONFERENCE ON, IEEE, 20 June 2011 (2011-06-20), pages 109 - 116, XP031926582, ISBN: 978-1-4577-0529-8, DOI: 10.1109/CVPRW.2011.5981829 *
MARCELO TOSINI ET AL: "NNGen: a powerful tool for the implementation of Artificial Neural Networks on a chip", SADIO ELECTRONIC JOURNAL OF INFORMATICS AND OPERATIONS RESEARCH, vol. 6, no. 1, 1 January 2004 (2004-01-01), pages 42 - 52, XP055303177 *
MISRA J ET AL: "Artificial neural networks in hardware: A survey of two decades of progress", NEUROCOMPUTING, ELSEVIER SCIENCE PUBLISHERS, AMSTERDAM, NL, vol. 74, no. 1-3, 5 May 2010 (2010-05-05), pages 239 - 255, XP027517200, ISSN: 0925-2312, [retrieved on 20101123], DOI: 10.1016/J.NEUCOM.2010.03.021 *

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2019104638A1 (fr) * 2017-11-30 2019-06-06 深圳市大疆创新科技有限公司 Procédé et appareil de traitement de réseaux neuronaux, accélérateur, système, et dispositif mobile
EP3971785A1 (fr) 2020-09-22 2022-03-23 Commissariat À L'Énergie Atomique Et Aux Énergies Alternatives Calculateur électronique de mise en oeuvre d'un réseau de neurones artificiels, avec blocs de calcul de plusieurs types
FR3114422A1 (fr) 2020-09-22 2022-03-25 Commissariat à l'énergie atomique et aux énergies alternatives Calculateur électronique de mise en œuvre d’un réseau de neurones artificiels, avec blocs de calcul de plusieurs types

Also Published As

Publication number Publication date
FR3045893A1 (fr) 2017-06-23
US20190005378A1 (en) 2019-01-03
FR3045893B1 (fr) 2017-12-29
EP3394799A1 (fr) 2018-10-31
US11308388B2 (en) 2022-04-19

Similar Documents

Publication Publication Date Title
EP3084588B1 (fr) Module de traitement du signal, notamment pour reseau de neurones et circuit neuronal.
EP3053108B1 (fr) Circuit electronique, notamment apte a l'implementation d'un reseau de neurones, et systeme neuronal
EP3660849A1 (fr) Circuit mémoire adapté à mettre en oeuvre des opérations de calcul
EP0154340A1 (fr) Processeur de calcul d'une transformée discrète inverse du cosinus
EP0558125B1 (fr) Processeur neuronal à cellules synaptiques reparties
WO2020043753A1 (fr) Architecture de calculateur d'une couche de convolution dans un reseau de neurones convolutionnel
EP0552074A1 (fr) Système de traitement de données multiprocesseur
FR2680026A1 (fr) Architecture de systeme en tableau de processeurs a structure parallele.
FR3050846A1 (fr) Dispositif et procede de distribution de donnees de convolution d'un reseau de neurones convolutionnel
EP3394799A1 (fr) Circuit electronique, notamment apte a l'implementation de reseaux de neurones a plusieurs niveaux de precision
US20200371982A1 (en) Method for implementing processing elements in a chip card
EP0259231A1 (fr) Dispositif de détermination de la transformée numérique d'un signal
FR2724741A1 (fr) Circuit electronique de calcul modulaire dans un corps fini
FR2604270A1 (fr) Additionneur binaire comportant un operande fixe, et multiplieur binaire parallele-serie comprenant un tel additionneur
EP3803574A1 (fr) Circuit de génération de facteurs de rotation pour processeur ntt
EP0478431A1 (fr) Procédé et circuit de codage d'un signal numérique pour déterminer le produit scalaire de deux vecteurs et traitement TCD correspondant
EP3803636A1 (fr) Processeur ntt incluant une pluralite de bancs de memoires
EP0319421B1 (fr) Comparateur binaire et opérateur de tri de nombres binaires
EP2553655B1 (fr) Architecture de traitement d'un flux de données permettant l'extension d'un masque de voisinage
FR2716321A1 (fr) Procédé et dispositif de quantification vectorielle d'un signal numérique, notamment appliqué à la compression d'images numériques.
FR2570853A1 (fr) Dispositif de traitement en temps reel de signal numerique par convolution
FR3056320A1 (fr) Procede de calcul par au moins un ordinateur d’au moins une operation d’algebre lineaire sur au moins une matrice
EP1052575A1 (fr) Système de transmission, récepteur et réseau d'interconnexion
EP3955170A1 (fr) Architecture de calcul systolique pour la mise en oeuvre de réseaux de neurones artificiels traitant plusieurs types de convolutions
EP0329572A1 (fr) Multiplieur de nombres binaires à très grand nombre de bits

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

Country of ref document: EP

Kind code of ref document: A1

NENP Non-entry into the national phase

Ref country code: DE

WWE Wipo information: entry into national phase

Ref document number: 2016809743

Country of ref document: EP

ENP Entry into the national phase

Ref document number: 2016809743

Country of ref document: EP

Effective date: 20180723