FR 3113327 A1 20220211 FR 2008286 A 20200805 Le procédé de calcul convolutif (CNVL) comprend le fait de programmer des transistors à grille flottante (FGT) appartenant à des cellules mémoire non volatile (NVM) pour les mettre à des tensions de seuil multiniveaux (MLTLVL) selon des facteurs de pondération (W 11 -W nm ) d’un opérateur matriciel convolutif (MTXOP). Le calcul comprend le fait d’exécuter une séquence de multiplication et accumulation (MACi) pendant une opération de lecture (SNS) de cellules mémoire (NVMij), le temps (T) écoulé pour que chaque cellule mémoire devienne conductrice en réponse à un signal de commande en rampe de tension (VRMP) fournissant la valeur de chaque produit de valeurs d’entrée (A1…An) par un facteur de pondération respectif (Wi1…Win), les valeurs des produits étant accumulées avec des valeurs de sortie correspondantes (Bi). Figure pour l’abrégé : Fig 3 Procédé de calcul convolutif intra-mémoire et dispositif correspondant Les modes de réalisation concernent le calcul convolutif, notamment le calcul intra-mémoire, par exemple le calcul convolutif entre les couches d’un réseau de neurones. Dans le domaine technique des réseaux de neurones, l’expression « calcul convolutif » désigne un calcul entre un espace d’entrée d’un nombre fini de valeurs d’entrée et un espace de sortie d’un nombre fini de valeurs de sortie, le calcul de chaque valeur de sortie utilisant toutes les valeurs d’entrée. L’expression mathématique la plus pratique pour un tel calcul est le produit matriciel d’un opérateur matriciel convolutif et d’un vecteur des valeurs d’entrée, qui donne un vecteur des valeurs de sortie. Les valeurs de sortie sont ainsi toutes obtenues par une opération de multiplication-accumulation. L’expression « calculs intra-mémoire » désigne des calculs réalisés en temps réel dans un circuit qui stocke les paramètres des calculs (appelé mémoire) ; ces calculs diffèrent des calculs classiques principalement par le fait que les calculs intra-mémoire ne nécessitent pas de transférer les valeurs et paramètres d’une mémoire vers une unité de traitement qui effectuerait les calculs. De plus, les unités de traitement sont généralement limitées par le nombre d’opérations élémentaires qu’elles peuvent calculer en même temps, alors que les calculs intra-mémoire calculent généralement tous les résultats et les fournissent en une seule fois, indépendamment de la quantité d’éléments calculés, selon la capacité limitée du calculateur intra-mémoire. Les calculs intra-mémoire classiques sont réalisés à l’aide d’une matrice de mémoire résistive, dans laquelle chaque point mémoire a une valeur résistive qui a été programmée selon les paramètres du calcul. Les valeurs d’entrées numériques sont converties en signaux de tension électrique appliqués sur des lignes électriques de rangées de points mémoire, où un courant ayant une intensité selon la loi d’Ohm circule dans chaque point mémoire. Les courants circulant dans les lignes électriques de colonnes sont sommés par la loi de Kirchhoff, puis convertis en valeurs de sorties numériques, chaque valeur de sortie résultant ainsi d’une opération de multiplication et d’accumulation des valeurs d’entrée. Ce type de technique conventionnelle pâtit de la nécessité pour le circuit convertisseur d’entrée (numérique-tension) et pour le circuit convertisseur de sortie (courant-numérique) de délivrer des résultats très précis sur une grande plage dynamique. Par conséquent, ces circuits convertisseurs d’entrée/sortie ont généralement des conceptions complexes et des dimensions importantes, et ajoutent des coûts supplémentaires. Il existe donc un besoin de fournir un procédé et un appareil de calcul intra-mémoire de taille compacte, de fabrication économique et dont le fonctionnement est économe en énergie. À cet égard, le procédé et l’appareil selon les aspects qui suivent proposent des techniques de calcul convolutif avec des cellules mémoire à base de transistors à grille flottante. La non linéarité des transistors à grille flottante (tension de commande / courant de sortie) est compensée en convertissant des tensions de seuil en durées et en réalisant les calculs convolutifs en fonction de ces durées. Selon un aspect, il est proposé un procédé de calcul convolutif de valeurs d’entrée avec des facteurs de pondération d’un opérateur matriciel convolutif, comprenant une programmation des transistors à grille flottante appartenant à des cellules mémoire non volatile à des tensions de seuil multiniveaux qui correspondent respectivement auxdits facteurs de pondération. Le procédé comprend une exécution d’une opération de lecture des transistors à grille flottante programmés avec un signal de commande adapté pour rendre les cellules correspondantes conductrices à un instant déterminé par les tensions de seuil programmées respectives, et une réalisation du calcul convolutif en utilisant lesdites valeurs d’entrée pendant le temps écoulé pour que chaque cellule mémoire devienne conductrice, et une délivrance en sortie des valeurs de sortie résultant du calcul convolutif. L’expression « tensions de seuil multiniveaux » signifie que l’on utilise plus de deux niveaux de tensions de seuil dans les cellules mémoire. En d’autres termes, le procédé selon cet aspect propose d’utiliser comme résultat, selon les valeurs d’entrée, le temps écoulé pour qu’une mémoire devienne conductrice. En réponse à la rampe de tension, cette durée est directement déterminée par la tension de seuil programmable, et permet de matérialiser le résultat des opérations de multiplication. Les résultats des produits sont accumulés afin de former la séquence de multiplication et accumulation en même temps que l’opération de lecture. En conséquence, les cellules mémoire non volatile ne sont pas employées de façon conventionnelle pour stocker des données binaires. Les données binaires seraient classiquement lues pendant une phase de lecture, puis transmises à une unité de traitement et traitées par l’unité de traitement, avec des méthodes classiques qui consomment du temps et de l’énergie. Le procédé selon cet aspect, lui, utilise le comportement des cellules mémoire non volatile relativement à l’opération de lecture, afin d’obtenir en temps réel le résultat du calcul configuré grâce à la programmation des cellules mémoire. Le procédé selon cet aspect est hautement résilient aux variations de températures puisqu’il utilise les tensions de seuil du transistor à grille flottante, lesquelles variations causées par la température peuvent être facilement prédites et gérées. En outre, le procédé n’emploie pas de conversion de courant et n’a donc pas besoin de circuits complexes et de grande dimension pour être précis et efficace. En effet, le procédé selon cet aspect utilise un signal de commande et la lecture d’un état conducteur, qui sont généralement déjà fournis et bien maîtrisés dans les systèmes et opérations basés sur des mémoires non volatiles à transistors à grille flottante. On peut incorporer de façon avantageuse un accumulateur additionnel de manière très efficace, simple et compacte. Selon un mode de réalisation, l’exécution du calcul convolutif comprend une exécution d’une séquence de multiplication et accumulation sur toutes les valeurs d’entrée pour chaque valeur de sortie, et, pour chaque séquence de multiplication et d’accumulation, les valeurs des produits des opérations de multiplication d’une valeur d’entrée par un facteur de pondération respectif sont obtenues à partir du temps écoulé pour que la cellule mémoire respective devienne conductrice en réponse au signal de commande, toutes les valeurs de produits étant fournies en parallèle et accumulées ensemble au cours de l’opération de lecture. De manière avantageuse, le signal de commande est un signal de commande en rampe de tension appliquée aux grilles de commande des transistors à grille flottante programmés. Une rampe de tension appliquée aux grilles de commande est en fait une manière simple et efficace de générer un signal de commande adapté pour rendre les cellules correspondantes conductrices à un instant déterminé par les tensions de seuil programmées respectives. Selon un mode de réalisation, l’opération de lecture se termine quand un seuil d’amplitude du signal de commande en rampe de tension est atteint, le seuil d’amplitude correspondant à la valeur maximale des tensions de seuil multiniveaux. Ainsi, à la fin de la séquence de multiplication et accumulation, tous les seuils de tension possibles ont été atteints, correspondant au temps minimal pour être sûr que toutes les informations stockées par les tensions de seuil sont détectées. La séquence de multiplication et accumulation est achevée en conséquence pendant le temps de l’opération de lecture. Selon un mode de réalisation, la rampe de tension comprend des échelons de tension, chaque échelon de tension équivalant à un niveau de tension de seuil respectif des tensions de seuil multiniveaux. Ce mode de réalisation est avantageux notamment en ce qui concerne la discrimination d’un niveau effectif parmi les tensions de seuil multiniveaux. Selon un mode de réalisation, l’opération de lecture comprend une lecture d’un état non conducteur ou conducteur des cellules mémoire en comparant un courant conduit par chaque cellule mémoire à un courant de référence. Ainsi les courants circulent avec une valeur d’intensité constante, c’est-à-dire l’intensité du courant de référence. En conséquence, une variation de l’intensité utile due à la température aurait le même impact sur tous les transistors à grille flottante et serait donc aisément prévisible (par exemple détectable) et gérable. Selon un mode de réalisation, chaque cellule mémoire et chaque facteur de pondération respectif sont dédiés à une paire unique constituée d’une valeur d’entrée et d’une valeur de sortie. Ce mode de réalisation correspond à un calcul convolutif pouvant être exprimé mathématiquement sous la forme du produit matriciel d’une matrice et d’un vecteur de valeurs d’entrée. Selon un autre mode de réalisation, chaque cellule mémoire et chaque facteur de pondération respectif sont dédiés à un nombre de paires d’une valeur d’entrée et d’une valeur de sortie égal à la dimension d’une ligne, ou par transposition à la dimension d’une colonne, d’une matrice d’entrée comprenant les valeurs d’entrée, et à la dimension d’une colonne, ou par la transposition respective à la dimension d’une ligne, d’une matrice de sortie des valeurs de sortie. Ce mode de réalisation correspond à un calcul convolutif pouvant être exprimé mathématiquement sous la forme du produit matriciel d’une matrice et d’une matrice de valeurs d’entrée. Selon un mode de réalisation, l’exécution du calcul convolutif comprend : - une génération d’un signal d’horloge à une fréquence configurée pour impulser un nombre de cycles d’horloge égal au nombre de tensions de seuil multiniveaux possibles sur la durée de l’opération de lecture, - pour chaque cellule mémoire, tant que la cellule mémoire est détectée comme étant dans l’état non conducteur, une accumulation de la valeur d’entrée correspondante sur la valeur de somme de sortie correspondante, périodiquement à chaque cycle d’horloge du signal d’horloge. En d’autres termes, dans le procédé selon ce mode de réalisation, le temps écoulé pour que chaque cellule mémoire devienne conductrice fournit les valeurs de produit en validant ou en bloquant chaque valeur d’entrée à intégrer une accumulation totale à chaque cycle d’horloge. Ainsi, on ajoute une valeur d’entrée à l’accumulation d’une valeur de sortie un nombre de fois égal au nombre d’occurrences de cycles d’horloge pendant la durée nécessaire à la cellule mémoire pour devenir conductrice. Avantageusement, la génération des échelons de tension comprend une augmentation d’un échelon à chaque cycle d’horloge du signal d’horloge. Ceci est une façon efficace de produire les échelons du signal de commande en rampe de tension en association avec l’opération de lecture qui fournit la séquence de multiplication et accumulation. Avantageusement, la lecture de l’état non conducteur ou conducteur comprend une délivrance d’un signal de validation pendant que la cellule mémoire est dans un état non conducteur, le signal de validation commandant une opération de ET logique pour délivrer la valeur d’entrée correspondante afin qu’elle s’accumule à la somme de la valeur de sortie correspondante. Ceci est une façon simple, compacte et efficace de valider ou de bloquer la valeur d’entrée pour intégrer l’accumulation totale. Avantageusement, l’accumulation de la valeur d’entrée correspondante sur la valeur de sortie correspondante comprend une réintroduction d’une valeur de sortie courante sur une entrée d’une opération d’additionneur complet (usuellement « full adder » en anglais) qui reçoit en outre les valeurs d’entrée, la valeur de sortie courante étant délivrée par un circuit à bascule cadencé par le signal d’horloge et qui reçoit la somme résultante de l’opération d’additionneur complet. Ceci est une façon simple, compacte et efficace de réaliser les accumulations des sorties. Les opérateurs d’additionneur complet sont des circuits compacts qui peuvent être facilement répétés pour étendre la capacité de calcul sans accroître fortement les coûts et la surface. Selon une variante de mode de réalisation, l’exécution du calcul convolutif comprend : - pour chaque valeur d’entrée, une génération d’un signal d’horloge configuré pour avoir des cycles d’horloge à une fréquence correspondant à la valeur d’entrée, - un cadencement d’une opération de comptage du temps écoulé pour que chaque cellule mémoire devienne conductrice, par le signal d’horloge correspondant à la valeur d’entrée respective, - une accumulation de chaque temps écoulé compté des cellules mémoire avec les valeurs de sommes de sortie correspondantes. En d’autres termes, dans le procédé selon cette variante, le temps écoulé pour que chaque cellule mémoire devienne conductrice est compté selon une fréquence qui correspond aux valeurs d’entrée, afin de fournir directement les valeurs de produit par le résultat du comptage. Une opération d’additionneur complet des comptages donne alors les valeurs de sortie de la séquence de multiplication et d’accumulation. Selon une autre variante de mode de réalisation, la réalisation de l'opération de lecture comprend : - pour chaque valeur d'entrée, une génération d'un signal de commande de rampe de tension ayant une pente qui varie en fonction de la valeur d'entrée correspondante, une application de chaque signal de commande de rampe de tension aux cellules mémoire correspondant à la valeur d'entrée respective, et l’exécution du calcul convolutif comprend : - une génération d'un signal d'horloge de référence ayant des cycles d'horloge à une fréquence adaptée à la mesure du temps réel, - pour chaque cellule mémoire, un cadencement par les cycles d'horloge du signal d'horloge de référence d’une opération de comptage du temps écoulé pour que la cellule mémoire devienne conductrice, - une accumulation de chaque temps écoulé compté des cellules mémoire à chaque valeur de sortie respective. En d'autres termes, dans la méthode selon cette autre alternative, le temps écoulé pour que chaque cellule mémoire devienne conductrice résulte intrinsèquement du produit de l'inverse de la pente par la tension de seuil, et est directement mesuré par une opération de comptage basée sur une fréquence de référence, de manière à fournir directement les valeurs des produits. Une opération d'additionneur complet des comptages fournit alors les valeurs de sortie de la séquence de multiplication et d'accumulation. De manière avantageuse dans ces variantes, un signal d’arrêt peut être généré pour chaque cellule mémoire quand la cellule mémoire devient conductrice, le signal d’arrêt mettant fin à l’opération de comptage correspondante. En d’autres termes, les comptages selon chacune de ces variantes de modes de réalisation sont arrêtés lorsque le signal de validation est désactivé, c’est-à-dire lorsque la cellule mémoire devient conductrice. Selon un autre aspect, un circuit intégré comprend un moyen d’entrée pour recevoir des valeurs d’entrée, des transistors à grille flottante appartenant à des cellules mémoire non volatile et ayant des tensions de seuil multiniveaux qui correspondent respectivement à des facteurs de pondération d’un opérateur matriciel convolutif, un circuit de lecture configuré pour réaliser une opération de lecture des transistors à grille flottante avec un signal de commande adapté pour rendre conductrices les cellules correspondantes à un instant déterminé par les tensions de seuil respectives, et un circuit de traitement configuré pour réaliser un calcul convolutif desdites valeurs d’entrée avec lesdits facteurs de pondération en utilisant lesdites valeurs d’entrée pendant le temps écoulé pour que chaque cellule mémoire devienne conductrice, et pour fournir des valeurs de sortie résultant du calcul convolutif. Selon un mode de réalisation, le circuit de traitement est configuré pour réaliser une séquence de multiplication et accumulation sur toutes les valeurs d’entrée pour chaque valeur de sortie, et le circuit de traitement est configuré, pour chaque séquence de multiplication et accumulation, pour obtenir les valeurs de produit des opérations de multiplication d’une valeur d’entrée avec un facteur de pondération respectif à partir du temps écoulé pour que la cellule mémoire respective devienne conductrice en réponse au signal de commande, et pour fournir en parallèle et accumuler ensemble toutes les valeurs de produits pendant l’opération de lecture. Selon un mode de réalisation, le circuit de lecture est configuré pour générer le signal de commande ayant une forme de rampe de tension et pour appliquer le signal de commande aux grilles de commande des transistors à grille flottante. Selon un mode de réalisation, le circuit de lecture est configuré pour mettre fin à l’opération de lecture quand un seuil d’amplitude du signal de commande en rampe de tension est atteint, le seuil d’amplitude correspondant à la valeur maximale des tensions de seuil multiniveaux. Selon un mode de réalisation, le circuit de lecture est configuré pour générer le signal de commande en rampe de tension comprenant des échelons de tension, chaque échelon équivalant à un niveau de tension de seuil respectif des tensions de seuil multiniveaux. Selon un mode de réalisation, le circuit de lecture est configuré pour détecter l’instant auquel une cellule mémoire devient conductrice en comparant un courant conduit par chaque cellule mémoire à un courant de référence. Selon un mode de réalisation, chaque cellule mémoire et chaque facteur de pondération respectif sont dédiés à une paire unique constituée d’une valeur d’entrée et d’une valeur de sortie. Selon un autre mode de réalisation, chaque cellule mémoire et chaque facteur de pondération respectif sont dédiés à un nombre de paires d’une valeur d’entrée et d’une valeur de sortie égal à la dimension d’une ligne, ou par transposition à la dimension d’une colonne, d’une matrice d’entrée qui comprend les valeurs d’entrée, et à la dimension d’une colonne, ou par la transposition respective à la dimension d’une ligne, d’une matrice de sortie qui comprend les valeurs de sortie. Selon un mode de réalisation, le circuit de traitement est configuré pour générer un signal d’horloge à une fréquence configurée pour impulser un nombre de cycles d’horloge égal au nombre de tensions de seuil multiniveaux possibles sur la durée de l’opération de lecture, et, pour chaque cellule mémoire et tant que la cellule mémoire est détectée comme étant dans l’état non conducteur, pour accumuler la valeur d’entrée correspondante sur la valeur de sortie correspondante, périodiquement à chaque cycle d’horloge du signal d’horloge. Avantageusement, le circuit de lecture est configuré pour générer les échelons de tension comprenant une augmentation d’échelon à chaque cycle d’horloge du signal d’horloge. Avantageusement, le circuit de lecture est configuré pour délivrer un signal de validation tant que la cellule mémoire est dans un état non conducteur, et le moyen d’entrée comprend une série de circuits de porte logique ET tous configurés pour recevoir une valeur d’entrée et pour être commandés par le signal de validation correspondant, les sorties des circuits de porte logique ET étant configurées pour délivrer la valeur d’entrée correspondante pour qu’elle s’accumule sur la valeur de somme de sortie correspondante. Avantageusement, le circuit de traitement comprend un circuit de bascule configuré pour être cadencé par le signal d’horloge pour délivrer en sortie une valeur de sortie courante fournie par un circuit d’additionneur complet, le circuit d’additionneur complet étant configuré pour sommer les valeurs d’entrée et la valeur de sortie courante réintroduite à partir du circuit de bascule. Selon une variante de mode de réalisation, le circuit de traitement comprend, pour chaque valeur d’entrée, un générateur d’horloge configuré pour générer un signal d’horloge à une fréquence qui correspond à la valeur d’entrée respective, et un circuit de compteur configuré pour être cadencé par le signal d’horloge correspondant pour compter le temps écoulé pour que chaque cellule mémoire correspondante devienne conductrice, le circuit de traitement étant configuré pour accumuler chaque temps écoulé compté des cellules mémoire avec chaque valeur de somme de sortie respective. Selon une autre variante de mode de réalisation : - le circuit de lecture est configuré, pour chaque valeur d’entrée, pour générer un signal de commande sous forme de rampe de tension ayant une pente qui varie en fonction de la valeur d’entrée correspondante, et pour appliquer chaque signal de commande en rampe de tension aux cellules mémoire correspondant à la valeur d’entrée respective, et - le circuit de traitement est configuré pour générer un signal d’horloge de référence à une fréquence adaptée à la mesure en temps réel, et comprend un circuit de compteur configuré pour être cadencé par le signal d’horloge pour compter le temps écoulé pour que chaque cellule mémoire correspondante devienne conductrice, le circuit de traitement étant configuré pour accumuler chaque temps écoulé compté des cellules mémoire avec chaque valeur de sortie respective. Avantageusement, le circuit de lecture est configuré pour générer un signal d’arrêt pour chaque cellule mémoire quand la cellule mémoire est devenue conductrice, le signal d’arrêt mettant fin au comptage du circuit de compteur correspondant. D’autres avantages et caractéristiques de l’invention apparaîtront à la lecture de la description détaillée de modes de réalisation non limitatifs de l’invention, et à l’examen des dessins annexés, dans lesquels : illustrent des modes de réalisation de l’invention. La figure 1 représente un exemple de réseau de neurones artificiels, comprenant des couches de « neurones » A 1 -A n , B 1 -B m , C 1 -C n , … Y 1 -Y n et Z 1 -Z n , dans lequel chaque neurone est relié à tous les neurones de la couche précédente par un nombre respectif de « synapses ». Ce libellé biomimétique illustre le mécanisme du calcul impliqué dans ce domaine technique, dans lequel toutes les valeurs d’un espace d’entrée (par exemple les neurones A 1 -A n de la première couche) sont pondérées grâce à des facteurs de pondération (c’est-à-dire des synapses) puis accumulées pour chaque valeur d’un espace de sortie (par exemple les neurones B 1 -B m de la deuxième couche). Ce type de calcul s’appelle un calcul convolutif, CNVL. Bien entendu, les espaces d’entrée et les espaces de sortie sont composés d’un nombre fini de valeurs (neurones), et la dimension de ces espaces (c’est-à-dire le nombre n, m de neurones) peut varier d’un espace d’entrée à un espace de sortie. Par conséquent, la dimension de la couche A 1 -A n est n, tandis que la dimension de la couche B 1 -B m est m, et m peut être différent de n. La figure 2 représente une expression mathématique pratique pour de tels calculs convolutifs CNVL, appropriée pour les réseaux de neurones artificiels. Cette expression est principalement un opérateur matriciel convolutif MTXOP appliqué à un vecteur d’entrée VECTIN et qui résulte en un vecteur de sortie VECTOUT. L’opérateur matriciel MTXOP a des coefficients W 11 -W mn établis selon les valeurs de pondération (c’est-à-dire les synapses), tandis que le vecteur d’entrée VECTIN a les valeurs d’entrée A 1 -A n de la première couche, et le vecteur de sortie VECTOUT a les valeurs B 1 -B n de la deuxième couche. Chaque valeur de sortie B i est ainsi obtenue par une séquence de multiplication et accumulation respective MACi sur les valeurs d’entrée A j selon un coefficient dédié W ij . Par conséquent, chaque facteur de pondération W ij est dédié à une paire unique d’une valeur d’entrée A j et une valeur de sortie B i . La figure 3 représente un mécanisme propre aux mémoires non volatiles à base de transistor à grille flottante, réagissant à une opération de lecture SNS, qui sera exploitée pour réaliser un calcul convolutif intra-mémoire. Une cellule mémoire non volatile NVM ij , comme une mémoire morte effaçable et programmable électriquement EEPROM (pour « Electrically Erasable and Programmable Read Only Memory » en anglais), est représentée de façon schématique sur le côté droit de la figure 3 par un schéma de transistor à grille flottante FGT inclus dans une matrice mémoire NVMARR. De manière classique, la cellule mémoire comprend un transistor d’accès monté en série avec le transistor à grille flottante, dans le but de sélectionner la cellule. Le transistor à grille flottante FGT comprend une grille de commande CG et une grille flottante FG, et peut être programmé en injectant des charges positives ou négatives dans la grille flottante FG, généralement par des mécanismes d’injection de « porteurs chauds » et/ou de Fowler-Nordheim. En conséquence, la tension de seuil vue par la grille de commande CG du transistor FGT est décalée négativement ou positivement. Un amplificateur de lecture typique SA est apte à détecter si la cellule mémoire NVM ij est conductrice (valeur de « 1 » binaire) ou non (valeur de « 0 » binaire), à une tension de grille de commande donnée V CG , en comparant le courant I CELL circulant dans les bornes de conduction du transistor FGT avec un courant de référence I REF . De manière classique, les cellules mémoire NVM ij sont destinées à stocker une valeur binaire selon une tension de seuil programmée au-dessous ou au-dessus d’une tension de seuil de référence. Au lieu de programmer des cellules mémoire NVM ij avec une valeur parmi deux valeurs possibles, le mode de réalisation du procédé de calcul convolutif est basé sur la programmation des transistors à grille flottante FGT de la cellule mémoire non volatile NVM ij selon des tensions de seuil multiniveaux MLTLVL, comme représenté sur le côté gauche de la figure 3. Des techniques de programmation conventionnelles existent ou sont facilement adaptables par l’homme du métier pour mettre en œuvre une programmation multiniveau. L’expression « tensions de seuil multiniveaux » signifie strictement plus de deux tensions de seuil possibles, par exemple huit distributions gaussiennes étroites différenciables de tensions de seuil Vth 0-1-2-3-4-5-6-7. Par abus de langage, on appelle une distribution gaussienne différenciable de tensions de seuil une « tension de seuil ». Les graphiques sur le côté gauche de la figure 3 montrent une rampe de tension VRMP appliquée comme signal de commande V CG à la grille de commande CG du transistor FGT. On peut choisir un autre signal de commande à la place de ce type de rampe de tension, tant que le signal de commande choisi est adapté pour rendre les cellules correspondantes conductrices à un instant déterminé par les tensions de seuil programmées respectives. Par exemple, le signal de commande peut avoir une forme de progression légèrement logarithmique. Une rampe de tension VRMP appliquée aux grilles de commande est par conséquent une manière simple et efficace de générer le signal de commande. La valeur de pente 1/L du signal de commande en rampe de tension VRMP est exprimée par son inverse L, pour plus de facilité, comme on le verra plus loin. En réponse au signal de commande en rampe de tension VRMP, le transistor FGT fait circuler un courant I CELL selon une forme exponentielle, qui décolle quand V CG approche de la valeur de tension de seuil programmée du transistor détecté FGT. L’amplificateur de lecture SA est ainsi configuré pour détecter l’instant T auquel la tension de seuil V th est atteinte en comparant un courant de référence approprié I REF à cet effet. Selon un mode de réalisation, l’amplificateur de lecture SA est configuré pour délivrer un signal de validation EN à un niveau haut (c’est-à-dire l’état logique « 1 » ou « vrai ») quand la cellule mémoire qui comprend le transistor à grille flottante n’est pas conductrice, et pour désactiver le signal de validation en le mettant à un niveau bas (c’est-à-dire l’état logique « 0 » ou « faux ») quand la cellule devient conductrice. Il est donc possible de détecter l’instant T où la cellule du transistor à grille flottante passe d’un état non conducteur à l’état conducteur. Cet instant T dépend de la pente 1/L du signal de commande en rampe de tension VRMP et de la tension de seuil programmée Vth[0-7], comme exprimé dans la partie supérieure droite de la figure 3, 1/L*T = Vth et donc L*Vth = T. Ainsi par exemple (en référence au mode de réalisation décrit relativement aux figures 12 et 13), les facteurs L et Vth peuvent être choisis d’après une valeur d’entrée A j et une valeur de facteur de pondération correspondante W ij , à savoir L = A j et Vth = W ij . Ainsi, l’opération de lecture donnerait la valeur T, appelée T j , de l’opération de multiplication W ij *A j = T j dans la séquence de multiplication et accumulation MACi représentée sur la figure 2. Contrairement à la multiplication classique dans laquelle une valeur codée binaire est lue dans la mémoire, transférée vers une unité de calcul puis traitée par l’unité de calcul, ici le résultat est fourni de manière inhérente par la lecture de la cellule et pendant celle-ci, et est donc considéré comme un calcul intra-mémoire en temps réel. En plus du gain de temps dans l’exécution du calcul convolutif, ceci permet également de réduire l’énergie consommée par l’unité de calcul et par la transmission de signaux via des lignes de données ou bus généralement longs. Les modes de réalisation du procédé utilisent en conséquence le temps écoulé T (également nommé « durée » dans ce qui suit) pour qu’un groupe de cellules mémoire devienne conducteur en réponse au signal de commande en rampe de tension VRMP, chaque mémoire ayant été programmée de manière à présenter une tension de seuil représentative d’un facteur de pondération W ij de l’opérateur matriciel convolutif MTXOP, afin de fournir la valeur de chaque produit des valeurs d’entrée A 1 …A n par un facteur de pondération respectif W i1 …W in . Les figures 4, 5 et 6 montrent un mode de réalisation préféré pour exécuter le procédé. La figure 4 concerne le mode de réalisation du procédé tandis que la figure 5 concerne le mode de réalisation du dispositif, toutefois les figures 4 et 5 vont être décrites ensemble et représentent un exemple de calcul intra-mémoire d’une valeur de sortie B i d’après quatre valeurs d’entrée A 1 , A 2 , A 3 , A 4 et des facteurs de pondération respectifs W i1 -W i4 de l’opérateur matriciel MTXOP. Les tensions de seuil multiniveaux du transistor à grille flottante Vth ij (1 ≤ j ≤ 4) des cellules mémoire respectives NVM ij ont été précédemment programmées selon les facteurs de pondération W ij (1 ≤ j ≤ 4) correspondant à ce calcul. Les cellules mémoire NVM ij utilisées pour le calcul de la séquence de multiplication et accumulation MACi sont appelées « cellules mémoire sélectionnées ». Tout d’abord, comme on peut le voir sur la figure 4, le signal de commande en rampe de tension VRMP est avantageusement généré par des échelons de tension, chaque échelon de tension équivalant à un niveau de tension de seuil respectif (Vth 0…7) des tensions de seuil multiniveaux MLTLVL. La pente d’une rampe reconstituée correspondante est encore exprimée par la valeur inversée 1/L. Le signal de commande en rampe de tension VRMP est appliqué de façon commune aux grilles de commande CG des transistors à grille flottante FGT des cellules mémoire sélectionnées NVM ij , qui sont toutes détectées en continu dans un état non conducteur ou dans un état conducteur. À cet effet, en référence à la figure 5, un circuit de lecture SNSCRC comprend un générateur de rampe de tension configuré pour générer le signal de commande en rampe de tension VRMP, et des circuits amplificateurs de lecture SA1-SA4 connectés à chaque cellule mémoire sélectionnée respective. Les amplificateurs de lecture SA1-SA4 peuvent être connectés aux cellules mémoire selon une architecture mémoire non volatile classique, par exemple généralement via des lignes de bit, ainsi que les techniques de décodage pour accéder aux cellules sélectionnées dans la matrice mémoire NVMARR. Dans ce mode de réalisation, un signal d’horloge CK ayant des cycles d’horloge CK_0…CK_7 est généré afin de cadencer la séquence de multiplication et accumulation MACi pendant l’opération de lecture SNS. Les échelons de tension sont avantageusement générés de façon à augmenter d’un échelon à chaque cycle d’horloge CK_0…CK_7 du signal d’horloge CK. L’opération de lecture SNS est exécutée par un nombre respectif d’amplificateurs de lecture SA1-SA4 qui comparent un courant I CELL conduit par chaque cellule mémoire sélectionnée à un courant de référence I REF comme décrit précédemment en référence à la figure 3. Les amplificateurs de lecture SA1, SA2, SA3, SA4 produisent chacun un signal de validation correspondant EN1, EN2, EN3, EN4, à un niveau haut de validation quand la cellule n’est pas conductrice (c’est-à-dire I CELL REF ), et à un niveau bas d’invalidation quand la cellule est conductrice (c’est-à-dire I CELL > I REF ). La séquence de multiplication et accumulation MACi est exécutée pendant l’opération de lecture SNS comme suit : pour chaque cellule mémoire sélectionnée, tant que le signal de validation correspondant EN1-EN4 est au niveau haut de validation, la valeur d’entrée correspondante A 1 -A 4 est accumulée sur la valeur de sortie correspondante B i , périodiquement à chaque cycle d’horloge CK_0…CK_7 du signal d’horloge CK. En conséquence, dans l’exemple décrit sur la figure 4, la première valeur d’entrée A 1 est accumulée une fois pendant que son signal de validation respectif EN1 est haut, pendant le cycle d’horloge CK_1. La deuxième valeur d’entrée A 2 est accumulée six fois pendant que son signal de validation respectif EN2 est haut, pendant les cycles d’horloge CK_1 à CK_6. La troisième valeur d’entrée A 3 est accumulée quatre fois pendant que son signal de validation respectif EN3 est haut, pendant les cycles d’horloge CK_1 à CK_4. La quatrième valeur d’entrée A 4 est accumulée deux fois pendant que son signal de validation respectif EN4 est haut, pendant les cycles d’horloge CK_1 et CK_2. En conséquence, à la fin de l’opération de lecture SNS, c’est-à-dire à la fin du dernier cycle d’horloge CK_7, les valeurs d’entrée accumulées totales valent S7 = 1*A 1 +6*A 2 +4*A 3 +2*A 4 , qui correspond au résultat calculé en temps réel de la séquence de multiplication et accumulation MACi. Les facteurs de pondération 1, 6, 4 et 2 sont fournis chacun par la tension de seuil programmée V i1 -V i4 de la cellule mémoire respective, relativement à la valeur de pente 1/L, c’est-à-dire V i1 xL = 1 ; V i2 xL = 6 ; V i3 xL = 4 ; V i4 xL = 2. Par exemple, l’opération de lecture SNS qui réalise la séquence de multiplication et accumulation MACi se termine quand une amplitude maximale de seuil V th max du signal de commande en rampe de tension VRMP est atteinte, l’amplitude de seuil correspondant à la valeur maximale des tensions de seuil multiniveaux V th max. En conséquence, dans le présent exemple, la valeur maximale des tensions de seuil multiniveaux V th max est la septième tension de seuil, dont l’échelon correspondant est atteint à la fin du septième cycle d’horloge CK_7. Dans le but de réaliser ce calcul en temps réel de la séquence de multiplication et accumulation MACi, le mode de réalisation représenté par la figure 5 est pourvu d’un circuit de traitement MACCRC, qui inclut le circuit de lecture SNSCRC. Le circuit de traitement MACCRC comprend une série de circuits de portes logique ET, configurés chacun pour recevoir une valeur d’entrée A 1 , A 2 , A 3 , A 4 , codée par exemple sur trois bits. Chaque circuit de porte logique ET est commandé par le signal de validation correspondant EN1, EN2, EN3, EN4. En conséquence, chaque circuit de porte logique ET est configuré pour délivrer la valeur d’entrée respective A 1 -A 4 seulement si le signal de validation respectif EN1-EN4 a le niveau haut de validation. Les sorties des circuits de portes logique ET délivrent les valeurs d’entrée sur 3 bits correspondantes A 1 -A 4 destinées à être accumulées par un circuit d’additionneur complet FACRC. Le circuit d’additionneur complet FACRC comprend une série d’éléments d’additionneur complet FA(x3)-FA(x8), configurés chacun pour recevoir une valeur codée binaire sur une taille binaire donnée, et pour délivrer en sortie la valeur codée binaire résultant de l’addition des valeurs reçues, en prenant en compte la retenue, sur une autre taille binaire. Dans l’exemple de la figure 5, les valeurs d’entrée A 1 -A 4 sont codées sur trois bits et introduites dans des additionneurs complets à 3 bits FA(x3) qui délivrent des valeurs de sommes à 4 bits. Les valeurs de somme à 4 bits sont introduites dans un additionneur complet à 4 bits FA(x4) qui délivre une valeur de somme à 5 bits. La valeur de somme à 5 bits est transmise à un additionneur complet à 8 bits FA(x8) qui délivre une valeur à 8 bits. Le circuit d’additionneur complet FACRC comprend également un circuit de bascule FF configuré pour être cadencé par le signal d’horloge CK pour délivrer en sortie une valeur de sortie courante Sk fournie par l’additionneur complet à 8 bits FA(x8). La valeur de sortie courante Sk est réintroduite du circuit de bascule FF vers l’additionneur complet à 8 bits FA(x8). Ainsi, à chaque cycle d’horloge, la somme totale courante Sk est accumulée avec chaque valeur d’entrée A 1 -A 4 dont le signal de validation respectif EN1-EN4 est au niveau haut de validation. La dernière valeur de courant Sk, k = 7, est le résultat de la séquence de multiplication et accumulation MACi, et la valeur d’une valeur de sortie B i dans le vecteur de sortie VECTOUT. En d’autres termes, le circuit de traitement MACCRC, qui permet dans ce mode de réalisation de réaliser le calcul intra-mémoire, c’est-à-dire de réaliser la séquence de multiplication et accumulation MACi en temps réel pendant l’opération de lecture SNS, utilise avantageusement des opérations logiques sur des valeurs numériques. Ainsi, en dépit de sa position sur la périphérie de la matrice mémoire NVMARR, le circuit de traitement MACCRC ne nécessite qu’un petit encombrement. En effet, les portes logiques ET, ainsi que le circuit d’additionneur complet FACRC, sont extrêmement compacts. Les circuits d’additionneurs complets FA(x3)-FA(x8) et le circuit de bascule FF sont des circuits parfaitement maîtrisés et optimisés qui fonctionnent avec une tension de niveau logique pratique, et constituent donc des composants très compacts. De plus, les calculs numériques sont très fiables, par exemple relativement aux variations de température, et ils ne sont pas limités par un étalonnage analogique. En outre, il est possible d’augmenter le nombre de valeurs d’entrée et/ou d’augmenter la taille binaire pour coder les valeurs d’entrée à grande échelle sans conséquence particulièrement négative. En référence aux figures 4 et 5, le procédé appliqué à une valeur de sortie B i du calcul convolutif a été montré. La figure 6 illustre l’expression mathématique du calcul convolutif complet correspondant, pour un vecteur d’entrée VECTIN ayant quatre dimensions (couche d’entrée ayant quatre neurones) et un vecteur de sortie VECTOUT qui a aussi quatre dimensions (couche de sortie ayant aussi quatre neurones). L’opérateur matriciel MTXOP est par conséquent de dimension 4x4 = 16 (seize synapses). Chaque valeur pondérale de l’opérateur matriciel MTXOP est le produit de la tension de seuil V ij du transistor à grille flottante programmé d’une cellule mémoire respective NVM ij par l’inverse de la pente L du signal commun de commande en rampe de tension VRMP. En généralisant, en référence à la figure 1, à des vecteurs d’entrée et sortie à n dimensions, n² synapses relient une couche de neurones à l’autre. En conséquence, des modes de réalisation sont munis de n² amplificateurs de lecture pour exécuter toutes les séquences de multiplication et accumulation en une opération de lecture. Par exemple, si n = 16, 256 amplificateurs de lecture sont prévus. Un tel nombre d’amplificateurs de lecture est compatible avec les architectures mémoires non volatiles actuelles et il peut être augmenté sans contraintes particulières. De même, par exemple dans une mémoire non volatile réelle ayant 256k adresses (c’est-à-dire 256k cellules mémoire), les modes de réalisation permettent de calculer mille couches neuronales de seize neurones chacune, sans interruption pour l’écriture dans les cellules mémoire. La figure 7 représente un mode de réalisation selon le mode de réalisation précédemment décrit relativement aux figures 4 et 5, qui permet de calculer les quatre valeurs de sortie B 1 , B 2 , B 3 , B 4 du vecteur de sortie VECTOUT en une fois. Dans ce mode de réalisation, le circuit de traitement MACCRC comprend principalement une copie du circuit d’additionneur complet FACRC, des circuits de portes logiques ET, et le circuit de lecture SNSCRC de la figure 5 par valeur de sortie B 1 , B 2 , B 3 , B 4 . En d’autres termes, quatre copies de la figure 5 sont fournies, chacune recevant les mêmes valeurs d’entrée A 1 , A 2 , A 3 , A 4 , mais accédant à différentes cellules mémoire NVM ij en fonction des facteurs de pondération W ij correspondant à chaque paire unique d’une valeur d’entrée A j et d’une valeur de sortie B i . La figure 7 représente également un exemple d’application de système d’un réseau de neurones artificiels, dans lequel les neurones de la couche de sortie B 1 -B 4 sont traités par l’intermédiaire d’une fonction d’activation non linéaire avant d’être utilisés comme entrées A 1 -A 4 d’un calcul convolutif suivant. Le procédé et l’appareil fournissent un calcul intra-mémoire pour chaque convolution, et la modification de l’opérateur matriciel peut être réalisée en accédant aux adresses d’un autre ensemble de cellules mémoire non volatile dans la matrice mémoire NVMARR, grâce à un circuit de décodage DEC couramment utilisé dans les mémoires non volatiles. De même, dans le contexte de l’intelligence dite artificielle ou de l’apprentissage automatique, il peut être facile de faire évoluer les valeurs pondérales W ij de l’opérateur matriciel (c’est-à-dire les synapses) entre les calculs d’une couche à l’autre grâce à des opérations d’écriture classiques des cellules mémoire non volatile NVM ij . Les figures 8 et 9 illustrent un mode de réalisation pour introduire des valeurs de facteur de pondération négatives dans le procédé de calcul convolutif. Dans le calcul de chaque valeur de sortie B i , ici par exemple B 1 , des valeurs de pondération positives WP 1j et des valeurs de pondération négatives WN 1j sont introduites en supposant la contribution de deux synapses. En conséquence, la séquence de multiplication et accumulation qui calcule B 1 , comme décrit relativement aux figures 4 et 5, est exécutée en utilisant d’abord des synapses positives ayant des facteurs de pondération positifs WP 11 , WP 12 , WP 13 , WP 14 puis une deuxième fois en utilisant des synapses négatives ayant des facteurs de pondération négatifs WN 11 , WN 12 , WN 13 , WN 14 . La valeur de sortie résultante B 1 est obtenue en soustrayant l’accumulation à pondération négative (somme sur j de WN 1j A j ) de l’accumulation à pondération positive (somme sur j de WP 1j A j ). À cette fin, dans le mode de réalisation de la figure 9, après avoir réalisé l’accumulation à pondération positive, les amplificateurs de lecture SA1-SA4 sont commutés sur un autre ensemble de cellules mémoire stockant les pondérations négatives VN 1j (c’est-à-dire le passage à des synapses négatives), et réalisent de nouveau la séquence de multiplication et accumulation d’après les pondérations négatives VN 11 = 5, VN 12 = 3, VN 13 = 6, VN 14 = 3. Le résultat accumulé est soustrait du résultat accumulé précédent S7 = 1*A 1 +6*A 2 +4*A 3 +2*A 4 (provenant de l’exemple des figures 4 et 5, qui est reproduit ici) pour donner un résultat final B1 = S = -4* A 1 +3*A 2 -2*A 3 -1*A 4 . Un signal de signe SGN fait passer le dernier circuit d’additionneur complet FA/S(x8) d’une opération d’addition à une opération de soustraction. De plus, le signal de signe SGN déclenche la commutation des adresses atteintes des cellules mémoire. Cet exemple de mode de réalisation série peut être réalisé en parallèle en doublant le nombre d’amplificateurs de lecture SA1-SA4 au lieu de les faire commuter. De même, les neurones peuvent prendre des valeurs négatives, puisque les modes de réalisation restent compatibles avec la méthode de codage numérique de valeurs négatives, comme par exemple la méthode du complément à deux. La figure 10 montre un mode de réalisation qui gère un changement de dimension entre la couche d’entrée et la couche de sortie. Comme mentionné précédemment relativement à la figure 1, les couches de neurones peuvent être de différentes dimensions. Par exemple, la dimension de la couche A 1 -A 3 est 3, la dimension de la couche B 1 -B 2 est 2, et la dimension de la couche C 1 -C 3 est 3. On considère que le neurone B 3 est manquant par rapport à une couche en trois dimensions et ne doit pas être pris en compte pour le calcul des neurones C 1 -C 3 . Des modes de réalisation peuvent gérer de tels changements de dimension par exemple au moyen d’une configuration appropriée du neurone B 3 , par exemple en mettant à zéro la valeur B 3 101 du neurone, ou par exemple en mettant à zéro les synapses 102 allant de B 3 à chacun des éléments C 1 , C 2 , C 3 . La mise à zéro des synapses 102 peut être faite par exemple en forçant les amplificateurs de lecture correspondants à passer dans l’état d’arrêt. La figure 11 montre un mode de réalisation du procédé pour réaliser un calcul intra-mémoire d’un produit matriciel de deux opérateurs matriciels. Les valeurs d’entrée sont par conséquent fournies sous la forme d’une matrice d’entrée MTXIN et comprennent N*N valeurs d’entrée. La sortie est fournie sous la forme d’une matrice de sortie N*N MTXOUT. Toutefois, en supposant que le produit matriciel de deux matrices de dimension N*N implique les mêmes calculs que N produits matriciels d’un vecteur de dimension N avec un opérateur matriciel N*N MTXOP, alors ce mode de réalisation reproduit N fois un produit matrice-vecteur tel que décrit relativement aux figures 2 à 10. Les valeurs de pondération W ij de l’opérateur matriciel MTXOP ne sont donc plus dédiées à une paire unique d’une valeur d’entrée A j et une valeur de sortie B i , mais à N paires d’une valeur d’entrée A kj et une valeur de sortie B ik , 1 ≤ k ≤ N. En d’autres termes, dans ce mode de réalisation concernant le produit de deux matrices, on utilise une synapse pour calculer N valeurs de sortie de neurones. Par conséquent, dans l’exemple représenté de N = 3, on introduit 9 valeurs d’entrée A 11 -A 33 sur 9 lignes numériques d’entrée qui sont activées de manière sélective par l’intermédiaire des circuits de portes logiques ET commandés par les signaux de validation basés sur les cellules mémoire qui correspondent aux valeurs de pondération respectives W ij . La commutation du produit matriciel, c’est-à-dire le calcul MTXIN x MTXOP ou MTXOP x MTXIN peut être réalisé facilement en commutant les facteurs de pondération W ij détectés par les amplificateurs de lecture, en réarrangeant le décodage des adresses respectives des cellules mémoire, et en commutant la transmission des valeurs d’entrée A ij vers un circuit de porte logique ET respectif. Comme déjà mentionné, la duplication du circuit d’additionneur complet FACRC en particulier, ou plus généralement la duplication du circuit de traitement MACCRC, n’implique pas un encombrement supplémentaire consécutif, de sorte que cet exemple de mode de réalisation peut être généralisé à des valeurs de N de dimension supérieure, sans coût ni encombrement additionnel excessif. La figure 12 illustre un exemple de variante du mode de réalisation décrit relativement aux figures 4 et 5. Dans cette variante, un signal de commande en rampe de tension VRMP_L est généré pour chaque valeur d’entrée A 1 …A 4 et chaque signal de commande en rampe de tension VRMP_L est respectivement configuré pour avoir une pente avec une valeur de variation 1/L 1 …1/L 4 correspondant respectivement à la valeur d’entrée A 1 …A 4 . Plus précisément, en ce qui concerne l’utilisation de la valeur inverse L de la pente 1/L, la rampe de tension VRMP_L est générée de telle manière que la valeur inverse L j de la pente est proportionnelle à l’amplitude de la valeur d’entrée A j . Chaque signal de commande en rampe de tension VRMP_L est appliqué aux cellules mémoire sélectionnées NVM ij correspondant à la valeur d’entrée A j respective. En conséquence, la mesure du temps écoulé T = V ij *L j pour que la cellule mémoire passe de l’état non conducteur à l’état conducteur fournit le résultat de l’opération de multiplication W ij *A j . La cellule est donc détectée en continu d’une manière similaire à ce qui a été précédemment décrit en référence à la figure 3, et l’inverse du signal de validation est ici utilisé comme signal d’arrêt STP pour mettre fin à une opération de comptage réalisée par un circuit de compteur CNT. L’opération de comptage CNT démarre quand l’opération de lecture SNS démarre et elle est cadencée par les cycles d’horloge d’un signal d’horloge de référence Clk afin de mesurer la durée T. Les durées mesurées T des cellules mémoire sélectionnées NVM ij correspondant à chaque valeur d’entrée A j sont correctement accumulées, ce qui donne les valeurs de sortie respectives B 1 …B 4 (B i ). L’expression mathématique du calcul convolutif dans la partie inférieure droite de la figure 12 représente le mécanisme de cette variante, où le vecteur d’entrée A 1 -A 4 est directement converti en valeurs d’inverse de pente L 1 , L 2 , L 3 , L 4 , chacune agissant avec les tensions de seuil V ij respectives d’une valeur d’entrée A j et d’une valeur de sortie B i . Bien entendu, dans cette variante, les signaux de commande en rampes de tension L=1…L=7 peuvent être générés par des échelons, comme mentionné précédemment relativement à la figure 4. La figure 13 illustre un autre exemple d’une variante du mode de réalisation décrit relativement aux figures 4 et 5. Dans cette autre variante, on applique de manière commune un signal de commande en rampe de tension VRMP aux cellules mémoire sélectionnées NVM ij , de façon similaire au mode de réalisation des figures 4 et 5. Cependant, la base de temps utilisée pour mesurer le temps écoulé T pour que chaque cellule mémoire devienne conductrice est réglée pour correspondre à chaque valeur d’entrée respective. Ainsi, la lecture en continu d’un état non conducteur ou conducteur de chaque cellule mémoire sélectionnée donne une durée absolue qui exprime la valeur de facteur de pondération W ij seule. Un signal d’horloge Clk_f est généré pour chaque valeur d’entrée, et est configuré pour avoir des cycles d’horloge d’une fréquence f équivalant à la valeur d’entrée. L’opération de comptage CNT est cadencée par le signal d’horloge Clk_f ayant la fréquence f j correspondant à la valeur d’entrée A j respective. En conséquence, la mesure respectivement cadencée Clk_f du temps écoulé T_f = L*Vth*f pour que la cellule mémoire passe de l’état non conducteur à l’état conducteur donne en elle-même le résultat de l’opération de multiplication W ij A j . Chaque temps écoulé mesuré T des cellules mémoire sélectionnées NVM ij correspondant à chaque valeur d’entrée A j est correctement accumulé, ce qui donne chaque valeur de sortie respective B 1 …B 4 (B i ). L’expression mathématique du calcul convolutif dans la partie inférieure droite de la figure 13 illustre le mécanisme de cette variante où les valeurs d’entrée A 1 -A 4 sont converties en valeurs de fréquence f 1 , f 2 , f 3 , f 4 et les facteurs de pondération sont fournis grâce aux tensions de seuil V ij et à la valeur d’inverse de la pente L. Procédé de calcul convolutif de valeurs d’entrée (A 1 …A n ) avec des facteurs de pondération (W 11 -W nm ) d’un opérateur matriciel convolutif (MTXOP), comprenant une programmation des transistors à grille flottante (FGT) appartenant à des cellules mémoire non volatile (NVM ij ) à des tensions de seuil multiniveaux (MLTLVL) qui correspondent respectivement auxdits facteurs de pondération (W 11 -W nm ), une exécution d’une opération de lecture (SNS) des transistors à grille flottante programmés avec un signal de commande (VRMP) adapté pour rendre les cellules correspondantes (NVM ij ) conductrices à un instant déterminé par les tensions de seuil programmées respectives (V ij ), et une réalisation du calcul convolutif (CNVL) en utilisant lesdites valeurs d’entrée (A 1 …A n ) pendant le temps écoulé (T) pour que chaque cellule mémoire devienne conductrice, et une délivrance en sortie des valeurs de sortie (B 1 …B m ) résultant du calcul convolutif (CNVL). Procédé selon la revendication 1, dans lequel l’exécution du calcul convolutif (CNVL) comprend une exécution d’une séquence de multiplication et accumulation (MACi) sur toutes les valeurs d’entrée (A 1 …A 4 ) pour chaque valeur de sortie (B i ), et, pour chaque séquence de multiplication et d’accumulation (MACi), les valeurs des produits des opérations de multiplication d’une valeur d’entrée (A 1 …A 4 ) par un facteur de pondération respectif (W i1 -W i4 ) sont obtenues à partir du temps écoulé (T) pour que la cellule mémoire respective devienne conductrice en réponse au signal de commande (VRMP), toutes les valeurs de produits étant fournies en parallèle et accumulées ensemble au cours de l’opération de lecture (SNS). Procédé selon la revendication 1 ou 2, dans lequel le signal de commande est un signal de commande en rampe de tension (VRMP) appliqué aux grilles de commande (CG) des transistors à grille flottante programmés (FGT). Procédé selon la revendication 3, dans lequel l’exécution de l’opération de lecture (SNS) se termine quand un seuil d’amplitude (V th max) du signal de commande en rampe de tension (VRMP) est atteint, le seuil d’amplitude correspondant à la valeur maximale des tensions de seuil multiniveaux (V th max). Procédé selon la revendication 3 ou 4, dans lequel la rampe de tension (VRMP) comprend des échelons de tension, chaque échelon de tension équivalant à un niveau de tension de seuil respectif (0…7) des tensions de seuil multiniveaux (MLTLVL). Procédé selon l’une quelconque des revendications 1 à 5, dans lequel l’opération de lecture (SNS) comprend la lecture d’un état non conducteur ou conducteur des cellules mémoire (NVM) en comparant un courant (I CELL ) conduit par chaque cellule mémoire à un courant de référence (I REF ). Procédé selon l’une quelconque des revendications 1 à 6, dans lequel chaque cellule mémoire (NVM ij ) et chaque facteur de pondération respectif (W ij ) sont dédiés à une paire unique constituée d’une valeur d’entrée (A j ) et d’une valeur de sortie (B i ). Procédé selon l’une quelconque des revendications 1 à 6, dans lequel chaque cellule mémoire (NVM ij ) et chaque facteur de pondération respectif (W ij ) sont dédiés à un nombre de paires d’une valeur d’entrée (A j ) et d’une valeur de sortie (B i ) égal à la dimension d’une ligne, ou par transposition à la dimension d’une colonne, d’une matrice d’entrée (MTXIN) comprenant les valeurs d’entrée (A ij ), et à la dimension d’une colonne, ou par la transposition respective à la dimension d’une ligne, d’une matrice de sortie (MTXOUT) comprenant les valeurs de sortie. Procédé selon l’une quelconque des revendications 1 à 8, dans lequel l’exécution du calcul convolutif (CNVL) comprend : - une génération d’un signal d’horloge (CK) à une fréquence configurée pour impulser un nombre de cycles d’horloge (CK_0…CK_7) égal au nombre de tensions de seuil multiniveaux possibles (0…7) sur la durée de l’opération de lecture (SNS), - pour chaque cellule mémoire, tant que la cellule mémoire (NVM ij ) est détectée comme étant dans un état non conducteur, une accumulation de la valeur d’entrée correspondante (A j ) sur la valeur de somme de sortie correspondante (B i ), périodiquement à chaque cycle d’horloge (CK_0…CK_7) d’un signal d’horloge (CK). Procédé selon la revendication 9 en combinaison avec la revendication 5, dans lequel la génération des échelons de tension comprend une augmentation d’un échelon à chaque cycle d’horloge (CK_0…CK_7) du signal d’horloge (CK). Procédé selon la revendication 9 ou 10, dans lequel la lecture de l’état non conducteur ou conducteur comprend une délivrance d’un signal de validation (EN1…EN4) pendant que la cellule mémoire est dans un état non conducteur, le signal de validation commandant une opération de ET logique pour délivrer la valeur d’entrée correspondante (A1…A4) afin qu’elle s’accumule à la somme de la valeur de sortie correspondante (B i ). Procédé selon l’une quelconque des revendications 9 à 11, dans lequel l’accumulation de la valeur d’entrée correspondante (A 1 …A 4 ) sur la valeur de sortie correspondante (B i ) comprend une réintroduction d’une valeur de sortie courante (Sk) sur une entrée d’une opération d’additionneur complet (FA) qui reçoit en outre les valeurs d’entrée (A 1 …A 4 ), la valeur de sortie courante (Sk) étant délivrée par un circuit à bascule (FF) cadencé par le signal d’horloge (CK) et qui reçoit la somme résultante de l’opération d’additionneur complet (FA). Procédé selon l’une quelconque des revendications 1 à 8, dans lequel l’exécution du calcul convolutif (CNVL) comprend : - pour chaque valeur d’entrée (A 1 …A 4 ), une génération d’un signal d’horloge (Clk_f) configuré pour avoir des cycles d’horloge à une fréquence (f) correspondant à la valeur d’entrée, - un cadencement d’une opération de comptage (CNT) du temps écoulé (T) pour que chaque cellule mémoire (NVM ij ) devienne conductrice, par le signal d’horloge (Clk_f) correspondant à la valeur d’entrée respective, - une accumulation de chaque temps écoulé compté (N) des cellules mémoire avec les valeurs de sommes de sortie correspondantes (B 1 …B 4 ). Procédé selon l’une quelconque des revendications 1 à 8, dans lequel l’exécution de l’opération de lecture (SNS) comprend : - pour chaque valeur d’entrée (A 1 …A 4 ), une génération d’un signal de commande sous forme de rampe de tension (VRMP_L) ayant une pente (L 1 …L 4 ) qui varie en fonction de la valeur d’entrée correspondante (A 1 …A 4 ), une application de chaque signal de commande en rampe de tension (VRMP_L) aux cellules mémoire (NVM ij ) correspondant à la valeur d’entrée respective (A 1 …A 4 ), et l’exécution du calcul convolutif (CNVL) comprend : - une génération d’un signal d’horloge de référence (Clk) ayant des cycles d’horloge à une fréquence adaptée à la mesure en temps réel, - pour chaque cellule mémoire (NVM ij ), un cadencement par les cycles d’horloge du signal d’horloge de référence (Clk) une opération de comptage (CNT) du temps écoulé (T) pour que la cellule mémoire devienne conductrice, - une accumulation de chaque temps écoulé compté (T) des cellules mémoire avec chaque valeur de sortie respective (B 1 …B 4 ). Procédé selon la revendication 13 ou 14, dans lequel un signal d’arrêt (STP) est généré pour chaque cellule mémoire quand la cellule mémoire devient conductrice, le signal d’arrêt (STP) mettant fin à l’opération de comptage correspondante (CNT). Circuit intégré comprenant un moyen d’entrée pour recevoir des valeurs d’entrée (A 1 …A n ), des transistors à grille flottante (FGT) appartenant à des cellules mémoire non volatile (NVM) et ayant des tensions de seuil multiniveaux (MLTLVL) qui correspondent respectivement à des facteurs de pondération (W 11 -W nm ) d’un opérateur matriciel convolutif (MTXOP), un circuit de lecture (SNSCRC) configuré pour réaliser une opération de lecture (SNS) des transistors à grille flottante avec un signal de commande (VRMP) adapté pour rendre conductrices les cellules correspondantes (NVM ij ) à un instant déterminé par les tensions de seuil respectives (V ij ), et un circuit de traitement (MACCRC) configuré pour réaliser un calcul convolutif (CNVL) desdites valeurs d’entrée (A 1 …A n ) avec lesdits facteurs de pondération (W 11 -W nm ) en utilisant lesdites valeurs d’entrée pendant le temps écoulé (T) pour que chaque cellule mémoire devienne conductrice, et pour fournir des valeurs de sortie (B 1 …B m ) résultant du calcul convolutif (CNVL). Circuit intégré selon la revendication 16, dans lequel le circuit de traitement (MACCRC) est configuré pour réaliser une séquence de multiplication et accumulation (MACi) sur toutes les valeurs d’entrée (A 1 …A 4 ) pour chaque valeur de sortie (B i ), et le circuit de traitement (MACCRC) est configuré, pour chaque séquence de multiplication et accumulation (MACi), pour obtenir les valeurs de produit des opérations de multiplication d’une valeur d’entrée (A 1 …A 4 ) avec un facteur de pondération respectif (W i1 …W i4 ) à partir du temps écoulé (T) pour que la cellule mémoire respective devienne conductrice en réponse au signal de commande (VRMP), et pour fournir en parallèle et accumuler ensemble toutes les valeurs de produits pendant l’opération de lecture (SNS). Circuit intégré selon la revendication 16 ou 17, dans lequel le circuit de lecture (SNSCRC) est configuré pour générer le signal de commande ayant une forme de rampe de tension (VRMP) et pour appliquer le signal de commande aux grilles de commande (CG) des transistors à grille flottante (FGT). Circuit intégré selon la revendication 18, dans lequel le circuit de lecture (SNSCRC) est configuré pour mettre fin à l’opération de lecture (SNS) quand un seuil d’amplitude (V th max) du signal de commande en rampe de tension (VRMP) est atteint, le seuil d’amplitude correspondant à la valeur maximale des tensions de seuil multiniveaux (V th max). Circuit intégré selon la revendication 18 ou 19, dans lequel le circuit de lecture (SNSCRC) est configuré pour générer le signal de commande en rampe de tension (VRMP) comprenant des échelons de tension, chaque échelon équivalant à un niveau de tension de seuil respectif (0…7) des tensions de seuil multiniveaux (MLTLVL). Circuit intégré selon l’une quelconque des revendications 16 à 20, dans lequel le circuit de lecture (SNSCRC) est configuré pour détecter l’instant auquel une cellule mémoire devient conductrice en comparant un courant conduit (I CELL ) par chaque cellule mémoire (NVM ij ) à un courant de référence (I REF ). Circuit intégré selon l’une quelconque des revendications 16 à 21, dans lequel chaque cellule mémoire et chaque facteur de pondération respectif (W ij ) sont dédiés à une paire unique constituée d’une valeur d’entrée (A j ) et d’une valeur de sortie (B i ). Circuit intégré selon l’une quelconque des revendications 16 à 21, dans lequel chaque cellule mémoire (NVM ij ) et chaque facteur de pondération respectif (W ij ) sont dédiés à un nombre de paires d’une valeur d’entrée (A j ) et d’une valeur de sortie (B i ) égal à la dimension d’une ligne, ou par transposition la dimension d’une colonne, d’une matrice d’entrée (MTXIN) comprenant les valeurs d’entrée (A ij ), et à la dimension d’une colonne, ou par la transposition respective la dimension d’une ligne, d’une matrice de sortie (MTXOUT) comprenant les valeurs de sortie. Circuit intégré selon l’une quelconque des revendications 16 à 23, dans lequel le circuit de traitement (MACRCR) est configuré pour générer un signal d’horloge (CK) à une fréquence configurée pour impulser un nombre de cycles d’horloge (CK_0…CK_7) égal au nombre de tensions de seuil multiniveaux possibles sur la durée de l’opération de lecture (SNS), et, pour chaque cellule mémoire (NVM ij ) et tant que la cellule mémoire est détectée comme étant dans l’état non conducteur, pour accumuler la valeur d’entrée correspondante (A j ) sur la valeur de sortie correspondante (B i ), périodiquement à chaque cycle d’horloge (CK_0…CK_7) du signal d’horloge (CK). Circuit intégré selon la revendication 24 en combinaison avec la revendication 20, dans lequel le circuit de lecture (SNSCRC) est configuré pour générer les échelons de tension comprenant une augmentation d’échelon à chaque cycle d’horloge (CK_0…CK_7) du signal d’horloge (CK). Circuit intégré selon la revendication 24 ou 25, dans lequel le circuit de lecture (SNSCRC) est configuré pour délivrer un signal de validation (EN1…EN4) tant que la cellule mémoire est dans un état non conducteur, et le moyen d’entrée comprend une série de circuits de porte logique ET tous configurés pour recevoir une valeur d’entrée (A1…A4) et pour être commandés par le signal de validation correspondant (EN1…EN4), les sorties des circuits de porte logique ET étant configurées pour délivrer la valeur d’entrée correspondante pour qu’elle s’accumule sur la valeur de somme de sortie correspondante (B i ). Circuit intégré selon l’une quelconque des revendications 24 à 26, dans lequel le circuit de traitement (MACCRC) comprend un circuit de bascule (FF) configuré pour être cadencé par le signal d’horloge (CK) pour délivrer en sortie une valeur de sortie courante (Sk) fournie par un circuit d’additionneur complet (FACRC), le circuit d’additionneur complet (FACRC) étant configuré pour sommer les valeurs d’entrée et la valeur de sortie courante (Sk) réintroduite à partir du circuit de bascule (FF). Circuit intégré selon l’une quelconque des revendications 16 à 23, dans lequel le circuit de traitement (MACCRC) comprend, pour chaque valeur d’entrée (A 1 …A 4 ), un générateur d’horloge configuré pour générer un signal d’horloge (Clk_f) à une fréquence (f) qui correspond à la valeur d’entrée respective, et un circuit de compteur (CNT) configuré pour être cadencé par le signal d’horloge correspondant (Clk_f) pour compter le temps écoulé (T) pour que chaque cellule mémoire correspondante (NVM ij ) devienne conductrice, le circuit de traitement (MACCRC) étant configuré pour accumuler chaque temps écoulé compté (T) des cellules mémoire avec chaque valeur de somme de sortie respective (B 1 …B 4 ). Circuit intégré selon l’une quelconque des revendications 16 à 23, dans lequel : - le circuit de lecture (SNSCRC) est configuré, pour chaque valeur d’entrée (A 1 …A 4 ), pour générer un signal de commande sous forme de rampe de tension (VRMP_L) ayant une pente (L 1 …L 4 ) qui varie en fonction de la valeur d’entrée correspondante (A 1 …A 4 ), et pour appliquer chaque signal de commande en rampe de tension (VRMP_L) aux cellules mémoire (NVM ij ) correspondant à la valeur d’entrée respective (A 1 …A 4 ), et - le circuit de traitement (MACCRC) est configuré pour générer un signal d’horloge de référence (Clk) à une fréquence adaptée à la mesure en temps réel, et comprend un circuit de compteur (CNT) configuré pour être cadencé par le signal d’horloge (Clk) pour compter le temps écoulé (T) pour que chaque cellule mémoire correspondante (NVM ij ) devienne conductrice, le circuit de traitement (MACCRC) étant configuré pour accumuler chaque temps écoulé compté (T) des cellules mémoire avec chaque valeur de sortie respective (B 1 …B 4 ). Circuit intégré selon la revendication 28 ou 29, dans lequel le circuit de lecture (SNSCRC) est configuré pour générer un signal d’arrêt (STP) pour chaque cellule mémoire quand la cellule mémoire devient conductrice, le signal d’arrêt (STP) mettant fin au comptage du circuit de compteur (CNT) correspondant.