FR3045893A1 - 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 PDFInfo
- Publication number
- FR3045893A1 FR3045893A1 FR1562912A FR1562912A FR3045893A1 FR 3045893 A1 FR3045893 A1 FR 3045893A1 FR 1562912 A FR1562912 A FR 1562912A FR 1562912 A FR1562912 A FR 1562912A FR 3045893 A1 FR3045893 A1 FR 3045893A1
- Authority
- FR
- France
- Prior art keywords
- subwords
- electronic circuit
- processors
- word
- columns
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Granted
Links
- 210000002569 neuron Anatomy 0.000 title claims abstract description 13
- 238000004364 calculation method Methods 0.000 claims abstract description 41
- 238000004891 communication Methods 0.000 claims abstract description 41
- 230000009466 transformation Effects 0.000 claims abstract description 31
- 230000015654 memory Effects 0.000 claims description 56
- 238000013528 artificial neural network Methods 0.000 claims description 24
- 238000012545 processing Methods 0.000 claims description 21
- 230000008878 coupling Effects 0.000 claims description 20
- 238000010168 coupling process Methods 0.000 claims description 20
- 238000005859 coupling reaction Methods 0.000 claims description 20
- 230000006870 function Effects 0.000 claims description 9
- 101000639461 Rattus norvegicus Small nuclear ribonucleoprotein-associated protein B Proteins 0.000 claims description 3
- 230000001131 transforming effect Effects 0.000 claims 2
- 230000007246 mechanism Effects 0.000 description 14
- 238000000034 method Methods 0.000 description 13
- 230000008569 process Effects 0.000 description 12
- 230000001537 neural effect Effects 0.000 description 6
- 238000003860 storage Methods 0.000 description 5
- 230000002123 temporal effect Effects 0.000 description 5
- XUIMIQQOPSSXEZ-UHFFFAOYSA-N Silicon Chemical compound [Si] XUIMIQQOPSSXEZ-UHFFFAOYSA-N 0.000 description 4
- 230000005540 biological transmission Effects 0.000 description 4
- 229910052710 silicon Inorganic materials 0.000 description 4
- 239000010703 silicon Substances 0.000 description 4
- 230000006978 adaptation Effects 0.000 description 3
- 238000013459 approach Methods 0.000 description 3
- 230000008901 benefit Effects 0.000 description 3
- 238000013501 data transformation Methods 0.000 description 3
- 230000000946 synaptic effect Effects 0.000 description 3
- 101000652736 Homo sapiens Transgelin Proteins 0.000 description 2
- 101100421709 Schistosoma mansoni SM21.7 gene Proteins 0.000 description 2
- 102100031013 Transgelin Human genes 0.000 description 2
- 238000006243 chemical reaction Methods 0.000 description 2
- 238000013461 design Methods 0.000 description 2
- 238000010586 diagram Methods 0.000 description 2
- 238000009792 diffusion process Methods 0.000 description 2
- 238000004519 manufacturing process Methods 0.000 description 2
- 230000008520 organization Effects 0.000 description 2
- 238000012805 post-processing Methods 0.000 description 2
- 238000007781 pre-processing Methods 0.000 description 2
- 230000004913 activation Effects 0.000 description 1
- 238000004458 analytical method Methods 0.000 description 1
- 238000005520 cutting process Methods 0.000 description 1
- 238000005265 energy consumption Methods 0.000 description 1
- 238000002513 implantation Methods 0.000 description 1
- 230000003993 interaction Effects 0.000 description 1
- 238000005304 joining Methods 0.000 description 1
- 239000000463 material Substances 0.000 description 1
- 238000004513 sizing Methods 0.000 description 1
- 230000001360 synchronised effect Effects 0.000 description 1
- 238000012546 transfer Methods 0.000 description 1
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06N—COMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
- G06N3/00—Computing arrangements based on biological models
- G06N3/02—Neural networks
- G06N3/06—Physical realisation, i.e. hardware implementation of neural networks, neurons or parts of neurons
- G06N3/063—Physical realisation, i.e. hardware implementation of neural networks, neurons or parts of neurons using electronic means
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06N—COMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
- G06N3/00—Computing arrangements based on biological models
- G06N3/02—Neural networks
- G06N3/06—Physical realisation, i.e. hardware implementation of neural networks, neurons or parts of neurons
- G06N3/061—Physical 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
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06N—COMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
- G06N3/00—Computing arrangements based on biological models
- G06N3/02—Neural networks
- G06N3/08—Learning methods
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)
- Image Processing (AREA)
- Multi Processors (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 : ^=/<Σ*Ά> <1) j wtj et Ej é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 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 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 à 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.
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 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 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 2° 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 2°. 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 SM11, 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 SM11, 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 2° pour chaque canal des interconnexions à l’intérieur du circuit 10, un mot d’entrée de 2P bits est découpé en 2P/ 2° sous-mots de 2° bits puis est transmis en 2P/ 2° cycles dans un des canaux de communication 21, 22, 23, 24. Dans le cas où l’on a 2° canaux en parallèle, 2° mots peuvent ainsi être transmis parallèlement en 2° 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 2° 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) : *,=/Œ>A)· 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.
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 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, 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 (12)
- 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 ; - 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, ledit mot étant réparti 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.
- 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.
- 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, 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).
- 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.
- 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.
Priority Applications (4)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
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. |
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 |
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 |
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 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
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 (2)
Publication Number | Publication Date |
---|---|
FR3045893A1 true FR3045893A1 (fr) | 2017-06-23 |
FR3045893B1 FR3045893B1 (fr) | 2017-12-29 |
Family
ID=56068978
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
FR1562912A Active FR3045893B1 (fr) | 2015-12-21 | 2015-12-21 | 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) |
Families Citing this family (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN108475347A (zh) * | 2017-11-30 | 2018-08-31 | 深圳市大疆创新科技有限公司 | 神经网络处理的方法、装置、加速器、系统和可移动设备 |
CN110596668B (zh) * | 2019-09-20 | 2021-06-04 | 中国人民解放军国防科技大学 | 基于互逆深度神经网络的目标外辐射源被动定位方法 |
FR3114422B1 (fr) | 2020-09-22 | 2023-11-10 | Commissariat Energie Atomique | Calculateur électronique de mise en œuvre d’un réseau de neurones artificiels, avec blocs de calcul de plusieurs types |
Citations (2)
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)
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 |
-
2015
- 2015-12-21 FR FR1562912A patent/FR3045893B1/fr active Active
-
2016
- 2016-12-07 EP EP16809743.4A patent/EP3394799A1/fr active Pending
- 2016-12-07 US US15/781,680 patent/US11308388B2/en active Active
- 2016-12-07 WO PCT/EP2016/079998 patent/WO2017108398A1/fr active Application Filing
Patent Citations (2)
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)
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 * |
Also Published As
Publication number | Publication date |
---|---|
EP3394799A1 (fr) | 2018-10-31 |
US11308388B2 (en) | 2022-04-19 |
FR3045893B1 (fr) | 2017-12-29 |
WO2017108398A1 (fr) | 2017-06-29 |
US20190005378A1 (en) | 2019-01-03 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
EP3084588B1 (fr) | Module de traitement du signal, notamment pour reseau de neurones et circuit neuronal. | |
EP3660849B1 (fr) | Circuit mémoire adapté à mettre en oeuvre des opérations de calcul | |
EP3053108B1 (fr) | Circuit electronique, notamment apte a l'implementation d'un reseau de neurones, et systeme neuronal | |
EP0154340A1 (fr) | Processeur de calcul d'une transformée discrète inverse du cosinus | |
EP0558125B1 (fr) | Processeur neuronal à cellules synaptiques reparties | |
EP3844679A1 (fr) | Architecture de calculateur d'une couche de convolution dans un reseau de neurones convolutionnel | |
EP0597028A1 (fr) | Architecture de systeme en tableau de processeurs a structure parallele. | |
FR2860313A1 (fr) | Composant a architecture reconfigurable dynamiquement | |
EP0552074A1 (fr) | Système de traitement de données multiprocesseur | |
FR2622713A1 (fr) | Circuit de calcul utilisant une arithmetique residuelle | |
WO2017108398A1 (fr) | Circuit electronique, notamment apte a l'implementation de reseaux de neurones a plusieurs niveaux de precision | |
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 | |
FR2568036A1 (fr) | Circuit de calcul | |
WO2020012105A1 (fr) | Processeur ntt incluant une pluralite de bancs de memoires | |
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 | |
EP0319421B1 (fr) | Comparateur binaire et opérateur de tri de nombres binaires | |
EP0317413A1 (fr) | Dispositif de traitement de données relatives à des éléments d'image | |
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. | |
EP1052575A1 (fr) | Système de transmission, récepteur et réseau d'interconnexion | |
FR2570853A1 (fr) | Dispositif de traitement en temps reel de signal numerique par convolution | |
EP0329572A1 (fr) | Multiplieur de nombres binaires à très grand nombre de bits | |
FR2838222A1 (fr) | Systeme reconfigurable de controle base sur la mise en oeuvre materielle de graphes de petri |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PLFP | Fee payment |
Year of fee payment: 2 |
|
PLSC | Publication of the preliminary search report |
Effective date: 20170623 |
|
PLFP | Fee payment |
Year of fee payment: 3 |
|
PLFP | Fee payment |
Year of fee payment: 5 |
|
PLFP | Fee payment |
Year of fee payment: 6 |
|
PLFP | Fee payment |
Year of fee payment: 7 |
|
PLFP | Fee payment |
Year of fee payment: 8 |
|
PLFP | Fee payment |
Year of fee payment: 9 |