FR 3045893 A1 20170623 FR 1562912 A 20151221 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 15 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 : Ri =f E j) (1) wu et E1 étant respectivement les poids synaptiques associés au neurone et 20 ses entrées, f é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 Gate Array) ont vu le jour. En première approche, on peut classer les architectures 25 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 30 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. 35 3045893 2 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 5 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 10 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 16 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 3045893 3 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 5 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. 10 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 15 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 20 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 25 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 30 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. 3045893 4 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 ; 5 - 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 10 à largeur desdites colonnes ; un ensemble de sous-mots en sortie dudit module de transformation formant un mot, ledit mot étant réparti sur une ou plusieurs desdites colonnes en fonction du mode de couplage desdits processeurs auxquels ils sont destinés. 15 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. Dans un cas où un processeur est couplé temporellement à lui-même, au 20 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 cas où au moins deux processeurs sont couplés spatialement, les sous-mots qui leurs sont destinés sont par exemple stockés sur plusieurs 25 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. 3045893 5 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 5 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 10 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 15 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 ; 20 - 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 25 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 30 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 3045893 6 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, 5 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. 10 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 15 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. 20 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. 25 Plus généralement, on considère à titre d'exemple un mot d'entrée de 2P bits est découpé en 20 sous-mots de 2P/20 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, 30 du type 20. 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 35 avantageusement de convertir les données en entrée du circuit vers la 3045893 7 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 5 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. 1 0 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 15 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 20 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 25 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 SM11, SM12, SM13, 30 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 ; 3045893 8 - Un quatrième mot M4 composé des sous-mots SM41, SM42, SM43, SM44 ; Lors d'un premier cycle de communication, les sous-mots SM11, SM21, 5 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. 10 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, 15 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 20 donc quatre cycles de communication. Dans un cas plus général, avec une granularité de 20 pour chaque canal des interconnexions à l'intérieur du circuit 10, un mot d'entrée de 2P bits est découpé en 2P / 20 sous-mots de 20 bits puis est transmis en 2P / 20 cycles dans un des canaux de communication 21, 22, 23, 24. Dans le cas où l'on 25 a 20 canaux en parallèle, 20 mots peuvent ainsi être transmis parallèlement en 20 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 30 ne pas être codés sur 20 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 35 de communication successifs, un sous-mot étant transmis par cycle sur un 3045893 9 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 Ml, M2, M3, M4 sont ensuite transmis vers les blocs de calcul 1 5 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 10 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- 15 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, 20 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 25 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 30 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 35 peut réaliser a minima une fonction du type de la relation (1) : 3045893 10 f j) . 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. 5 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. 10 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 15 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 20 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. 25 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 30 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 35 d'opérations, l'association du module de contrôle 44 et du module de 3045893 11 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 5 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 10 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 15 colonnes 40 à l'intérieur de la mémoire 32. La granularité de base est le nombre de bits maximum 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.). Dans l'exemple de la figure 4, la mémoire comporte huit colonnes de 8 bits, 20 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 25 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 30 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 35 circuit 10 et peut être un compromis entre les exigences de consommation, 3045893 12 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. 5 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é 10 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 15 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 20 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 25 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. 30 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 35 d'autres opérations, ce peut ne pas être le cas. 3045893 13 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 5 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 10 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. 15 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 20 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, 25 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. 30 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 35 premier sous-mot, deux sous-mots du troisième mot 48 stockés à la même 3045893 14 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 5 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. 10 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. 15 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. 20 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 ») 25 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 30 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 35 Memory Access ») intelligent relie tous les blocs de calcul. On peut ainsi 3045893 15 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 5 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 10 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. REVENDICATIONS1. 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 (SM11, 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 ; 3045893 17 - 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 5 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, ledit mot étant réparti sur une ou plusieurs desdites colonnes en fonction du mode de couplage desdits 10 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. 15 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. 20 6. Circuit électronique selon l'une quelconque des revendications 3 à 5, caractérisé en ce qu'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. 25 7. Circuit électronique selon l'une quelconque des revendications 3 à 6, caractérisé en ce qu'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, 3045893 18 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, 5 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, 10 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). 15 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). 20 11. 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 via un circuit de type DMA. 25 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.