FR3113327A1 - Procédé de calcul convolutif intra-mémoire et dispositif correspondant - Google Patents
Procédé de calcul convolutif intra-mémoire et dispositif correspondant Download PDFInfo
- Publication number
- FR3113327A1 FR3113327A1 FR2008286A FR2008286A FR3113327A1 FR 3113327 A1 FR3113327 A1 FR 3113327A1 FR 2008286 A FR2008286 A FR 2008286A FR 2008286 A FR2008286 A FR 2008286A FR 3113327 A1 FR3113327 A1 FR 3113327A1
- Authority
- FR
- France
- Prior art keywords
- value
- memory cell
- input
- values
- output
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Granted
Links
- 238000004364 calculation method Methods 0.000 title claims abstract description 55
- 230000015654 memory Effects 0.000 claims abstract description 139
- 239000011159 matrix material Substances 0.000 claims abstract description 31
- 230000004044 response Effects 0.000 claims abstract description 8
- 238000000034 method Methods 0.000 claims description 37
- 238000009825 accumulation Methods 0.000 claims description 36
- 238000012545 processing Methods 0.000 claims description 28
- 230000017105 transposition Effects 0.000 claims description 8
- 238000005259 measurement Methods 0.000 claims description 5
- 210000004027 cell Anatomy 0.000 description 97
- 230000035508 accumulation Effects 0.000 description 28
- 210000002569 neuron Anatomy 0.000 description 19
- 239000013598 vector Substances 0.000 description 15
- 210000000225 synapse Anatomy 0.000 description 13
- 238000010200 validation analysis Methods 0.000 description 12
- 229940050561 matrix product Drugs 0.000 description 6
- 238000013528 artificial neural network Methods 0.000 description 5
- 230000007246 mechanism Effects 0.000 description 5
- 238000007796 conventional method Methods 0.000 description 2
- 238000009826 distribution Methods 0.000 description 2
- 230000006870 function Effects 0.000 description 2
- 230000004913 activation Effects 0.000 description 1
- 238000013459 approach Methods 0.000 description 1
- 238000013473 artificial intelligence Methods 0.000 description 1
- 230000006399 behavior Effects 0.000 description 1
- 230000005540 biological transmission Effects 0.000 description 1
- 230000003592 biomimetic effect Effects 0.000 description 1
- 230000000903 blocking effect Effects 0.000 description 1
- 230000008859 change Effects 0.000 description 1
- 238000006243 chemical reaction Methods 0.000 description 1
- 230000000295 complement effect Effects 0.000 description 1
- 238000010586 diagram Methods 0.000 description 1
- 238000002347 injection Methods 0.000 description 1
- 239000007924 injection Substances 0.000 description 1
- 238000010801 machine learning Methods 0.000 description 1
- 238000004519 manufacturing process Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000001537 neural effect Effects 0.000 description 1
- 230000008569 process Effects 0.000 description 1
- 230000008054 signal transmission Effects 0.000 description 1
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F17/00—Digital computing or data processing equipment or methods, specially adapted for specific functions
- G06F17/10—Complex mathematical operations
- G06F17/15—Correlation function computation including computation of convolution operations
- G06F17/153—Multidimensional correlation or convolution
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F17/00—Digital computing or data processing equipment or methods, specially adapted for specific functions
- G06F17/10—Complex mathematical operations
- G06F17/16—Matrix or vector computation, e.g. matrix-matrix or matrix-vector multiplication, matrix factorization
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F7/00—Methods or arrangements for processing data by operating upon the order or content of the data handled
- G06F7/38—Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation
- G06F7/48—Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation using non-contact-making devices, e.g. tube, solid state device; using unspecified devices
- G06F7/491—Computations with decimal numbers radix 12 or 20.
- G06F7/498—Computations with decimal numbers radix 12 or 20. using counter-type accumulators
- G06F7/4983—Multiplying; Dividing
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F7/00—Methods or arrangements for processing data by operating upon the order or content of the data handled
- G06F7/38—Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation
- G06F7/48—Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation using non-contact-making devices, e.g. tube, solid state device; using unspecified devices
- G06F7/52—Multiplying; Dividing
- G06F7/523—Multiplying only
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06N—COMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
- G06N3/00—Computing arrangements based on biological models
- G06N3/02—Neural networks
- G06N3/06—Physical realisation, i.e. hardware implementation of neural networks, neurons or parts of neurons
- G06N3/063—Physical realisation, i.e. hardware implementation of neural networks, neurons or parts of neurons using electronic means
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06N—COMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
- G06N3/00—Computing arrangements based on biological models
- G06N3/02—Neural networks
- G06N3/06—Physical realisation, i.e. hardware implementation of neural networks, neurons or parts of neurons
- G06N3/063—Physical realisation, i.e. hardware implementation of neural networks, neurons or parts of neurons using electronic means
- G06N3/065—Analogue means
-
- G—PHYSICS
- G11—INFORMATION STORAGE
- G11C—STATIC STORES
- G11C11/00—Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor
- G11C11/54—Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor using elements simulating biological cells, e.g. neuron
-
- G—PHYSICS
- G11—INFORMATION STORAGE
- G11C—STATIC STORES
- G11C16/00—Erasable programmable read-only memories
- G11C16/02—Erasable programmable read-only memories electrically programmable
- G11C16/04—Erasable programmable read-only memories electrically programmable using variable threshold transistors, e.g. FAMOS
- G11C16/0408—Erasable programmable read-only memories electrically programmable using variable threshold transistors, e.g. FAMOS comprising cells containing floating gate transistors
-
- G—PHYSICS
- G11—INFORMATION STORAGE
- G11C—STATIC STORES
- G11C16/00—Erasable programmable read-only memories
- G11C16/02—Erasable programmable read-only memories electrically programmable
- G11C16/06—Auxiliary circuits, e.g. for writing into memory
- G11C16/10—Programming or data input circuits
-
- G—PHYSICS
- G11—INFORMATION STORAGE
- G11C—STATIC STORES
- G11C16/00—Erasable programmable read-only memories
- G11C16/02—Erasable programmable read-only memories electrically programmable
- G11C16/06—Auxiliary circuits, e.g. for writing into memory
- G11C16/26—Sensing or reading circuits; Data output circuits
-
- G—PHYSICS
- G11—INFORMATION STORAGE
- G11C—STATIC STORES
- G11C16/00—Erasable programmable read-only memories
- G11C16/02—Erasable programmable read-only memories electrically programmable
- G11C16/06—Auxiliary circuits, e.g. for writing into memory
- G11C16/30—Power supply circuits
-
- G—PHYSICS
- G11—INFORMATION STORAGE
- G11C—STATIC STORES
- G11C16/00—Erasable programmable read-only memories
- G11C16/02—Erasable programmable read-only memories electrically programmable
- G11C16/06—Auxiliary circuits, e.g. for writing into memory
- G11C16/32—Timing circuits
-
- G—PHYSICS
- G11—INFORMATION STORAGE
- G11C—STATIC STORES
- G11C5/00—Details of stores covered by group G11C11/00
- G11C5/14—Power supply arrangements, e.g. power down, chip selection or deselection, layout of wirings or power grids, or multiple supply levels
- G11C5/147—Voltage reference generators, voltage or current regulators; Internally lowered supply levels; Compensation for voltage drops
-
- G—PHYSICS
- G11—INFORMATION STORAGE
- G11C—STATIC STORES
- G11C7/00—Arrangements for writing information into, or reading information out from, a digital store
- G11C7/06—Sense amplifiers; Associated circuits, e.g. timing or triggering circuits
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06N—COMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
- G06N3/00—Computing arrangements based on biological models
- G06N3/02—Neural networks
-
- G—PHYSICS
- G11—INFORMATION STORAGE
- G11C—STATIC STORES
- G11C11/00—Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor
- G11C11/56—Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor using storage elements with more than two stable states represented by steps, e.g. of voltage, current, phase, frequency
- G11C11/5621—Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor using storage elements with more than two stable states represented by steps, e.g. of voltage, current, phase, frequency using charge storage in a floating gate
- G11C11/5628—Programming or writing circuits; Data input circuits
-
- G—PHYSICS
- G11—INFORMATION STORAGE
- G11C—STATIC STORES
- G11C11/00—Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor
- G11C11/56—Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor using storage elements with more than two stable states represented by steps, e.g. of voltage, current, phase, frequency
- G11C11/5621—Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor using storage elements with more than two stable states represented by steps, e.g. of voltage, current, phase, frequency using charge storage in a floating gate
- G11C11/5642—Sensing or reading circuits; Data output circuits
-
- H—ELECTRICITY
- H03—ELECTRONIC CIRCUITRY
- H03K—PULSE TECHNIQUE
- H03K19/00—Logic circuits, i.e. having at least two inputs acting on one output; Inverting circuits
- H03K19/20—Logic circuits, i.e. having at least two inputs acting on one output; Inverting circuits characterised by logic function, e.g. AND, OR, NOR, NOT circuits
Landscapes
- Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Theoretical Computer Science (AREA)
- Mathematical Physics (AREA)
- Pure & Applied Mathematics (AREA)
- Mathematical Optimization (AREA)
- Mathematical Analysis (AREA)
- Computational Mathematics (AREA)
- Data Mining & Analysis (AREA)
- Computing Systems (AREA)
- General Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Health & Medical Sciences (AREA)
- Life Sciences & Earth Sciences (AREA)
- Biomedical Technology (AREA)
- Algebra (AREA)
- Databases & Information Systems (AREA)
- Molecular Biology (AREA)
- Neurology (AREA)
- Biophysics (AREA)
- General Health & Medical Sciences (AREA)
- Microelectronics & Electronic Packaging (AREA)
- Power Engineering (AREA)
- Artificial Intelligence (AREA)
- Evolutionary Computation (AREA)
- Computer Hardware Design (AREA)
- Computational Linguistics (AREA)
- Read Only Memory (AREA)
- Techniques For Improving Reliability Of Storages (AREA)
Abstract
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 (W11-Wnm) 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
Description
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 :
La figure 1 représente un exemple de réseau de neurones artificiels, comprenant des couches de « neurones » A1-An, B1-Bm, C1-Cn, … Y1-Ynet Z1-Zn, 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 A1-Ande 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 B1-Bmde 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 A1-Anest n, tandis que la dimension de la couche B1-Bmest 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 W11-Wmné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 A1-Ande la première couche, et le vecteur de sortie VECTOUT a les valeurs B1-Bnde la deuxième couche.
Chaque valeur de sortie Biest ainsi obtenue par une séquence de multiplication et accumulation respective MACi sur les valeurs d’entrée Ajselon un coefficient dédié Wij. Par conséquent, chaque facteur de pondération Wijest dédié à une paire unique d’une valeur d’entrée Ajet une valeur de sortie Bi.
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 NVMij, 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 NVMijest conductrice (valeur de « 1 » binaire) ou non (valeur de « 0 » binaire), à une tension de grille de commande donnée VCG, en comparant le courant ICELLcirculant dans les bornes de conduction du transistor FGT avec un courant de référence IREF. De manière classique, les cellules mémoire NVMijsont 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 NVMijavec 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 NVMijselon 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 VCGà 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 ICELLselon une forme exponentielle, qui décolle quand VCGapproche 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 Vthest atteinte en comparant un courant de référence approprié IREFà 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 Ajet une valeur de facteur de pondération correspondante Wij, à savoir L = Ajet Vth = Wij. Ainsi, l’opération de lecture donnerait la valeur T, appelée Tj, de l’opération de multiplication Wij*Aj= Tjdans 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 Wijde l’opérateur matriciel convolutif MTXOP, afin de fournir la valeur de chaque produit des valeurs d’entrée A1…Anpar un facteur de pondération respectif Wi1…Win.
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 Bid’après quatre valeurs d’entrée A1, A2, A3, A4et des facteurs de pondération respectifs Wi1-Wi4de l’opérateur matriciel MTXOP.
Les tensions de seuil multiniveaux du transistor à grille flottante Vthij(1 ≤ j ≤ 4) des cellules mémoire respectives NVMijont été précédemment programmées selon les facteurs de pondération Wij(1 ≤ j ≤ 4) correspondant à ce calcul. Les cellules mémoire NVMijutilisé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 NVMij, 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 ICELLconduit par chaque cellule mémoire sélectionnée à un courant de référence IREFcomme 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 ICELL< IREF), et à un niveau bas d’invalidation quand la cellule est conductrice (c’est-à-dire ICELL> IREF).
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 A1-A4est accumulée sur la valeur de sortie correspondante Bi, 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 A1est 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 A2est 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 A3est 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 A4est 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*A1+6*A2+4*A3+2*A4, 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 Vi1-Vi4de la cellule mémoire respective, relativement à la valeur de pente 1/L, c’est-à-dire Vi1xL = 1 ; Vi2xL = 6 ; Vi3xL = 4 ; Vi4xL = 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 Vthmax du signal de commande en rampe de tension VRMP est atteinte, l’amplitude de seuil correspondant à la valeur maximale des tensions de seuil multiniveaux Vthmax. En conséquence, dans le présent exemple, la valeur maximale des tensions de seuil multiniveaux Vthmax 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 A1, A2, A3, A4, 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 A1-A4seulement 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 A1-A4destiné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 A1-A4sont 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 A1-A4dont 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 Bidans 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 Bidu 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 Vijdu transistor à grille flottante programmé d’une cellule mémoire respective NVMijpar 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 B1, B2, B3, B4du 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 B1, B2, B3, B4. En d’autres termes, quatre copies de la figure 5 sont fournies, chacune recevant les mêmes valeurs d’entrée A1, A2, A3, A4, mais accédant à différentes cellules mémoire NVMijen fonction des facteurs de pondération Wijcorrespondant à chaque paire unique d’une valeur d’entrée Ajet d’une valeur de sortie Bi.
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 B1-B4sont traités par l’intermédiaire d’une fonction d’activation non linéaire avant d’être utilisés comme entrées A1-A4d’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 Wijde 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 NVMij.
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 Bi, ici par exemple B1, des valeurs de pondération positives WP1jet des valeurs de pondération négatives WN1jsont introduites en supposant la contribution de deux synapses. En conséquence, la séquence de multiplication et accumulation qui calcule B1, 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 WP11, WP12, WP13, WP14puis une deuxième fois en utilisant des synapses négatives ayant des facteurs de pondération négatifs WN11, WN12, WN13, WN14.
La valeur de sortie résultante B1est obtenue en soustrayant l’accumulation à pondération négative (somme sur j de WN1jAj) de l’accumulation à pondération positive (somme sur j de WP1jAj).
À 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 VN1j(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 VN11= 5, VN12= 3, VN13= 6, VN14= 3. Le résultat accumulé est soustrait du résultat accumulé précédent S7 = 1*A1+6*A2+4*A3+2*A4(provenant de l’exemple des figures 4 et 5, qui est reproduit ici) pour donner un résultat final B1 = S = -4* A1+3*A2-2*A3-1*A4.
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 A1-A3est 3, la dimension de la couche B1-B2est 2, et la dimension de la couche C1-C3est 3.
On considère que le neurone B3est manquant par rapport à une couche en trois dimensions et ne doit pas être pris en compte pour le calcul des neurones C1-C3.
Des modes de réalisation peuvent gérer de tels changements de dimension par exemple au moyen d’une configuration appropriée du neurone B3, par exemple en mettant à zéro la valeur B3101 du neurone, ou par exemple en mettant à zéro les synapses 102 allant de B3à chacun des éléments C1, C2, C3. 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 Wijde l’opérateur matriciel MTXOP ne sont donc plus dédiées à une paire unique d’une valeur d’entrée Ajet une valeur de sortie Bi, mais à N paires d’une valeur d’entrée Akjet une valeur de sortie Bik, 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 A11-A33sur 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 Wij.
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 Wijdé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 Aijvers 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 A1…A4et chaque signal de commande en rampe de tension VRMP_L est respectivement configuré pour avoir une pente avec une valeur de variation 1/L1…1/L4correspondant respectivement à la valeur d’entrée A1…A4.
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 Ljde la pente est proportionnelle à l’amplitude de la valeur d’entrée Aj.
Chaque signal de commande en rampe de tension VRMP_L est appliqué aux cellules mémoire sélectionnées NVMijcorrespondant à la valeur d’entrée Ajrespective.
En conséquence, la mesure du temps écoulé T = Vij*Ljpour que la cellule mémoire passe de l’état non conducteur à l’état conducteur fournit le résultat de l’opération de multiplication Wij*Aj.
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 NVMijcorrespondant à chaque valeur d’entrée Ajsont correctement accumulées, ce qui donne les valeurs de sortie respectives B1…B4(Bi).
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 A1-A4est directement converti en valeurs d’inverse de pente L1, L2, L3, L4, chacune agissant avec les tensions de seuil Vijrespectives d’une valeur d’entrée Ajet d’une valeur de sortie Bi.
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 NVMij, 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 Wijseule.
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 fjcorrespondant à la valeur d’entrée Ajrespective.
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 WijAj.
Chaque temps écoulé mesuré T des cellules mémoire sélectionnées NVMijcorrespondant à chaque valeur d’entrée Ajest correctement accumulé, ce qui donne chaque valeur de sortie respective B1…B4(Bi).
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 A1-A4sont converties en valeurs de fréquence f1, f2, f3, f4et les facteurs de pondération sont fournis grâce aux tensions de seuil Vijet à la valeur d’inverse de la pente L.
Claims (30)
- Procédé de calcul convolutif de valeurs d’entrée (A1…An) avec des facteurs de pondération (W11-Wnm) d’un opérateur matriciel convolutif (MTXOP), comprenant une programmation des transistors à grille flottante (FGT) appartenant à des cellules mémoire non volatile (NVMij) à des tensions de seuil multiniveaux (MLTLVL) qui correspondent respectivement auxdits facteurs de pondération (W11-Wnm), 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 (NVMij) conductrices à un instant déterminé par les tensions de seuil programmées respectives (Vij), et une réalisation du calcul convolutif (CNVL) en utilisant lesdites valeurs d’entrée (A1…An) pendant le temps écoulé (T) pour que chaque cellule mémoire devienne conductrice, et une délivrance en sortie des valeurs de sortie (B1…Bm) 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 (A1…A4) pour chaque valeur de sortie (Bi), 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 (A1…A4) par un facteur de pondération respectif (Wi1-Wi4) 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 (Vthmax) du signal de commande en rampe de tension (VRMP) est atteint, le seuil d’amplitude correspondant à la valeur maximale des tensions de seuil multiniveaux (Vthmax).
- 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 (ICELL) conduit par chaque cellule mémoire à un courant de référence (IREF).
- Procédé selon l’une quelconque des revendications 1 à 6, dans lequel chaque cellule mémoire (NVMij) et chaque facteur de pondération respectif (Wij) sont dédiés à une paire unique constituée d’une valeur d’entrée (Aj) et d’une valeur de sortie (Bi).
- Procédé selon l’une quelconque des revendications 1 à 6, dans lequel chaque cellule mémoire (NVMij) et chaque facteur de pondération respectif (Wij) sont dédiés à un nombre de paires d’une valeur d’entrée (Aj) et d’une valeur de sortie (Bi) é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 (Aij), 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 (NVMij) est détectée comme étant dans un état non conducteur, une accumulation de la valeur d’entrée correspondante (Aj) sur la valeur de somme de sortie correspondante (Bi), 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 (Bi).
- Procédé selon l’une quelconque des revendications 9 à 11, dans lequel l’accumulation de la valeur d’entrée correspondante (A1…A4) sur la valeur de sortie correspondante (Bi) 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 (A1…A4), 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 (A1…A4), 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 (NVMij) 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 (B1…B4). - 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 (A1…A4), une génération d’un signal de commande sous forme de rampe de tension (VRMP_L) ayant une pente (L1…L4) qui varie en fonction de la valeur d’entrée correspondante (A1…A4), une application de chaque signal de commande en rampe de tension (VRMP_L) aux cellules mémoire (NVMij) correspondant à la valeur d’entrée respective (A1…A4), 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 (NVMij), 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 (B1…B4). - 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 (A1…An), 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 (W11-Wnm) 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 (NVMij) à un instant déterminé par les tensions de seuil respectives (Vij), et un circuit de traitement (MACCRC) configuré pour réaliser un calcul convolutif (CNVL) desdites valeurs d’entrée (A1…An) avec lesdits facteurs de pondération (W11-Wnm) 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 (B1…Bm) 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 (A1…A4) pour chaque valeur de sortie (Bi), 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 (A1…A4) avec un facteur de pondération respectif (Wi1…Wi4) à 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 (Vthmax) du signal de commande en rampe de tension (VRMP) est atteint, le seuil d’amplitude correspondant à la valeur maximale des tensions de seuil multiniveaux (Vthmax).
- 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 (ICELL) par chaque cellule mémoire (NVMij) à un courant de référence (IREF).
- Circuit intégré selon l’une quelconque des revendications 16 à 21, dans lequel chaque cellule mémoire et chaque facteur de pondération respectif (Wij) sont dédiés à une paire unique constituée d’une valeur d’entrée (Aj) et d’une valeur de sortie (Bi).
- Circuit intégré selon l’une quelconque des revendications 16 à 21, dans lequel chaque cellule mémoire (NVMij) et chaque facteur de pondération respectif (Wij) sont dédiés à un nombre de paires d’une valeur d’entrée (Aj) et d’une valeur de sortie (Bi) é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 (Aij), 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 (NVMij) 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 (Aj) sur la valeur de sortie correspondante (Bi), 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 (Bi).
- 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 (A1…A4), 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 (NVMij) 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 (B1…B4).
- 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 (A1…A4), pour générer un signal de commande sous forme de rampe de tension (VRMP_L) ayant une pente (L1…L4) qui varie en fonction de la valeur d’entrée correspondante (A1…A4), et pour appliquer chaque signal de commande en rampe de tension (VRMP_L) aux cellules mémoire (NVMij) correspondant à la valeur d’entrée respective (A1…A4), 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 (NVMij) 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 (B1…B4). - 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.
Priority Applications (4)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
FR2008286A FR3113327B1 (fr) | 2020-08-05 | 2020-08-05 | Procédé de calcul convolutif intra-mémoire et dispositif correspondant |
US17/373,935 US20220043885A1 (en) | 2020-08-05 | 2021-07-13 | Method and apparatus for convolutional computation based on floating gate nvm array |
EP21186854.2A EP3955169A1 (fr) | 2020-08-05 | 2021-07-21 | Procédé de calcul convolutif intra-mémoire et dispositif correspondant |
CN202110890550.5A CN114065117A (zh) | 2020-08-05 | 2021-08-04 | 基于浮栅nvm阵列的卷积计算方法和装置 |
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
FR2008286A FR3113327B1 (fr) | 2020-08-05 | 2020-08-05 | Procédé de calcul convolutif intra-mémoire et dispositif correspondant |
FR2008286 | 2020-08-05 |
Publications (2)
Publication Number | Publication Date |
---|---|
FR3113327A1 true FR3113327A1 (fr) | 2022-02-11 |
FR3113327B1 FR3113327B1 (fr) | 2023-05-12 |
Family
ID=73013721
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
FR2008286A Active FR3113327B1 (fr) | 2020-08-05 | 2020-08-05 | Procédé de calcul convolutif intra-mémoire et dispositif correspondant |
Country Status (4)
Country | Link |
---|---|
US (1) | US20220043885A1 (fr) |
EP (1) | EP3955169A1 (fr) |
CN (1) | CN114065117A (fr) |
FR (1) | FR3113327B1 (fr) |
Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5353382A (en) * | 1990-10-15 | 1994-10-04 | California Institute Of Technology | Programmable synapse for neural network applications |
US20160048755A1 (en) * | 2014-08-14 | 2016-02-18 | The Regents Of The University Of Michigan | Floating-gate transistor array for performing weighted sum computation |
Family Cites Families (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US9864950B2 (en) * | 2014-01-29 | 2018-01-09 | Purdue Research Foundation | Compact implementation of neuron and synapse with spin switches |
US10180820B2 (en) * | 2016-09-30 | 2019-01-15 | HEWLETT PACKARD ENTERPRlSE DEVELOPMENT LP | Multiply-accumulate circuits |
US10860923B2 (en) * | 2016-12-20 | 2020-12-08 | Samsung Electronics Co., Ltd. | High-density neuromorphic computing element |
US10719296B2 (en) * | 2018-01-17 | 2020-07-21 | Macronix International Co., Ltd. | Sum-of-products accelerator array |
US10957392B2 (en) * | 2018-01-17 | 2021-03-23 | Macronix International Co., Ltd. | 2D and 3D sum-of-products array for neuromorphic computing system |
US10692570B2 (en) * | 2018-07-11 | 2020-06-23 | Sandisk Technologies Llc | Neural network matrix multiplication in memory cells |
US10741568B2 (en) * | 2018-10-16 | 2020-08-11 | Silicon Storage Technology, Inc. | Precision tuning for the programming of analog neural memory in a deep learning artificial neural network |
US10991430B2 (en) * | 2018-12-19 | 2021-04-27 | Ememory Technology Inc. | Non-volatile memory cell compliant to a near memory computation system |
-
2020
- 2020-08-05 FR FR2008286A patent/FR3113327B1/fr active Active
-
2021
- 2021-07-13 US US17/373,935 patent/US20220043885A1/en active Pending
- 2021-07-21 EP EP21186854.2A patent/EP3955169A1/fr active Pending
- 2021-08-04 CN CN202110890550.5A patent/CN114065117A/zh active Pending
Patent Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5353382A (en) * | 1990-10-15 | 1994-10-04 | California Institute Of Technology | Programmable synapse for neural network applications |
US20160048755A1 (en) * | 2014-08-14 | 2016-02-18 | The Regents Of The University Of Michigan | Floating-gate transistor array for performing weighted sum computation |
Non-Patent Citations (2)
Title |
---|
AGARWAL SAPAN ET AL: "Using Floating-Gate Memory to Train Ideal Accuracy Neural Networks", IEEE JOURNAL ON EXPLORATORY SOLID-STATE COMPUTATIONAL DEVICES AND CIRCUITS, IEEE, vol. 5, no. 1, 1 June 2019 (2019-06-01), pages 52 - 57, XP011727644, DOI: 10.1109/JXCDC.2019.2902409 * |
DUGGER J ET AL: "An Analog Floating-Gate Node for Supervised Learning", IEEE TRANSACTIONS ON CIRCUITS AND SYSTEMS PART I: REGULAR PAPERS, IEEE SERVICE CENTER, NEW YORK, NY, US, vol. 52, no. 5, 1 May 2005 (2005-05-01), pages 834 - 845, XP011131701, ISSN: 1057-7122, DOI: 10.1109/TCSI.2005.846663 * |
Also Published As
Publication number | Publication date |
---|---|
FR3113327B1 (fr) | 2023-05-12 |
CN114065117A (zh) | 2022-02-18 |
EP3955169A1 (fr) | 2022-02-16 |
US20220043885A1 (en) | 2022-02-10 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
Joshi et al. | Accurate deep neural network inference using computational phase-change memory | |
Yin et al. | High-throughput in-memory computing for binary deep neural networks with monolithically integrated RRAM and 90-nm CMOS | |
Ambrogio et al. | Equivalent-accuracy accelerated neural-network training using analogue memory | |
Nandakumar et al. | Mixed-precision architecture based on computational memory for training deep neural networks | |
Lee et al. | Neuromorphic computing using NAND flash memory architecture with pulse width modulation scheme | |
EP3718055A1 (fr) | Circuits de réseau neuronal comprenant des séries de synapses non volatiles | |
Hung et al. | Challenges and trends of nonvolatile in-memory-computation circuits for AI edge devices | |
Liu et al. | A memristor crossbar based computing engine optimized for high speed and accuracy | |
Wang et al. | Efficient and robust nonvolatile computing-in-memory based on voltage division in 2T2R RRAM with input-dependent sensing control | |
US11055612B2 (en) | Voltage controlled highly linear resistive elements | |
FR2996029A1 (fr) | Systeme neuromorphique exploitant les caracteristiques intrinseque de cellules de memoire | |
Kim et al. | Deep neural network optimized to resistive memory with nonlinear current-voltage characteristics | |
Liu et al. | A memristor-based neuromorphic engine with a current sensing scheme for artificial neural network applications | |
FR3089037A1 (fr) | Circuit neuronal apte à mettre en œuvre un apprentissage synaptique | |
Lim et al. | Highly reliable inference system of neural networks using gated Schottky diodes | |
Bertuletti et al. | A multilayer neural accelerator with binary activations based on phase-change memory | |
Lee et al. | Neuromorphic computing using random synaptic feedback weights for error backpropagation in NAND flash memory-based synaptic devices | |
Wan et al. | Edge AI without compromise: efficient, versatile and accurate neurocomputing in resistive random-access memory | |
Örnhag et al. | Accelerating AI using next-generation hardware: Possibilities and challenges with analog in-memory computing | |
FR3113327A1 (fr) | Procédé de calcul convolutif intra-mémoire et dispositif correspondant | |
Rafiq et al. | Investigation of ReRAM Variability on Flow-Based Edge Detection Computing Using HfO 2-Based ReRAM Arrays | |
US20220101142A1 (en) | Neural network accelerators resilient to conductance drift | |
Chiang et al. | Hardware-robust in-rram-computing for object detection | |
US20220004876A1 (en) | Training of oscillatory neural networks | |
FR3125163A1 (fr) | Procede de lecture d’une rram multi-niveaux |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PLFP | Fee payment |
Year of fee payment: 2 |
|
PLSC | Publication of the preliminary search report |
Effective date: 20220211 |
|
PLFP | Fee payment |
Year of fee payment: 3 |
|
PLFP | Fee payment |
Year of fee payment: 4 |
|
PLFP | Fee payment |
Year of fee payment: 5 |