FR 2639461 A1 19900525 FR 8814999 A 19881118 263946, ARRANGEMENT BIDIMENSIONNEL DE POINTS MEMOIRE ET STRUCTURE DE RESEAUX DE NEURONES UTILISANT UN TEL ARRANGEMENT' Description L'invention concerne un arrangement bidimension- nel de points mémoire organisé selon une matrice de N lignes et de M colonnes dans laquelle peuvent être stockés et lus par un adressage ligne ou colonne des tranches binaires de M ou N bits. Un tel arrangement trouve son application notam- ment dans la réalisation de mémoires. Celles-ci sont par exem- ple utilisées dans des calculateurs, micro-processeurs, pro- cesseurs de traitement... L'invention concerne également un circuit de ré- seaux de neurones utilisant un tel arrangement pour la mise en oeuvre de l'algorithme de la rétropropagation du gradient dans une structure de réseaux de neurones en couches. Dans la réalisation de mémoires et particulière- ment de mémoires semiconductrices, les points mémoires sont généralement disposés selon des lignes et des colonnes afin de donner au circuit une compacité maximale. Ceci est destiné à réduire au maximum la longueur des interconnexions entre points mémoires afin de réduire les capacités des intercon- nexiôns, la surface occupée... Les lignes et les colonnes sont adressées par des adressages lignes ou colonnes et les données stockées dans les points mémoires sont lues à l'aide de bus de sortie réunis à des circuits tampons de sortie. Cette structure est communément répandue. On connaît également du document US 4 677 436 une matrice électronique formée de blocs dont les éléments sont interconnectés de telle sorte que la matrice soit exten- sible. Pour cela ce document propose d'effectuer l'adressage des colonnes en connectant en diagonale les éléments de blocs adjacents. Mais cette façon d'interconnecter les blocs ne permet pas de répondre au problème posé qui consiste à pouvoir lire (écrire) les données d'une ligne ou d'une colonne à l'aide d'un même bus de sortie avec des interconnexions en sortie qui soient les plus courtes possibles. La solution à ce problème posé consiste en ce que la matrice possède un double adressage dont le premier est un adressage soit ligne soit colonne et dont le second est un adressage de type diagonal concernant des éléments mémoires disposés parallèlement à une diagonale de la matrice carrée soit NxN soit MxM comprise dans la matrice MxN, les tranches binaires adressées par ce second adressage ayant soit M bits soit N bits et transitant chacune, selon un rangement prédéterminé lié au rang de la tranche adressée, sur un bus de données unique qui est commun aux deux modes d'adressage. L'application utilisant l'arrangement peut être adaptée pour exploiter directement les données qui sortent de l'arrangement selon leur rangement prédéterminé. C'est le cas lorsque l'application nécessite d'utiliser alternativement une matrice de coefficients Cij et sa matrice transposée de coef- ficients Cji. Mais il est également possible que les données sortent de l'arrangement dans un ordre prédéterminé. Dans ce cas l'arrangement peut comprendre des moyens de rangement des données de sortie qui établissent un rangement uniforme des éléments binaires de toutes les tranches issues de la matrice. Selon une première variante les moyens de range- ment des données de sortie sont constitués par un registre à décalage bouclé commandé par un organe de circulation qui dé- cale les données selon le rang adressé dans la matrice. Selon une autre variante les moyens de rangement des données de sortie déterminent une adresse interne de lec- ture du circuit tampon à l'aide d'un additionneur qui ajoute une valeur prédéterminée propre au rang adressé dans la matrice à une adresse externe de lecture du circuit tampon. Il est ainsi possible d'obtenir une mémoire vive qui comprend au moins un arrangement selon l'invention et des moyens d'écriture en entrée permettant de ranger les éléments binaires à écrire selon le rangement prédéterminé propre à la matrice. Les moyens d'écriture des données d'entrée peu- vent être constitués par les moyens de rangement des données en sortie mais utilisés dans le sens opposé. Un tel arrangement a son application directe dans une structure de réseaux de neurones en couches mettant en oeuvre l'algorithme de la rétropropagation du gradient. Les réseaux de neurones sont formés d'automates élémentaires con- nectés entre eux par des synapses auxquelles sont associés des coefficients synaptiques. Un réseau de neurones met en oeuvre des phases de résolution et des phases d'apprentissage. Un tel réseau est par exemple décrit dans le document: 'A chipset for high speed simulation of neural network systems' S.C.J. GARTH IEEE Conference on Neural Networks SAN DIEGO III-443 (1987). Les phases d'apprentissage ont pour objet de modifier les coefficients synaptiques afin que le réseau s'adapte à un problème déterminé. Un algorithme d'apprentissage est par exemple celui de la rétropropagation du gradient. Il met en oeuvre plusieurs réseaux connectés selon une structure en couches. Au cours d'une phase de résolution des états de neurones de sortie sont déterminés à l'aide des coefficients synaptiques stockés dans le réseau. Puis un calculateur hôte compare les états de neurones de sortie déterminés aux états de neurones attendus. Les erreurs observées sont introduites dans la der- nière couche de la structure avec un sens de propagation in- versé par rapport au sens du mode de résolution. Pour mettre en oeuvre successivement une phase de résolution puis une pha- se d'apprentissage on utilise les coefficients synaptiques selon une matrice Cij dans la phase de résolution et selon une matrice Cji, transposée de la matrice Cji, dans la phase d'apprentissage comme cela est indiqué dans le document de S.C.J. GARTH. Ceci nécessite d'effectuer des opérations de chargements répétées des points mémoire à chaque changement de mode. Ces opérations de chargement sont évitées en utilisant un arrangement bidimensionnel de points-mémoire selon l'invention. On peut ainsi obtenir une structure de réseaux de neurones caractérisée en ce qu'elle comprend plusieurs cir- cuits de réseaux de neurones connectés en couches pour la mise en oeuvre de l'algorithme de la rétropropagation du gradient. Chaque circuit comprend: une mémoire stockant une matrice de coefficients synapti- ques Cij, et une mémoire d'états de neurones d'entrée, caractérisé en ce que la mémoire de coefficients synaptiques est une matrice carrée N.N qui possède un double adressage dont le premier est un adressage soit ligne soit colonne et dont le second est un adressage de type diagonal concernant des éléments mémoires disposés parallèlement à une diagonale de la matrice carrée, les tranches binaires adressées par ce second adressage ayant N bits et transitant chacune selon un rangement prédéterminé lié au rang de la tranche adressée sur un bus de données unique qui est commun aux deux modes d'adressage, afin d'opérer soit avec la matrice Cij soit avec la matrice Cji transposée de la matrice Cij, la mémoire d'états de neurones d'entrée étant constituée d'un registre à décalage bouclé sur lui-même qui positionne chaque état de neurones pour l'associer à son coefficient synaptique pour opérer soit des phases de résolution soit des phases d'apprentissage mettant en oeuvre l'algorithme de rétropropagation du gradient. L'invention sera mieux comprise à l'aide des figures suivantes données à titre d'exemple non limitatif qui représentent: figure 1: une matrice représentant un exemple de rangement de données selon l'art antérieur. figure 2: une matrice représentant un exemple de rangement de données selon l'invention. figure 3A:un exemple de réalisation des moyens de rangement des données de sortie. figure 3B: un autre exemple de réalisation des moyens de rangement des données de sortie. figure 5A:une partie d'un circuit de réseaux de neurones selon l'invention. figures 5B, 5C: deux dispositions des données au cours de phases de résolution et de phases de rétropropagation du gradient. La figure 1 représente une matrice 10 dans la- quelle les données sont stockées selon un adressage ligne ou colonne habituel. Pour permettre une explication claire les nombres mis dans chaque case représentent les données sto- ckées. Ainsi la ligne L1 contient les données 00 jusqu'à 70, et la colonne C1 contient les données 00 jusqu'à 07. La matri- ce peut être adressée soit en ligne soit en colonne. Ainsi si la colonne C3 est adressée les données de la colonne apparais- sent sur le bus 111 et peuvent être stockées dans le registre tampon 121. La donnée 20 est dans la case supérieure du regis- tre et la donnée 27 est dans la case inférieure du registre. De même si la ligne L3 est adressée, les données sélectionnées apparaissent sur le bus 112 et peuvent être sto- ckées dans un registre tampon 122. La donnée 02 est dans la case gauche du registre et la donnée 72 est dans la case droi- te du registre. Ainsi les données des lignes ou des colonnes apparaissent sur des bus différents ce qui nécessite des cir- cuits tampons différents. Si avec une telle disposition on cherche à utiliser un seul circuit tampon ceci ne peut se fai- re qu'au prix d'interconnexions supplémentaires, certaines assez longues, et avec ajout d'éléments de sélection nombreux. Selon l'invention les données vont pouvoir être stockées et lues selon une disposition qui est représentée sur la figure 2. Sur cette disposition on observe que les données qui étaient sur la première ligne de la figure 1 sont placées sur la diagonale de la matrice carrée de la figure 2. Chaque 6 2639461 colonne est alors rangée en mettant la valeur de la première ligne de la figure 1 dans la case de la figure 2 placée sur la diagonale, puis les autres valeurs, par exemple en se dépla- çant vers le bas, et lorsque le bas de la matrice est atteint on continue le chargement de la colonne par la case de la pre- mière ligne. Selon cet arrangement lorsque la colonne C3 est adressée, les données de la colonne apparaissent sur le bus de sortie puis éventuellement dans le circuit tampon 121 selon le rangement représenté par I. On observe que les données de sor- tie sont les mêmes que celles de la figure I mais avec un ran- gement différent. Ainsi la donnée 20 apparaît non pas dans la case supérieure mais dans la troisième case du circuit tampon 121. Ainsi chaque donnée est décalée d'un nombre de positions égal au numéro d'ordre de la colonne adressée. D'une manière analogue lorsque la ligne L3 est adressée les données sélectionnées apparaissent sur le même bus et dans le même circuit tampon 121 que précédemment selon le rangement représenté par Il. Le circuit tampon 121 est re- présenté deux fois sur la figure 2 pour la commodité de l'ex- posé. On observe également que les données sont les mêmes que lorsque la ligne L3 est adressée selon la disposition de la figure 1 mais là encore avec un rangement différent. Chaque donnée est ainsi décalée d'un nombre de positions égal au nu- méro d'ordre de la ligne adressée. L'exemple présenté est une matrice carrée mais l'invention s'applique à des matrices rectangulaires MxN à condition que le bus de sortie et si nécessaire le circuit tampon de sortie soient placés sur la sortie de la matrice qui délivre le maximum d'éléments binaires. Les éléments mémoires qui possèdent le même adressage en diagonale s'obtiennent par translation de la matrice carrée soit MxM soit NxN inscrite dans la matrice rectangulaire MxN. Les figures 3A et 3B représentent une matrice MXN 10 munie d'un bus de sortie 111 réuni à un circuit tampon 121 qui peut stocker des tranches de M bits. La figure 3A re- présente une première variante de réalisation des moyens de rangement des données de sortie. Pour cela, à l'aide d'une commande externe 19, un générateur 20 délivre des adresses qui déterminent l'adressage ligne 211 et l'adressage colonne 212 respectivement à l'aide de décodeurs 251 et 252. Cette même commande 19 arrive à un organe de circulation 22 qui selon le rang de l'adresse délivrée, soit ligne soit colonne, délivre une commande de circulation 23 au circuit tampon 121 constitué d'un registre à décalage bouclé sur lui-même. Ainsi les don- nées qui ont été lues à l'aide de l'adressage opéré puis sto- ckées dans le circuit tampon 121 sont mises dans l'ordre sou- haité par cette opération avant d'être délivrées sur le bus 13. La figure 3A permet de sortir les données en pa- rallèle. Il peut être intéressant de pouvoir les sortir en série selon le rangement désiré. Pour cela selon la figure 3B la mise en ordre des données de sortie se fait directement à -l'aide d'un décodage d'adresses. Pour cela la commande 19 de l'adressage de la mémoire 10 arrive sur un additionneur 31 qui reçoit également une adresse externe 35 destinée à lire le circuit tampon 121 qui dans ce cas n'est plus un registre à décalage bouclé mais une ligne de points mémoire réunis à une sortie série unique 36. A l'adresse 35 est additionnée une valeur contenue dans la commande 19 qui dépend du rang de la ligne ou de la colonne adressée dans la mémoire 10. L'additionneur est réuni à un décodeur qui délivre l'adresse interne du point mémoire désiré dans le circuit tampon 121. L'adresse externe 35 peut provenir d'un dispositif externe ou d'un compteur qui détermine les adresses pour la lecture du circuit tampon 121. La figure 4 représente la structure d'adressage de la matrice de points mémoires. Dans cet exemple simple cor- respondant à une matrice de 3x3 les points Pll, P21, P31 d'une même colonne sont sélectionnés par un même signal de sélection CI1 qui opère sur des transistors Tll, T21, T31. De même les signaux CI2, CI3 sélectionnent les autres colonnes. Les points mémoires Pll, P22, P33 situés sur une même diagonale sont sé- lectionnés par le signal LI1 qui opère sur les transistors 8 2639461 Rll, R22, R33. Le signal LI2 opère sur les points P21, P32 et P13. Le signal LI3 opère sur les points P31, P12 et P23. Les données sont délivrées en sortie sur le bus de sortie 111. Inversement pour écrire il suffit de présenter les données sur le bus 111, d'effectuer l'adressage et de mettre les points mémoires en état d'écriture. La figure 5A représente une partie d'un circuit de réseau de neurones traitant un exemple simplifié. Pour un neurone 1, la matrice 10 délivre sur son bus les quatre coef- ficients synaptiques C11, C12, C13, C14 qui arrivent sur des multiplieurs 501, 502, 503, 504 qui reçoivent respectivment les états de neurones V1, V2, V3, V4 qui sont stockés dans le registre à décalage 121 qui constitue dans ce cas la mémoire d'états de neurones. Ces multiplieurs sont réunis à un arbre d'additionneurs 51 qui délivre un résultat S tel que: s = C11.VI+C12.V2+C13.V3+C14.V4. Pour un neurone 2 la matrice va délivrer les coefficients synaptiques avec un rangement différent tel que représenté sur la figure 5B. Avant d'effectuer le calcul pour la phase de résolution, le registre à décalage 121 fait circu- ler les états de neurones pour apparier correctement chaque état de neurone à son coefficient synaptique. La figure 5C concerne la phase d'apprentissage. En effet dans ce cas les coefficients synaptiques sont lus selon la matrice transposée: C11, C21, C31, C41. Dans ce cas le registre 121 contient non pas les états de neurones mais les erreurs D1, D2, D3, D4 afin de mettre en oeuvre l'algori- thme de rétropropagation du gradient. Les mêmes mécanismes de circulation sont mis en oeuvre pour apparier les données. Pour que le mécanisme de circulation ne soit pas effectué par le registre à décalage, les coefficients peuvent être mémorisés dans des registres temporaires chargés à partir de multiplexeurs à N voies (pour N coefficients synaptiques) qui rétablissent l'ordre correct des coefficients. Dans les cas o l'on ne fait pas un accès 9 2639461 aléatoire des neurones mais un accès séquentiel et dans l'or- dre: neurone 1, puis 2, puis 3 etc..., après chaque évalua- tion de neurones, on opère un décalage dans le registre à dé- calage contenant soit les états de neurones soit les erreurs, et ainsi ces termes sont toujours en correspondance avec les coefficients synaptiques qui les pondèrent. Au bout de N cal- culs, on retombe dans la position initiale de départ. Dans un circuit o les états sont codés sur m bits, et o les multiplieurs font aussi des multiplications par des termes de m bits, le registre à décalage est constitué de m registres à décalages identiques, chacun portant un des poids de la représentation des états. Dans un circuit o les états sont codés sur m bits, et o les multiplieurs font des multiplications sur 1 bit (avec des portes ET ou OU- exclusif par exemple), il faut m cycles pour pouvoir calculer la somme pondérée pour un neu- rone. Dans ce cas le registre à décalage comporte N * m posi- tions et il effectue un décalage après chaque calcul de bit. 2639461 Revendications: 1. Arrangement bidimensionnel de points mémoire organisé selon une matrice de N lignes et de M colonnes dans laquelle peuvent étre stockés et lus par un adressage ligne ou colonne des tranches binaires de M ou N bits, caractérisé en ce que la matrice possède un double adressage dont le premier est un adressage soit ligne soit colonne et dont le second est un adressage de type diagonal concernant des éléments mémoires disposés parallèlement à une diagonale de la matrice carrée soit NxN soit MxM comprise dans la matrice MxN, les tranches binaires adressées par ce second adressage ayant soit M bits soit N bits et transitant chacune, selon un rangement prédéterminé lié au rang de la tranche adressée, sur un bus de données unique qui est commun aux deux modes d'adressage. 2. Arrangement selon la revendication 1, caractérisé en ce que le bus de données unique est réuni à un circuit tam- pon unique qui peut récupérer la totalité de chaque tranche renfermant le plus d'éléments binaires. 3. Arrangement selon une des revendications 1 ou 2, caractérisé en ce qu'il comprend des moyens de rangement des données de sortie qui établissent un rangement uniforme des éléments binaires de toutes les tranches issues de la matrice. 4. Arrangement selon la revendication 3, caractérisé en ce que les moyens de rangement des données de sortie sont constitués par un registre à décalage bouclé commandé par un organe de circulation qui décale les données selon le rang adressé dans la matrice. 5. Arrangement selon la revendication 3, caractérisé en ce que les moyens de rangement des données de sortie déter- minent une adresse interne de lecture du circuit tampon à l'aide d'un additionneur qui ajoute une valeur prédéterminée propre au rang adressé dans la matrice à une adresse externe de lecture du circuit tampon. 6. Mémoire vive caractérisée en ce qu'elle comprend au moins un arrangement selon une des revendications 1 à 5, et il 2639461 des moyens d'écriture en entrée permettant de ranger les élé- ments binaires à écrire selon le rangement prédéterminé propre à la matrice. 7. Mémoire selon la revendication 6, caractérisée en ce que les moyens d'écriture des données d'entrée sont consti- tués par les moyens de rangement des données en sortie mais utilisés dans le sens opposé. 8. Circuit de réseaux de neurones comprenant: une mémoire stockant une matrice de coefficients synapti- ques Cij, et une mémoire d'états de neurones d'entrée, caractérisé en ce que la mémoire de coefficients synaptiques est une matrice carrée N.N qui possède un double adressage dont le premier est un adressage soit ligne soit colonne et dont le second est un adressage de type diagonal concernant des éléments mémoires disposés parallèlement à une diagonale de la matrice carrée, les tranches binaires adressées par ce second adressage ayant N bits et transitant chacune selon un rangement prédéterminé lié au rang de la tranche adressée sur un bus de données unique qui est commun aux deux modes d'adressage, afin d'opérer soit avec la matrice Cij soit avec la matrice Cji transposée de la matrice Cij, la mémoire d'états de neurones d'entrée étant constituée d'un registre à décalage bouclé sur lui-même qui positionne chaque état de neurones pour l'associer à son coefficient synoptique pour opérer soit des phases de résolution soit des phases d'apprentissage mettant en oeuvre l'algorithme de rétropropagation du gradient. 9. Structure de réseaux de neurones caractérisée en ce qu'elle comprend plusieurs circuits de réseaux de neurones selon la revendication 8, connectés en couches pour la mise en oeuvre de l'algorithme de la rétropropagation du gradient.