Brevet FR3115137A1 — publié le 20220415

Circuit électronique implémentant physiquement un réseau de neurones, système embarqué, procédé d’optimisation et produits associés L’invention concerne un circuit électronique (14) implémentant physiquement un réseau de neurones et comportant : - des processeurs (16) comportant une sortie (16S), une entrée (16E1) recevant un poids à appliquer et une entrée (16E2) recevant une donnée à traiter, chaque processeur (16) appliquant une fonction paramétrable du poids reçu et de la donnée reçue pour obtenir un résultat, - des mémoires (18, 20, 22), et - des lignes de transmission (24, 26, 28) comportant une première portion (P1) reliée à une mémoire (18, 20, 22) et parcourue par des données dans un premier sens ainsi qu’une deuxième portion (P2) reliée à une entrée (16E1, 16E2, 16E3) ou une sortie (16S) d’un processeur (16) et parcourue par des données dans un deuxième sens opposé au premier sens. Figure pour l'abrégé : figure 2 Circuit électronique implémentant physiquement un réseau de neurones, système embarqué, procédé d’optimisation et produits associés La présente invention concerne un circuit électronique implémentant physiquement un réseau de neurones. La présente invention se rapporte également à un système embarqué comprenant un tel circuit électronique. Dans le domaine de la vidéosurveillance, une difficulté est l’étude de multiples images rendant leur exploitation malaisée. Il convient donc d’être capable d’éliminer rapidement un ensemble d’images non pertinentes pour n’examiner que les images les plus pertinentes. Pour cela, il est connu d’utiliser la classification automatique d’images. Une telle classification est souvent effectuée par un réseau de neurones et plus particulièrement un réseau de neurones à convolution. Un réseau de neurones à convolution est aussi appelé réseau de neurones convolutifs. Le réseau de neurones à convolution est parfois désigné sous le terme réseau CNN, l’abréviation CNN renvoyant à la dénomination anglaise de « Convolutional Neural Network ». Cependant, les implémentations physiques des réseaux de neurones à convolution impliquent de nombreuses ressources matérielles, notamment en temps et en énergie. En effet, de telles implémentations physiques impliquent des processeurs séquentiels conventionnels. Il en résulte que de telles implémentations physiques sont incompatibles avec les systèmes embarqués qui requièrent un poids, un encombrement et une puissance limités. Il existe donc un besoin pour une implémentation physique d’un réseau de neurones qui soit compatible avec les contraintes d’utilisation dans un système embarqué. La description porte sur un circuit électronique implémentant physiquement un réseau de neurones, le circuit électronique étant un circuit logique programmable, le circuit électronique comportant des processeurs élémentaires comportant chacun au moins deux entrées et une sortie, la première entrée recevant un poids à appliquer, la deuxième entrée recevant une donnée à traiter, chaque processeur élémentaire appliquant une fonction paramétrable du poids reçu et de la donnée reçue pour obtenir un résultat de sortie. Le circuit électronique comportant, en outre, des mémoires propres à mémoriser un poids à appliquer, une donnée à traiter ou un résultat de sortie, et des lignes de transmission comportant une première portion, une deuxième portion et une portion intermédiaire, la première portion étant reliée à une mémoire et la deuxième portion étant reliée à une entrée ou une sortie d’un processeur élémentaire. La première portion est propre à être parcourue par des données dans un premier sens et la deuxième portion est propre à être parcourue par des données dans un deuxième sens, le premier sens étant opposé au deuxième sens. Suivant des modes de réalisation particuliers, le circuit électronique comprend une ou plusieurs des caractéristiques suivantes, prise(s) isolément ou suivant toutes les combinaisons techniquement possibles : - chaque première portion d’une ligne de transmission présente la même longueur que la deuxième portion de la ligne de transmission. - chaque première portion d’une ligne de transmission est parallèle à la deuxième portion de la ligne de transmission. - les mémoires sont réparties en des premières mémoires propres à mémoriser un poids à appliquer, des deuxièmes mémoires propres à mémoriser une donnée à traiter et des troisièmes mémoires propres à mémoriser un résultat de sortie. Les lignes de transmission sont réparties en premières lignes de transmission, deuxièmes lignes de transmission et troisièmes lignes de transmission, les premières lignes de transmission étant reliées à une première mémoire respective et à des premières entrées de processeurs élémentaires, les deuxièmes lignes de transmission étant reliées à une deuxième mémoire respective et à des deuxièmes entrées de processeurs élémentaires et les troisièmes lignes de transmission étant reliées à une troisième mémoire respective et à des sorties de processeurs élémentaires. - la première portion de chaque première ligne de transmission est perpendiculaire à la première portion de chaque deuxième ligne de transmission et de chaque troisième ligne de transmission. - le circuit électronique comporte des motifs identiques, chaque motif rassemblant des processeurs élémentaires, des mémoires et des lignes de transmissions, et, dans chaque motif, il est défini une zone périphérique, les mémoires étant situées dans la zone périphérique de chaque motif. - la fonction paramétrable de chaque processeur élémentaire est une opération de convolution et le circuit électronique comporte un contrôleur propre à assurer un fonctionnement systolique du circuit électronique. La présente description concerne aussi un système embarqué comportant un circuit électronique tel que précédemment décrit. La présente description a également pour objet une plateforme comportant un système embarqué tel que précédemment décrit. En outre, la description se rapporte aussi à un procédé d’optimisation d’un circuit électronique implémentant physiquement un réseau de neurones, le circuit électronique étant un circuit logique programmable, le circuit électronique comportant des processeurs élémentaires comportant chacun au moins deux entrées et une sortie, la première entrée recevant un poids à appliquer, la deuxième entrée recevant une donnée à traiter, chaque processeur élémentaire appliquant une fonction paramétrable du poids reçu et de la donnée reçue pour obtenir un résultat de sortie. Le circuit électronique comporte également des mémoires propres à mémoriser un poids à appliquer, une donnée à traiter ou un résultat de sortie, et des lignes de transmission présentant une longueur et comportant une première portion, une deuxième portion et une portion intermédiaire, la première portion étant reliée à une mémoire et la deuxième portion étant reliée à une entrée ou une sortie d’un processeur élémentaire, la première portion étant propre à être parcourue par des données dans un premier sens, la deuxième portion étant propre à être parcourue par des données dans un deuxième sens, le premier sens étant opposé au deuxième sens. Le procédé d’optimisation est mis en œuvre par ordinateur et comporte la détermination de la position des mémoires et des processeurs élémentaires pour minimiser la somme de la longueur des lignes de transmission. La présente description a également pour objet un produit programme d’ordinateur comprenant des instructions de programme qui mettent en œuvre un procédé tel que précédemment décrit lorsque le programme d’ordinateur est exécuté par l’unité de traitement de données. En outre, la description se rapporte aussi à un support lisible d’informations comprenant des instructions de programmes qui mettent en œuvre d’un procédé tel que précédemment décrit lorsqu’elles sont exécutées par une unité de traitement de données.. D’autres caractéristiques et avantages de l’invention apparaîtront à la lecture de la description qui suit de modes de réalisation de l’invention, donnée à titre d’exemple uniquement et en référence aux dessins qui sont : - , une représentation schématique d’une plateforme, - , une représentation schématique d’un exemple de circuit électronique, et - , une représentation schématique d’une partie d’un exemple de circuit électronique. Une plateforme 10 est représentée sur la . La plateforme 10 est soit une plateforme mobile, en particulier une plateforme aérienne (avion, hélicoptère), soit une installation fixe (par exemple un système de surveillance d’un bâtiment). La plateforme 10 comporte au moins un système embarqué 12 comprenant au moins un circuit électronique 14 implémentant physiquement un réseau de neurones. Dans l’exemple proposé, le réseau de neurones est un réseau de neurones à convolution. Le circuit électronique 14 est un circuit logique programmable. Selon l’exemple décrit, le circuit électronique 14 est un réseau de portes programmables in situ. Un tel circuit électronique 14 est souvent désigné sous l’appellation FPGA qui renvoie à la dénomination anglaise de « field-programmable gate array ». Dans un tel exemple, la configuration du FPGA est définie par un programme écrit dans un langage de description matérielle, tel que le langage VHDL, le Verilog ou le Chisel (qui est un langage d’encore plus haut niveau). L’abréviation VHDL renvoie à la dénomination anglaise de « Very High Speed Integrated Circuits Hardware Description Language » qui signifie littéralement « langage de description de circuits matériel intégrés à très haute vitesse ». En variante, le circuit électronique 14 est un dispositif logique programmable (PLD) ou des réseaux logiques programmables (PLA). Il est défini deux directions D1 et D2 pour le circuit électronique 14. La première direction D1 correspond à une direction verticale sur la planche sur laquelle est représentée . Dans la suite, le sens de parcours selon la première direction D1 est repéré à l’aide du nord N et du sud S, le nord N correspondant au haut de la planche et le sud S correspondant au bas de la planche. Ainsi, la première direction D1 est soit parcourue selon un premier sens appelé sens nord N – sud S correspondant à se diriger vers le bas de la planche soit selon un deuxième sens appelé sens sud S – nord N correspondant à se diriger vers le haut de la planche. La deuxième direction D2 correspond à une direction horizontale sur la planche sur laquelle est représentée . Dans la suite, le sens de parcours selon la deuxième direction D2 est repéré à l’aide de l’ouest O et de l’est E, l’ouest O correspondant à la gauche de la planche et l’est E correspondant à la droite de la planche. Ainsi, la deuxième direction D2 est soit parcourue selon un premier sens appelé sens ouest O - est E correspondant à se diriger vers la droite de la planche soit selon un deuxième sens appelé sens est E – ouest O correspondant à se diriger vers la gauche de la planche. Comme visible sur la , le circuit électronique 14 comporte des processeurs élémentaires 16, des premières mémoires 18, des deuxièmes mémoires 20, des troisièmes mémoires 22, des premières lignes de transmission 24, des deuxièmes lignes de transmission 26, des troisièmes lignes de transmission 28 et un contrôleur 30. Chacun des éléments du circuit électronique 14 est réalisé sur un support 32 dans lequel l’emplacement des éléments est contraint du fait du procédé de fabrication du circuit électronique 14. Il est ainsi possible de définir sur le support 32 des zones de calcul dans lesquelles les processeurs élémentaires 16 se situent et des zones de mémorisation dans lesquelles les mémoires 18, 20, 22 sont situées. Selon l’exemple de la , les processeurs élémentaires 16 sont organisés selon une matrice bidimensionnelle. Une telle organisation permet d’obtenir une grille de processeurs élémentaires 16 qui est systolique. Par le terme « systolique », il est entendu un fonctionnement similaire à celui d’une organisation de processeurs élémentaires 16 selon une grille à deux dimensions totalement remplies dans laquelle le processeur élémentaire 16 de coordonnées (i,j) reçoit à chaque cycle d’horloge d’une part une donnée et une microcommande que le processeur élémentaire 16 de coordonnées (i,j-1) avait reçues au cycle d’horloge précédent et d’autre part une donnée que le processeur élémentaire 16 de coordonnées (i-1,j) avait reçue au cycle d’horloge précédent. Dans cette notation, i et j sont deux entiers et un processeur élémentaire 16 a les coordonnées (i,j) lorsque ledit processeur élémentaire 16 est positionné au croisement de la i-ième ligne et de la j-ième colonne. La matrice bidimensionnelle comporte des lignes, les lignes étant parallèles à la deuxième direction D2, et des colonnes, les colonnes étant parallèles à la première direction D1. Chaque processeur élémentaire 16 comporte trois entrées 16E1, 16E2, 16E3 et une sortie 16S. Les valeurs des différentes entrées 16E1, 16E2, 16E3 déterminent le fonctionnement du processeur élémentaire 16 au cours du temps. La première entrée 16E1 du processeur élémentaire 16 est propre à recevoir un poids à appliquer. La deuxième entrée 16E2 du processeur élémentaire 16 est propre à recevoir une donnée à traiter. La troisième entrée 16E3 du processeur élémentaire 16 est propre à recevoir une instruction indiquant l’opération à effectuer. En l’espèce, l’instruction est d’exécuter une fonction paramétrable sur la donnée à traiter en utilisant le poids. Une telle fonction paramétrable correspond à un traitement d’inférence où il est appliqué en temps réel à un ensemble de données une chaîne d’opérations dont les coefficients sont supposés avoir été définis lors d’une phase d’apprentissage préalable. Selon l’exemple décrit, la fonction paramétrable de chaque processeur élémentaire 16 est une opération de convolution, l’opération de convolution utilisant le poids appris. La sortie 16S du processeur élémentaire 16 est propre à émettre un résultat de sortie. Le processeur élémentaire 16 est propre à appliquer la fonction paramétrable du poids reçu et de la donnée reçue pour obtenir le résultat de sortie. Chaque mémoire 18, 20, 22 est propre à mémoriser des données. Chaque mémoire 18, 20, 22 est partagée par des processeurs 16 élémentaires. Dans l’exemple, chaque première mémoire 18 est propre à mémoriser au moins un poids, chaque poids étant à appliquer par un processeur élémentaire 16 respectif. Chaque deuxième mémoire 20 est propre à mémoriser au moins une donnée à traiter, chaque donnée à traiter étant à recevoir par un processeur élémentaire 16 respectif. Chaque troisième mémoire 22 est propre à mémoriser au moins un résultat de sortie, chaque résultat de sortie étant émis par un processeur élémentaire 16 respectif. Dans l’exemple proposé, chaque ligne de transmission 24, 26, 28 est une piste conductrice. Chaque ligne de transmission 24, 26, 28 est ainsi propre à être parcourue par des données que la ligne de transmission 24, 26, 28 est de ce fait propre à transmettre. Chaque ligne de transmission 24, 26, 28 comporte une première portion P1, une deuxième portion P2 et une portion intermédiaire PI. La première portion P1 est parallèle à une direction D1 ou D2. La première portion P1 est propre à être parcourue par des données dans un premier sens. La deuxième portion P2 est parallèle à la première portion P1. La deuxième portion P2 est propre à être parcourue par des données dans un deuxième sens opposé au premier sens. La première portion P1 et la deuxième portion P2 présentent la même longueur. La portion intermédiaire PI relie la première portion P1 à la deuxième portion P2. La portion intermédiaire PI assure un changement de sens du parcours pour une donnée provenant de la première portion P1. Dans l’exemple proposé, la portion intermédiaire PI est une portion rectiligne perpendiculaire à la première portion P1 et à la deuxième portion P2. Dans un souci de lisibilité, seule une première ligne de transmission 24, une deuxième ligne de transmission 26 et une troisième ligne de transmission 28 sont représentées sur la . En réalité, le circuit électronique 14 comporte une première ligne de transmission 24 par ligne de la matrice bidimensionnelle de processeurs élémentaires 16, une deuxième ligne de transmission 26 par colonne de la matrice et une troisième ligne 28 de transmission par colonne de la matrice. Chaque première ligne 24 de transmission est associée respectivement à une première mémoire 18. Plus précisément, la première portion P1 de la première ligne 24 de transmission est reliée à une première mémoire 18 et la deuxième portion P2, de la première ligne de transmission 24 est reliée aux processeurs élémentaires 16 ayant à appliquer le poids mémorisé par la première mémoire 18 à laquelle la première ligne de transmission 24 est associée. Comme visible sur la , la deuxième portion P2 de la première ligne de transmission 24 est reliée aux premières entrées 16E1 des processeurs élémentaires 16 ayant à appliquer le poids. Selon l’exemple proposé, la première portion P1 de la première ligne de transmission 24 est propre à être parcourue dans le sens est E – ouest O alors que la deuxième portion P2 de la deuxième ligne de transmission 24 est propre à être parcourue dans le sens ouest O – est E. Chaque deuxième ligne de transmission 26 est associée respectivement à une deuxième mémoire 20. Plus précisément, la première portion P1 de la deuxième ligne de transmission 26 est reliée à une deuxième mémoire 20 et la deuxième portion P2 de la deuxième ligne de transmission 26 est reliée aux processeurs élémentaires 16 ayant à recevoir la donnée à traiter mémorisée par la deuxième mémoire 20 à laquelle la deuxième ligne de transmission 26 est associée. Comme visible sur la , la deuxième portion P2 de la deuxième ligne de transmission 26 est ainsi reliée aux deuxièmes entrées 16E2 des processeurs élémentaires 16 ayant à recevoir la donnée à traiter. Selon l’exemple proposé, la première portion P1 de la deuxième ligne de transmission 26 est propre à être parcourue dans le sens sud S – nord N alors que la deuxième portion P2 de la deuxième ligne de transmission 26 est propre à être parcourue dans le sens nord N – sud S. Chaque troisième ligne de transmission 28 est associée respectivement à une troisième mémoire 22. Plus précisément, la deuxième portion P2 de la troisième ligne de transmission 28 est reliée à une troisième mémoire 22 et la première portion P1 de la troisième ligne de transmission 28 est reliée aux processeurs élémentaires 16 émettant un résultat de sortie à mémoriser par la troisième mémoire 22 à laquelle la troisième ligne de transmission 28 est associée. Comme visible sur la , la première portion P1 de la troisième ligne de transmission 28 est ainsi reliée à la sortie 16S des processeurs élémentaires 16 émettant un résultat de sortie. Selon l’exemple proposé, la première portion P1 de la troisième ligne de transmission 28 est propre à être parcourue dans le sens sud S – nord N alors que la deuxième portion P2 de la troisième ligne de transmission 28 est propre à être parcourue dans le sens nord N – sud S. Le contrôleur 30 est propre à assurer un fonctionnement systolique du circuit électronique 14. En ce sens, le contrôleur 30 peut être vu comme un séquenceur des opérations ou un module d’ordonnancement des opérations. Selon l’exemple proposé, le contrôleur 30 comporte une unité centrale 31 et des unités locales 34. L’unité centrale 32 est propre à émettre une horloge pour assurer une synchronisation des unités locales. Les unités locales sont associées à une ligne de transmission 24, 26, 28 respective. Chaque unité locale 34 comporte un registre à décalage . Un registre à décalage est un ensemble de bascules synchrones, dont les bascules sont reliées une à une, à l'exception de deux bascules qui ne sont pas forcément reliées. À chaque cycle d'horloge, le nombre représenté par ces bascules est mis à jour. Le concept de décalage permet d'insérer une donnée dans le registre, ou la lire, bit par bit en série. Le fonctionnement du circuit électronique 14 est maintenant décrit selon deux descriptions, d’une part l’action globale du circuit électronique 14 et d’autre part les chemins suivis par les données. De manière globale, le circuit électronique 14 implémente physiquement un réseau de neurones convolutionnel. Plus précisément, le circuit électronique 14 implémente la couche de convolution d’un tel réseau. Cela signifie que le circuit électronique 14 applique des noyaux de convolution dont les coefficients sont les poids à un sous-ensemble de pixels d’une image d’entrée pour obtenir une image de sortie. Comme le même noyau de convolution est appliqué à une image en la parcourant horizontalement, les processeurs élémentaires 16 d’une même ligne appliquent le noyau de convolution à une sous-image dont le premier pixel est un pixel différent de l’image. Pour ce qui concerne le chemin des données suivi dans le présent circuit électronique 14, il peut être décrit comme suit. Le processeur élémentaire 16 propage les données lui-même sans les modifier vers ses voisins immédiats situés à l’est E et au sud S. La propagation est une propagation processeur élémentaire 16 à processeur élémentaire 16. Cela implique que le poids à appliquer par un processeur élémentaire 16 provient du processeur élémentaire 16 immédiatement voisin qui est situé à l’ouest O. Plus précisément, le processeur élémentaire 16 récupère les données et poids depuis une des lignes de transmission 24, 26 ou 28, c’est-à-dire que la donnée reçue par le processeur élémentaire 16 immédiatement voisin qui est situé à ouest O au cycle d’horloge T est disponible pour le processeur élémentaire 16 voisin qui est situé à l’est E au cycle d’horloge T+1. La donnée à traiter par un processeur élémentaire 16 provient du processeur élémentaire 16 immédiatement voisin qui est situé au nord N. Simultanément, la troisième ligne de transmission 28 propage les résultats de sortie émis par les voisins du processeur élémentaire 16 situés au sud S dudit processeur élémentaire 16. Cette propagation est cadencée par l’horloge émise par l’unité centrale 31. Une manière alternative de considérer un tel fonctionnement est la suivante. Les deuxièmes portions P2 des premières et deuxièmes lignes de transmission 24, 26 sont alimentées par les premières portions P1 des premières et deuxièmes lignes de transmission 24, 26. Similairement, la deuxième portion P2 de la troisième ligne de transmission 28 dont le but est de véhiculer des résultats de sortie à écrire en troisième mémoire 22, alimente la première portion P1 de la troisième ligne de transmission 28. Chaque donnée d’une deuxième portion P2 rencontre les mémoires 18, 20, 22 à des positions quelconques sur leurs parcours. En fin des deuxièmes portions P2, on retrouve la même séquence de données que si les données venaient d’être lues dans un sous-ensemble de mémoires 18, 20, 22 rassemblées en périphérie Nord N et Ouest O, et la deuxième portion P2 de la troisième ligne de transmission 28 finit par écrire aux bonnes adresses les résultats de sortie. Ainsi, en fonctionnement, la propagation des données relatives à l’image initiale et aux poids garantit qu’un processeur élémentaire 16 placé aux coordonnées (x,f) dans le circuit électronique 14 recevra à chaque cycle le triplet attendu, avec un décalage de x+f cycles d’horloge par rapport au triplet correspondant du processeur élémentaire 16 initial dont les coordonnées sont (0,0). Un tel circuit électronique 14 permet ainsi d’implémenter un réseau de neurones convolutionnel avec une puissance relativement réduite (seulement quelques Watts) et une bonne compacité. Le circuit électronique 14 peut, en outre, fonctionner à des cadences plus grandes sans génération d’erreurs. Le circuit électronique 14 est ainsi compatible avec les contraintes d’un système embarqué 12. Un tel circuit électronique 14 propose pour cela une circulation spécifique des données. Par rapport à une circulation des données selon trois sens, à savoir sens ouest O – est E, nord N – sud S et sud S – nord N, il est obtenu des circuits électroniques présentant des chemins de données plus courts, ce qui permet d’augmenter la cadence à laquelle le circuit électronique 14 est capable de fonctionner ou du moins d’obtenir un haut rendement d’utilisation du circuit électronique 14. La circulation spécifique des données conduit à une nouvelle architecture pour le circuit électronique 14 qui permet de mieux répartir les mémoires 18, 20, 22 sur l’ensemble du circuit électronique 14 tout en maintenant le fonctionnement systolique du circuit électronique 14. Cela permet d’envisager des circuits électroniques dans lequel le placement des différentes mémoires 18, 20, 22 est optimisé. La propose un exemple particulier d’un tel agencement, dans lequel, par souci de clarté, les lignes de transmission 24, 26 et 28 ne sont pas représentées. Dans un tel agencement, le circuit électronique 14 est divisé en motifs 40 identiques. Chaque motif 40 comporte un ensemble de mémoires 18, 20, 22 et de processeurs élémentaires 16 situé dans un espace délimité par des extrémités. Dans l’exemple décrit, le nombre de mémoires 18, 20, 22 d’un motif 40 est égal à 3. Selon le cas de la , il est défini une zone périphérique pour chaque motif 40. Une zone périphérique est une zone en contact avec une extrémité, typiquement une zone de forme rectangulaire comme visible à la . Dans l’exemple illustré, les mémoires 18, 20, 22 du motif 40 sont situées dans la zone périphérique et les processeurs élémentaires 16 dans l’espace délimité par des extrémités mais en dehors de la zone périphérique. Un tel agencement est plus avantageux qu’un agencement où l’ensemble des mémoires 18, 20, 22 est situé en périphérie, de sorte que les connexions (lignes de transmissions 24, 26 et 28) sont plus courtes. Il est à noter qu’un tel agencement résultant du fait que les lignes de transmissions 24, 26 et 28 permettent un positionnement des mémoires 18, 20, 22 entre les processeurs élémentaires 16 est un agencement régulier au sens où il est formé par une répétition de motifs 40. Toutefois, dans le cas général, il est possible d’envisager des agencements avec une distribution non régulière sans formation de motifs 40. De tels agencements, qu’ils soient sans motifs ou réguliers, présentent des chemins de données plus courts et peuvent être obtenus par mise en œuvre d’un procédé d’optimisation. Dans un tel procédé, le procédé d’optimisation comporte la détermination de la position des mémoires 18, 20, 22 et des processeurs élémentaires 16 pour minimiser la somme de la longueur des lignes de transmission 24, 26, 28. La détermination est, par exemple, mise en œuvre en utilisant une fonction d’optimisation de type moindre carré. Selon des modes de réalisation plus élaborés, le procédé d’optimisation prend en compte des contraintes sur les positions des mémoires 18, 20, 22 et des processeurs élémentaires 16. Par exemple, la position des zones de calcul et des zones de mémorisation du support 32 est prise en compte. Un tel procédé d’optimisation est mis en œuvre par interaction d’un produit programme d’ordinateur avec le système. Plus généralement, le système est un calculateur électronique propre à manipuler et/ou transformer des données représentées comme des quantités électroniques ou physiques dans des registres du calculateur et/ou des mémoires en d’autres données similaires correspondant à des données physiques dans des mémoires, des registres ou d’autres types de dispositifs d’affichage, de transmission ou de mémorisation. Le système comporte un processeur comprenant une unité de traitement de données, des mémoires et un lecteur de support d’informations. Le système comprend également un clavier et une unité d’affichage. Le produit programme d’ordinateur comporte un support lisible d’informations. Un support lisible d’informations est un support lisible par le système, usuellement par le lecteur. Le support lisible d’informations est un médium adapté à mémoriser des instructions électroniques et capable d’être couplé à un bus d’un système informatique. A titre d’exemple, le support lisible d’informations est une disquette ou disque souple (de la dénomination anglaise de « floppy disk »), un disque optique, un CD-ROM, un disque magnéto-optique, une mémoire ROM, une mémoire RAM, une mémoire EPROM, une mémoire EEPROM, une carte magnétique ou une carte optique. Sur le support lisible d’informations est mémorisé un programme d’ordinateur comprenant des instructions de programme. Le programme d’ordinateur est chargeable sur l’unité de traitement de données et est adapté pour entraîner la mise en œuvre du procédé d’optimisation. Circuit électronique (14) implémentant physiquement un réseau de neurones, le circuit électronique (14) étant un circuit logique programmable, le circuit électronique (14) comportant : - des processeurs élémentaires (16) comportant chacun au moins deux entrées (16E1, 16E2, 16E3) et une sortie (16S), la première entrée (16E1) recevant un poids à appliquer, la deuxième entrée (16E2) recevant une donnée à traiter, chaque processeur élémentaire (16) appliquant une fonction paramétrable du poids reçu et de la donnée reçue pour obtenir un résultat de sortie, - des mémoires (18, 20, 22) propres à mémoriser un poids à appliquer, une donnée à traiter ou un résultat de sortie, et - des lignes de transmission (24, 26, 28) comportant une première portion (P1), une deuxième portion (P2) et une portion intermédiaire (PI), la première portion (P1) étant reliée à une mémoire (18, 20, 22) et la deuxième portion (P2) étant reliée à une entrée (16E1, 16E2, 16E3) ou une sortie (16S) d’un processeur élémentaire (16), la première portion (P1) étant propre à être parcourue par des données dans un premier sens et la deuxième portion (P2) étant propre à être parcourue par des données dans un deuxième sens, le premier sens étant opposé au deuxième sens. Circuit électronique selon la revendication 1, dans lequel chaque première portion (P1) d’une ligne de transmission (24, 26, 28) présente la même longueur que la deuxième portion (P2) de la ligne de transmission (24, 26, 28). Circuit électronique selon la revendication 1 ou 2, dans lequel chaque première portion (P1) d’une ligne de transmission (24, 26, 28) est parallèle à la deuxième portion (P2) de la ligne de transmission (24, 26, 28). Circuit électronique selon l’une quelconque des revendications 1 à 3, dans lequel les mémoires (18, 20, 22) sont réparties en des premières mémoires (18) propres à mémoriser un poids à appliquer, des deuxièmes mémoires (20) propres à mémoriser une donnée à traiter et des troisièmes mémoires (22) propres à mémoriser un résultat de sortie, les lignes de transmission (24, 26, 28) étant réparties en premières lignes de transmission (24), deuxièmes lignes de transmission (26) et troisièmes lignes de transmission (28), les premières lignes de transmission (24) étant reliées à une première mémoire (18) respective et à des premières entrées (16E1) de processeurs élémentaires (16), les deuxièmes lignes de transmission (26) étant reliées à une deuxième mémoire (20) respective et à des deuxièmes entrées (16E2) de processeurs élémentaires (16) et les troisièmes lignes de transmission (28) étant reliées à une troisième mémoire (22) respective et à des sorties (16S) de processeurs élémentaires (16). Circuit électronique selon la revendication 4, dans lequel la première portion (P1) de chaque première ligne de transmission (24) est perpendiculaire à la première portion (P1) de chaque deuxième ligne de transmission (26) et de chaque troisième ligne de transmission (28). Circuit électronique selon l’une quelconque des revendications 1 à 5, dans lequel, le circuit électronique (14) comporte des motifs (40) identiques, chaque motif (40) rassemblant des processeurs élémentaires (16), des mémoires (18, 20, 22) et des lignes de transmissions (24, 26, 28), et, dans chaque motif (40), il est défini une zone périphérique, les mémoires (18, 20, 22) étant situées dans la zone périphérique de chaque motif (40). Circuit électronique selon l’une quelconque des revendications 1 à 6, dans lequel la fonction paramétrable de chaque processeur élémentaire (16) est une opération de convolution et le circuit électronique (14) comporte un contrôleur (30) propre à assurer un fonctionnement systolique du circuit électronique (14). Système embarqué (12) comportant un circuit électronique (14) selon l’une quelconque des revendications 1 à 7. Plateforme (10) comportant un système embarqué (12) selon la revendication 8. Procédé d’optimisation d’un circuit électronique (14) implémentant physiquement un réseau de neurones, le circuit électronique (14) étant un circuit logique programmable, le circuit électronique (14) comportant : - des processeurs élémentaires (16) comportant chacun au moins deux entrées (16E1, 16E2, 16E3) et une sortie (16S), la première entrée (16E1) recevant un poids à appliquer, la deuxième entrée (16E2) recevant une donnée à traiter, chaque processeur élémentaire (16) appliquant une fonction paramétrable du poids reçu et de la donnée reçue pour obtenir un résultat de sortie, - des mémoires (18, 20, 22) propres à mémoriser un poids à appliquer, une donnée à traiter ou un résultat de sortie, et - des lignes de transmission (24, 26, 28) présentant une longueur et comportant une première portion (P1), une deuxième portion (P2) et une portion intermédiaire (PI), la première portion (P1) étant reliée à une mémoire (18, 20, 22) et la deuxième portion (P2) étant reliée à une entrée (16E1, 16E2, 16E3) ou une sortie (16S) d’un processeur élémentaire (16), la première portion (P1) étant propre à être parcourue par des données dans un premier sens et la deuxième portion (P2) étant propre à être parcourue par des données dans un deuxième sens, le premier sens étant opposé au deuxième sens, le procédé d’optimisation étant mis en œuvre par ordinateur et comportant la détermination de la position des mémoires (18, 20, 22) et des processeurs élémentaires (16) pour minimiser la somme de la longueur des lignes de transmission (24, 26, 28). Produit programme d’ordinateur comprenant des instructions de programme qui mettent en œuvre un procédé selon la revendication 10 lorsque le programme d’ordinateur est exécuté par une unité de traitement de données. Support lisible d’informations comprenant des instructions de programmes qui mettent en œuvre un procédé selon la revendication 10 lorsque les instructions de programme sont exécutées par une unité de traitement de données.