FR 3126252 A1 20230224 FR 2108809 A 20210820 Circuit neuromorphique à base de cellule s RRAM 2T2R La présente invention concerne un circuit neuromorphique propre à mettre en œuvre un réseau de neurones, le circuit neuromorphique comprenant : - des lignes de mots, - des paires de lignes de bits complémentaires, - des lignes de source, - un ensemble de cellules élémentaires, - un circuit électronique implémentant un neurone présentant une sortie et comportant : - un ensemble de composants logiques, - une unité de comptage, - une unité de comparaison comportant un comparateur et un générateur de tension de comparaison, le comparateur étant propre à comparer la sortie de l’unité de comptage à la tension de comparaison générée par le générateur de tension de comparaison pour émettre en sortie un signal dépendant de la comparaison et correspondant à la sortie du circuit électronique implémentant un neurone. Figure pour l'abrégé : figure 20 Circuit neuromorphique à base de cellules RRAM 2T2R La présente invention concerne un circuit neuromorphique propre à mettre en œuvre un réseau de neurones. Pour de multiples applications, parmi lesquelles le traitement automatique de données, l’aide au diagnostic, l’analyse prédictive, les véhicules autonomes, la bioinformatique ou la surveillance, il est connu d’utiliser des algorithmes d’apprentissage automatique faisant partie de programmes pouvant être exécutés sur des processeurs tels que les CPU ou les GPU. Un CPU est un processeur, le sigle CPU provenant du terme anglais « Central Processing Unit » signifiant littéralement unité centrale de traitement tandis qu’un GPU est un processeur graphique, le sigle GPU provenant du terme anglais « Graphics Processing Unit » signifiant littéralement unité graphique de traitement. Parmi les techniques de mise en œuvre d’apprentissage, l’emploi de réseaux de neurones est de plus en plus répandu, ces structures étant considérées comme très prometteuses du fait de leurs performances pour de nombreuses tâches telles que la classification automatique de données, la reconnaissance de motifs, la traduction et la compréhension automatique de langues, le contrôle robotique, la navigation automatique, les systèmes de recommandations, la détection d’anomalies, la détection de fraudes, l’étude de l’ADN ou encore la découverte de nouvelles molécules. Un réseau de neurones est en général composé d'une succession de couches de neurones dont chacune prend ses entrées sur les sorties de la couche précédente. Plus précisément, chaque couche comprend des neurones prenant leurs entrées sur les sorties des neurones de la couche précédente. Chaque couche est reliée par une pluralité de synapses. Un poids synaptique est associé à chaque synapse. C’est un nombre réel, qui prend des valeurs positives comme négatives. Pour chaque couche, l’entrée d’un neurone est la somme pondérée des sorties des neurones de la couche précédente, la pondération étant faite par les poids synaptiques. Pour une implémentation dans un CPU ou un GPU, une problématique de goulot d’étranglement de Von Neumann (également appelée « Von Neumann bottleneck » selon sa dénomination anglaise) apparaît du fait que l’implémentation d’un réseau de neurones profond (à plus de trois couches et allant jusqu’à plusieurs dizaines) implique d’utiliser à la fois la ou les mémoires et le processeur alors que ces derniers éléments sont séparés spatialement. Il en résulte un engorgement du bus de communication entre la ou les mémoires et le processeur à la fois pendant que le réseau de neurones une fois entraîné est utilisé pour réaliser une tâche, et, à plus forte raison, pendant que le réseau de neurones est entraîné, c’est-à-dire pendant que ses poids synaptiques sont réglés pour résoudre la tâche en question avec un maximum de performance. Il est donc souhaitable de développer des architectures matérielles dédiées, entremêlant mémoire et calcul, pour réaliser des réseaux de neurones rapides, à faible consommation et capables d’apprendre en temps réel. Il est connu un réseau de neurones reposant sur des technologies de type optique. Un autre champ de recherche porte sur la réalisation de neurones et de synaspes de réseaux de neurones sur la base d’une technologie de type CMOS. Il est entendu par le sigle « CMOS », oxyde métallique semi-conducteur complémentaire (acronyme provenant de l’expression anglaise « Complementary Metal-Oxide-Semiconductor »). Le sigle CMOS désigne aussi bien un procédé de fabrication qu’un composant obtenu par un tel procédé de fabrication. Toutefois, selon chacune de ces technologies, chaque neurone occupe plusieurs dizaines de micromètres de côté. En outre, chaque synapse occupe également plusieurs dizaines de micromètres de côté. Il en résulte que, sur une surface limitée correspondant par exemple à une puce électronique, le nombre de neurones et de synapses qui peuvent être intégrés est limité, ce qui résulte en une diminution des performances du réseau de neurones. De ce fait, pour diminuer l’encombrement, il est spécifiquement étudié des architectures dans lesquelles les synapses sont memristives. Des synapses memristives sont des synapses utilisant des memristors. En électronique, le memristor (ou memristance) est un composant électronique passif. Le nom est un mot-valise formé à partir des deux mots anglais memory et resistor. Un memristor est un composant de mémoire non-volatile, la valeur de sa résistance électrique changeant avec l’application d’une tension pendant une certaine durée et restant à cette valeur en l’absence de tension. Un exemple d’une telle implémentation est proposé dans un article de L. Wang et al. intitulé « Efficient and Robust Nonvolatile Computing-In-Memory based on Voltage Division 2T2R RRAM with Input-Dependent Sensing Control » publié le 19 mars 2021 dans la revue Transactions on Circuits and Systems II: Express Briefs . Le réseau de neurones est réalisé par un ensemble de cellules mémoires reliées à un circuit de lecture spécifique. Il est à noter que cette implémentation porte sur un réseau de neurones particulier qui est un réseau de neurones binaire, c’est-à-dire un réseau dans lequel les neurones et les synapses ne peuvent prendre que des valeurs binaires. Ces réseaux de neurones ont l’avantage de permettre des calculs plus simples mais présentent encore de bonnes performances durant l’inférence, notamment pour des applications liées à la surveillance. Toutefois, l’implémentation proposée par l’article de L. Wang et al. est relativement encombrante et difficilement intégrable dans une structure de cellules mémoires. Il existe donc un besoin pour un circuit neuromorphique permettant de réaliser un réseau de neurones binaire qui soit moins encombrant et présente une meilleure intégrabilité dans un ensemble de cellules mémoires. A cet effet, la description décrit un circuit neuromorphique propre à mettre en œuvre un réseau de neurones, le circuit neuromorphique comprenant : - des lignes de mot, - des paires de lignes de bits complémentaires, - des lignes de source, - un ensemble de cellules élémentaires organisées selon une matrice bidimensionnelle comportant des lignes et des colonnes, l’ensemble de cellules élémentaires comportant un ensemble de mémorisation regroupant un ensemble de lignes de cellules élémentaires, les cellules élémentaires de l’ensemble de mémorisation étant des cellules mémoires, les cellules mémoires d’une même ligne étant sélectionnables par une ligne de mot, les cellules mémoires d’une même colonne étant reliées à une paire de lignes de bits complémentaires et une ligne de source, chaque cellule mémoire comprenant deux memristors et deux commutateurs, chaque memristor étant relié à la même ligne de source et à un commutateur respectif, chaque memristor mémorisant respectivement un poids ou l’inverse du même poids en présentant respectivement des première et deuxième valeurs de résistances différentes, les commutateurs étant reliés, pour leur activation, à une ligne de mot et reliés respectivement à une paire de lignes de bits complémentaires, - un circuit électronique implémentant un neurone présentant une sortie et comportant : - un ensemble de composants logiques, chaque composant logique présentant une unité logique comprenant une entrée connectée à une ligne de source respective, l’unité logique étant propre à effectuer une opération logique présentant un basculement entre une valeur basse et une valeur haute en fonction de la valeur de la ou des entrées de l’unité logique, chaque unité logique réalisant une fonction logique de type inverseur ou double inverseur, - une unité de comptage, l’unité de comptage étant propre à compter le nombre de valeurs hautes ou basses en sortie des composants logiques, l’unité de comptage étant un pont, un pont étant un ensemble de mêmes éléments en parallèle et reliés entre eux sur une de leurs bornes à une sortie de l’unité de comptage, chaque élément étant relié à un composant logique respectif et étant une résistance ou un condensateur, - une unité de comparaison comportant un comparateur et un générateur de tension de comparaison, le comparateur étant propre à comparer la sortie de l’unité de comptage à la tension de comparaison générée par le générateur de tension de comparaison pour émettre en sortie un signal dépendant de la comparaison et correspondant à la sortie du circuit électronique implémentant un neurone. Selon des modes de réalisation particuliers, le circuit neuromorphique présente une ou plusieurs des caractéristiques suivantes, prise(s) isolément ou selon toutes les combinaisons techniquement possibles : - chaque memristor comporte un état vierge, l’unité de comptage étant une ligne de cellules élémentaires, chaque cellule élémentaire de l’unité de comptage étant une cellule comprenant deux memristors dans l’état vierge et deux commutateurs, chaque memristor dans l’état vierge étant connecté à l’autre memristor dans l’état vierge et à un commutateur respectif, les commutateurs étant reliés entre eux ; - chaque unité logique comprend un inverseur formé à partir d’une cellule élémentaire comprenant deux memristors et deux commutateurs, chaque memristor étant connecté à l’autre memristor et à un commutateur respectif, une piste de court-circuit étant agencée pour court-circuiter les deux memristors, un des commutateurs étant relié à la masse et à l’entrée de l’unité logique pour sa commande et l’autre commutateur étant relié à un potentiel d’alimentation et monté en diode ; - chaque unité logique comprend un inverseur formé à partir d’une cellule élémentaire comprenant deux memristors et deux commutateurs, chaque memristor étant connecté à l’autre memristor et à un commutateur respectif, un premier commutateur étant relié à la masse et à l’entrée de l’unité logique pour sa commande et le deuxième commutateur étant relié à un potentiel d’alimentation et monté en diode, une piste de court-circuit étant agencée pour court-circuiter le memristor relié au premier commutateur ; - un premier contrôleur permettant de sélectionner les cellules élémentaires d’une ligne qui sont reliées à une même ligne de mots, et comprenant un deuxième contrôleur reliés aux paires de lignes de bit et permettant d’appliquer sur chaque paire de ligne de bits des tensions différentes et symétriques par rapport à une tension milieu, la tension appliquée sur une ligne de bit étant supérieure ou inférieur à celle appliquée sur la ligne de bit complémentaire associée selon la valeur d’un signal d’entrée, chaque signal d’entrée correspondant à une entrée d’une synapse reliée audit neurone ; - l’ensemble formé par chaque unité logique est réalisé à partir d’au moins une ligne de cellules élémentaires n’appartenant pas à l’ensemble de mémorisation ; - chaque unité logique correspond à un inverseur formé desdits commutateurs de chaque cellule élémentaire de l’unité de comptage et d’un transistor PMOS dont le drain est relié à une tension d’alimentation, la grille est reliée à une ligne de source SL et la source est reliée aux drains desdits commutateurs ; - le générateur de tension de comparaison est un générateur de tension fixe ; - le générateur de tension de comparaison est un deuxième pont présentant les mêmes éléments que l’unité de comptage, chaque élément du deuxième pont étant relié à un inverseur connecté à une unité logique respective ; - les éléments des deux ponts sont des condensateurs présentant la même capacité, le générateur de tension de comparaison et l’unité de comptage comportant un condensateur de décalage, le condensateur de décalage présentant une capacité égale à la moitié de la capacité d’un condensateur d’un des deux ponts ; - l’opération logique effectuée par chaque unité logique est choisie parmi : un ou-exclusif avec une entrée fixée à 0, une inversion, un non-et avec une des deux entrées fixées à 1, un non-ou avec une des deux entrées fixées à 0 ; - le circuit neuromorphique comporte des transistors de rappel, un des transistors de rappel étant relié à l’ensemble des éléments de l’unité de comptage et les autres transistors de rappel étant reliés à une ligne de source respective, les transistors de rappel étant propres à effacer les éléments ; - le circuit neuromorphique comporte plusieurs ensembles distincts de cellules élémentaires propres à fonctionner en parallèle ; - les lignes de sources présentent plusieurs portions, des portions de ces lignes étant spécifiques à un ensemble de cellules élémentaires ; - le circuit neuromorphique est un circuit intégré tridimensionnel . . Des caractéristiques et avantages de l’invention apparaîtront à la lecture de la description qui va suivre, donnée uniquement à titre d’exemple non limitatif, et faite en référence aux dessins annexés, sur lesquels : - la est une représentation schématique d’un exemple de circuit neuromorphique réalisant physiquement un réseau de neurones, - la est une représentation schématique d’un exemple de cellule mémoire faisant partie du circuit neuromorphique, - la est un graphe montrant l’effet de la variabilité des valeurs des résistances des états d’un memristor, - la est une représentation schématique d’un exemple de circuit électronique implémentant un neurone, - la est une représentation schématique d’un autre exemple de circuit électronique implémentant un neurone, - la est une représentation schématique d’un exemple de réalisation d’un composant réalisant une opération XNOR et faisant partie du neurone de la , - la illustre les quatre cas possibles de fonctionnement du composant XNOR de la , - la est une représentation schématique de la tension en sortie du composant XNOR de la dans certains cas de la , - la est une représentation schématique d’un circuit implémentant les neurones du circuit neuromorphique à base de mémoires vives statiques selon un premier document de l’état de la technique, - la est une représentation schématique d’un premier circuit implémentant les neurones du circuit neuromorphique à base de mémoires vives statiques selon un deuxième document de l’état de la technique, - la est une représentation schématique du circuit électronique en transposant directement le circuit de la pour le cas d’une cellule de mémoire résistive, - la est une représentation schématique d’une implémentation concrète d’une première partie neurone de la , - la est une représentation schématique d’un inverseur en technologie MOS, - la est une représentation schématique d’un premier exemple d’inverseur réalisé à partir d’une cellule RRAM, - la est une représentation schématique d’un deuxième exemple d’inverseur réalisé à partir d’une cellule RRAM, - la est une représentation schématique de deux inverseurs en série réalisés à partir de deux cellules RRAM, - la est une représentation schématique de la mise en œuvre d’une première étape d’un procédé permettant de passer de cellules RRAM non formées aux deux inverseurs de la , - la est une représentation schématique de la mise en œuvre d’une deuxième étape d’un procédé permettant de passer de cellules RRAM non formées aux deux inverseurs de la , - la est une représentation schématique de la mise en œuvre d’une troisième étape d’un procédé permettant de passer de cellules RRAM non formées aux deux inverseurs de la , - la est une représentation schématique d’une implémentation concrète de l’ensemble du neurone de la , - la est une représentation schématique de l’implémentation de la dans une configuration d’effacement, - la est une représentation schématique d’un exemple d’implémentation du circuit neuromorphique avec des calculs effectués en parallèle, - la est une représentation schématique d’un autre exemple d’implémentation du circuit neuromorphique avec des calculs effectués en parallèle, - la est une représentation schématique d’encore un autre exemple d’implémentation du circuit neuromorphique avec des calculs effectués en parallèle, - la est une représentation schématique d’un autre exemple de circuit neuromorphique, - la est une représentation schématique d’un schéma électrique équivalent d’une partie du circuit neuromorphique de la , - la est une représentation schématique d’un schéma électrique équivalent d’une autre partie du circuit neuromorphique de la , - la est un graphe présentant les différentes configurations possibles des deux parties représentées des figures 26 et 27, et - la est une représentation schématique d’encore un autre exemple de circuit neuromorphique, et - la est une représentation schématique d’un autre exemple de circuit neuromorphique. Un circuit neuromorphique 10 propre à mettre en œuvre un réseau de neurones est représenté sur la . Le circuit neuromorphique 10 réalise ici un réseau de neurones de type binaire, c’est-à-dire comme expliqué précédemment un réseau pour lequel les poids synaptiques et les neurones sont binaires. Le circuit neuromorphique 10 comporte une pluralité de cellules élémentaires 12. Les cellules élémentaires 12 sont organisées selon une matrice 14 bidimensionnelle comportant des lignes 16 et des colonnes 18. La matrice sera désignée sous le terme de matrice de cellules 14 dans la suite de la description. Une cellule élémentaire 12 a les coordonnées (i,j) lorsque ladite cellule élémentaire 12 est positionnée au croisement de la i-ième ligne 16 i et de la j-ième colonne 18 j avec i et j deux entiers. Dans le cas de la , le nombre de lignes 16 et de colonnes 18 est égal à N, de sorte que les indices i et j sont compris au sens large entre 1 et N. Dans le cas de la , il a été représenté une matrice de cellule 14 pour laquelle N est égal à 9. Toutefois, en variante, le nombre de lignes 16 et de colonnes 18 peut être différent. Le circuit neuromorphique 10 comprend également des lignes de mot WL, des paires de lignes de bits complémentaires BL et BLb, des lignes de source SL et deux contrôleurs 20 et 22. Dans les notations précédentes, une ligne de mot est référencée WL, le sigle WL renvoyant à la dénomination anglaise correspondante de « wor d line » ; les lignes de bits complémentaires BL et BLb utilisent le sigle BL qui renvoie à la dénomination anglaise correspondante de « bit line » et les lignes de source sont référencées avec le sigle SL qui renvoie à la dénomination anglaise correspondante de « source line ». Dans l’exemple de la , chaque cellule élémentaire est connectée à une ligne de mot WL respective, une ligne de source SL respective et une paire respective de lignes de bits complémentaires BL et BLb. Chaque cellule élémentaire 12 d’une même ligne 14 partage la même ligne de mot WL, de sorte que les lignes de mot WL peuvent également être indexées avec l’indice i. Ainsi, la première ligne de mot, c’est-à-dire celle qui relie les cellules élémentaires 12 de la première ligne 16, pourra être référencée WL 1 . Les cellules élémentaires 12 d’une même colonne 18 partagent la même paire de lignes de bits complémentaires BL et BLb et la même ligne de source SL. Ces trois lignes peuvent donc également être indexées avec l’indice j. Dans un souci de clarté, l’ensemble des lignes de source SL sont représentées mais seules les paires de lignes de bits complémentaires BL et BLb de la première colonne 18 1 , de la cinquième colonne 18 5 et de la neuvième colonne 18 9 sont représentées en traits mixtes sur la . Le premier contrôleur 20 est propre à contrôler chaque ligne de mot WL tandis que le deuxième contrôleur 22 est propre à contrôler les paires de lignes de bits complémentaires BL et BLb et les lignes de source SL. Le premier contrôleur 20 et le deuxième contrôleur 22 sont configurés pour être pilotés de manière coordonnée pour commander les cellules élémentaires 12 à l’aide des lignes qu’ils contrôlent selon le fonctionnement souhaité. Dans l’exemple décrit, les cellules élémentaires 12 des trois premières lignes 16 1 , 16 2 et 16 3 sont utilisées pour réaliser un neurone du réseau de neurones. Ces cellules élémentaires 12 font donc partie d’un circuit électronique implémentant un neurone 24. Par abus de langage et pour simplifier la description qui va suivre, un tel circuit électronique est simplement dénommé neurone 24. Les cellules élémentaires 12 des trois premières lignes 16 1 , 16 2 et 16 3 seront décrites ultérieurement lorsque le neurone 24 sera décrit. Les cellules élémentaires 12 des autres lignes 16 4 à 16 N sont associées chacune à un poids binaire respectif du réseau de neurones. Les cellules élémentaires 12 de ces lignes 16 4 à 16 N servent à mémoriser les poids du réseau de neurones. De ce fait, dans la suite, ces cellules élémentaires 12 de ces lignes 16 4 à 16 N sont dénommées cellules mémoires 26 et forment un ensemble de mémorisation 27. La structure d’une cellule mémoire 26 dans l’environnement des lignes est représentée plus précisément sur la pour le cas de la cellule mémoire 26 ayant les coordonnées (i,j). Chaque cellule mémoire 26 comporte deux memristors, à savoir un premier memristor 28 et un deuxième memristor 30, ainsi que deux commutateurs, un premier commutateur 32 et un deuxième commutateur 34. Du fait que des memristors 28 et 30 sont présents, une telle cellule mémoire 26 est une cellule de mémoire résistive à accès aléatoire. La cellule mémoire 26 est plus souvent désigné par l’acronyme RRAM ou ReRAM qui renvoie à la dénomination anglaise correspondante de « Resistive random-access memory ». En outre, un tel agencement est généralement appelé structure 2T2R en référence à la présence des deux commutateurs (appellation 2T) et de deux memristors (appellation 2R). La cellule mémoire 26 est parfois dénommée cellule 2T2R. Un memristor est un composant dont la valeur de sa résistance électrique change, de façon permanente, lorsqu’un courant est appliqué. Ainsi, une donnée peut être enregistrée et réécrite par un courant de contrôle. Un tel comportement est notamment observé dans les matériaux à changement de phase, les jonctions tunnel ferroélectriques ou les mémoires redox à base d’oxydes tels que le HfO x ou TiO 2-x . Le changement de conductance d’un memristor dépend de l'amplitude et de la durée des impulsions de tension appliquées à travers le memristor ainsi que de la valeur maximale de courant pouvant passer dans le memristor par exemple pour une opération de « SET », c’est-à-dire le passage d’une résistance forte à une résistance faible. Un memristor peut ainsi présenter deux états, un état haut et un état bas. L’état haut correspond à une forte résistance et est généralement désigné par l’abréviation HRS renvoyant au terme anglais de « High Resistive State » qui signifie littéralement état fortement résistif. L’état haut est, de ce fait, dénommé état haut HRS dans la suite. L’état bas correspond à une faible résistance et est généralement désigné par l’abréviation LRS renvoyant au terme anglais de « Low Resistive State » qui signifie littéralement état faiblement résistif. L’état bas est, de ce fait, dénommé état bas LRS dans la suite. Toutefois, du fait de la variabilité des memristors en fonctionnement, il se trouve que la résistance dans l’état haut HRS peut être inférieure à la résistance dans l’état bas LRS, ce qui génère des erreurs si l’information (poids) est codée dans un seul memristor. Cette variabilité est présentée schématiquement sur la . Dans cette figure, il est proposé la probabilité qu’un memristor présente en pratique la valeur de résistance en fonction de l’état du memristor. Plus précisément, la première courbe, la courbe notée 36, représente schématiquement la probabilité pour l’ensemble des valeurs observées en pratique pour l’état bas LRS tandis que la deuxième courbe 38 représente la même courbe pour l’état haut HRS. Le graphe de la montre bien qu’il existe une zone de recouvrement 40. Dans cette zone de recouvrement 40, distinguer les états bas LRS et haut HRS peut être impossible. Ce recouvrement peut être plus important avec les dérives temporelles à long terme des memristors. Pour remédier à ce problème, dans le présent exemple, l’information est codée par le rapport entre les deux résistances des deux états grâce à une configuration en différentiel des deux memristors 28 et 30. Aussi, selon l’exemple décrit, les memristors 28 et 30 sont des memristors en série et complémentaires respectant le même codage logique. Par complémentaire, il est ici entendu que les memristors 28 et 30 présentent un état différent, un état bas LRS pour l’un et un état haut HRS pour l’autre. Selon l’exemple de la , un poids fort, c’est-à-dire un « 1 » logique, est représenté par un état haut HRS du premier memristor 28 (respectivement un état bas LRS du deuxième memristors 30) tandis qu’un poids faible, c’est-à-dire un « 0 » logique, est représenté par un état bas LRS du premier memristor 28 (respectivement un état haut HRS du deuxième memristors 30). Dans l’exemple décrit, chacun des deux memristors 28 et 30 est relié à la ligne de source SL commune. Chacun des deux commutateurs 32 et 34 est par exemple un transistor et plus spécifiquement un transistor à effet de champ. Un transistor à effet de champ est souvent désigné par l’abréviation FET qui correspond à la dénomination anglaise de « Field-Effect Transistor ». Selon l’exemple décrit, les deux commutateurs 32 et 34 sont des transistors à effet de champ à grille isolée. Un tel transistor est plus souvent désigné sous l’acronyme MOSFET renvoyant à la dénomination anglaise de « Metal Oxide Semiconductor Field Effect Transistor ». Ainsi, chaque commutateur 32 et 34 présente trois électrodes, une grille G, une source S et un drain D. De manière générale, pour un transistor dont le signe de référence est X, les électrodes seront notées sur les figures selon la notation suivante : la grille XG, la source XS et le drain XD. Cette notation est choisie ici pour simplifier la représentation, sachant que les positions de la source XS et du drain XD sont définies par rapport au sens de polarisation principal, c’est-à-dire le plus usité pour le montage. Bien entendu, si la polarisation est inversée, l’homme du métier sait que les rôles et les positions de la source XS et du drain XD sont échangés. Chaque grille 32G et 34G des deux commutateurs 32 et 34 est connectée à la ligne de mot WL. Selon le niveau de tension présent sur la ligne de mot, les commutateurs 32 et 34 sont rendus passants ou au contraire non passants. Le premier contrôleur 20 va en pratique choisir de sélectionner une ligne de cellules en rendant conducteurs les commutateurs des cellules mémoires de cette ligne. La source 32S du premier commutateur 32 est reliée à la ligne de bit BL tandis que la source 34S du deuxième commutateur 34 est reliée à la ligne de bit complémentaire BLb. Le drain 32D du premier commutateur 32 est relié à une borne du premier memristor 28, l’autre borne du premier memristor 28 étant reliée à la ligne de source SL commune. Le drain 34D du deuxième commutateur 34 est relié à une borne du deuxième memristor 30, l’autre borne du deuxième memristor 30 étant reliée à la ligne de source SL commune. Le second contrôleur 22 va piloter l’alimentation des paires de lignes de bits, de sorte à ce que la tension présentée sur une ligne de bit BL i soit différente et complémentaire de la tension présentée sur la ligne de bits complémentaire BL j . Ainsi, quand une cellule de coordonnée i,j est sélectionnée (ses commutateurs étant rendus passant par la tension d’activation présentée sur la ligne de mot WL i associée), les memristors 28 et 30 de cette cellule sont en série et constituent un pont résistif entre les lignes de bit BL j et BLb j . Dans le cas d’espèce, les memristors 28 et 30 sont ainsi alimentés par des tensions présentes sur les lignes de bit BL j et BLb j symétriques par rapport à une tension par exemple , dite tension milieu. Dans cette notation, V dd correspond à un potentiel d’alimentation V dd . En outre, la masse est notée GND dans la suite. Bien entendu, il pourrait être choisi une autre tension milieu comme, par exemple, une tension de . Le neurone 24, c’est-à-dire le circuit électronique l’implémentant est maintenant décrit en référence aux figures 4 à 8. Pour bien comprendre ce qui va suivre, il peut être observé qu’un réseau de neurones binaire présente une spécificité dans l’inférence par rapport à un réseau de neurones classique. Quand un réseau de neurones classique est appliqué sur un vecteur d’entrée pour calculer un vecteur de sortie, chaque neurone reçoit des valeurs d’entrée correspondant à des valeurs de sortie des neurones d’une couche précédente et réalise une somme pondérée et le neurone applique ensuite une fonction non-linéaire au résultat de la somme pondérée. Par contraste, dans un réseau de neurones binaire, la somme pondérée est obtenue en réalisant l’opération suivante : Où : et représentent les valeurs de sortie calculées par les neurones de la couche actuelle, respectivement par la couche précédente ; représente les poids binaires respectifs pour les neurones de la couche actuelle ; est la fonction logique donnant le complément de la fonction OU exclusive (cette fonction est parfois dénommée NON-OU exclusif de ce fait) ; est la fonction qui compte le nombre de 1 dans une série de bits ; est un seuil prédéfini, et est une fonction associant la valeur 1 à une entrée positive et associant – 1 à une valeur négative. Cela signifie que, dans le cas d’un réseau binaire, il est possible de réaliser physiquement le neurone 24 comme représenté sur la , à savoir que le neurone 24 comporte des composants XNOR 42, une unité de comptage 44 et une unité de comparaison 46. Pour bien comprendre le fonctionnement du neurone 24, il est d’abord expliqué le fonctionnement d’un seul composant XNOR 42 en référence à la . Le composant XNOR 42 réalise une opération XNOR sur deux signaux, à savoir un poids noté W et un signal d’entrée noté in. En l’espèce, le composant XNOR 42 comporte deux memristors M1 et M2 et un inverseur 48. Les deux memristors M1 et M2 sont des memristors complémentaires connectés en série correspondant au poids W. Aussi, similairement à ce qui a été décrit précédemment, selon l’exemple de la , un « 1 » logique est représenté par un état haut HRS du memristor M1 (l’autre memristor M2 étant dans l’état bas LRS) tandis qu’un « 0 » logique est représenté par un état bas LRS du memristor M1 (l’autre memristor M2 étant dans l’état haut HRS). Les memristors M1 et M2 sont reliés à une extrémité à l’inverseur 48 et à l’autre extrémité à une tension respective. On notera la première tension V in et la deuxième tension V inb . La configuration électrique est donc celle d’un pont diviseur de tension 50 relié d’une part à la première tension V in et d’autre part à la deuxième tension V inb et dont le point milieu 52 est relié à l’entrée de l’inverseur 48. Autrement formulé, l’un des memristors M1 est soumis à une tension |V in – V mid | et l’autre memristor M2 est soumis à une tension |V mid - V inb |. La notation V mid désigne la tension du point milieu 52 du pont diviseur 50. Ainsi, dans le cas décrit, le signal d’entrée in correspond à la paire de la première tension V in et de la deuxième tension V inb . Ces tensions V in et V inb ont la particularité d’être symétriques par rapport à la moitié du potentiel d’alimentation . En pratique, on pourra avantageusement choisir d’avoir Vin égale à Vdd ou Gnd, et respectivement Vinb égale à Gnd ou Vdd. Dans l’exemple décrit, le signal d’entrée in code pour un « 1 » logique lorsque la première tension V in est strictement supérieure à la deuxième tension V inb , c’est-à-dire que V in > V inb . Réciproquement, le signal d’entrée in code pour un « 0 » logique lorsque la première tension V in est strictement inférieure à la deuxième tension V inb , c’est-à-dire que V in inb . Cette représentation schématique de deux memresistors M1, M2 en série entre deux tensions Vin et Vinb correspond en pratique au circuit équivalent formé par une cellule 26 sélectionnée (la ligne de mot WL associée présente une tension rendant ses commutateurs passants) et recevant via les lignes de bit BL et BLb des tensions de polarisation correspondant à Vin et Vinb. Autrement dit, le signal d’entrée in est amené à une cellule sélectionnée via les lignes de bit BL et BLb associées par l’action du contrôleur 22. Le point milieu 52 du pont diviseur correspond alors à la ligne de source SL connectée à la cellule considérée. L’inverseur 48 est un élément propre à recevoir un signal incident sur une entrée 48E et effectuer un calcul d’inversion logique pour émettre sur une sortie 48S un signal de sortie qui est l’inverse du signal incident. Ici, l’entrée 48E de l’inverseur 48 est connectée au point milieu 52 du pont diviseur 50 formé par les deux memristors M1 et M2. La sortie 48S de l’inverseur 48 donne le résultat de l’opération XNOR appliquée au signal d’entrée in et au poids W. Le fonctionnement du composant XNOR 42 est maintenant décrit en référence aux figures 7 et 8 qui représentent schématiquement respectivement les quatre cas possibles de fonctionnement du composant XNOR 42 et la valeur des tensions en sortie pour deux des quatre cas possibles. Dans cette figure, les signes de référence ne sont pas repris pour ne pas alourdir trop ces figures. Plus précisément, le cas en haut à gauche de la correspond au cas où le signal d’entrée in vaut 0 et la valeur du poids W est égal à 0. Dans un tel cas, comme expliqué précédemment, la première tension V in est strictement inférieure à la deuxième tension V inb , c’est-à-dire que V in inb (avec par exemple V in = gnd et V inb = Vdd). En outre, le premier memristor M1 est dans l’état bas LRS alors que le deuxième memristor M2 est dans l’état haut HRS. Du fait de la configuration, le memristor dans l’état haut HRS absorbe la quasi-totalité de la dynamique de tension, repoussant la tension V mid du point milieu 52 vers la tension à l’extrémité du memristor dans l’état bas LRS. En l’occurrence, cela signifie que la tension V mid du point milieu 52 est repoussée vers la première tension Vin comme représenté schématiquement par la courbe 54 sur la . Comme apparent sur cette figure 8, la tension du point milieu V mid est distinctement au-dessous de la moitié du potentiel d’alimentation . La sortie out de l’inverseur 48 est alors à 1. Cela montre que pour un signal in à 0 et pour un poids à 0, la sortie de l’inverseur 48 est alors à 1, ce qui correspond bien à XNOR(0,0) = 1. Le cas en bas à droite de la correspond au cas correspondant dans lequel le signal d’entrée in vaut 0 et la valeur du poids W est égal à 1. Dans un tel cas, par rapport au cas précédent, la seule différence est que le premier memristor M1 est dans l’état haut HRS alors que le deuxième memristor M2 est dans l’état bas LRS. Il en résulte que la tension du point milieu V mid est repoussée vers la deuxième tension V inb comme représenté schématiquement par la courbe 56 sur la . La sortie out de l’inverseur 48 est alors à 0. Cela montre que pour un signal in à 0 et pour un poids à 1, la sortie de l’inverseur 48 est alors à 1, ce qui correspond bien à XNOR(0,1) = 0. Les mêmes remarques s’appliquent pour les cas à droite sur la . Le cas du haut correspond un signal d’entrée in valant 1 (V in > V inb , avec par exemple V in = Vdd et V inb = Gnd) et un poids valant 0 (premier memristor M1 dans l’état bas LRS et deuxième memristor M2 dans l’état haut HRS) de sorte que la tension du point milieu V mid est repoussée vers la première tension V in , c’est-à-dire que . Il en résulte que la sortie out de l’inverseur 48 est à 0. Cela correspond bien à réaliser l’opération XNOR(1,0) = 0. Le cas du bas correspond à un signal d’entrée in valant 1 (V in > V inb ) et un poids valant 1 (premier memristor M1 dans l’état haut HRS et deuxième memristor M2 dans l’état bas LRS) de sorte que la tension du point milieu V mid est repoussée vers la deuxième tension V inb , c’est-à-dire que . Il en résulte que la sortie out de l’inverseur 48 est à 1. Cela correspond bien à réaliser l’opération XNOR(1,1) = 1. Les différents cas décrits conduisent bien à obtenir la table de vérité visible sur la , qui illustre bien que la sortie out de l’inverseur réalise une opération XNOR. Un tel composant XNOR 42 permet d’obtenir une sortie en tension qui ne présente pas la variabilité de résistance des memristors M1 et M2. La réduction de la variabilité provient de deux éléments complémentaires. Une première réduction de la variabilité est obtenue par utilisation du montage en différentiel des deux memristors M1 et M2. Néanmoins, au niveau du point milieu 52 du pont diviseur 50, le signal est encore sujet aux variabilités des memristors M1 et M2. De fait, la tension du point milieu dépend du ratio entre les valeurs des résistances des memristors M1 et M2, ce qui diminue la variabilité mais pas complètement. La deuxième réduction de variabilité est obtenue avec l’emploi de l’inverseur 48 comme cela apparaît en référence à la . Il en résulte que le signal en sortie de l’inverseur 48 n’est pas sensible aux variations de résistance des memristors. Selon l’exemple de la , l’unité de comptage 44 est formée par un pont capacitif 58. Comme indiqué précédemment, l’unité de comptage 44 est propre à compter le nombre de 1 dans une série de bits, c’est-à-dire à mettre en œuvre une opération de popcount. Un pont capacitif 58 est un ensemble de condensateurs 60 reliés en parallèle et reliés entre eux sur une de leurs bornes. En outre, selon l’exemple décrit, chaque condensateur 60 présente la même valeur de capacité. Chaque condensateur 60 est relié à un composant XNOR 42 qui lui est propre. De ce fait, la tension en sortie de l’unité de comptage 44 est proportionnelle au nombre de 1 en sortie des composants XNOR 42. La sortie 44S de l’unité de comptage 44 est reliée à l’unité de comparaison 46 qui sert à comparer une tension incidente à une tension de comparaison. Plus précisément, l’unité de comparaison 46 comporte deux éléments : un comparateur 62 et un générateur de tension de comparaison 64. La sortie de l’unité de comptage 44 est ainsi reliée à une entrée 62E1 du comparateur 62, l’autre entrée 62E2 du comparateur 62 étant relié au générateur de tension de comparaison 64. Selon l’exemple décrit, le générateur de tension de comparaison 64 est un deuxième pont capacitif 66 dont les entrées sont les inverses des composants XNOR 42 du premier pont capacitif 58. Pour cela, chaque condensateur 68 du deuxième pont capacitif 66 est relié à un inverseur 70 lui-même relié à un composant XNOR 42 respectif. Le générateur de tension de comparaison 64 génère ainsi une tension proportionnelle au nombre de 0 en sortie des composants XNOR 42. Le comparateur 62 compare ensuite les deux tensions provenant des deux ponts capacitifs 58 et 66, c’est-à-dire ici le nombre de 1 en sortie des composants XNOR 42 et le nombre de 0 en sortie des composants XNOR 42. Le comparateur 62 génère un « 1 » en sortie si nombre de 1 est supérieur au nombre de 0 et « 0 » dans le cas contraire. La sortie du comparateur 62 correspond à la sortie du neurone 24. Selon un autre exemple illustré par la , l’unité de comptage 44 est formée par un pont résistif 96 à N résistances 98 au lieu d’un pont capacitif. En outre, dans ce cas de la , le générateur de tension de comparaison 46 est également un pont résistif 100 comportant également N résistances 102. Ainsi, le fonctionnement est similaire à celui décrit pour le pont capacitif 56. Plus, précisément, il est ainsi obtenu un pont résistif 96 où un certain nombre x de résistances 98 sont soumises au potentiel d’alimentation VDD (ce qui correspond à une sortie à 1 pour le composant XNOR associé), les N-x autres résistances 98 étant soumises à la masse GND (ce qui correspond à une sortie à 0 pour le composant XNOR 42 associé). La tension obtenue est ainsi une image du ratio entre le nombre de composant XNOR 42 à la valeur 1 et le nombre de composant XNOR à la valeur 0. Cette approche a l’avantage de fonctionner avec toutes les mémoires résistives, mêmes celles qui ne peuvent pas fonctionner en mode capacitif. En variante, le générateur de tension de comparaison 64 est un générateur générant une tension de référence fixe. Typiquement, le générateur de tension de comparaison 64 pourra générer une tension correspondant à la moitié du potentiel d’alimentation, à savoir . Dans une telle variante, Le comparateur 62 génère comme valeur de sortie du neurone un « 1 » si le nombre de 1 en sortie des comparaisons XNOR 42 correspond à une tension supérieure à la tension de référence. A défaut, le comparateur 62 génère comme valeur de sortie du neurone un « 0 ». A ce stade, il peut être noté que l’utilisation proposée d’un pont capacitif 58 comme unité de comptage 44 dans le cas de cellules RRAM est originale. De fait, l’emploi de point capacitif pour un tel usage ne se retrouve dans l’état de la technique que dans le cas des mémoires vives statiques ou SRAM (qui vient de la dénomination anglaise correspondante de « Static Random Access Memory ») et notamment dans les deux articles suivants : un article de D. Bankmann et al. intitulé « An always-on 3.8 mµJ/86 % cifar 10 mixed-signal cnn processor with all memory on chip in 28-nm CMOS » publié en 2018 de la conférence ISSCC (International Solid - State Circuits Conference) organisée par l’IEEECC et un article de Hossein Valavi et al. intitulé « A Mixed-Signal Binarized Convolutional-Neural-Network Accelerator Integrating Dense Weight Storage and Multiplication for Reduced Data Movement » publié à l’occasion du symposium sur les circuits VLSI en 2018. Le premier article propose le montage de la . Comme précédemment, pour un neurone donné, les multiplications entre les entrées et les poids sont effectués à l’aide de portes XNOR et l’opération de popcount est effectuée à l’aide du pont capacitif : chaque porte XNOR est connectée à une capacité en sa sortie, et l’ensemble des capacités sont ensuite connectées entre elles à leur autre extrémité, formant ainsi le pont capacitif. Pour compter le nombre de ‘0’ en sortie du pont capacitif, un deuxième pont est construit à l’aide de portes XOR cette fois : la tension du deuxième pont est proportionnelle au nombre de ‘0’ en sortie des portes XNOR du premier pont. Ensuite, les tensions des deux ponts sont comparées par un comparateur générant une valeur ‘1’ à la sortie du neurone si la tension du premier pont est supérieure à celle du deuxième pont. L’application directe de la structure proposée par ce premier article à une mémoire RRAM requiert ainsi de lire les poids en RRAM et les entrées en SRAM ou RRAM pour acheminer chacune de ces valeurs lues vers le neurone capacitif. Cela nécessiterait un routage complexe en périphérie de la mémoire pour acheminer les poids stockés en RRAM et les entrées stockées en SRAM vers les neurones capacitifs. Cela n’est donc pas envisageable ou au moins beaucoup plus complexe que le présent cas. Le deuxième article, celui de Valavi et al., présente la même structure, mais en intégrant l’opération du XNOR et les capacités directement dans les cellules SRAM, gagnant ainsi en terme de bande passante. La illustre la structure de la cellule SRAM proposée dans cet article. L’ensemble des circuits en ligne en trait gras permet de calculer une opération XNOR entre une valeur d’entrée et le poids mémorisé dans la cellule SRAM, puis de charger la valeur de l’opération XNOR dans une capacité. L’application directe de la structure proposée ce deuxième article à une mémoire RRAM permet d’obtenir le montage de la . Toutefois, là encore, un tel montage n’est pas satisfaisant. En effet, ce circuit charge la capacité directement via le memristor, ce qui a pour effet de transférer la variabilité du memristor sur la charge de la capacité. De ce fait, le problème reste entier, la variabilité du memristor étant toujours un facteur limitant. De plus, l’ajout de deux transistors au sein de chaque cellule mémoire augmente la surface globale de la mémoire, de sorte que non seulement la variabilité est toujours gênante mais, en plus, le montage est plus encombrant. Par contraste, le présent neurone 24 permet de bénéficier des avantages d’un pont capacitif 58 (faible consommation notamment) tout en gérant astucieusement la grande variabilité des memristors comme expliqué précédemment en référence à la . En outre, comme représenté sur la , un tel neurone 24 est réalisable de manière très intégrée puisque le neurone 24 peut être réalisé physiquement sur seulement trois lignes 16 1 , 16 2 et 16 3 de la matrice de cellules 14. Un exemple d’une telle réalisation intégrée est maintenant décrit en référence aux figures 12 à 17. La représente une réalisation de l’unité de comptage 44 sur la première ligne 16 1 . La première ligne 16 1 forme donc le pont capacitif 58. Avant de décrire la première ligne 16 1 plus précisément, il convient d’expliquer qu’un memristor présente le fonctionnement de résistance programmable décrit précédemment avec un état bas LRS et un état haut HRS uniquement après une étape de formation. Une étape de formation consiste à appliquer une relativement forte tension (dite tension de forming) sur le memristor, typiquement une tension comprise entre 3 V et 4V selon les technologies utilisées. Autrement formulé, avant formation, un memristor est dans un état dit état vierge puis après formation présente le comportement précité avec les états haut HRS et bas LRS. Dans l’état vierge, le memristor présente un comportement capacitif. Dans la suite, un tel memristor est appelé « memristor vierge » pour le distinguer d’un memristor formé. La première ligne 16 1 représentée sur la est une ligne de cellules élémentaires 12 dans lesquelles chaque memristor est un memristor vierge MV1 et MV2. Une telle ligne 16 1 pourrait donc être qualifiée de ligne de cellules capacitives 2T2C en indiquant par « C » chaque memristor vierge MV1 et MV2. Pour clarifier le propos, les cellules élémentaires 14 de la première ligne 16 1 sont dénommées cellules capacitives 72. En outre, les deux commutateurs T1 et T2 de chaque cellule capacitive 68 sont connectés entre eux. Cela permet de mettre les deux memristors vierges MV1 et MV2 d’une même cellule capacitive 72 en parallèle. Il en résulte que la capacité d’une cellule capacitive 72 est deux fois plus grande que la capacité d’un seul memristor vierge MV1 ou MV2. L’ensemble des cellules capacitives 68 sont reliées à une même ligne de sortie 74. La ligne de sortie 74 est reliée au point milieu situé entre les deux memristors vierges MV1 et MV2. Une telle réalisation de l’unité de comptage 44 est avantageuse car elle est basée sur une ligne 16 1 de cellules mémoires standard prises avant l’étape de formation des memristors. Les seules modifications à apporter sont d’ajouter la ligne de sortie 74 et les connexions de chaque cellule capacitive 72 à cette ligne de sortie 74. Ces modifications se font simplement en modifiant le routage de l’architecture des cellules (plus communément appelée selon la dénomination anglaise correspondante de « layout ») sans aucun changement dans l’architecture elle-même qui est conservée. L’architecture des cellules est plus communément appelée selon la dénomination anglaise correspondante de « layout ». Ici, c’est bien le layout qui est inchangé. En outre, il sera expliqué ultérieurement qu’un tel agencement permet d’obtenir une procédure d’effacement des memristors vierges MV1 et MV2 qui est relativement simple à mettre en œuvre. En référence aux figures 13 à 19, il est expliqué comme réaliser la partie inversion du neurone 24 à l’aide des deuxième et troisième lignes 16 2 et 16 3 de la matrice de cellules 14. Avant de détailler l’adaptation de ces deuxième et troisième lignes 16 2 et 16 3 , il convient de préciser que les cellules mémoire 26 utilisent des commutateurs 32 et 34 qui sont généralement des transistors NMOS, c’est-à-dire des MOSFETs de type n. En outre, il peut être rappelé qu’un inverseur INV peut être réalisé à partir de transistors comme montré sur la . L’inverseur INV comporte deux transistors TR et TT en série branchés, le transistor de gauche TR étant relié à la masse GND et le transistor de droite TT étant relié au potentiel d’alimentation Vdd. En outre, le transistor de droite TT est connecté en diode. Dans une telle configuration, le transistor de gauche TR est usuellement appelé transistor de rappel ou plus souvent « pull-down transistor » en référence à la dénomination anglaise correspondante. Le transistor de droite TT est usuellement appelé transistor de tirage ou plus souvent « pull-up transistor ». L’entrée de l’inverseur INV est la grille du transistor de rappel TR et la sortie de l’inverseur INV est le point milieu des deux transistors TR et TT. Aussi, pour obtenir un inverseur à partir d’une cellule mémoire 26, deux montages peuvent être envisagés. Le premier montage est illustré sur la et le deuxième montage correspond à la . Dans le premier montage, les deux memristors M1 et M2 sont court-circuités à l’aide d’une piste de court-circuit P cc . Une telle approche implique de dimensionner le transistor de tirage TT pour être plus résistif que le transistor de rappel TR, pour obtenir un niveau bas de bonne qualité. Dans le deuxième montage, le transistor de tirage TT est toujours connecté en diode mais la piste de court-circuit P cc est différente. Au lieu d’être connectée pour court-circuiter les deux memristors, la piste de court-circuit P cc est agencée uniquement pour court-circuiter le memristor M1 du transistor de rappel TR. Par ailleurs, le deuxième memristor M2 est placé dans l’état haut HRS. Dans l’exemple décrit, le deuxième memristor M2 est à placer dans l’état haut HRS car l’électrode supérieure (plus communément appelée « top electrode » en référence à la dénomination anglaise correspondante) est connectée au point milieu de la structure 2T2R. Bien entendu, dans un montage où c’est l’électrode inférieure (« bottom electrode » selon la terminologie anglaise) qui est connectée au point milieu, il conviendrait de placer le deuxième memristor M2 dans l’état bas LRS. Une telle approche permet d’obtenir un transistor de rappel TR plus résistif sans rendre le transistor de tirage TT connecté en diode plus résistif. Dans un tel montage, il y a uniquement des modifications de connectiques et pas de l’architecture des cellules comme indiqué précédemment. Ces deux montages peuvent être intégrés dans la matrice de cellules 14 en étant implémenté sur une seule ligne 16 de cellules mémoires 26. Néanmoins, en référence à la , il est plus favorable de mettre deux inverseurs 48 et 76 en série comme cela va être expliqué dans ce qui suit. Le premier inverseur 48 et le deuxième inverseur 76 présentent chacun la structure décrite sur la , en notant chaque élément avec un « 1 » dans le signe de référence pour le premier inverseur 48 et un « 2 » pour le deuxième inverseur 76. Avec ces notations, ce sont les premiers memristors M11 et M21 qui sont en court-circuit respectivement dans le premier inverseur 48 et le deuxième inverseur 76. L’entrée 48E du premier inverseur 48 est destiné à être connectée à une ligne de source et est relié au premier transistor TR1 de cet inverseur. La sortie 48S du premier inverseur 48 est reliée à l’entrée 76E du deuxième inverseur 76 et par là au premier transistor TR2 du deuxième inverseur 76. La sortie 76S du deuxième inverseur 76 est destinée à être reliée à l’unité de comptage 44. Ainsi, dans cette configuration, cela implique que le neurone 24 présente deux inverseurs 48 et 76 en série pour chaque condensateur 60 du pont 58. Une telle configuration présente plusieurs avantages. Il convient de noter que l’entrée 48E du premier inverseur 48 permettant de réaliser l’opération XNOR est assez proche de la moitié du potentiel d’alimentation . Par conséquent, le signal en sortie du premier inverseur 48 n’offre pas forcément deux niveaux « 1 » et « 0 » très distants. La présence du deuxième inverseur 76 permettent de purifier le signal de sortie du premier inverseur 48 avec des niveaux haut et bas très éloignés. En outre, une telle configuration avec deux inverseurs 48 et 76 permet aussi de conserver les memristors MV1 et MV2 de l’unité de comptage 44 dans leur état vierge. De fait, il convient que la tension aux bornes de ces memristors vierges MV1 et MV2 ne dépassent pas la tension de forming. Avec la configuration proposée à deux inverseurs 44 et 76 en série, le premier inverseur 48 peut être alimenté avec une tension forte pour bien distinguer les niveaux hauts et bas, et le deuxième inverseur 76 peut être alimenté avec une tension suffisamment basse pour ne pas dépasser la tension de forming des memristors vierges MV1 et MV2 de l’unité de comptage 44. Enfin, une telle configuration peut aisément être réalisée comme cela va être montré en référence aux figures 17 à 19 qui illustrent comment en trois étapes successives, il est possible de passer de deux cellules mémoires avec des memristors vierges à des memristors dans l’état haut HRS. Cette illustration est réalisée également dans le cas où l’électrode supérieure des memristors est connectée au point milieu de la structure 2T2R. Dans chacune de ces étapes , la ligne de mot WL de l’unité de comptage 44 est mise à la masse GND, la grille des transistors des deux inverseurs 48 et 76 est mise au potentiel d’alimentation VDD et l’entrée 48E du premier inverseur 48 est à la masse GND. La première étape illustrée par la consiste à faire passer le deuxième memristor M12 du premier inverseur 48 de l’état vierge à l’état bas LRS. Pour cela, la sortie 48S du premier inverseur 48 est connectée à une tension V1 supérieure à la tension de forming en activant un interrupteur 78 relié à une première source de tension et la source TT1S du premier transistor de tirage TT1 est connectée à la masse GND. La deuxième étape illustrée par la consiste d’une part à faire passer le deuxième memristor M12 du premier inverseur 48 de l’état bas LRS à l’état haut HRS et d’autre part à faire passer le deuxième memristor M22 du deuxième inverseur 76 de l’état vierge à l’état bas LRS. Pour obtenir le passage de l’état bas LRS à l’état haut HRS, la sortie 48S du premier inverseur 48 est connectée à la masse GND en laissant l’interrupteur 78 activé mais en le connectant à la masse. En parallèle, la source TT1S du premier transistor de tirage TT1 est connectée au potentiel d’alimentation VDD. Le passage de l’état vierge à l’état bas LRS est quant à lui obtenu en connectant la sortie 76S du deuxième inverseur 76 à une tension V2 supérieure à la tension de forming en activant un interrupteur 80 relié à une deuxième source de tension. En parallèle, la source TT2S du deuxième transistor de tirage TT2 est connectée à la masse GND. La troisième étape illustrée par la consiste à faire passer le deuxième memristor M22 du deuxième inverseur 76 de l’état bas LRS à l’état haut HRS. Pour cela, la sortie 76S du deuxième inverseur 76 est connectée à la masse GND, et la source TT2S du deuxième transistor de tirage TT2 est connectée au potentiel d’alimentation VDD. En parallèle, les tensions aux bornes du premier inverseur 48 sont les mêmes que lors de la deuxième étape. Il est ainsi obtenu aisément la configuration de fonctionnement de deux inverseurs 48 et 76 à partir de deux cellules mémoires avec des memristors vierges. A travers la description des figures 12 à 19, il a été expliqué progressivement comment réaliser le neurone 24 à partir de seulement trois lignes 16 1 , 16 2 et 16 3 de la matrice de cellules 14. La représente le détail des circuits de ces trois lignes 16 1 , 16 2 et 16 3 connectées ensemble et connectées à leur environnement immédiat. Comme expliqué précédemment, la première ligne 16 1 permet d’obtenir l’unité de comptage 44, la deuxième ligne 16 2 permet d’obtenir un ensemble de deuxièmes inverseurs 76 et la troisième ligne 16 3 permet d’obtenir un ensemble de premiers inverseurs 48. Dans la , seuls les éléments extrêmes de chaque ligne 16, c’est-à-dire ceux correspondant à la première colonne 18 1 et la dernière colonne 18 n sont représentés. Comme indiqué précédemment, les autres lignes 16 4 à 16 N servent à stocker les poids du réseau de neurones. Dans la , seule la quatrième ligne 16 4 de l’ensemble de mémorisation 27 est représentée dans un souci d’alléger cette figure. En partant de la quatrième ligne 16 4 vers la première ligne 16 1 , la description peut être faite. Les entrées 48E des premiers inverseurs 48 sont connectées à une ligne de source SL respective provenant de la quatrième ligne 16 4 . Dans l’exemple de la , la première ligne de source SL 1 est donc reliée à l’entrée 48E du premier inverseur 48 de gauche et la dernière ligne de source SL n est reliée à l’entrée 48E du premier inverseur 48 de droite. En référence à la ou 6, cela signifie que les memristors M1 et M2 du composant XNOR 42 sont les memristors 28 et 30 d’une cellule mémoire 26 et que les premières tensions Vin et Vinb sont réalisées par la paire de ligne de bits complémentaires BL et BLb. Comme explicité précédemment, les sorties 48S des premiers inverseurs 48 sont reliées aux entrées 76E des deuxièmes inverseurs 76. Chaque sortie 76S d’un deuxième inverseur 76 est ensuite reliée à une cellule capacitive 72. Dans cette réalisation, cela implique que le neurone 24 présente deux inverseurs 48 et 76 en série pour chaque condensateur 60. Dans l’exemple proposé, l’alimentation des deux memristors vierges MV1 et MV2 est en parallèle pour que leur capacité s’additionne. Aussi, une sortie 76S d’un deuxième inverseur 76 est reliée à la fois à la source du premier transistor d’une cellule capacitive 72 et à la source du deuxième transistor de la même cellule capacitive 72. Il peut être rappelé ici que, par convention, dans le présent document, la notion de source et de drain est définie par rapport au sens de polarisation principal et qu’avec une polarisation inversée, drain et source sont échangés. La ligne de sortie 74 reliée à la sortie des condensateurs 60 est connectée au comparateur 62 qui se trouve en périphérie de la matrice de cellules 14. La ligne de sortie 74 est également connectée à un transistor de rappel 82 servant à effacer les memristors vierges MV1 et MV2 après calcul. Similairement, un transistor de rappel 84 est inséré sur chaque ligne de source SL pour pouvoir mettre celle-ci à un potentiel nul. Le fonctionnement de ces transistors de rappel 82 et 84 est décrit en référence à la qui illustre la configuration à utiliser pour effacer les memristors vierges MV1 et MV2. Ainsi, pour mettre en œuvre un tel effacement entre deux calculs, il suffit d’activer les transistors de rappel 82 et 84 tout en mettant les lignes de mot WL à la masse GND , tandis que la ligne de mot WL de l’unité de comptage 44 est mise au potentiel d’alimentation VDD. La présente implémentation du circuit neuromorphique 10 permet donc de cumuler plusieurs avantages. Comme la plupart des composants sont compris dans la surface occupée par la matrice de cellules 14, le circuit neuromorphique 10 est moins encombrant par rapport à une réalisation dans laquelle chaque neurone serait réalisé en périphérie de la matrice de cellules 14. Par ailleurs, le circuit neuromorphique 10 présente une bonne intégrabilité dans un ensemble de cellules mémoires 26. De fait, la conversion d’une matrice de cellules mémoires 26 initiale en le circuit neuromorphique 10 est relativement aisée puisque seule la connectique des métaux par le dessus est impactée. En outre, le circuit neuromorphique 10 utilise des ponts capacitifs 58 et 66 et dans chaque composant XNOR, le courant passe par une forte résistance. Il en résulte en une consommation réduite. De plus, le circuit neuromorphique 10 gagne en robustesse du fait qu’il permet de supprimer la variabilité des memristors 28 et 30. Le circuit neuromorphique 10 qui vient d’être décrit peut avantageusement être organisés en bancs pour effectuer des calculs en parallèle. Pour cela, par exemple, en référence à la , une approche peut être de stocker les poids d’un neurone sur une même ligne 16 de la matrice de cellules 14, d’activer la ligne de mot WL correspondant à cette ligne 16 et de récupérer le résultat en sortie du neurone 24. Plusieurs neurones 24 peuvent être calculés en parallèle en mettant sur la même ligne et à la suite les poids des différents neurones. La illustre un exemple pour le cas d’une implémentation pour trois neurones d’entrée reliés à deux neurones de sortie. Les éléments relatifs au calcul de la valeur donnée au premier neurone de sortie sont représentés en traits pleins tandis que les éléments relatifs au calcul de la valeur donnée au premier neurone de sortie sont représentés en traits pointillés. Pour augmenter le parallélisme, il est possible d’utiliser la configuration proposée à la . Dans cette configuration, les lignes de source SL sont coupées en milieu du la matrice de cellules 14 pour constituer plusieurs sous-ensembles 86 (mini-matrices) au sein de la matrice de cellules 14 et permettre un contrôle indépendant de ses sous-ensembles 86. Dans l’exemple représenté, le nombre n de sous-ensembles 86 est égal à 4. Les n sous-ensembles 86 partageant les mêmes lignes de mot WL constituent un groupe de sous-ensembles 88. Chaque sous-ensemble 86 est associé à un neurone 24. Ainsi, en activant une ligne de mot WL par groupe de sous-ensembles 88, il est possible de calculer 2n sorties de neurones 24 en parallèle. En complément, il pourrait être envisagé de couper les lignes de bits BL. Comme illustré par la , il peut être envisagé une configuration avec un parallélisme amélioré. Le circuit neuromorphique 10 comporte ainsi plusieurs ensembles 90 (deux dans le cas de la ) constitués chacun de plusieurs sous-ensembles 92 créés en interrompant les lignes de source SL au milieu de leur ensemble 90. Ainsi, en sélectionnant une ligne de mot WL par groupe d’ensemble 94, il est possible de calculer les sorties de chaque sous-ensemble 92 en parallèle. Les lignes de source SL de chaque sous-ensemble 92 peuvent être connectées à des lignes de source SL globales pour permettre l’écriture et la lecture des poids stockés de manière classique. Chacune des configurations décrites précédemment permettent d’effectuer des calculs conduisant à obtenir la sortie de plusieurs neurones 24 en parallèle et donc à augmenter les capacités calculatoires du circuit neuromorphique 10. Chacun des modes de réalisation qui viennent d’être décrits sont compatibles avec d’autres modes de réalisation du neurone 24. En particulier, il a été décrit que le composant XNOR 42 est réalisé par deux inverseurs 48 et 76 en série. Ces inverseurs peuvent, en variante, réaliser une autre opération logique. Ainsi, le premier inverseur 48 est remplacé par une unité logique réalisant une autre opération impliquant un basculement intermédiaire entre la masse GND et le potentiel d’alimentation VDD. Autrement formulé, le composant XNOR 42 comporte une unité logique 48 propre à effectuer une opération logique présentant un basculement entre une valeur basse et une valeur haute en fonction de la valeur de la ou des entrées de l’unité logique 48. Idéalement, la tension de basculement de l’opération réalisée par une telle unité logique est centrée autour de la moitié du potentiel d’alimentation, soit , à une marge près, par exemple 5% près. Cela signifie que l’unité logique 48 est, dans l’exemple décrit un inverseur ou une double inversion (ce qui revient à l’opération réalisée par un buffer).Par exemple, l’unité logique remplaçant le premier inverseur 48 est une porte XOR avec une entrée fixée à 0. XOR est l’appellation anglaise de l’opération logique « OU exclusif ». Selon un autre exemple, l’unité logique remplaçant le premier inverseur 48 est une porte NAND avec une entrée fixée à 1. NAND est l’appellation anglaise de l’opérande « non ET ». Selon encore un autre exemple, l’unité logique remplaçant le premier inverseur 48 est une porte NOR avec une entrée fixée à 0. NOR est l’appellation anglaise de l’opérande « non OU ». Selon encore une autre variante représentée sur la , l’unité de comptage 44 et le générateur de tension de comparaison 64 sont tous les deux formés par des ponts capacitifs et comportent chacune un condensateur de décalage CD. Il peut être noté que l’unité de comptage 44 est ici commandée par une chaîne de bits dont le nombre de 1 définit le seuil de comparaison et donc on peut utiliser n’importe quel seuil de comparaison. Le condensateur de décalage CD présente une capacité égale à C/2. Dans une telle configuration, le schéma électrique équivalent de l’unité de comptage 44 est celui de la . L’unité de comptage 44 correspond électriquement à un pont diviseur de capacité 114 comprenant m condensateurs 68 d’un côté et n-m condensateurs 68 d’un autre côté. Dans la notation précédente, n et m sont des entiers, m désignant le nombre de condensateurs 60 reliées à un composant XNOR 42 présentant une sortie correspondant à 1 et n le nombre total de condensateurs 60. Le point milieu 116 du pont diviseur de capacité 114 est relié à une borne du condensateur de décalage CD, l’autre borne du condensateur de décalage CD étant au potentiel d’alimentation VDD. Le pont diviseur de capacité 114 étant connecté d’une part au potentiel d’alimentation VDD et d’autre part à la masse GND, il vient : Où est l’interseuil en tension entre deux états correspondant à deux valeurs de m successives. Similairement, en référence à la , le générateur de tension de comparaison 64 correspond électriquement à un pont diviseur de capacité 110 comprenant m condensateurs 60 d’un côté et n-m condensateurs 60 d’un autre côté. Le point milieu 112 du pont diviseur de capacité 110 est relié à une borne du condensateur de décalage CD, l’autre borne du condensateur de décalage CD étant reliée à la masse GND. Le pont diviseur de capacité 110 étant connecté d’une part au potentiel d’alimentation VDD et d’autre part à la masse GND, avec les mêmes notations que précédemment, il vient : Des deux formules précédentes découlent deux constats, d’une part l’interseuil est tel que et d’autre part, il y a un décalage de 0,5 entre les niveaux de tension de l’unité de comptage 44 et ceux du générateur de tension de comparaison 46. Comme cela apparaît sur la figure schématique de la , cela permet d’avoir une valeur de comparaison adaptée pour chaque niveau. En variante, comme représenté sur la , il est possible d’utiliser une configuration dans laquelle les seuils sont stockés dans une matrice de cellule 118 et contrôlable par sélection de la ligne de mots WL souhaitée. Cela permet de générer de manière aisée une chaîne de bits désirée. Enfin, du point de vue de l’implémentation physique, il a été proposé d’intégrer le neurone 24 sur les trois lignes 16 1 , 16 2 et 16 3 de la matrice de cellules 14, notamment en utilisant des cellules RRAM pour obtenir deux composants : des memristors et des condensateurs. Cela permet effectivement un gain en terme de place. Toutefois, il est également possible de positionner le neurone 24 en périphérie de la matrice de cellules 14. Il peut aussi être envisagé de réaliser les cellules élémentaires 12 en utilisant des cellules 1T1R dans lesquelles les lignes de sources seraient connectées deux à deux pendant le calcul. Dans une telle configuration, deux cellules 1T1R se comportent pendant le calcul comme une cellule 2T2R. Par ailleurs, comme cela a été décrit, le circuit neuromorphique 10 est bien adapté pour une implémentation dans un circuit intégré plan, ou bidimensionnel (2D), c’est-à-dire un circuit réalisé sur un seul substrat, les composants électroniques de ce circuit étant réalisés les uns à côté des autres sur ce substrat. En variante, le circuit neuromorphique 10 est réalisé sur un circuit intégré tridimensionnel (3D) qui correspond à un circuit électronique dont les composants électroniques sont répartis dans plusieurs couches (niveaux ou substrats) distinctes superposées les unes au-dessus des autres et reliées électriquement entre elles. En particulier, il peut être envisagé des structures tridimensionnelles à nanofils empilés ou avec plusieurs tiers. Dans ce dernier cas, chaque ligne 16 de la matrice de cellules 14 a ses lignes de source SL connectées à un neurone situé sur le tiers supérieur. Il est alors possible d’envisager que les lignes de source SL soient connectées entre elles sur le troisième tiers. Il est également possible d’envisager des réalisations plus compactes du neurone 24 comme cela est illustré schématiquement par la . Par rapport à l’exemple représenté en , les deux inverseurs en série reliés au pont sont supprimés. La fonction inverseur est ici réalisée en utilisant les commutateurs associés aux mémoires MV1 et MV2 formant les éléments du pont. Dans cet exemple, les commutateurs sont des transistors de type NMOS. Il est ainsi prévu d’ajouter un transistor PMOS 120 en bout de chaque ligne de source SL. Pour chaque colonne, nous avons donc un transistor PMOS 120 dont le drain est relié à une alimentation Vdd et la grille reliée à la ligne de source SL de la colonne. La source du transistor PMOS 120 est reliée aux drains des commutateurs reliés aux memresistors MV1 et MV2 de cette même colonne, cette liaison constituant l’équivalent de la sortie d’un inverseur formé par le transistor PMOS 120 et les deux commutateurs NMOS ainsi montés en parallèle. Un autre transistor de type PMOS peut être prévu en bout de chaque ligne de source SL pour pouvoir réinitialiser l’état des éléments du pont, c’est-à-dire les memresistors MV1 et MV2. Ce transistor PMOS complémentaire permet, quand il est activé, de polariser à Vdd la ligne de source et par suite de polariser à gnd la sortie de l’inverseur formé par le transistor PMOS 120 et les commutateurs. Les deux électrodes de chaque memristor sont alors polarisés à Vdd lors de cette phase de réinitialisation des memristor. Comme seule la manière d’implémenter l’unité logique 48 est modifiée, le fonctionnement du circuit neuromorphique 10 de la est similaire à ce qui a été décrit précédemment. De plus, ce circuit neuromorphique 10 présente les mêmes avantages auxquels viennent s’ajouter les avantages qui suivent. Il n’est plus utile d’utiliser les lignes de cellules reliées aux lignes de mot WL 2 et WL 3 . Il est par contre nécessaire de prévoir, en dehors de la matrice de cellules, n transistors PMOS. La surface occupée par le neurone 24 est globalement plus faible. Cette variante est également intéressante parce que la réalisation physique de l’inversion par un « vrai inverseur CMOS » constitué d’un transistor PMOS et d’un transistor NMOS (les deux commutateurs en parallèle) permet de réaliser une inversion de meilleure qualité. De ce fait, cela permet d’obtenir une meilleure immunité par rapport à la variabilité des memristors, et donc une meilleure fiabilité des calculs effectués. De plus, il n’est plus utile de mettre en œuvre la procédure permettant de passer des cellules 2T2R non formées à deux inverseurs comme décrite en référence aux figures 17 à 19. Cela permet de gagner en simplicité de mise en œuvre du circuit neuromorphique 10. Circuit neuromorphique (10) propre à mettre en œuvre un réseau de neurones, le circuit neuromorphique (10) comprenant : - des lignes de mot (WL), - des paires de lignes de bits complémentaires (BL, BLb), - des lignes de source (SL), - un ensemble de cellules élémentaires (12) organisées selon une matrice (14) bidimensionnelle comportant des lignes (16) et des colonnes (18), l’ensemble de cellules élémentaires (12) comportant un ensemble de mémorisation (27) regroupant un ensemble de lignes (16) de cellules élémentaires (12), les cellules élémentaires (12) de l’ensemble de mémorisation (27) étant des cellules mémoires (26), les cellules mémoires (26) d’une même ligne (16) étant sélectionnables par une ligne de mot (WL), les cellules mémoires (26) d’une même colonne (18) étant reliées à une paire de lignes de bits complémentaires (BL, BLb) et une ligne de source (SL), chaque cellule mémoire (26) comprenant deux memristors (28, 30) et deux commutateurs (32, 34), chaque memristor (28, 30) étant relié à la même ligne de source (SL) et à un commutateur (32, 34) respectif, chaque memristor (28, 30) mémorisant respectivement un poids ou l’inverse du même poids en présentant respectivement des première et deuxième valeurs de résistances différentes, les commutateurs étant reliés, pour leur activation, à une ligne de mot (WL) et reliés respectivement à une paire de lignes de bits complémentaires (BL, BLb), - un circuit électronique implémentant un neurone (24) présentant une sortie et comportant : - un ensemble de composants logiques (42), chaque composant logique (42) présentant une unité logique (48) comprenant une entrée connectée à une ligne de source (SL) respective, l’unité logique (48) étant propre à effectuer une opération logique présentant un basculement entre une valeur basse et une valeur haute en fonction de la valeur de la ou des entrées de l’unité logique (48), chaque unité logique réalisant une fonction logique de type inverseur ou double inverseur, - une unité de comptage (44), l’unité de comptage (44) étant propre à compter le nombre de valeurs hautes ou basses en sortie des composants logiques (42), l’unité de comptage (44) étant un pont (58, 96), un pont (58, 96) étant un ensemble de mêmes éléments (60, 98) en parallèle et reliés entre eux sur une de leurs bornes à une sortie de l’unité de comptage, chaque élément (60, 98) étant relié à un composant logique (42) respectif et étant une résistance (98) ou un condensateur (60), - une unité de comparaison (46) comportant un comparateur (62) et un générateur de tension de comparaison (64), le comparateur (62) étant propre à comparer la sortie de l’unité de comptage (44) à la tension de comparaison générée par le générateur de tension de comparaison (64) pour émettre en sortie un signal dépendant de la comparaison et correspondant à la sortie du circuit électronique implémentant un neurone (24). Circuit neuromorphique selon la revendication 1, dans lequel chaque memristor (28, 30) comporte un état vierge, l’unité de comptage (44) étant une ligne (16) de cellules élémentaires (12), chaque cellule élémentaire (12) de l’unité de comptage (44) étant une cellule comprenant deux memristors dans l’état vierge (MV1, MV2) et deux commutateurs (T1, T2), chaque memristor dans l’état vierge (28, 30) étant connecté à l’autre memristor dans l’état vierge (MV1, MV2) et à un commutateur (T1, T2) respectif, les commutateurs (T1, T2) étant reliés entre eux. Circuit neuromorphique selon la revendication 1 ou 2, dans lequel chaque unité logique (48) comprend un inverseur formé à partir d’une cellule élémentaire (12) comprenant deux memristors (M1, M2) et deux commutateurs (TR, TT), chaque memristor (M1, M2) étant connecté à l’autre memristor (M1, M2) et à un commutateur (TR, TT) respectif, une piste de court-circuit (P cc ) étant agencée pour court-circuiter les deux memristors (M1, M2), un des commutateurs (T1, T2) étant relié à la masse et à l’entrée de l’unité logique pour sa commande et l’autre commutateur étant relié à un potentiel d’alimentation et monté en diode. Circuit neuromorphique selon la revendication 1 ou 2, dans lequel chaque unité logique (48) comprend un inverseur formé à partir d’une cellule élémentaire (12) comprenant deux memristors (M1, M2) et deux commutateurs (TR, TT), chaque memristor (M1, M2) étant connecté à l’autre memristor (M1, M2) et à un commutateur (TR, TT) respectif, un premier commutateur (TR) étant relié à la masse et à l’entrée de l’unité logique pour sa commande et le deuxième commutateur (TT) étant relié à un potentiel d’alimentation et monté en diode, une piste de court-circuit (P cc ) étant agencée pour court-circuiter le memristor (M1) relié au premier commutateur (TR). Circuit neuromorphique selon l’une quelconque des revendications 1 à 4, comprenant un premier contrôleur (20) permettant de sélectionner les cellules élémentaires d’une ligne qui sont reliées à une même ligne de mots (WL), et comprenant un deuxième contrôleur reliés aux paires de lignes de bit et permettant d’appliquer sur chaque paire de ligne de bits des tensions différentes et symétriques par rapport à une tension milieu, la tension appliquée sur une ligne de bit étant supérieure ou inférieur à celle appliquée sur la ligne de bit complémentaire associée selon la valeur d’un signal d’entrée, chaque signal d’entrée correspondant à une entrée d’une synapse reliée audit neurone. Circuit neuromorphique selon la revendication 5, dans lequel l’ensemble formé par chaque unité logique (48) est réalisé à partir d’au moins une ligne (16 2 , 16 3 ) de cellules élémentaires (12) n’appartenant pas à l’ensemble de mémorisation (27). Circuit neuromorphique selon la revendication 2, dans lequel chaque unité logique correspond à un inverseur (76) formé desdits commutateurs de chaque cellule élémentaire (12) de l’unité de comptage (44) et d’un transistor PMOS (120) dont le drain est relié à une tension d’alimentation (Vdd), la grille est reliée à une ligne de source SL et la source est reliée aux drains desdits commutateurs. Circuit neuromorphique selon l’une quelconque des revendications 1 à 7, dans lequel le générateur de tension de comparaison (64) est un générateur de tension fixe. Circuit neuromorphique selon l’une quelconque des revendications 1 à 8, dans lequel le générateur de tension de comparaison (64) est un deuxième pont (66, 100) présentant les mêmes éléments (68, 102) que l’unité de comptage (44), chaque élément (68, 102) du deuxième pont (66, 100) étant relié à un inverseur (70) connecté à une unité logique (42) respective. Circuit neuromorphique selon la revendication 9, dans lequel les éléments des deux ponts (58, 66) sont des condensateurs (68) présentant la même capacité, le générateur de tension de comparaison (64) et l’unité de comptage (44) comportant un condensateur de décalage (CD), le condensateur de décalage (CD) présentant une capacité égale à la moitié de la capacité d’un condensateur (60, 68) d’un des deux ponts (58, 66). Circuit neuromorphique selon l’une quelconque des revendications 1 à 10, dans lequel l’opération logique effectuée par chaque unité logique (48) est choisie parmi : un ou-exclusif avec une entrée fixée à 0, une inversion, un non-et avec une des deux entrées fixées à 1, un non-ou avec une des deux entrées fixées à 0. Circuit neuromorphique selon l’une quelconque des revendications 1 à 11, dans lequel le circuit neuromorphique comporte des transistors de rappel (82, 84), un des transistors de rappel (82) étant relié à l’ensemble des éléments (60, 98) de l’unité de comptage (44) et les autres transistors de rappel (84) étant reliés à une ligne de source (SL) respective, les transistors de rappel (82, 84) étant propres à effacer les éléments (60, 68, 98, 102). Circuit neuromorphique selon l’une quelconque des revendications 1 à 12, dans lequel le circuit neuromorphique (10) comporte plusieurs ensembles distincts de cellules élémentaires (12) propres à fonctionner en parallèle. Circuit neuromorphique selon la revendication 13, dans lequel les lignes de sources (SL) présentent plusieurs portions, des portions de ces lignes étant spécifiques à un ensemble de cellules élémentaires (12). Circuit neuromorphique selon l’une quelconque des revendications 1 à 14, dans lequel le circuit neuromorphique (10) est un circuit intégré tridimensionnel.