FR 2664072 A1 19920103 FR 9008228 A 19900629 SYSTEME DE CALCUL NEURONAL La présente invention concerne un système de calcul neuronal capable d'exécuter rapidement un nombre très important d'opérations . Les réseaux de neurones constituent des systèmes où s'effectue un nombre considérable d'opérations, généralement sous forme de calculs matriciels. On peut par exemple les destiner au traitement d'images haute définition de dimension 1000 x 1000 points images (ou pixels). Les réseaux neuronaux sont des structures généralement formées de plusieurs couches de neurones, la sortie d'un neurone d'une couche donnée pouvant être reliée aux entrées de tous les neurones de la couche suivante. Dans ces conditions, le nombre d'interconnexions entre neurones peut être considérable. Dans l'exemple cité d'une image comprenant 106 pixels, la connexion complète de 106 neurones d'entrée à, par exemple, 103 neurones de sortie fait intervenir interconnexions. On sait que, dans les réseaux neuronaux, les interconnexions entre neurones constituent des liaisons synaptiques où interviennent des coefficients synaptiques (encore appelés poids synaptiques). Un neurone est en effet un organe de calcul effectuant une somme de signaux d'entrée, pondérés chacun par un coefficient synaptique respectif. Ces coefficients synaptiques peuvent être modifiés, notamment au cours d'une phase d'apprentissage. Ils doivent être conservés dans une mémoire permanente. Ainsi, dans le cas de 109 interconnexions entre neurones, il existe autant de coefficients synaptiques qu'il faudra bien mémoriser. Ceci nécessite une mémoire d'au moins 100 Mo, si les connexions sont binaires. Il convient donc de stocker les coefficients synaptiques dans des mémoires de masse (disque optique, disque magnétique ou bande magnétique par exemple). A cause de leurs applications (reconnaissance des formes par exemple), on demande aux réseaux neuronaux d'effectuer des calculs très rapidement. Cette exigence de rapidité est incompatible avec un stockage des coefficents synaptiques exclusivement dans une mémoire de masse, à cause des temps d'accès relativement longs de ce type de mémoire. C'est pourquoi le principe est généralement d'utiliser la mémoire vive (mémoire de travail) d'un calculateur, pour y stocker, au moment d'un calcul déterminé, les coefficients synaptiques nécessaires à ce calcul, coefficients que l'on va prélever à cet effet dans la mémoire de masse. Comme le calcul neuronal est de type matriciel et peut porter sur des matrices de grande taille, un très grand nombre de coefficients synaptiques sont justement nécessaires simultanément. Il faut donc une mémoire vive ayant à la fois une très grande capacité et des temps d'accès très courts. C'est une solution coûteuse. D'autre part, dans les cas où les coefficients synaptiques doivent être modifiés fréquemment au cours du calcul neuronal, il faut aller chercher de nouveaux coefficients dans la mémoire de masse. Dans ce cas, les flux de données entre la mémoire de masse et les mémoires vives imposent une électronique de communication délicate à réaliser. On ne peut pas facilement dépasser 20 Mbits par seconde et par ligne de transmission à cause de problèmes de rayonnement. Un but de l'invention est d'améliorer la structure des systèmes de calcul neuronal pour éviter ces inconvénients. Pour cela, on propose selon l'invention un système de calcul neuronal comportant un calculateur pourvu d'une mémoire de masse comportant les coefficients synaptiques, et un système de lecture séquentielle de la mémoire de masse, caractérisé en ce que - le système de lecture comporte une batterie de têtes de lecture susceptibles de lire séquentiellement des séries de coefficients synaptiques, les têtes de lecture travaillant en parallèlle, - et le système de calcul neuronal comporte des circuits de calcul interposés entre les têtes de lecture de la mémoire de masse et le calculateur, ces circuits étant aptes a à recevoir en synchronisme d'une part des signaux d'entrée à traiter et d'autre part des coefficients synaptiques correspondants à ces signaux, issus des têtes de lecture, a à établir une somme de signaux d'entrée pondérés par les coefficients synaptiques reçus simultanément, et à transmettre au calculateur les sommes pondérées calculées. En pratique, le calculateur comporte une mémoire vive (mémoire de travail) dans laquelle rentrent les signaux transmis au calculateur, et les sommes pondérées calculées sont transmises à cette mémoire vive. Les signaux d'entrée peuvent être envoyés par le calculateur ou provenir de toute autre source (capteur, autre calculateur, etc.) Ainsi, on effectue directement une partie du calcul neuronal "à la volée", } c'est-à-dire au moment de la réception des signaux d'entrée, et en utilisant plusieurs coefficients synaptiques lus au même moment dans la mémoire de masse. Les signaux d'entrée arrivent séquentiellement les uns à la suite des autres, et les coefficients synaptiques sont également lus séquentiellement par chaque tête de lecture, en synchronisme avec l'arrivée des signaux d'entrée, mais il y a un grand nombre de têtes de lecture qui travaillent en parallèlle. Seuls les résultats des calculs préliminaires sont transmis à la mémoire vive du calculateur.Le reste du calcul neuronal sera effectué dans le calculateur, à partir des résultats stockés dans la mémoire vive. Mais les coefficients synaptiques ne sont pas transférés à la mémoire vive du calculateur. Même si de très nombreux coefficients synaptiques sont utilisés pour le calcul préliminaire, le nombre de résultats transmis à la mémoire vive du calculateur sera plus réduit que le nombre de coefficients synaptiques. On gagne donc sur la taille de la mémoire vive, qui peut être beaucoup plus réduite. D'autre part on est moins gêné du point de vue du débit d'informations à transmettre de la mémoire de masse à la mémoire vive du calculateur : on n'a plus besoin de transmettre très rapidement un grand nombre de coefficients synaptiques; on transmet seulement les résultats de calcul effectués pratiquement simultanément avec la lecture des coefficients synaptiques. On sait faire maintenant des systèmes de lecture de mémoire de masse (sur bande magnétique ou disque magnétique ou optique) munis d'un nombre important de têtes de lecture. De tels systèmes peuvent être équipés de batteries d'environ 1000 têtes de lectures capables de lire 1000 pistes en parallèle avec un débit d'au moins 1 Mégabit/seconde sur chaque piste. On peut alors faire 1000 calculs instantanés en parallèlle, sur mille signaux à pondérer par les coefficients synaptiques lus par toutes ces têtes. L'invention est applicable aussi avec des mémoires permanentes de grande capacité en circuit intégré (mémoires EEPROM), à condition que ces mémoires soient agencées de manière à fournir simultanément une grande quantité de mots différents (les coefficients synaptiques lus en parallèle) et qu'elles soient lues en accès séquentiel rapide et non en accès aléatoire. Une mémoire EEPROM à grand nombre de sorties parallèlles ou une batterie de mémoires EEPROM adressées en parallèlle peuvent convenir. Il est avantageux que le circuit de calcul interposé entre les têtes de lecture et la mémoire vive du calculateur soit disposé à proximité immédiate des têtes de lecture. ll peut même être intégré avec les têtes de lecture dans le cas de têtes intégrées sur un substrat monolithique. De préférence, le circuit de calcul comporte un petit processeur associé à chaque tête de lecture, pour recevoir simultanément un signal d'entrée à traiter et un coefficient synaptique, et pour en effectuer la multiplication. Dans une architecture particulière, le processeur reçoit des nouveaux signaux d'entrée avec un débit identique au débit des coefficients extraits par la tête de lecture associée à ce processeur, et il effectue non seulement les multiplications mais l'accumulation des produits effectués pour une série de signaux d'entrée successifs (architecture avec calcul matriciel par lignes). Dans une autre architecture, les différents processeurs reçoivent en parallèlle chacun un signal d'entrée respectif pris parmi les composantes d'un vecteur sur lequel on veut effectuer une opération, et chaque processeur exécute une série de multiplications successives entre ce signal et une série de coefficients synaptiques respectifs transmis séquentiellement par la tête de lecture associée à ce processeur. Un additionneur est de préférence connecté en sortie des processeurs pour faire la somme des produits calculés simultanément à un instant donné par tous les processeurs. D'autres caractéristiques et avantages de l'invention apparaîtront à la lecture de la description détaillée qui suit et qui est faite en référence aux dessins annexés dans lesquels - la figure 1 représente l'architecture générale d'un système neuronal selon l'invention; - la figure 2 représente un premier mode de mise en oeuvre de l'invention; - la figure 3 représente un autre mode de mise en oeuvre. Soit à effectuer une multiplication matricielle du type Y = AX où ~ Y est un vecteur à n composantes (Y1, y2, ... X est un vecteur à m composantes (x1, x2, ... xm) A est une matrice de n x m coefficients synaptiques A. Une telle multiplication matricielle est typique dans un calculateur neuronal. Le résultat Y est soit un résultat définitif du calcul, soit un résultat intermédiaire à partir duquel d'autres calculs seront effectués. Pour effectuer cette multiplication matricielle, il est nécessaire de calculer les n sommes de produits suivantes Yi = A, 1Xi + Ai, 2 X2 + . . . + A. x l'indice i variant de 1 à n. L'architecture générale du système de calcul neuronal selon l'invention est représentée à la figure 1. Les signaux d'entrée à traiter, représentant les composantes x. du vecteur X, sont appliquées à un circuit électronique spécifique CS, qui est destiné à effectuer immédiatement une sommation pondérée de ces composantes. Le circuit CS reçoit par ailleurs directement des valeurs de coefficients Ai j en provenance d'une mémoire de masse MM (bande magnétique, disque optique numérique, etc.) d'où ils sont extraits par plusieurs têtes de lecture TL1, TL2, ... TLi, . . TL fonctionnant en parallèlle. Il y a de p préférence m têtes de lecture mais ce n'est pas obligatoire; s'il ya moins de têtes de lecture que de lignes ou colonnes de la matrice A, on fractionnera le calcul matriciel en plusieurs opérations successives. L'arrivée des signaux d'entrée x. est en tout cas synchronisée avec l'arrivée des coefficients Ai j extraits de la mémoire de masse. On reviendra plus loin sur la manière dont se fait cette synchronisation. La sommation pondérée (somme des x,Ai i) est effectuée dans le circuit CS en synchronisme avec l'arrivée des signaux d'entrée x. qui elle-même s'effectue en synchronisme avec la lecture en parallèlle des coefficients Ai; dans la mémoire morte; puisque le calcul s'effectue immédiatement, les coefficients Ai j ne sont pas stockés dans une mémoire vive, ou plus exactement, étant donné qu'ils peuvent être très temporairement stockés dans des registres tampons du circuit CS, on peut dire qu'ils ne sont pas stockés dans une mémoire vive à accès aléatoire. Aussitôt que la sommation pondérée est effectuée, les résultats y. de cette sommation sont transmis à la mémoire vive (adressable) MV d'un calculateur CMP qui poursuivra le calcul neuronal à partir des résultats y. stockés dans la mémoire vive MV. Les signaux d'entrée x. à traiter peuvent être issus de plusieurs sources : par exemple ils proviennent d'un capteur (capteur d'image CCD par exemple), ou encore d'un circuit de traitement électronique (circuit de traitement d'image par exemple), ou encore d'un calculateur, ou même, comme l'indique la flèche tiretée de la figure 1, les signaux x. peuvent provenir du calculateur CMP lui-même. Un rebouclage direct des résultats y. vers les entrées x;, à travers une fonction de seuil peut d'ailleurs être prévu. Le circuit spécifique CS effectue donc les calculs à la volée en même temps que la lecture séquentielle des coefficients Ai j par les multiples têtes de lecture qui travaillent en parallèlle. Ce circuit CS peut avantageusement faire partie intégrante du système de lecture de la mémoire de masse MM. On peut notamment prévoir, dans le cas où le système de lecture est un système intégré monolithique, que tout ou partie du circuit CS est intégré sur le même bloc monolithique que les têtes de lecture. C'est possible notamment dans le cas de têtes de lecture magnétiques multiples intégrées sur substrat semiconducteur.C'est particulièrement avantageux aussi dans le cas où la mémoire de masse est une mémoire EEPROM de grande capacité à accès séquentiel et à sorties en mots parallèlles, ou un ensemble de mémoires EEPROM à accès séquentiel travaillant en synchronisme. On verra en effet que les circuits de calcul présents dans le circuit CS peuvent être très simples et donc peu encombrants. Même si le circuit CS n'est pas intégré de manière monolithique au système de lecture, il est avantageux qu'il soit placé à proximité immédiate de ce système. La figure 2 représente un premier mode de mise en oeuvre de l'invention. Dans cette réalisation, le circuit électronique CS intercalé entre les têtes de lecture et la mémoire vive du calculateur comprend plusieurs processeurs Pi en parallèlle (autant que de têtes de lecture TL, par exemple p processeurs) élaborant chacun un signal y. respectif qui est une somme sur l'indice j (; variant de 1 à p) des produits xjAi,j. Dans le cas de la figure 2 il y a quatre processeurs P1, P2, P3, P4. Chaque processeur Pi possède deux entrées; l'une reçoit un signal d'entrée x. (les signaux xj arrivent successivement en série les uns derrière les autres); l'autre est reliée à une tête de lecture respective TLi. La tête de lecture d'indice i, couplée au processeur Pi de même indice, lit la piste i sur la mémoire de masse MM et fournit uniquement les coefficients A. . correspondant à l'indice i comme premier indice. Les coefficients A. . sont stockés les uns derrière les autres sur la piste i et sont lus séquentiellement en synchronisme avec l'arrivée des signaux d'entrée xj correspondant au même indice j. Autrement dit, les coefficients 3, A 4, A1,4, sont tous stockés les uns derrière les autres sur une piste 1 lue par la tête de lecture TL1 correspondant au processeur Pi, et l'arrivée dans le processeur de ces coefficients A1,1, A1,2,A1,3, A1,4 est synchronisée avec l'arrivée des signaux x1, x2, xg, x4 respectivement. De même, les coefficients A2,1, A2,2, A2,3 > A2,4, sont tous stockés les uns derrière les autres sur une piste 2 lue séquentiellement par la tête de lecture TL2 correspondant au processeur P2, et l'arrivée dans le processeur de ces coefficients A A A A 3' A2,4 est également 2, 2,2' 2,3' 2,4 synchronisée avec l'arrivée des signaux x1, x2, X3, X4. Toutes les têtes de lecture travaillent en parallèlle. Chaque processeur est destiné à faire une somme des signaux d'entrée x1 à x4 pondérée par les coefficients reçus en synchronisme. Pour cela, le processeur comprend globalement un multiplieur pour faire le produit A. .x. et un accumulateur pour sommer les résultats successifs des multiplications. Dans l'exemple représenté à la figure 2, le processeur comprend un premier registre tampon 10 recevant le signal d'entrée x;, un deuxième registre tampon 12 recevant le coefficient lu en synchronisme avec ce signal d'entrée, un multiplicateur il pour effectuer le produit xjAi ,j, un registre 14 pour stocker le résultat de la multiplication; un additionneur 16 pour additionner ce produit à une somme de produits précédemment calculée, un registre 18 pour stocker le résultat de l'addition; l'additionneur reçoit comme entrées d'une part la sortie du registre 14 et d'autre part la sortie du registre 18 pour remettre à jour dans le registre 18, à chaque nouvelle arrivée de signal d'entrée x;, la somme de produits précédemment stockée dans le registre 18. En fin d'un cycle de calcul, c'est-à-dire lorsque les m signaux d'entrée x. et les m coefficients Ai j ont été reçus et traités, le registre 18 du processeur contient le résultat y. recherché, c'est-à-dire la somme pondérée de m signaux d'entrée. Le calcul a été fait sans stockage en mémoire vive des coefficients A. l,J Les résultats y. sont transmis à la mémoire vive MV du calculateur CMP. De préférence, la transmission des résultats y1 est multiplexée sur une seule ligne de transmission. A cet effet, un circuit d'interface de sortie IS reçoit en parallèlle les différents résultats Yi et les transmet en série vers la mémoire vive MV du calculateur CMP. Si le calcul matriciel fait intervenir des indices i variant de 1 à n, alors qu'il n'y a que p têtes de lecture et p processeurs associés, p inférieur à n, on comprendra qu'il est nécessaire de recommencer plusieurs cycles de calcul; les signaux d'entrée x. déjà utilisés lors du premier cycle sont renvoyés à nouveau vers les processeurs, mais cette fois ils sont multipliés par d'autres coefficients Ai j non lus dans le premier cycle et correspondant maintenant aux indices i allant de p+1 à 2p, puis 2p+1 à 3p, etc. jusqu a n. Ces coefficients sont stockés à la suite de ceux qui ont déjà été utilisés, sur les pistes correspondant à leur indice i respectif. Dans la pratique, si les coefficients A. . et les signaux d'entrée x. sont des valeurs binaires, les processeurs Pk dont on a expliqué ci-dessus la fonction peuvent être réalisés d'une manière extrêmement simple. Le multiplieur 11 peut être tout simplement une porte ET associée à un signal d'horloge et fournissant une impulsion brève d'horloge chaque fois que le produit binaire xjAi j est égal à 1. L'accumulation des produits peut se faire simplement par un compteur asynchrone qui reçoit ces impulsions et les compte. Bien entendu, si le calcul matriciel fait intervenir des coefficients synaptiques non binaires et/ou des signaux d'entrée non binaires, on cherchera de préférence à se ramener à une configuration binaire en décomposant les valeurs en poids binaires traités individuellement par des processeurs élémentaires Pk travaillant en binaire. Dans une autre architecture, les calculs matriciels ne sont pas effectués ligne par ligne comme dans le cas de la figure 2, mais plutôt colonne par colonne. La figure 3 représente une réalisation correspondante. Il y a q têtes de lecture TL1 à TLq (ici quatre) et q processeurs P'k associés chacun à une tête de lecture respective. Chaque processeur P'k reçoit à la fois un signal d'entrée xk et un coefficient extrait par la tête de lecture associée. Mais contrairement à la figure 2 où un processeur Pi pouvait recevoir successivement tous les signaux x. d'indices successifs j variant de 1 à m, maintenant le processeur P'k ne reçoit que les signaux xk d'indice k. Par conséquent, si les signaux xk arrrivent en série, on prévoit un démultiplexeur qui oriente les signaux d'entrée respectivement vers les processeurs auxquels ils sont destinés. Ce démultiplexeur est incorporé à un circuit d'interface d'entrée désigné par la référence IE. La tête de lecture TLk correpondant au processeur fournit successivement les différents coefficients dont le deuxième indice est k, c'est-à-dire les coefficients Ai,k. c'est-à-direLes autres têtes de lecture travaillent en parallèlle et fournissent les autres coefficients. Chaque tête de lecture fournit les coefficients correspondant à une colonne de la matrice A, alors que dans le cas de la figure 2 chaque tête de lecture fournit les coefficients correspondant à une ligne de la matrice. Les sorties des q processeurs sont combinées dans un additionneur global AD qui fournit successivement les sommes pondérées yi. En effet, le premier processeur va calculer le produit x1A1,1; le deuxième va calculer x2A1 > 2, etc. Tous ces calculs sont faits simultanément; l'addition fournit y1; puis, alors que les signaux xk sont toujours présents dans les processeurs P'k, une nouvelle série de coefficients A2,1, A etc. est introduite dans les processeurs; l'addiction des produits fournit maintenant ya, etc. De préférence, chaque processeur P'k comprend un premier registre tampon 20, un deuxième registre tampon 22, un multiplieur 24, et un troisième registre tampon 26. Le registre 20 reçoit les coefficients successifs Ai, k. Le registre 22 reçoit les signaux d'entrée xk; le registre 22 ne change de contenu qu'après la lecture de toute une colonne de coefficients Ai k issus de la piste k. Le registre 26 stocke le produit i,k résultant de la multiplication et constitue un registre de sortie pour le processeur. De préférence aussi, l'additionneur a une structure en arbre pour exéxuter deux par deux les additions des sorties des processeurs. La sortie de l'additionneur AD représente les résultats y. successifs, les coefficients lus en parallèlle dans la mémoire morte à un moment donné ayant en effet tous le même premier indice i. Ces résultats sont délivrés en série par l'additionneur AD et sont transmis vers la mémoire vive MV du calculateur. Il est toutefois possible que le nombre q de têtes de lecture soit inférieur au nombre m de colonnes de la matrice A. Dans ce cas, bien entendu, il faut faire le calcul matriciel en plusieurs étapes : dans la première étape, on amène les q premiers signaux x1 à xq et on les combine avec les coefficients correspondants lus dans la mémoire de masse. Puis, dans une étape ultérieure, on amène les signaux d'entrée suivant etc, etc,et on les combine avec d'autres coefficients extraits de la mémoire de masse. Les sorties de l'addditionneur AD à chaque cycle ne sont que des additions partielles, et il faut combiner les résultats des différentes étapes pour fournir les résultats y. définitifs.Cette combinaison peut être faite soit dans le calculateur soit dans le circuit CS; dans ce dernier cas, il faut donc un registre bouclé qui conserve en mémoire un résultat partiel d'addition jusqu a ce que le ou les résultas complémentaires puissent lui être additionnés. On remarque que la synchronisation des arrivées et départs d'informations n'est pas la même dans le cas de la figure 2 et dans celui de la figure 3 : dans le cas de la figure 2, les signaux d'entrée arrivent séquentiellement sur les processeurs Pi à la même vitesse que l'extraction séquentielle des coefficients Ai,j de la mémoire de masse. Dans le cas de la figure 3, une série de signaux x1 à x arrive et reste q stockée dans les registres d'entrée pendant qu'une série de n coefficients Ai J défile dans chaque registre 20. REVENDICATIONS 1. Système de calcul neuronal comportant un calculateur (CMP) pourvu d'une mémoire de masse (MM) stockant des coefficients synaptiques (A. j), et un système de lecture (TL1, TL2, ...) séquentielle de la mémoire de masse, caractérisé en ce que - le système de lecture comporte une batterie de têtes de lecture susceptibles de lire chacune séquentiellement des séries de coefficients synaptiques, les têtes de lecture travaillant simultanément en parallèlle, - et le système de calcul neuronal comporte des circuits de calcul (CS) interposés entre les têtes de lecture de la mémoire de masse et le calculateur, ces circuits étant aptes à à recevoir en synchronisme d'une part des signaux d'entrée à traiter (x.) et d'autre part des coefficients synaptiques correspondant à ces signaux et issus des têtes de lecture, à à établir une somme de signaux d'entrée pondérés par les coefficients synaptiques reçus simultanément, et à transmettre au calculateur les sommes pondérées calculées. 2. Système selon la revendication 1, caractérisé en ce que la mémoire de masse est une mémoire à disque ou bande magnétique, ou à disque optique, à lecture séquentielle et à plusieurs têtes fonctionnant en paraillèlle. 3. Système selon la revendication 1, caractérisé en ce que la mémoire de masse comprend un ou plusieurs circuits intégrés EEPROM à accès séquentiel et à sorties de plusieurs mots en parallèlle. 4. Système selon l'une des revendications précédentes, caractérisé en ce que les signaux d'entrée sont issus d'un capteur ou du calculateur (CMP) lui-même, ou d'un autre calculateur. 5. Système selon l'une des revendications précédentes, caractérisé en ce que le circuit de calcul établissant les signaux pondérés est situé à proximité immédiate des têtes de lecture. 6. Système selon l'une des revendications précédentes, caractérisé en ce que le circuit de calcul est intégré sur un substrat monolithique comportant les têtes de lecture. 7. Système selon l'une des revendications précédentes, caractérisé en ce que le circuit de calcul comporte un processeur associé à chaque tête de lecture, ce processeur recevant d'une part un signal d'entrée à traiter et d'autre part un coefficient synaptique reçu de la mémoire de masse, le processeur étant apte à multiplier ces deux valeurs. 8. Système selon la revendication 7, caractérisé en ce que le processeur reçoit séquentiellement des nouveaux signaux d'entrée xg avec un débit qui est le même que le débit des coefficients Ai 3 transmis par la tête de lecture i,j correspondant à ce processeur. 9. Système selon la revendication 8, caractérisé en ce que le processeur comporte un multiplieur (11) pour multiplier un signal d'entrée x. et un coefficient Ai j correspondant reçu au même moment, et un accumulateur pour faire la somme cumulée des produits effectués pour une série de signaux successifs x.. 10. Système selon la revendication 7, caractérisé en ce que les différents processeurs reçoivent en parallèlle chacun un signal d'entrée xk respectif pris dans une série de signaux d'entrée à traiter, et sont aptes à exécuter la multiplication du signal d'entrée respectif xkreçu par chacun des coefficients A. k d'une série de coefficients reçus i,k séquentiellement de la tête de lecture correspondant au processeur considéré. 11. Système selon la revendication 10, caractérisé en ce que les processeurs comportent chacun une sortie connectée à une entrée respective d'un additionneur apte à faire la somme des produits calculés simultanément à un instant donné par les processeurs.