Brevet FR3159250A1 — publié le 20250815

Titre : Circuit électronique de type multiplieur-accumulateur (MAC) Circuit électronique de convolution en profondeur ou circuit depthwise (10), intégré sur une puce d'accélération de réseaux de neurones, et configuré pour réaliser une convolution séquentielle et comprenant une première entrée (101) configurée pour recevoir une donnée d’entrée (40) comprenant trois valeurs, une deuxième entrée (102) configurée pour recevoir une donnée de poids (50) comprenant trois fois trois valeurs, un premier (11), un deuxième (12) et un troisième (13) étage de traitement séquentiel comprenant chacun trois multiplieurs configurés pour multiplier, respectivement lors d’un premier, d’un deuxième et d’un troisième cycle d’exécution, les valeurs d’une donnée d’entrée respectivement par les valeurs d’une donnée de poids, pour donner respectivement les valeurs de produits, un accumulateur (103) configuré pour réaliser l’addition des valeurs de produits pour obtenir une valeur d’accumulation Vacc, une sortie (106) configurée pour délivrer la valeur d’accumulation Vacc. Figure pour l’abrégé : Fig.2. Circuit électronique de type multiplieur-accumulateur (MAC) La présente invention concerne les domaines des circuits de réseaux de neurones et de traitement numérique du signal. Elle concerne plus précisément l’architecture d’un accélérateur d’apprentissage profond de type NVDLA (acronyme de « NVIDIA® Deep Learning Accelerator »). L’invention peut avantageusement être mise en œuvre dans des architectures à réseaux de neurones pour des calculs de convolution profonds ou Depthwise, par exemple pour des traitements d’images (classification d’images, détection d’objets, reconnaissance de forme, apprentissage profond). ETAT DE LA TECHNIQUE Dans le domaine des architectures de calcul à réseaux de neurones, la convolution de données est une opération fondamentale. Elle est généralement effectuée par un accélérateur. Un enjeu pour un tel accélérateur consiste à traiter rapidement les opérations de convolution, en limitant la taille de mémoire nécessaire. Un tel accélérateur est également versatile et peut prendre en charge différentes tailles de matrices de convolution ou kernels. Afin d’améliorer la performance de ces accélérateurs, par exemple dans le traitement d’images, les calculs de convolutions sont en général réalisés en utilisant des unités de traitement parallèles, généralement basées sur des circuits multiplieurs-accumulateurs (MAC). Ces circuits « MAC » permettent d’effectuer des convolutions sur plusieurs canaux et plusieurs poids de filtre simultanément via des multiplieurs-accumulateurs. Chaque circuit MAC est typiquement configuré pour réaliser une opération permettant de calculer le produit de deux nombres puis d’agréger le résultat au contenu d’un accumulateur. L’opération effectuée est ainsi typiquement appelée « multiplication-addition » ou « multiplication-accumulation » ou simplement « opération MAC ». Ces opérations MAC sont généralement organisées en flux de données, ou pipelines, où les données passent par différentes étapes de calcul, telles que le chargement des données d'entrée, l'exécution des convolutions et le stockage des résultats. Ces pipelines sont optimisés pour le débit et la latence. L’accélérateur d’intelligence artificielle de type NVDLA (accélérateur NVDLA) est un standard ouvert de puce d'accélération de réseaux de neurones écrit au format Verilog. L’accélérateur NVDLA est basé sur une architecture de type C-K. Il est typiquement composé de Atomic-K circuits multiplieurs-accumulateurs (MAC-cell) en parallèle effectuant chacun atomic_C opérations MAC. L’accélérateur NVDLA est particulièrement adapté pour réaliser des convolutions selon trois dimensions (3D). Comme illustré à la FIG. 1 , la convolution 3D est ici effectuée entre une donnée d’entrée de dimension H*W*C et K données de poids (kernel) de dimension R*S*C chacune. La convolution 3D produit un cube de données de dimension H’*W’*C’. Les K*H*W*R*S*C opérations MAC sont réalisées en (K/atomic_K)*H*W*R*S*(C/atomic_C) itérations. Chacune de ces itérations s’exécute sur les atomic_K x atomic_C multiplieurs-accumulateurs, afin d’obtenir les données de sortie de dimension H’*W’*C’avec C’= K, H’ = H-(S-1)/2 et W’=W-(R-1)/2. Cela permet de réduire la bande passante de lecture mémoire nécessaire. L’accélérateur d’intelligence artificielle de type NVDLA permet également la réalisation de convolution en profondeur ou depthwise. La convolution n’est plus réalisée en 3D mais en deux dimensions (2D). Cette méthode de convolution permet de réduire la quantité totale d’opérations à réaliser. La convolution 2D entre C données d’entrée de dimension H*W et K données de poids de dimension R*S produit un cube de données H’*W’*C’, avec C’ = C = K. Les K*H*W*R*S opérations MAC sont réalisées en (K/atomic_K)*H*W*R*S itérations, chacune de ces itérations s’exécutant sur les Atomic-K x 1 multiplieurs-accumulateurs. On obtient ainsi des données de sortie de dimensions C’*H’*W’ avec C’= K = C, H’ = H-(S-1)/2 et W’ = W-(R-1)/2 (illustré en FIG. 1 ). Cependant la mise en place de cette convolution de type depthwise sur les atomic_K*atomic_C multiplieur-accumulateur (MAC) au standard NVDLA existant entraine une sous-utilisation d’un facteur 1/atomic_C de ceux-ci. Cela limite la performance d’un accélérateur basé sur des convolutions depthwise. Une solution visant à transformer les dimensions des données d’entrée afin d’utiliser la profondeur atomic_C d’addition des multiplieurs-accumulateur (MAC) au standard NVDLA a été étudiée. Cependant cette solution entraine le surdimensionnement du nombre d’opérations réalisées dans un circuit pour une séquence d’exécution. La bande passante est ainsi augmentée, ce qui entraine un coût supplémentaire en termes d’accès mémoire. Un objet de la présente invention est donc de proposer une solution afin d’améliorer la performance de traitement des convolutions depthwise dans l’accélérateur NVDLA sans changer le flux de données entrant. Les autres objets, caractéristiques et avantages de la présente invention apparaîtront à l'examen de la description suivante et des dessins d'accompagnement. Il est entendu que d'autres avantages peuvent être incorporés. RESUME Pour atteindre cet objectif, selon un premier aspect on prévoit un circuit électronique de convolution en profondeur, ci-après dénommé circuit depthwise, destiné à être intégré sur une puce d'accélération de réseaux de neurones, et configuré pour convoluer séquentiellement au moins une donnée d’entrée par au moins une donnée de poids, ledit circuit depthwise comprenant : une première entrée configurée pour recevoir l’au moins une donnée d’entrée comprenant trois valeurs respectivement notées V1, V2, V3, une deuxième entrée configurée pour recevoir l’au moins une donnée de poids comprenant trois fois trois valeurs respectivement notées W1, W2, W3, W4, W5, W6, W7, W8, W9, un premier étage de traitement séquentiel comprenant trois multiplieurs respectivement notés M1, M2, M3, lesdits multiplieurs étant configurés pour multiplier, lors d’un premier cycle d’exécution, les valeurs V1, V2, V3 de l’au moins une donnée d’entrée respectivement par les valeurs W1, W2, W3 de l’au moins une donnée de poids, pour donner respectivement les valeurs de produit A1 = V1*W1, A2 = V2*W2, A3 = V3*W3, un deuxième étage de traitement séquentiel comprenant trois multiplieurs respectivement notés M4, M5, M6, lesdits multiplieurs étant configurés pour multiplier, lors d’un deuxième cycle d’exécution, les valeurs V1, V2, V3 de l’au moins une donnée d’entrée respectivement par les valeurs W4, W5, W6 de l’au moins une donnée de poids, pour donner respectivement les valeurs de produit A4 = V1* W4, A5 = V2*W5, A6 = V3*W6, un troisième étage de traitement séquentiel comprenant trois multiplieurs respectivement notés M7, M8, M9, lesdits multiplieurs étant configurés pour multiplier, lors d’un troisième cycle d’exécution, les valeurs V1, V2, V3 de l’au moins une donnée d’entrée respectivement par les valeurs W7, W8, W9 de l’au moins une donnée de poids, pour donner respectivement les valeurs de produit A7 = V1*W7, A8 = V2*W8, A9 = V3*W9, un accumulateur comprenant au moins un additionneur, l’accumulateur étant configuré pour réaliser l’addition des valeurs de produits des trois étages pour obtenir une valeur d’accumulation, une première paire de bascules synchrones entre le premier étage et le deuxième étage, lesdites bascules synchrones étant configurées pour transmettre respectivement l’au moins une donnée d’entrée et/ou l’au moins une donnée de poids aux multiplieurs M4, M5, M6 du deuxième étage, après le deuxième cycle d’exécution, une deuxième paire de bascules synchrones entre le deuxième étage et le troisième étage, lesdites bascules synchrones étant configurées pour transmettre respectivement l’au moins une donnée d’entrée et/ou l’au moins une donnée de poids aux multiplieurs M7, M8, M9 du troisième étage, après le troisième cycle d’exécution, une sortie configurée pour délivrer la valeur d’accumulation. L’intégration d’un tel circuit spécialisé dans le calcul de convolution depthwise dans l’accélérateur NVDLA permet une optimisation de la bande passante mémoire. Ce circuit permet également de limiter la perte de performance vis-à-vis d’une convolution 2D ou depthwise classique. En effet, le circuit depthwise selon l’invention permet avantageusement de réaliser 9 multiplications et additions, ou opérations MAC, par cycle sur chaque circuit depthwise, tandis qu’une seule opération MAC par cycle est réalisée par un circuit de convolution depthwise classique. Cela augmente la capacité de calcul par rapport aux solutions de convolution depthwise connues. Ainsi, l’utilisation d’un circuit depthwise selon l’invention dans un accélérateur au standard NVDLA permet d’améliorer les convolutions de type depthwise. La bande passante mémoire est améliorée. Un autre aspect concerne un système comprenant Atomic-K circuits depthwise selon l’invention, dédiés au calcul de convolution depthwise ou 2D. L’intégration de Atomic-K circuits depthwise permet d’avoir une capacité de calcul totale de Atomic-K*9 opérations MAC par cycle. Ces opérations étant réalisées en parallèle, cela permet également d’optimiser le débit et de réduire la latence lors de convolution de type depthwise réalisée dans l’accélérateur NVDLA. Selon une possibilité, le système comprend en outre Atomic-K * 9 multiplieur-accumulateur (MAC), de préférence au standard NVDLA, dédiés au calcul de convolution 3D. Les données d’entrée pour ce système peuvent ainsi être traitées soit par un calcul de convolution 3D, soit par un calcul de convolution depthwise. L’ajout de circuits depthwise selon l’invention peut être effectué en conservant les circuits MAC déjà présents dans l’accélérateur d’apprentissage profond de type NVDLA, sans les modifier. Un tel système intégré dans l’accélérateur NVDLA est plus versatile. Cela permet d’optimiser le calcul de convolution, soit par convolution depthwise, soit par convolution 3D, en fonction des besoins. Un autre aspect concerne un procédé de traitement numérique du signal mis en œuvre par le circuit depthwise selon l’invention, comprenant : Au moins une phase d’initialisation des données de poids comprenant : Lors d’un premier cycle d’exécution : fournir trois valeurs W7, W8, W9 de la donnée de poids aux multiplieurs M1, M2, M3 du premier étage et à l’une des bascules synchrones de la première paire, dite première bascule de poids, Lors d’un deuxième cycle d’exécution : Fournir, via ladite première bascule de poids, les trois valeurs W7, W8, W9 de la donnée de poids aux multiplieurs M4, M5, M6 du deuxième étage et à l’une des bascules synchrones de la deuxième paire, dite deuxième bascule de poids, fournir trois valeurs W4, W5, W6 de la donnée de poids aux multiplieurs M1, M2, M3 du premier étage et à la première bascule de poids, Lors d’un troisième cycle d’exécution : Fournir, via ladite deuxième bascule de poids, les trois valeurs W7, W8, W9 de la donnée de poids aux multiplieurs M7, M8, M9 du troisième étage, Fournir, via la première bascule de poids, les trois valeurs W4, W5, W6 de la donnée de poids aux multiplieurs M4, M5, M6 du deuxième étage et à la deuxième bascule de poids, fournir trois valeurs W1, W2, W3 de la donnée de poids aux multiplieurs M1, M2, M3 du premier étage et à la première bascule de poids, Au moins une phase de traitement des données d’entrée comprenant : Lors d’un premier cycle d’exécution : fournir trois valeurs V1, V2, V3 d’une première donnée d’entrée aux multiplieurs M1, M2, M3 du premier étage et à l’autre des bascules synchrones de la première paire, dite première bascule de données, Lors d’un deuxième cycle d’exécution : Fournir, via ladite première bascule de données, les trois valeurs V1, V2, V3 de la première donnée d’entrée aux multiplieurs M4, M5, M6 du deuxième étage et à l’autre des bascules synchrones de la deuxième paire, dite deuxième bascule de données, fournir trois valeurs V1’, V2’, V3’ d’une deuxième donnée d’entrée aux multiplieurs M1, M2, M3 du premier étage et à la première bascule de données, Lors d’un troisième cycle d’exécution : Fournir, via ladite deuxième bascule de données, les trois valeurs V1, V2, V3 de la première donnée d’entrée aux multiplieurs M7, M8, M9 du troisième étage, Fournir, via la première bascule de données, les trois valeurs V1’, V2’, V3’ de la deuxième donnée d’entrée aux multiplieurs M4, M5, M6 du deuxième étage et à la deuxième bascule de données, fournir trois valeurs V1’’, V2’’, V3’’ d’une troisième donnée d’entrée aux multiplieurs M1, M2, M3 du premier étage et à la première bascule de données, calculer, via les multiplieurs M1-M9, les valeurs de produits A1’’ = V1’’*W1, A2’’ = V2’’*W2, A3’’ = V3’’*W3, A4’ = V1’*W4, A5’ = V2’*W5, A6’ = V3’*W6, A7 = V1*W7, A8 = V2*W8, A9 = V3*W9, calculer, via l’accumulateur, une valeur d’accumulation à partir de la somme des valeurs de produit A1’’, A2’’, A3’’, A4’, A5’, A6’, A7, A8, A9, Lors d’un i-ième cycle d’exécution suivant (i=4 à N) : Fournir, via la deuxième bascule de données, les trois valeurs de la (i-2) -ième donnée d’entrée aux multiplieurs M7, M8, M9 du troisième étage, Fournir, via la première bascule de données, les trois valeurs de la (i-1) -ième donnée d’entrée aux multiplieurs M4, M5, M6 du deuxième étage et à la deuxième bascule de données, fournir trois valeurs d’une i-ième donnée d’entrée aux multiplieurs M1, M2, M3 du premier étage et à la première bascule de données, calculer, via les multiplieurs M1-M9, les valeurs de produits correspondantes, calculer, via l’accumulateur, une (i-2) -ième valeur d’accumulation à partir de la somme desdites valeurs de produit correspondantes. BREVE DESCRIPTION DES FIGURES Les buts, objets, ainsi que les caractéristiques et avantages de l’invention ressortiront mieux de la description détaillée d’un mode de réalisation de cette dernière qui est illustré par les dessins d’accompagnement suivants dans lesquels : FIG. 1 Les figures 1A et 1B représentent respectivement la convolution 3D et la convolution 2D de données d’entrée par K données de poids. FIG. 1 FIG. 2 La FIG. 2 représente le circuit électronique de convolution en profondeur ou depthwise selon un exemple de réalisation de l’invention. FIG. 3 La FIG. 3 représente le système selon un exemple de réalisation de l’invention. FIG. 4 La FIG. 4 représente le procédé de traitement numérique du signal mis en œuvre par le circuit selon un exemple de réalisation de l’invention. FIG. 5 La FIG. 5 représente un filtrage réalisé sur une donnée de poids selon un exemple de réalisation de l’invention. Les dessins sont donnés à titre d'exemples et ne sont pas limitatifs de l’invention. Ils constituent des représentations schématiques de principe destinées à faciliter la compréhension de l’invention et ne sont pas nécessairement à l'échelle des applications pratiques. DESCRIPTION DÉTAILLÉE Avant d’entamer une revue détaillée de modes de réalisation de l’invention, sont énoncées ci-après des caractéristiques optionnelles qui peuvent éventuellement être utilisées en association ou alternativement. Selon un exemple les première et deuxième paires de bascules synchrones sont configurées pour affecter les différentes valeurs de l’au moins une donnée d’entrée et de l’au moins une donnée de poids aux différents multiplieurs de chaque étage. Les données d’entrée et de poids peuvent ainsi passer d’un étage à l’autre suivant le pipeline configuré. Les ressources mémoire sont directement gérées au sein du circuit, sans impact sur d’autres composants de l’IP NVDLA. Selon un exemple, les différentes valeurs de l’au moins une donnée d’entrée et de l’au moins une donnée de poids sont toutes codées en n bits (n = 8, 16, 32), et dans lequel la valeur d’accumulation V acc est codée en 3*n bits. Ce codage permet d’utiliser le même flux de données que pour la convolution 3D réalisée normalement dans les circuits de NVDLA classiques. Selon un exemple, les bascules des première et deuxième paires de bascules sont des bascules de type D. Cela permet d’assurer un état de sortie stable entre deux fronts de cycles d’exécution. Cela permet également une optimisation de la bande passante. Selon un exemple, l’accumulateur comprend au moins deux additionneurs, de préférence huit additionneurs. Cela permet d’effectuer des sommations partielles après chaque étage, éventuellement en sortie de chaque multiplieur. Selon un exemple, les additionneurs sont des additionneurs parallèles à retenue anticipée. Cela permet de réaliser les produits partiels en parallèle et non un par un, tout en évitant d’augmenter la taille du circuit. Selon un exemple, l’accumulateur comprend huit additionneurs, typiquement : un premier accumulateur configuré pour effectuer l’opération A1 + A2 = A12, un deuxième accumulateur configuré pour effectuer l’opération A12 + A3 = A123, un troisième accumulateur configuré pour effectuer l’opération A4 + A5 = A45, un quatrième accumulateur configuré pour effectuer l’opération A45 + A6 = A456, un cinquième accumulateur configuré pour effectuer l’opération A7 + A8 = A78, un sixième accumulateur configuré pour effectuer l’opération A78 + A9 = A789, un septième accumulateur configuré pour effectuer l’opération A123 + A456 = A16, un huitième accumulateur configuré pour effectuer l’opération A16 + A789 = A19. Selon un exemple, le système comprend un premier ensemble de Atomic-K circuits depthwise dédié à un calcul de convolution à deux dimensions (2D), et un deuxième ensemble de Atomic-K circuits multiplieur-accumulateur au standard NVDLA, dédié à un calcul de convolution à trois dimensions (3D). Selon un exemple, le système est configuré de façon à ce que l’un parmi les premier et deuxième ensembles reçoive l’au moins une donnée d’entrée et l’au moins une donnée de poids. Selon un exemple, le système comprend au moins deux bascules de circuit configurées pour attribuer respectivement la donnée d’entrée et la donnée de poids à l’un parmi les premier et deuxième ensembles. Selon un exemple, le système comprend en outre au moins un filtre associé à au moins un circuit depthwise, ledit au moins un filtre étant configuré pour décomposer une donnée de poids comprenant plus que trois fois trois valeurs en entrée du filtre, en plusieurs sous-données de poids comprenant trois fois trois valeurs en sortie du filtre, ladite sortie du filtre étant reliée à la deuxième entrée du circuit depthwise. Cela permet au circuit depthwise de supporter n’importe quelle taille de donnée de poids. Selon un exemple, une valeur d’accumulation V acc est calculée lors de chaque n-ième cycle d’exécution (n=3 à N) de la phase de traitement des données d’entrée, après les deux premiers cycles d’exécution destinés à fournir des valeurs de données d’entrée à tous les multiplieurs M1-M9. Cela permet, après trois cycles d’initialisation, de réaliser neuf multiplications et addition en simultané par cycle afin d’obtenir une donnée en sortie. Selon un exemple, l’au moins une phase d’initialisation des données de poids est effectuée avant l’au moins une phase de traitement des données d’entrée. Cela permet de charger un noyau de convolution ou kernel préalablement au traitement d’une pluralité de données d’entrée. Selon un exemple, l’au moins une phase d’initialisation des données de poids est effectuée périodiquement pendant l’au moins une phase de traitement des données d’entrée. Cela permet éventuellement de changer le noyau de convolution pour le traitement des données d’entrée. Selon un exemple, lorsqu’ une donnée de poids comprend plus de trois fois trois valeurs, ladite donnée de poids est décomposée en plusieurs sous-données de poids comprenant trois fois trois valeurs et lesdites sous-données de poids sont fournies aux multiplieurs M1-M9. Le filtrage permet de supporter n’importe qu’elle taille de donnée de poids. Selon un exemple, la décomposition de la donnée de poids consiste en un ajout de valeurs nulles à la donnée de poids, puis à un découpage de la donnée de poids pour former les sous-données de poids comprenant trois fois trois valeurs. Cela permet d’avoir des données de poids sous le format attendu c’est-à-dire trois fois trois valeurs. Dans la description qui suit, le terme « bascule » est utilisé. Une bascule s’entend comme un circuit logique capable, dans certaines circonstances, de maintenir les valeurs de ses sorties malgré les changements de valeurs d’entrée, c’est-à-dire comportant un état mémoire permettant ainsi le passage de la logique combinatoire à la logique séquentielle. Dans la description qui suit les termes « MAC » et « MAC-cell » sont utilisés. Ces termes sont relatifs au calcul du produit de deux nombres et à l’agrégation du résultat au contenu d’un accumulateur. L'opération elle-même (multiplication-addition) est souvent abrégée en MAC ou « opération MAC ». Un « MAC-cell » est un bloc de calcul qui réalise C MAC opérations ; l’homme du métier sait parfaitement déterminer à quoi se réfère « MAC » dans son contexte d’utilisation. Le circuit électronique qui réalise cette opération est appelé « circuit multiplieur-accumulateur ». Dans la demande, les paramètres K, atomic_K, C, atomic_C sont notamment utilisés. Atomic-K est le nombre de MAC cell dans l’accélérateur. K est une dimension de données, il s’agit du nombre de kernels impliqués dans le calcul de convolution (voir par exemple FIG. 1 ). Atomic-K correspond également au nombre de kernels traités en parallèle dans l’accélérateur. L’opération de convolution nécessite typiquement K/Atomic-K opérations MAC. C est une dimension de données (voir par exemple FIG. 1 ). Atomic_C est le nombre d’opérations MAC par MAC cell. Le nombre total d’opérations MAC réalisées en parallèle est donc Atomic_C*Atomic_K. Dans la description qui suit, le terme « cycle d’exécution » est utilisé. Un cycle d’exécution s’entend comme un cycle d’horloge correspondant à une période d’un signal électrique oscillant qui rythme les actions d’un circuit. Ainsi à chaque cycle d'horloge ou d’exécution, des calculs peuvent être effectués en utilisant les sorties de bascules. L'horloge permet d'assurer que les données sont valides au cycle d'horloge suivant, c'est-à-dire que les calculs sont terminés et les résultats stabilisés. Les bascules utilisées ici possèdent une entrée « Horloge » et sont typiquement dites « synchrones ». Le standard NVDLA (acronyme de « NVIDIA Deep Learning Accelerator » signifiant « Accélérateur d’apprentissage profond [de] NVIDIA ») est un standard ouvert (licence « NVIDIA Open NVDLA License ») de puce d'accélération de réseaux de neurones à destination de l’apprentissage profond, créé par la société NVIDIA. Le processeur de ce standard NVDLA est écrit au format Verilog (langage de description matériel de circuits logiques). La présente invention concerne un circuit électronique de convolution en profondeur, ci-après dénommé circuit depthwise 10. Le circuit depthwise 10 permet de réaliser des opérations MAC optimisées pour les convolutions de type depthwise ou en deux dimensions (2D). Il permet ainsi le calcul de convolution depthwise par le passage de données sur un pipeline de trois étages comprenant neuf opérateurs. Le circuit depthwise 10 va maintenant être décrit selon plusieurs exemples de réalisations en référence à la FIG. 2 . Le circuit depthwise 10 est destiné à être intégré sur une puce d’accélération de réseaux de neurones. Le circuit depthwise 10 est configuré pour convoluer séquentiellement au moins une donnée d’entrée 40 par un moins une donnée de poids 50. Le circuit depthwise 10 comprend ainsi une première entrée 101. Selon un exemple, la première entrée 101 est configurée pour recevoir l’au moins une donnée d’entrée 40. L’au moins une donnée d’entrée 40 comprend trois valeurs respectivement notées V1, V2, V3. Selon un exemple, les trois valeurs respectivement notées V1, V2, V3 peuvent être représentées sous un format matriciel d’une colonne de trois lignes. Le circuit depthwise 10 comprend également une deuxième entrée 102. Selon un exemple, la deuxième entrée 102 est configurée pour recevoir l’au moins une donnée de poids 50. L’au moins une donnée de poids 50 comprend trois fois trois valeurs respectivement notées W1, W2, W3, W4, W5, W6, W7, W8, W9. Selon un exemple, les trois fois trois valeurs notées W1, W2, W3, W4, W5, W6, W7, W8, W9 peuvent être représentées sous un format matriciel de trois colonnes de trois lignes. Le circuit depthwise 10 est structuré sous forme de pipeline à trois étages. Il comprend un premier étage 11 de traitement séquentiel, un deuxième étage 12 de traitement séquentiel, et un troisième étage 13 de traitement séquentiel. Selon un exemple, le premier étage 11 comprend trois multiplieurs respectivement notés M1, M2, M3. Les trois multiplieurs M1, M2, M3 peuvent être configurés pour multiplier respectivement, lors d’un premier cycle d’exécution, les valeurs V1, V2, V3 de l’au moins une donnée d’entrée 40 respectivement par les valeurs W1, W2, W3 de l’au moins une donnée de poids 50. Ainsi, l’opération de multiplication réalisée par les trois multiplieurs M1, M2, M3 peut donner respectivement des valeurs de produit A1 = V1*W1, A2 = V2*W2 et A3 = V3*W3. Le multiplieur M1 réalise typiquement la multiplication entre la valeur V1 de l’au moins une donnée d’entrée 40 par la valeur W1 de l’au moins une donnée de poids 50 lors du premier cycle d’exécution pour donner la valeur de produit A1. De manière analogue, le multiplieur M2 réalise typiquement la multiplication entre la valeur V2 de l’au moins une donnée d’entrée 40 par la valeur W2 de l’au moins une donnée de poids 50 lors du premier cycle d’exécution pour donner la valeur de produit A2. De manière analogue, le multiplieur M3 réalise typiquement la multiplication entre la valeur V3 de l’au moins une donnée d’entrée 40 par la valeur W3 de l’au moins une donnée de poids 50 lors du premier cycle d’exécution pour donner la valeur de produit A3. Selon un exemple, le deuxième étage 12 de traitement séquentiel présente une architecture semblable à celle du premier étage 11 de traitement séquentiel, et comprend trois multiplieurs respectivement notés M4, M5, M6. Les trois multiplieurs M4, M5, M6 peuvent être configurés pour multiplier, lors d’un deuxième cycle d’exécution, les valeurs V1, V2, V3 de l’au moins une donnée d’entrée 40 respectivement par les valeurs W4, W5, W6 de l’au moins une donnée de poids 50. Ainsi, l’opération de multiplication réalisée par les trois multiplieurs M4, M5, M6 peut donner respectivement des valeurs de produit A4 = V1*W4, A5 = V2*W5 et A6 = V3*W6. Le multiplieur M4 réalise typiquement la multiplication entre la valeur V1 de l’au moins une donnée d’entrée 40 par la valeur W4 de l’au moins une donnée de poids 50 lors du deuxième cycle d’exécution pour donner la valeur de produit A4. De manière analogue, le multiplieur M5 réalise typiquement la multiplication entre la valeur V2 de l’au moins une donnée d’entrée 40 par la valeur W5 de l’au moins une donnée de poids 50 lors du deuxième cycle d’exécution pour donner la valeur de produit A5. De manière analogue, le multiplieur M6 réalise typiquement la multiplication entre la valeur V3 de l’au moins une donnée d’entrée 40 par la valeur W6 de l’au moins une donnée de poids 50 lors du deuxième cycle d’exécution pour donner la valeur de produit A6. Selon un exemple, le troisième étage 13 de traitement séquentiel présente une architecture semblable à celles des premier et deuxième étages 11, 12 de traitement séquentiel, et comprend trois multiplieurs respectivement notés M7, M8, M9. Les trois multiplieurs M7, M8, M9 peuvent être configurés pour multiplier, lors d’un troisième cycle d’exécution, les valeurs V1, V2, V3 de l’au moins une donnée d’entrée 40 respectivement par les valeurs W7, W8, W9 de l’au moins une donnée de poids 50. Ainsi, l’opération de multiplication réalisée par les trois multiplieurs M7, M8, M9 peut donner respectivement des valeurs de produit A7 = V1*W7, A8 = V2*W8 et A9 = V3*W9. Le multiplieur M7 réalise typiquement la multiplication entre la valeur V1 de l’au moins une donnée d’entrée 40 par la valeur W7 de l’au moins une donnée de poids 50 lors du troisième cycle d’exécution pour donner la valeur de produit A7. De manière analogue, le multiplieur M8 réalise typiquement la multiplication entre la valeur V2 de l’au moins une donnée d’entrée 40 par la valeur W8 de l’au moins une donnée de poids 50 lors du troisième cycle d’exécution pour donner la valeur de produit A8. De manière analogue, le multiplieur M9 réalise typiquement la multiplication entre la valeur V3 de l’au moins une donnée d’entrée 40 par la valeur W9 de l’au moins une donnée de poids 50 lors du troisième cycle d’exécution pour donner la valeur de produit A9. Le circuit depthwise 10 comprend un accumulateur 103. L’accumulateur 103 comprend au moins un additionneur 1030, de préférence l’accumulateur 103 comprend une pluralité d’additionneurs 1030. L’accumulateur 103 est configuré de sorte à réaliser l’addition des valeurs de produits A1, A2, A3, A4, A5, A6, A7, A8 et A9. Ainsi, l’addition des valeurs de produits A1, A2, A3, A4, A5, A6, A7, A8 et A9 permet d’obtenir une valeur d’accumulation V acc . Selon un exemple, l’accumulateur 103 comprend au moins deux additionneurs 1030. De préférence, l’accumulateur 103 comprend huit additionneurs 1030. L’utilisation de plusieurs additionneurs 1030 permet de calculer un résultat en un temps logarithmique de la taille des entrées. Cela permet en plus de limiter l’augmentation des opérateurs. Selon un exemple, les additionneurs 1030 sont des additionneurs 1030 parallèles à retenue anticipée. Ces additionneurs 1030 sont configurés de sortes à accélérer les additions multiples et permettent ainsi d’effectuer les sommes des produits partiels en parallèle avec des additionneurs reliés en série. Les additions réalisées par les huit additionneurs 1030 sont ainsi effectuées simultanément afin de donner la valeur d’accumulation V acc . Selon un exemple, le premier additionneur 1030 réalise l’addition des valeurs de produits A1 et A2, le deuxième additionneur 1030 réalise l’addition de la valeur de produit A3 avec le résultat provenant du premier additionneur 1030, le troisième additionneur 1030 réalise l’addition des valeurs de produits A4 avec A5, le quatrième additionneur 1030 réalise l’addition entre le résultat obtenu par le troisième additionneur 1030 avec la valeur de produit A6, le cinquième additionneur 1030 réalise l’addition entre les valeurs de produits A7 et A8, le sixième additionneur 1030 réalise l’addition entre le résultat obtenu au cinquième additionneur 1030 et la valeur de produit A9, le septième additionneur 1030 réalise l’addition entre les résultats du deuxième et du quatrième additionneur 1030, et le huitième additionneur 1030 réalise l’addition entre les résultats obtenus au sixième additionneur 1030 et au septième additionneur 1030. Ainsi, le huitième additionneur 1030 permet d’obtenir la valeur d’accumulation V acc . Le circuit depthwise 10 comprend également une première paire de bascules 104a, 104b. Dans la suite, on considère à titre non limitatif que la première paire de bascules 104a, 104b comprend une bascule 104a et une bascule 104b. Selon un exemple, les bascules 104a, 104b sont des bascules synchrones. Les bascules 104a, 104b sont placées entre les premier et deuxième étages 11, 12 du pipeline. Elles sont configurées pour transmettre séquentiellement, lors d’un cycle d’horloge, des données d’entrée 40 et/ou des données de poids 50 aux multiplieurs M4, M5, M6 du deuxième étage 12. Selon un exemple, la bascule 104a permet de transmettre au moins une donnée d’entrée 40 aux multiplieurs M4, M5, M6. De manière analogue, la bascule 104b peut transmettre au moins une donnée de poids 50 aux multiplieurs M4, M5, M6. Le fonctionnement séquentiel et les différents cycles d’exécution pour le traitement des données de poids 50 et des données d’entrée 40 sont explicités dans la suite. Le circuit depthwise 10 comprend en outre une deuxième paire de bascules 105a, 105b. Dans la suite, on considère à titre non limitatif que la deuxième paire de bascules 105a, 105b comprend une bascule 105a et une bascule 105b. Selon un exemple, les bascules 105a, 105b sont des bascules synchrones. Les bascules 105a, 105b sont placées entre les deuxième et troisième étages 12, 13 du pipeline. Elles sont configurées pour transmettre séquentiellement, lors d’un cycle d’horloge, des données d’entrée 40 et/ou des données de poids 50 aux multiplieurs M7, M8, M9 du troisième étage 13. Les bascules 105a, 105b sont respectivement connectées en série aux bascules 104a, 104b. La bascule 105a reçoit typiquement en entrée l’au moins une donnée d’entrée 40 transférée par la bascule 104a. La bascule 105a transmet ensuite l’au moins une donnée d’entrée 40 aux multiplieurs M7, M8, M9. De manière analogue, la bascule 105b reçoit typiquement en entrée l’au moins une donnée de poids 50 transférée par la bascule 104b. La bascule 105b transmet ensuite l’au moins une donnée de poids 50 aux multiplieurs M7, M8, M9. Selon un exemple, la première paire de bascules 104a, 104b synchrones est configurée pour affecter les différentes valeurs V1, V2, V3 de l’au moins une donnée d’entrée 40 et les différentes valeurs W1, W2, W3, W4, W5, W6, W7, W8, W9 de l’au moins une donnée de poids 50 aux multiplieurs M4, M5, M6 du deuxième étage 12. De manière similaire, selon un exemple, la deuxième paire de bascules 105a, 105b synchrones est configurée pour affecter les différentes valeurs V1, V2, V3 de l’au moins une donnée d’entrée 40 et W1, W2, W3, W4, W5, W6, W7, W8, W9 de l’au moins une donnée de poids 50 aux différents multiplieurs M7, M8, M9 du troisième étage 13. Selon un exemple, les bascules 104a, 104b, 105a, 105b des première et deuxième paires de bascules sont des bascules de type D. Typiquement, les bascules de type D comportent uniquement une entrée de données. La valeur de l'entrée est ainsi recopiée sur la sortie à chaque cycle d’exécution. Les bascules de type D permettent d'assurer un état de sortie stable entre deux cycles d’exécution, et d'ignorer toute valeur transitoire apparaissant sur leurs entrées au cours d'un cycle supplémentaire. D’autres éléments électroniques permettant d’enregistrer la donnée et de la transmettre à l’étage supérieur après un cycle d’exécution pourraient être utilisés. De ce fait, selon un exemple, les valeurs V1, V2, V3 de l’au moins une donnée d’entrée 40 entrent dans la bascule 104a de la première paire de bascules lors d’un premier cycle et sortent identiques de la bascule 104a de la première paire de bascules lors d’un deuxième cycle. De manière similaire, les valeurs V1, V2, V3 de l’au moins une donnée d’entrée 40 entrent dans la bascule 105a de la deuxième paire de bascules lors du deuxième cycle et sortent identiques de la bascule 105a de la deuxième paire de bascules lors du troisième cycle. Les bascules 104a, 105a, permettent ainsi une optimisation de la bande passante grâce à la redondance de données d’entrée 40. Les bascules 104b et 105b agissent de façon similaire avec les valeurs de l’au moins une donnée de poids 50. Les bascules 104b et 105b permettent ainsi typiquement d’acheminer les valeurs W7, W8, W9 de la donnée de poids 50 jusqu’aux multiplieurs M7, M8, M9. La bascule 104b permet typiquement d’acheminer les valeurs W4, W5, W6 de la donnée de poids 50 jusqu’aux multiplieurs M4, M5, M6. Le chargement des différentes valeurs W1, W2, W3, W4, W5, W6, W7, W8, W9 de la donnée de poids 50 sur les multiplieurs M1, M2, M3, M4, M5, M6, M7, M8, M9 est décrit plus en détail dans la suite. Le circuit depthwise 10 comprend également une sortie 106. La sortie 106 est configurée de sorte à délivrer la valeur d’accumulation V acc . Ainsi, l’accumulateur 103 calcule la valeur d’accumulation V acc de sorte à la fournir à la sortie 106. Selon un exemple, les différentes valeurs V1, V2, V3 de l’au moins une donnée d’entrée 40 sont toutes codées en n bits. De manière similaire, les différentes valeurs W1, W2, W3, W4, W5, W6, W7, W8, W9 de l’au moins une donnée de poids 50 sont toutes codées en n bits. Les différentes valeurs sont codées de sorte à pouvoir être calculées par les multiplieurs M1, M2, M3, M4, M5, M6, M7, M8, M9 des trois étages 11, 12, 13. Ainsi les multiplieurs M1, M2, M3, M4, M5, M6, M7, M8, M9 sont configurés pour réaliser des opérations sur n bits. Selon un exemple, n peut être égal à 8, ou à 16 ou à 32. Ainsi, la valeur d’accumulation V acc résultant des neuf opérations MAC réalisées dans le circuit depthwise 10 peut être codée en 3 x n bits. Le procédé de traitement numérique du signal mis en œuvre par le circuit depthwise 10 va maintenant être décrit en référence à la FIG. 3 . Ce procédé dit de calcul est mis en œuvre pour calculer la valeur d’accumulation V acc . Selon un exemple, le procédé de calcul de la valeur d’accumulation V acc comprend au moins une phase d’initialisation des données de poids 50 et au moins une phase de traitement des données d’entrée 40. La phase d’initialisation des données de poids 50 permet d’envoyer les valeurs W1, W2, W3, W4, W5, W6, W7, W8, W9 de la donnée de poids 50 sur les multiplieurs M1, M2, M3, M4, M5, M6, M7, M8, M9 correspondants. La phase d’initialisation des données de poids 50 est de préférence effectuée avant l’au moins une phase de traitement des données d’entrée 40. Cela correspond typiquement au chargement d’un filtre de convolution préalablement au traitement de toutes les données d’une image par ce même filtre de convolution. Selon une possibilité, si le traitement d’image doit changer, l’au moins une phase d’initialisation des données de poids 50 peut être effectuée périodiquement pendant l’au moins une phase de traitement des données d’entrée 40. Selon un exemple, la phase d’initialisation des données de poids 50 comprend trois cycles d’exécution. Lors d’un premier cycle d’exécution, trois valeurs W7, W8, W9 de la donnée de poids 50 peuvent être fournies 110 à l’une des bascules synchrones de la première paire, dite première bascule de poids 104b. Lors de ce premier cycle les trois valeurs W7, W8, W9 de la donnée de poids 50 peuvent également être fournies 110 aux multiplieurs M1, M2, M3 du premier étage 11. Lors d’un deuxième cycle d’exécution succédant au premier cycle d’exécution, deux actions peuvent être réalisées simultanément ou successivement. La première action consiste à fournir 120, via ladite première bascule de poids 104b, les trois valeurs W7, W8, W9 de la donnée de poids 50 à l’une des bascules synchrones de la deuxième paire, dite deuxième bascule de poids 105b, et éventuellement aux multiplieurs M4, M5, M6 du deuxième étage 12. La deuxième action consiste à fournir 121 trois valeurs W4, W5, W6 de la donnée de poids 50 à la première bascule de poids 104b, et éventuellement aux multiplieurs M1, M2, M3 du premier étage 11. Lors d’un troisième cycle d’exécution, trois actions peuvent être réalisées simultanément ou successivement. La première action peut consister à fournir 130, via ladite deuxième bascule de poids 105b, les trois valeurs W7, W8, W9 de la donnée de poids 50 aux multiplieurs M7, M8, M9 du troisième étage 13. La deuxième action peut consister à fournir 131, via la première bascule de poids 104b, les trois valeurs W4, W5, W6 de la donnée de poids aux multiplieurs M4, M5, M6 du deuxième étage 12, et éventuellement à la deuxième bascule de poids 105b. La troisième action peut consister à fournir 132 trois valeurs W1, W2, W3 de la donnée de poids 50 aux multiplieurs M1, M2, M3 du premier étage 11, et éventuellement à la première bascule de poids 104b. Selon un exemple, à la fin du troisième cycle d’exécution, la valeur de poids W1 est enregistrée sur le registre alloué au multiplieur M1, la valeur de poids W2 est enregistrée sur le registre alloué au multiplieur M2, la valeur de poids W3 est enregistrée sur le registre alloué au multiplieur M3, la valeur de poids W4 est enregistrée sur le registre alloué au multiplieur M4, la valeur de poids W5 est enregistrée sur le registre alloué au multiplieur M5, la valeur de poids W6 est enregistrée sur le registre alloué au multiplieur M6, la valeur de poids W7 est enregistrée sur le registre alloué au multiplieur M7, la valeur de poids W8 est enregistrée sur le registre alloué au multiplieur M8, la valeur de poids W9 est enregistrée sur le registre alloué au multiplieur M9. De plus les valeurs W1, W2, W3 peuvent être enregistré sur la première bascule de poids 104b et les valeurs W4, W5, W6 peuvent être enregistrées sur la deuxième bascule de poids 105b. Selon un exemple, le procédé de calcul de la valeur d’accumulation V acc comprend au moins une phase de traitement des données d’entrée 40. Les données d’entrée 40 peuvent se présenter sous forme d’une première donnée d’entrée comprenant les valeurs V1, V2, V3, d’une deuxième donnée d’entrée comprenant les valeurs V1’, V2’, V3’, d’une troisième donnée d’entrée comprenant les valeurs V1’’, V2’’, V3’’. La phase de traitement permet typiquement d’envoyer les valeurs V1, V2, V3, V1’, V2’, V3’, V1’’, V2’’, V3’’ des données d’entrée 40 sur les multiplieurs M1, M2, M3, M4, M5, M6, M7, M8, M9 correspondants. Selon un exemple, la phase de traitement des données d’entrée 40 comprend au moins trois cycles d’exécution. De préférence, la phase de traitement des données d’entrée 40 comprend strictement plus que trois cycles d’exécution. Selon un exemple, lors d’un premier cycle d’exécution trois valeurs V1, V2, V3 d’une première donnée d’entrée sont fournies 210 aux multiplieurs M1, M2, M3 du premier étage 11. Ces mêmes trois valeurs V1, V2, V3 sont également fournies 210 à l’autre des bascules synchrones de la première paire, dite première bascule de données 104a. Lors d’un deuxième cycle d’exécution deux actions peuvent être réalisées simultanément ou successivement. La première action peut consister à fournir 220, via ladite première bascule de données104a, les trois valeurs V1, V2, V3 de la première donnée d’entrée 40 aux multiplieurs M4, M5, M6 du deuxième étage 12 et à l’autre des bascules synchrones de la deuxième paire, dite deuxième bascule de données105a. La deuxième action peut consister à fournir 221 trois valeurs V1’, V2’, V3’ d’une deuxième donnée d’entrée 40 aux multiplieurs M1, M2, M3 du premier étage 11 et à la première bascule de données 104a. Lors d’un troisième cycle d’exécution trois actions peuvent être réalisées simultanément ou successivement. La première action peut consister à fournir 230, via ladite deuxième bascule de données 105a, les trois valeurs V1, V2, V3 de la première donnée d’entrée 40 aux multiplieurs M7, M8, M9 du troisième étage 13. La deuxième action peut consister à fournir 231, via la première bascule de données 104a, les trois valeurs V1’, V2’, V3’ de la deuxième donnée d’entrée 40 aux multiplieurs M4, M5, M6 du deuxième étage 12 et éventuellement à la deuxième bascule de données 105a. La troisième action peut consister à fournir 232 trois valeurs V1’’, V2’’, V3’’ d’une troisième donnée d’entrée 40 aux multiplieurs M1, M2, M3 du premier étage 11 et éventuellement à la première bascule de données 104a. Selon un exemple, à la fin des actions 230, 231, 232, la valeur de donnée V1’’ est enregistrée sur le multiplieur M1, la valeur de donnée V2’’ est enregistrée sur le multiplieur M2, la valeur de donnée V3’’ est enregistrée sur le multiplieur M3, la valeur de donnée V4’ est enregistrée sur le multiplieur M4, la valeur de donnée V5’ est enregistrée sur le multiplieur M5, la valeur de donnée V6’ est enregistrée sur le multiplieur M6, la valeur de donnée V7 est enregistrée sur le multiplieur M7, la valeur de donnée V8 est enregistrée sur le multiplieur M8, la valeur de donnée V9 est enregistrée sur le multiplieur M9. De plus les valeurs V1’’, V2’’, V3’’ peuvent être enregistrées sur la première bascule de donnée 104a et les valeurs V1’, V2’, V3’ peuvent être enregistrées sur la deuxième bascule de donnée 105a. Selon un exemple, lors du troisième cycle d’exécution, après la fourniture 230, 231, 232 des valeurs des première, deuxième et troisième données d’entrée 40, au moins un calcul 233 est réalisé. Le calcul 233 peut être réalisé via les multiplieurs M1-M9 et peut correspondre à la multiplication des valeurs des données de poids 50 et des valeurs des données d’entrée 40 fournies aux multiplieurs M1-M9. Ainsi le calcul 233 permet d’obtenir les valeurs de produits A1’’ = V1’’*W1, A2’’ = V2’’*W2, A3’’ = V3’’*W3, A4’ = V1’*W4, A5’ = V2’*W5, A6’ = V3’*W6, A7 = V1*W7, A8 = V2*W8, A9 = V3*W9. Selon un exemple, lors du troisième cycle d’exécution, un calcul 234 est réalisé après le calcul 233. Le calcul 234 peut être réalisé via l’accumulateur 103 et peut correspondre à l’addition des valeurs de produits A1’’, A2’’, A3’’, A4’, A5’, A6’, A7, A8, A9. Le calcul 234 peut ainsi permettre d’obtenir une valeur d’accumulation V acc à partir de la somme des valeurs de produit A1’’, A2’’, A3’’, A4’, A5’, A6’, A7, A8, A9. Selon une possibilité, le calcul 234 peut être réalisé par plusieurs additionneurs 1030. Selon un exemple, lors d’un i-ième cycle d’exécution trois actions peuvent de nouveau être réalisées simultanément ou successivement. La première action peut consister à fournir 2i0, via la deuxième bascule de données 105a, les trois valeurs de la (i-2) -ième donnée d’entrée 40 aux multiplieurs M7, M8, M9 du troisième étage 13. La deuxième action peut consister à fournir 2i1, via la première bascule de données 104a, les trois valeurs de la (i-1) -ième donnée d’entrée 40 aux multiplieurs M4, M5, M6 du deuxième étage 12, et éventuellement à la deuxième bascule de données 105a. La troisième action peut consister à fournir 2i2 trois valeurs d’une i-ième donnée d’entrée 40 aux multiplieurs M1, M2, M3 du premier étage 11, et éventuellement à la première bascule de données 104a. Selon un exemple, lors du i-ième cycle d’exécution, après la fourniture 2i0, 2i1, 2i2 des valeurs des (i-2) -ième, (i-1) -ième et i-ième données d’entrée 40, au moins un calcul 2i3 est réalisé. Le calcul 2i3 peut être réalisé via les multiplieurs M1-M9 et peut correspondre à la multiplication des valeurs des données de poids 50 et des données d’entrée 40 fournies aux multiplieurs M1-M9. Ainsi le calcul 2i3 permet d’obtenir les valeurs de produits correspondantes. Selon un exemple, lors du i-ième cycle d’exécution, un calcul 2i4 est réalisé après le calcul 2i3. Le calcul 2i4 peut être réalisé via l’accumulateur 103 et correspond typiquement à l’addition des valeurs de produits correspondantes. Le calcul 2i4 peut ainsi permettre d’obtenir une valeur d’accumulation V acc à partir de la somme des valeurs de produit obtenues lors du calcul 2i3. Selon une possibilité, le calcul 2i4 peut être réalisé par plusieurs additionneurs 1030. Ainsi, selon un exemple, une valeur d’accumulation V acc est calculée lors de chaque n-ième cycle d’exécution (n=3 à N) de la phase de traitement des données d’entrée 40. Plus précisément, une valeur d’accumulation V acc est calculée après les deux premiers cycles d’exécution destinés à fournir des valeurs de données d’entrée 40 à tous les multiplieurs M1-M9. La valeur d’accumulation V acc peut ensuite être fournie à la sortie 106, lors de chaque n-ième cycle d’exécution (n=3 à N). Selon un exemple, le circuit depthwise 10 est destiné à être associé à un circuit multiplieur-accumulateur 20 (MAC cell) intégré sur une puce d’accélération de réseaux de neurones. Les deux circuits 10, 20 sont configurés pour être utilisés indépendamment l’un de l’autre. En particulier, le circuit 20 est envisagé comme une alternative au circuit 10 pour le traitement de convolution. Les deux circuits 10, 20 correspondent ainsi à deux possibilités complémentaires pour le calcul de convolution. De préférence, le circuit multiplieur-accumulateur 20 est un circuit de convolution 3D au standard NVDLA, dit MAC cell 20 standard. Le système 1 peut comprendre Atomic-K circuits MAC cell 20 standard et Atomic-K circuits depthwise 10. Un tel système 1 est illustré en FIG. 4 . Selon un exemple, dans le système 1, il y a autant de circuits multiplieur-accumulateur classique 20 que de circuits depthwise 10. En fonctionnement, les circuits de MAC cell 20 standard ou les circuits depthwise 10 sont utilisé en fonction du type de convolution à réaliser. Ainsi, pour le calcul des convolutions 2D les Atomic-K circuits depthwise 10 pourront être utilisés. Pour le calcul des autres types de convolutions, en particulier les convolutions 3D, les Atomic-K circuits multiplieurs-accumulateurs pourront être utilisés. Selon un exemple, le système 1 comprend des bascules de circuit 70. Les bascules de circuit 70 permettent avantageusement de sélectionner les Atomic-K circuits depthwise 10 ou les Atomic-K circuits multiplieurs-accumulateur 20. Ainsi les bascules de circuits 70 peuvent être positionnées avant les entrées de données 101, 102. Au moins une bascule de circuit parmi les bascules de circuit 70 peut transmettre la donnée d’entrée 40 soit à la première entrée 101 du circuit depthwise 10, soit à une entrée de donnée 201 des Atomic-K circuits multiplieurs-accumulateur 20. De manière similaire, au moins une bascule parmi les bascules de circuit 70 peut transmettre la donnée de poids 50 soit à la deuxième entrée 102 du circuit depthwise 10, soit à une entrée de poids 202 des Atomic-K circuits multiplieurs-accumulateur 20. Ainsi, le calcul des convolutions dans le système 1 est géré soit par les circuits depthwise 10, soit par les circuits multiplieur-accumulateur 20 standard. Avantageusement, les circuits multiplieur-accumulateur standard intégrés dans l’environnement NVDLA sont conservés, et les circuits depthwise sont ajoutés comme alternative. Cela permet d’éviter une modification trop importante du système tout en permettant d’optimiser le calcul de convolution. Le ou les Atomic-K circuits depthwise 10 selon l’invention permettent avantageusement d’optimiser un traitement de convolution, en substitution aux circuits multiplieurs-accumulateur standards notamment. Selon un exemple, la valeur d’accumulation V acc calculée 234, 2i4 est fournie 235, 2i5 en sortie 106 du circuit depthwise 10. La valeur d’accumulation V acc peut être de même format que la donnée calculée en sortie 206 d’un circuit multiplieur-accumulateur 20 standard. Comme indiqué précédemment, l’architecture du circuit depthwise 10 permet de supporter des données de poids 50 de taille comprenant trois fois trois valeurs. Afin de supporter des tailles de données de poids 50 supérieures, le système 1 peut comprendre en outre au moins un filtre 30. L’au moins un filtre 30 peut être associé à au moins un circuit depthwise 10. Dans la suite, on considère à titre non limitatif qu’un filtre 30 est associé aux Atomic-K circuits depthwise 10. Selon un exemple illustré en FIG. 5 , le filtre 30 est configuré pour décomposer 500 une donnée de poids 50 comprenant plus que trois fois trois valeurs en entrée 301 du filtre 30, en plusieurs sous-données de poids 501a, 501b, 501c, 501d comprenant trois fois trois valeurs en sortie 302 du filtre 30. La sortie 302 du filtre 30 est typiquement reliée à la deuxième entrée 102 du circuit depthwise 10. Le circuit depthwise 10 précédé du filtre 30 peut ainsi prendre en charge des données de poids 50 de différentes tailles. La taille des données de poids 50 n’est pas un facteur limitant pour la mise en œuvre du circuit depthwise 10 et/ou du système 1. L’utilisation d’un tel filtre 30 permet également de minimiser l’utilisation des ressources matérielles. Comme illustré en FIG. 5 , afin de réaliser les sous-données de poids 501a, 501b, 501c, 501d, la décomposition 500 de la donnée de poids 50 consiste à : ajouter des valeurs nulles à la donnée de poids 50, découper la donnée de poids 50 pour former les sous-données de poids 501a, 501b, 501c, 501d comprenant trois fois trois valeurs. Les sous-données de poids 501a, 501b, 501c, 501d peuvent ensuite être fournies aux multiplieurs M1-M9. Le procédé de calcul est ensuite le même que décrit précédemment. Le procédé de calcul n’est donc pas limité par la taille des données de poids 50 prises en charge, tout en gardant une performance accrue. D’après ce qui précède, il apparaît que l’invention fournit une solution particulièrement efficace pour le traitement par convolution de données dans les circuits d’accélération de réseaux de neurones au standard NVDLA. REFERENCES NUMERIQUES 1 : Système 10 : circuit depthwise 101 : première entrée 102 : deuxième entrée 11 : premier étage 12 : deuxième étage 13 : troisième étage 103 : accumulateur 1030 : additionneur Vacc : valeur d’accumulation 104a, 104b : première paire de bascule 104a : première bascule de donnée 104b : première bascule de poids 105a, 105b : deuxième paire de bascule 105a : deuxième bascule de donnée 105b : deuxième bascule de poids 106 : sortie 20 : circuit multiplieur-accumulateur 201 : entrée de donnée circuit multiplieur-accumulateur 202 : entrée de poids circuit multiplieur-accumulateur 206 : sortie du circuit multiplieur-accumulateur 30 : filtre 301 : entrée du filtre 302 : sortie du filtre 40 : donnée d’entrée 50 : donnée de poids 500 : décomposition de la donnée de poids 501a, 501b, 501c, 501d : sous-données de poids 70 : bascule de circuit 110 : fourniture de trois valeurs W7, W8, W9 de la donnée de poids aux multiplieurs M1, M2, M3 du premier étage et à l’une des bascules synchrones de la première paire, dite première bascule de poids. 120 : fourniture via ladite première bascule de poids, des trois valeurs W7, W8, W9 de la donnée de poids aux multiplieurs M4, M5, M6 du deuxième étage et à l’une des bascules synchrones de la deuxième paire, dite deuxième bascule de poids. 121 : fourniture de trois valeurs W4, W5, W6 de la donnée de poids aux multiplieurs M1, M2, M3 du premier étage et à la première bascule de poids. 130 : fourniture via ladite deuxième bascule de poids, des trois valeurs W7, W8, W9 de la donnée de poids aux multiplieurs M7, M8, M9 du troisième étage. 131 : fourniture via la première bascule de poids, les trois valeurs W4, W5, W6 de la donnée de poids aux multiplieurs M4, M5, M6 du deuxième étage et à la deuxième bascule de poids. 132 : fourniture de trois valeurs W1, W2, W3 de la donnée de poids aux multiplieurs M1, M2, M3 du premier étage et à la première bascule de poids. 210 : fourniture de trois valeurs V1, V2, V3 d’une première donnée d’entrée aux multiplieurs M1, M2, M3 du premier étage et à l’autre des bascules synchrones de la première paire, dite première bascule de données. 220 : fourniture via ladite première bascule de données, les trois valeurs V1, V2, V3 de la première donnée d’entrée aux multiplieurs M4, M5, M6 du deuxième étage et à l’autre des bascules synchrones de la deuxième paire, dite deuxième bascule de données. 221 : fourniture de trois valeurs V1’, V2’, V3’ d’une deuxième donnée d’entrée aux multiplieurs M1, M2, M3 du premier étage et à la première bascule de données. 230 : fourniture via ladite deuxième bascule de données, les trois valeurs V1, V2, V3 de la première donnée d’entrée aux multiplieurs M7, M8, M9 du troisième étage. 231 : fourniture via la première bascule de données, les trois valeurs V1’, V2’, V3’ de la deuxième donnée d’entrée aux multiplieurs M4, M5, M6 du deuxième étage et à la deuxième bascule de données. 232 : fourniture de trois valeurs V1’’, V2’’, V3’’ d’une troisième donnée d’entrée aux multiplieurs M1, M2, M3 du premier étage et à la première bascule de données. 233 : calcul via les multiplieurs M1-M9, des valeurs de produits A1’’ = V1’’*W1, A2’’ = V2’’*W2, A3’’ = V3’’*W3, A4’ = V1’*W4, A5’ = V2’*W5, A6’ = V3’*W6, A7 = V1*W7, A8 = V2*W8, A9 = V3*W9 234 : calcul via l’accumulateur, d’une valeur d’accumulation V acc à partir de la somme des valeurs de produit A1’’, A2’’, A3’’, A4’, A5’, A6’, A7, A8, A9. 235 : fourniture de la donnée d’accumulation V acc en sortie 106. 2i0 : fourniture via la deuxième bascule de données, des trois valeurs de la (i-2)-ième donnée d’entrée aux multiplieurs M7, M8, M9 du troisième étage. 2i1 : fourniture via la première bascule de données, des trois valeurs de la (i-1)-ième donnée d’entrée aux multiplieurs M4, M5, M6 du deuxième étage et à la deuxième bascule de données, 2i2 : fourniture des trois valeurs d’une i-ième donnée d’entrée aux multiplieurs M1, M2, M3 du premier étage et à la première bascule de données. 2i3 : calcul via les multiplieurs M1-M9, des valeurs de produits correspondantes. 2i4 : calcul via l’accumulateur, d’une (i-2)-ième valeur d’accumulation V acc à partir de la somme desdites valeurs de produit correspondantes. 2i5 : fourniture de la donnée d’accumulation V acc en sortie 106. Circuit électronique de convolution en profondeur, ci-après dénommé circuit depthwise (10), destiné à être intégré sur une puce d'accélération de réseaux de neurones, et configuré pour convoluer séquentiellement au moins une donnée d’entrée (40) par au moins une donnée de poids (50), ledit circuit depthwise (10) comprenant : une première entrée (101) configurée pour recevoir l’au moins une donnée d’entrée (40) comprenant trois valeurs respectivement notées V1, V2, V3, une deuxième entrée (102) configurée pour recevoir l’au moins une donnée de poids (50) comprenant trois fois trois valeurs respectivement notées W1, W2, W3, W4, W5, W6, W7, W8, W9, un premier étage (11) de traitement séquentiel comprenant trois multiplieurs respectivement notés M1, M2, M3, lesdits multiplieurs étant configurés pour multiplier, lors d’un premier cycle d’exécution, les valeurs V1, V2, V3 de l’au moins une donnée d’entrée (40) respectivement par les valeurs W1, W2, W3 de l’au moins une donnée de poids (50), pour donner respectivement les valeurs de produit A1 = V1*W1, A2 = V2*W2, A3 = V3*W3, un deuxième étage (12) de traitement séquentiel comprenant trois multiplieurs respectivement notés M4, M5, M6, lesdits multiplieurs étant configurés pour multiplier, lors d’un deuxième cycle d’exécution, les valeurs V1, V2, V3 de l’au moins une donnée d’entrée (40) respectivement par les valeurs W4, W5, W6 de l’au moins une donnée de poids (50), pour donner respectivement les valeurs de produit A4 = V1*W4, A5 = V2*W5, A6 = V3*W6, un troisième étage (13) de traitement séquentiel comprenant trois multiplieurs respectivement notés M7, M8, M9, lesdits multiplieurs étant configurés pour multiplier, lors d’un troisième cycle d’exécution, les valeurs V1, V2, V3 de l’au moins une donnée d’entrée (40) respectivement par les valeurs W7, W8, W9 de l’au moins une donnée de poids (50), pour donner respectivement les valeurs de produit A7 = V1*W7, A8 = V2*W8, A9 = V3*W9, un accumulateur (103) comprenant au moins un additionneur (1030), l’accumulateur (103) étant configuré pour réaliser l’addition des valeurs de produits des trois étages (11, 12, 13) pour obtenir une valeur d’accumulation V acc , une première paire de bascules (104a, 104b) synchrones entre le premier étage (11) et le deuxième étage (12), lesdites bascules (104a, 104b) synchrones étant configurées pour transmettre respectivement l’au moins une donnée d’entrée (40) et/ou l’au moins une donnée de poids (50) aux multiplieurs M4, M5, M6 du deuxième étage (12), après le deuxième cycle d’exécution, une deuxième paire de bascules (105a, 105b) synchrones entre le deuxième étage (12) et le troisième étage (13), lesdites bascules (105a, 105b) synchrones étant configurées pour transmettre respectivement l’au moins une donnée d’entrée (40) et/ou l’au moins une donnée de poids (50) aux multiplieurs M7, M8, M9 du troisième étage (13), après le troisième cycle d’exécution, une sortie (106) configurée pour délivrer la valeur d’accumulation V acc . Circuit depthwise (10) selon la revendication précédente, dans lequel les première (104a, 104b) et deuxième (105a, 105b) paires de bascules synchrones sont configurées pour affecter les différentes valeurs de l’au moins une donnée d’entrée (40) et de l’au moins une donnée de poids (50) aux différents multiplieurs de chaque étage. Circuit depthwise (10) selon l’une quelconque des revendications précédentes, dans lequel les différentes valeurs de l’au moins une donnée d’entrée (40) et de l’au moins une donnée de poids (50) sont toutes codées en n bits (n = 8, 16, 32), et dans lequel la valeur d’accumulation V acc est codée en 3*n bits. Circuit depthwise (10) selon l’une quelconque des revendications précédentes, dans lequel les bascules (104a, 104b, 105a, 105b) des première et deuxième paires de bascules sont des bascules de type D. Circuit depthwise (10) selon l’une quelconque des revendications précédentes, dans lequel l’accumulateur (103) comprend au moins deux additionneurs (1030), de préférence huit additionneurs (1030). Circuit depthwise selon la revendication précédente, dans lequel les additionneurs (1030) sont des additionneurs parallèles à retenue anticipée. Système (1) comprenant un premier ensemble de Atomic-K circuits depthwise (10) selon l’une quelconque des revendications précédentes, dédié à un calcul de convolution à deux dimensions (2D), et un deuxième ensemble de Atomic-K circuits multiplieur-accumulateur (20) au standard NVDLA, dédié à un calcul de convolution à trois dimensions (3D), le système étant configuré de façon à ce que l’un parmi les premier et deuxième ensembles reçoive l’au moins une donnée d’entrée (40) et l’au moins une donnée de poids (50). Système (1) selon la revendication précédente comprenant au moins deux bascules de circuit (70) configurées pour attribuer respectivement la donnée d’entrée et la donnée de poids à l’un parmi les premier et deuxième ensembles. Système (1) selon l’une quelconque des deux revendications précédentes, comprenant en outre au moins un filtre (30) associé à au moins un circuit depthwise (10), ledit au moins un filtre (30) étant configuré pour décomposer une donnée de poids (50) comprenant plus que trois fois trois valeurs en entrée (301) du filtre, en plusieurs sous-données de poids (501a, 501b, 501c, 501d) comprenant trois fois trois valeurs en sortie (302) du filtre (30), ladite sortie (302) du filtre (30) étant reliée à la deuxième entrée (102) du circuit depthwise (10). Procédé de traitement numérique du signal mis en œuvre par le circuit depthwise (10) selon l’une quelconque des revendications 1 à 6, comprenant : Au moins une phase d’initialisation des données de poids (50) comprenant : Lors d’un premier cycle d’exécution : fournir (110) trois valeurs W7, W8, W9 de la donnée de poids (50) aux multiplieurs M1, M2, M3 du premier étage (11) et à l’une des bascules synchrones de la première paire (104a, 104b), dite première bascule de poids (104b), Lors d’un deuxième cycle d’exécution : Fournir (120), via ladite première bascule de poids (104b), les trois valeurs W7, W8, W9 de la donnée de poids (50) aux multiplieurs M4, M5, M6 du deuxième étage (12) et à l’une des bascules synchrones de la deuxième paire (105a, 105b), dite deuxième bascule de poids (105b), fournir (121) trois valeurs W4, W5, W6 de la donnée de poids (50) aux multiplieurs M1, M2, M3 du premier étage (11) et à la première bascule de poids (104b), Lors d’un troisième cycle d’exécution : Fournir (130), via ladite deuxième bascule de poids (105b), les trois valeurs W7, W8, W9 de la donnée de poids (50) aux multiplieurs M7, M8, M9 du troisième étage (13), Fournir (131), via la première bascule de poids (104b), les trois valeurs W4, W5, W6 de la donnée de poids (50) aux multiplieurs M4, M5, M6 du deuxième étage (12) et à la deuxième bascule de poids (105b), fournir (132) trois valeurs W1, W2, W3 de la donnée de poids (50) aux multiplieurs M1, M2, M3 du premier étage (11) et à la première bascule de poids (104b), au moins une phase de traitement des données d’entrée comprenant : Lors d’un premier cycle d’exécution : fournir (210) trois valeurs V1, V2, V3 d’une première donnée d’entrée (40) aux multiplieurs M1, M2, M3 du premier étage et à l’autre des bascules synchrones de la première paire (104a, 104b), dite première bascule de données (104a), Lors d’un deuxième cycle d’exécution : Fournir (220), via ladite première bascule de données (104a), les trois valeurs V1, V2, V3 de la première donnée d’entrée (40) aux multiplieurs M4, M5, M6 du deuxième étage (12) et à l’autre des bascules synchrones de la deuxième paire (105a, 105b), dite deuxième bascule de données (105a), fournir (221) trois valeurs V1’, V2’, V3’ d’une deuxième donnée d’entrée (40) aux multiplieurs M1, M2, M3 du premier étage (11) et à la première bascule de données (104a), Lors d’un troisième cycle d’exécution : Fournir (230), via ladite deuxième bascule de données (105a), les trois valeurs V1, V2, V3 de la première donnée d’entrée (40) aux multiplieurs M7, M8, M9 du troisième étage (13), Fournir (231), via la première bascule de données (104a), les trois valeurs V1’, V2’, V3’ de la deuxième donnée d’entrée (40) aux multiplieurs M4, M5, M6 du deuxième étage (12) et à la deuxième bascule de données (105a), fournir (232) trois valeurs V1’’, V2’’, V3’’ d’une troisième donnée d’entrée (40) aux multiplieurs M1, M2, M3 du premier étage (11) et à la première bascule de données (104a), calculer (233), via les multiplieurs M1-M9, les valeurs de produits A1’’ = V1’’*W1, A2’’ = V2’’*W2, A3’’ = V3’’*W3, A4’ = V1’*W4, A5’ = V2’*W5, A6’ = V3’*W6, A7 = V1*W7, A8 = V2*W8, A9 = V3*W9, calculer (234), via l’accumulateur (103), une valeur d’accumulation V acc à partir de la somme des valeurs de produit A1’’, A2’’, A3’’, A4’, A5’, A6’, A7, A8, A9, fournir (235) la valeur d’accumulation V acc à la sortie 106, Lors d’un i-ième cycle d’exécution suivant (i=4 à N) : Fournir (2i0), via la deuxième bascule de données (105a), les trois valeurs de la (i-2)-ième donnée d’entrée (40) aux multiplieurs M7, M8, M9 du troisième étage (13), Fournir (2i1), via la première bascule de données (104a), les trois valeurs de la (i-1)-ième donnée d’entrée (40) aux multiplieurs M4, M5, M6 du deuxième étage (12) et à la deuxième bascule de données (105a), fournir (2i2) trois valeurs d’une i-ième donnée d’entrée (40) aux multiplieurs M1, M2, M3 du premier étage (11) et à la première bascule de données (104a), calculer (2i3), via les multiplieurs M1-M9, les valeurs de produits correspondantes, calculer (2i4), via l’accumulateur (103), une (i-2)-ième valeur d’accumulation V acc à partir de la somme desdites valeurs de produit correspondantes, fournir (2i5) la valeur d’accumulation V acc à la sortie (106). Procédé de traitement numérique du signal selon la revendication précédente dans lequel une valeur d’accumulation V acc est calculée lors de chaque n-ième cycle d’exécution (n=3 à N) de la phase de traitement des données d’entrée (40), après les deux premiers cycles d’exécution destinés à fournir des valeurs de données d’entrée (40) à tous les multiplieurs M1-M9. Procédé de traitement numérique du signal selon l’une quelconque des deux revendications précédentes dans lequel l’au moins une phase d’initialisation des données de poids (50) est effectuée avant l’au moins une phase de traitement des données d’entrée (40). Procédé de traitement numérique du signal selon l’une quelconque des revendications 10 à 12 dans lequel l’au moins une phase d’initialisation des données de poids (50) est effectuée périodiquement pendant l’au moins une phase de traitement des données d’entrée (40). Procédé de traitement numérique du signal selon l’une quelconque des revendications 10 à 13 dans lequel, lorsqu’une donnée de poids (50) comprend plus de trois fois trois valeurs, ladite donnée de poids (50) est décomposée (500) en plusieurs sous-données de poids (501a, 501b, 501c, 501d) comprenant trois fois trois valeurs et lesdites sous-données de poids (501a, 501b, 501c, 501d) sont fournies aux multiplieurs M1-M9. Procédé de traitement numérique du signal selon la revendication précédente, dans lequel la décomposition (500) de la donnée de poids (50) consiste en un ajout de valeurs nulles à la donnée de poids (50), puis à un découpage de la donnée de poids pour former les sous-données de poids (501a, 501b, 501c, 501d) comprenant trois fois trois valeurs.