Brevet FR3140975A1 — publié le 20240419

Circuit électronique à base de cellules RRAM Ce circuit électronique effectue des opérations de calcul binaire, et comprend des lignes de mot, de bit et de source, et des cellules mémoire organisées en rangées et colonnes, les cellules d’une même rangée étant sélectionnables par au moins une ligne de mot, celles d’une même colonne étant reliées à une paire de lignes de bit complémentaires et au moins une ligne de source. Chaque cellule mémoire comporte au moins une paire de memristors et au moins une paire de commutateurs, chaque memristor d’une cellule étant connecté à un commutateur et relié à la même ligne de source lors de chaque opération de calcul, chaque paire de memristors mémorisant une valeur binaire ; les commutateurs étant reliés, pour leur activation, à une ligne de mot et à une paire de lignes de bit complémentaires, les deux commutateurs d’une paire étant reliés à une même ligne de mot. Il comprend un module de lecture, utilisé lors de chaque opération de calcul et comportant : - une unité logique pour chaque colonne, chacune comprenant une borne d’entrée connectée à une ligne de source pour recevoir une valeur d’entrée, dite valeur de colonne, l’unité logique basculant entre des valeurs basse et haute, en fonction d’une comparaison de la valeur de colonne avec une valeur de seuil de basculement ; et - une unité de modification, pour au moins une unité logique et en fonction de l’opération de calcul, d’une différence entre la valeur de colonne et ladite valeur de seuil. Circuit électronique à base de cellules RRAM La présente invention concerne un circuit électronique propre à mettre en œuvre des opérations de calcul fournissant chacune une sortie binaire. L’invention concerne tout type d’application utilisant des opérations appliquées à des opérandes binaires, notamment des applications utilisant des réseaux de neurones artificiels binaires, également appelés BNN (de l’anglais Binary Neural Network ). Un réseau de neurones est généralement 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 à la suivante par une pluralité de synapses. Un poids synaptique est associé à chaque synapse. C’est un nombre, tel qu’un nombre binaire, ou encore une distribution, qui prend des valeurs positives comme négatives. Dans le cas d’une couche dense, 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 et suivie d’une activation via une fonction d’activation. 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. De telles architectures matérielles dédiées visent plus généralement à effectuer efficacement des opérations appliquées à des opérandes binaires. 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 synapses de réseaux de neurones sur la base d’une technologie de type CMOS (de l’anglais 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. Des exemples d’une telle implémentation sont proposés dans les articles suivants : - « A Fully Integrated Analog ReRAM Based 78.4TOPS/W Compute-In-Memory Chip with Fully Parallel MAC Computing » de Q. Liu et al. (2020) ; - « A 1Mb Multibit ReRAM Computing-In-Memory Macro with 14.6ns Parallel MAC Computing Time for CNN Based AI Edge Processors » de C. Xue et al. (2019) ; - « A 22nm 4Mb 8b-Precision ReRAM Computing-in-Memory Macro with 11.91 to 195.7TOPS/W for Tiny AI Edge Devices » de C. Xue et al. (2021) ; - « A 16Mb dual-mode ReRAM macro with sub-14ns computing-in-memory and memory functions enabled by self-write termination scheme » de W. Chen et al. (2017) ; et - « Embedded 1-Mb ReRAM-Based Computing-in-Memory Macro With Multibit Input and Weight for CNN-Based AI Edge Processors » de C. Xue et al. (2019). Selon ces articles, l’approche consiste à stocker les poids d’un neurone au sein d’une colonne de cellules mémoire RRAM ou ReRAM (de l’anglais Resistive Random-Access Memory ), et d’appliquer les entrées (activations) sur les lignes de mot, généralement notées WL (de l’anglais Word Line ), de cette colonne (une tension positive étant appliquée sur une ligne de bit associée), généralement notée BL (de l’anglais Bit Line ). Les tensions d’entrées peuvent être binaires (transistors d’accès ouvert ou fermé), ou bien prendre plusieurs valeurs possibles dans le cas d’entrées multi-bits. Un poids égal à 1 est généralement codé par un état de faible résistance, noté LRS (de l’anglais Low Resistance State ), et un poids égal à 0 par un état de forte résistance, noté HRS (de l’anglais High Resistance State ). Si l’entrée correspondant à un poids donné est égale à 1, il en résultera - par la loi d’Ohm - un courant au sein de la cellule porteuse de la multiplication entre l’entrée et le poids. Si le poids est égal à 1, le courant est fort (car la résistance est faible), et si le poids est égal à 0, le courant est faible. Les cellules étant connectées via des lignes de source, généralement notées SL (de l’anglais Source Line ), les courants s’additionnent via la loi de Kirchhoff, résultant ainsi en une opération MAC (de l’anglais Multiply And Accumulate ) bien connue pour l’inférence des réseaux de neurones. Un circuit de comparateur calcule la sortie effective du neurone en comparant le résultat de l’opération MAC à une valeur de référence. Cependant, ces circuits neuromorphiques souffrent aujourd’hui de la trop grande variabilité des cellules mémoire résistives, en raison de la faible maturité de leur fabrication. Par conséquent, ces approches sont limitées en terme de nombre d’opérandes d’une opération MAC, typiquement à 9 entrées. De plus, toujours en raison de la forte variabilité des cellules mémoire, ces approches nécessitent une circuiterie complexe de comparaison de l’opération MAC aux différentes valeurs de seuil possibles, résultant en une surface et une consommation importantes. Une autre approche est présentée dans l’article « Efficient and Robust Nonvolatile Computing-In-Memory Based on Voltage Division in 2T2R RRAM With Input-Dependent Sensing Control » de L. Wang et al. (2021). Elle consiste à effectuer l’accumulation via un pont résistif et non une accumulation de courant. Cette approche utilise des colonnes de cellules mémoire RRAM résultant de la fusion de la ligne de source SL de deux colonnes (structure 2T2R pour 2 Transistors et 2 Résistances, une paire de commutateurs et une paire de memristors). Chaque colonne présente ainsi une paire de lignes de bit complémentaires BL, BLb et une ligne de source SL. Deux résistances sont utilisées pour coder chaque poids en différentiel (HRS-LRS ou LRS-HRS). Une tension est ensuite appliquée entre les lignes de bit complémentaires BL, BLb de la colonne, créant ainsi un pont résistif entre les résistances des côtés gauche et droit de la colonne. La tension résultante correspond au résultat de l’opération MAC. Bien que permettant une plus grande robustesse face à la variabilité des neurones, cette approche présente les mêmes inconvénients que la précédente en terme de complexité et de surface des comparateurs nécessaires en bas de colonne, et semble toujours limitée à 9 entrées. Enfin, une dernière approche est présentée dans l’article « Low-Overhead Implementation of Binarized Neural Networks Employing Robust 2T2R Resistive RAM Bridges » de M. Ezzadeen et al. (2021). Elle consiste à appliquer les entrées en différentiel sur les lignes de bit complémentaires BL, BLb (et non plus sur les lignes de mot WL), en activant une ligne de mot respective de la matrice de cellules mémoire. Les poids sont codés de manière différentielle dans des cellules 2T2R. Il en résulte une structure en pont résistif au sein de chaque cellule 2T2R, résultant en une opération de ou-exclusif, ou XOR, en sortie de chaque ligne de source SL. L’opération de multiplication binaire étant équivalente à une opération de non-ou-exclusif, ou XNOR, un simple inverseur en bout de ligne de source SL permet de produire le résultat de l’opération XNOR. L’accumulation est effectuée par un pont capacitif, en connectant chaque sortie d’inverseur à une capacité, et en connectant toutes les capacités d’autre part ensemble pour former le pont. Cette approche a pour avantage d’être extrêmement robuste face à la variabilité des cellules (grâce à l’utilisation de capacités, technologie mature) malgré un faible impact surfacique (simple inverseur par colonne). Par sa robustesse, elle permet également d’implémenter de très grands neurones (jusqu’à 513 entrées), en réalisant en une fois (un même cycle de calcul) la sommation des contributions d’un grand nombre d’entrées dans la mesure où toutes les colonnes sont activées en même temps pour faire le calcul pour un neurone associé à une rangée de la matrice. En outre, les cellules mémoire codant les poids sont en pratique plus compactes, car il suffit d’avoir une unique cellule 2T-2R et une unique ligne de mot par rangée. Cependant, un seul neurone peut réaliser un calcul lors d’un cycle donné, car une seule rangée de la matrice de cellules mémoire est activée à chaque calcul. Selon les contextes applicatifs, la solution « un neurone par rangée » ou « un neurone par colonne » sera à privilégier, notamment en fonction du nombre d’entrées de chaque neurone, en fonction du nombre de neurones par couche, de la surface disponible, etc… Il existe donc un besoin pour un circuit électronique permettant notamment 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émoire. A cet effet, l’invention a pour objet un circuit électronique propre à mettre en œuvre des opérations de calcul fournissant chacune une sortie binaire, le circuit comprenant : - des lignes de mot ; - des paires de lignes de bit complémentaires ; - des lignes de source ; - un ensemble de cellules mémoire organisées selon une matrice comportant des rangées et des colonnes, les cellules mémoire d’une même rangée étant sélectionnables par au moins une ligne de mot, les cellules mémoire d’une même colonne étant reliées à une paire de lignes de bit complémentaires et au moins une ligne de source ; chaque cellule mémoire comportant au moins une paire de memristors et au moins une paire de commutateurs, chaque memristor d’une cellule mémoire respective étant connecté à un commutateur respectif et relié à la même ligne de source lors de chaque opération de calcul, chaque paire de memristors mémorisant respectivement une valeur binaire 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 respective et reliés respectivement à une paire de lignes de bit complémentaires, les deux commutateurs d’une paire respective étant reliés à une même ligne de mot ; - un module de lecture mis en œuvre lors de chaque opération de calcul, le module de lecture comportant : + une unité logique pour chaque colonne, chaque unité logique comprenant au moins une borne d’entrée connectée à une ligne de source respective pour recevoir une valeur d’entrée dite valeur de colonne, l’unité logique étant propre à effectuer une opération logique présentant un basculement entre une valeur basse et une valeur haute en fonction d’une comparaison de la valeur de colonne par rapport à une valeur de seuil de basculement, lors de l’opération de calcul, et + une unité de modification propre à modifier, pour au moins une unité logique et en fonction de l’opération de calcul souhaitée, une différence entre la valeur de colonne et la valeur de seuil de basculement. Avec le circuit électronique selon l’invention, le module de lecture comportant une unité logique pour chaque colonne et l’unité de modification apte à modifier, pour au moins une unité logique et en fonction de l’opération de calcul, la différence entre la valeur de colonne et la valeur de seuil, permet de déterminer plus efficacement une valeur résultante correspondant à la tension de la ligne de source respective. De préférence, chaque cellule mémoire comporte deux paires de memristors et deux paires de commutateurs, avec une première paire de commutateurs reliée à une première ligne de mot assignée à une entrée, et respectivement une deuxième paire de commutateurs reliée à une deuxième ligne de mot assignée à l’inverse de ladite entrée ; et avec une première paire de memristors associée à la première paire de commutateurs et mémorisant un poids synaptique, et respectivement une deuxième paire de memristors associée à la deuxième paire de commutateurs et mémorisant l’inverse du même poids synaptique. Selon cette implémentation astucieuse, chaque cellule mémoire permet alors d’effectuer directement une opération de non-ou-exclusif, ou XNOR, entre une entrée et le poids synaptique correspondant d’un neurone respectif, et une valeur d’inférence dudit neurone est alors obtenue directement à partir de la valeur résultante correspondant à la tension de la ligne de source respective, ou bien à partir des valeurs résultantes correspondant aux tensions des lignes de source respectives lorsque les poids synaptiques dudit neurone sont encodés sur plusieurs colonnes de l’ensemble de cellules mémoire en forme matrice. Suivant d’autres aspects avantageux de l’invention, le circuit électronique comprend une ou plusieurs des caractéristiques suivantes, prises isolément ou suivant toutes les combinaisons techniquement possibles : - l’unité de modification est propre à modifier la différence entre la valeur de colonne et la valeur de basculement pour une unité logique respective, en commandant une modification des tensions complémentaires appliquées sur la paire de lignes de bit complémentaires pour la colonne associée à ladite unité logique ; - l’unité de modification est propre à modifier la différence entre la valeur de colonne et la valeur de seuil pour une unité logique respective, en commandant une modification de la valeur de seuil de ladite unité logique ; ladite valeur de seuil étant de préférence modifiée via un changement de la tension d’alimentation de ladite unité logique et/ou via un changement de la tension de polarisation d’une grille arrière d’au moins un transistor de ladite unité logique ; - l’unité de modification est propre à modifier, de manière incrémentale selon un pas d’incrémentation prédéfini, ladite différence entre la valeur de colonne et la valeur de seuil de basculement, pour déterminer - parmi une pluralité de valeurs possibles prédéfinies - une valeur résultante correspondant à la tension de la ligne de source respective correspondant à ladite valeur de colonne ; le pas d’incrémentation dépendant de ladite pluralité de valeurs possibles ; - le module de lecture comporte en outre une unité de mémorisation pour au moins une colonne, chaque unité de mémorisation étant propre à stocker la valeur résultante déterminée pour la colonne respective, dans l’attente de la détermination de toutes les valeurs résultantes pour un groupe respectif de plusieurs colonnes ; chaque unité de mémorisation comportant de préférence un registre de bits pour stocker sous forme binaire ladite valeur résultante déterminée ; - le module de lecture comporte en outre une unité d’extinction pour chaque colonne, chaque unité d’extinction étant propre - après détermination de la valeur résultante pour la colonne respective et dans l’attente de la détermination de toutes les valeurs résultantes pour un groupe respectif - à commander l’application de la même tension à la paire de lignes de bit complémentaires pour la circulation d’un courant sensiblement nul dans la ligne de source de la colonne respective ; - chaque cellule mémoire comporte deux paires de memristors et deux paires de commutateurs ; - une première paire de commutateurs est reliée à une première ligne de mot assignée à une entrée, et respectivement une deuxième paire de commutateurs est reliée à une deuxième ligne de mot assignée à l’inverse de ladite entrée ; et dans lequel une première paire de memristors est associée à la première paire de commutateurs et mémorisant une valeur binaire, et respectivement une deuxième paire de memristors est associée à la deuxième paire de commutateurs et mémorisant l’inverse de la même valeur binaire ; - chaque cellule mémoire comporte une seule paire de memristors et une seule paire de commutateurs, chaque paire de memristors mémorisant respectivement un poids synaptique ; - l’opération logique effectuée par l’unité logique est une inversion, et l’opération de calcul associée est choisie parmi : une opération de calcul neuronal, telle que l’opération MAC ; une opération ET ; une opération OU ; une opération Majorité ; - la valeur du seuil de basculement dépend de l’opération de calcul associée ; lorsque l’opération de calcul associée est l’opération ET ou l’opération OU, la valeur du seuil de basculement étant de préférence à un pas de tension d’une tension de ligne bit correspondante, la tension de ligne bit correspondante étant l’une des tensions de lignes de bit complémentaires pour l’opération ET et l’autre desdites tensions pour l’opération OU, le pas de tension vérifiant l’équation suivante : où P réprésente le pas de tension ; ΔBL représente le différentiel de tension entre la tension de la ligne de bit et la tension de la ligne de bit complémentaire, et OPD représente le nombre d’opérandes auxquelles l’opération de calcul est appliquée ; lorsque l’opération de calcul associée est l’opération Majorité, la valeur du seuil de basculement étant de préférence une valeur médiane des tensions de lignes de bit complémentaires ; - le module de lecture comporte en outre une unité de combinaison pour au moins une colonne, chaque unité de combinaison étant propre à combiner les résultats d’opérations logiques effectuées successivement par une unité logique respective, pour mettre en œuvre une opération logique combinée ; chaque unité de combinaison comportant de préférence une bascule connectée en sortie de l’unité logique respective ; l’opération logique combinée étant de préférence encore choisie parmi le groupe consistant en : une opération de ou-exclusif et une opération de non-ou-exclusif ; - chaque cellule mémoire d’une colonne respective comprend au moins une paire de sous-cellules, chaque sous-cellule comportant un memristor et un commutateur, chaque memristor d’une sous-cellule respective étant connecté à une ligne de source et à un commutateur respectifs, les memristors de chaque paire de sous-cellules mémorisant respectivement une valeur binaire 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 respective et reliés respectivement à une paire de lignes de bit complémentaires, les deux commutateurs d’une paire respective de sous-cellules étant reliés à une même ligne de mot ; les deux lignes de source associées à une paire respective de sous-cellules étant connectées entre elles via un commutateur auxiliaire lors de chaque opération de calcul et formant alors la même ligne de source à laquelle chaque memristor d’une cellule mémoire respective est relié lors de chaque opération de calcul ; - le circuit électronique est un circuit neuromorphique propre à mettre en œuvre un réseau de neurones à sortie binaire, chaque cellule mémoire étant associée à un poids synaptique respectif d’un neurone, et les lignes de mot étant aptes à recevoir des tensions d’entrée lors d’une opération de calcul neuronal ; - le circuit électronique comprend un premier contrôleur permettant de sélectionner les cellules mémoire d’une rangée qui sont reliées à une même ligne de mot, et comprenant un deuxième contrôleur relié aux paires de lignes de bit et permettant d’appliquer sur chaque paire de ligne de bit 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 ; - le circuit électronique comporte plusieurs ensembles distincts de cellules mémoire propres à fonctionner en parallèle. - chaque unité logique réalise une fonction logique de type inverseur ; - chaque unité logique étant de préférence un simple inverseur ; le simple inverseur comportant de préférence encore seulement deux transistors. Ces caractéristiques et avantages de l’invention apparaîtront plus clairement à 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 circuit électronique, selon l’invention, propre à mettre en œuvre des opérations de calcul fournissant chacune une sortie binaire, le circuit comprenant des lignes de mot, des paires de lignes de bit complémentaires, des lignes de source, un ensemble de cellules mémoire organisées selon une matrice comportant des rangées et des colonnes, chaque cellule mémoire comportant au moins une paire de memristors et au moins une paire de commutateurs, et un module de lecture mis en œuvre lors de chaque opération de calcul, le module de lecture comportant une unité logique pour chaque colonne, chaque unité logique effectuant une opération logique avec basculement entre une valeur basse et une valeur haute en fonction d’une comparaison d’une valeur de colonne par rapport à une valeur de seuil de basculement, et une unité de modification, pour au moins une unité logique et en fonction de l’opération de calcul, d’une différence entre la valeur de colonne et la valeur de seuil de basculement ; la est une représentation schématique d’une cellule mémoire respective selon un premier exemple de réalisation, où elle comporte deux paires de memristors et deux paires de commutateurs ; la est un graphe montrant l’effet de la variabilité des valeurs des résistances des états d’un memristor ; la est une vue schématique illustrant une opération XNOR effectuée via la cellule mémoire de la ; la est une représentation schématique d’une unité logique respective de la , et de la tension en sortie de ladite unité logique en tenant compte de l’effet de variabilité représenté à la , pour un exemple à cinq rangées de cellules mémoire ; la est une représentation schématique illustrant la modification, pour l’unité logique de la , de la différence entre la valeur de colonne et la valeur de seuil de basculement ; la est une représentation du circuit électronique selon l’invention avec les cellules mémoire de la , dans un exemple où le circuit électronique forme un circuit neuromorphique mettant en œuvre un réseau de neurones à sortie binaire, chaque cellule mémoire étant associée à un poids synaptique respectif d’un neurone, et les lignes de mot étant aptes à recevoir des tensions d’entrée lors d’une opération de calcul neuronal ; la est une représentation schématique du circuit électronique selon l’invention avec une implémentation particulière d’un contrôleur des paires de lignes de bit complémentaires, propre à réinitialiser une valeur de colonne respective après détection par l’unité logique d’un basculement pour ladite colonne ; la est une représentation schématique du circuit électronique selon l’invention et d’un chronogramme associé, le circuit comportant en outre un registre en sortie de chaque unité logique, chaque registre étant propre à transcrire sous forme binaire le résultat de l’opération de calcul pour la colonne, en enregistrant - jusqu’à l’atteinte de la valeur résultante correspondant au résultat de l’opération de calcul - chaque valeur successive en sortie de l’unité logique correspondante, comme illustré sur le chronogramme ; la est une représentation schématique d’une cellule mémoire respective selon un deuxième exemple de réalisation, où elle comporte une seule paire de memristors et une seule paire de commutateurs ; la est une vue analogue à celle de la , représentant en outre des exemples de seuil de basculement, lorsque l’opération de calcul effectuée est l’opération ET logique, ou respectivement l’opération OU logique ; et la est une représentation schématique du circuit électronique selon l’invention, le circuit comportant en outre une bascule en sortie de chaque unité logique, chaque bascule étant propre à réaliser une combinaison de résultats d’opérations logiques effectuées successivement par une unité logique respective, pour mettre en œuvre une opération logique combinée, telle qu’une opération de ou-exclusif ou une opération de non-ou-exclusif. Il est à noter que l’expression « propre à » suivie d’un verbe est considérée équivalente à l’expression « configuré pour » suivie du même verbe. L’expression « propre à » sera alors au besoin remplaçable par l’expression « configuré pour », sans que cela ne modifie le contenu et la teneur de la présente invention. Sur la , un circuit électronique 10 est propre à mettre en œuvre des opérations de calcul fournissant chacune une sortie binaire. Les opérations de calcul effectuées par le circuit électronique 10 sont par exemple des opérations de calcul neuronal, telles que des opérations de comptage du nombre de 1 dans une série de bits (de l’anglais popcount ), voire des opérations MAC (de l’anglais Multiply And Accumulate ) bien connues pour l’inférence des réseaux de neurones ; des opérations ET sur des opérandes binaires ; des opérations OU sur des opérandes binaires ; des opérations Majorité parmi des opérandes binaires. Le circuit électronique 10 comprend un ensemble de cellules mémoire 12, c’est-à-dire une pluralité de cellules mémoire 12, les cellules mémoire 12 étant organisées selon une matrice 14 bidimensionnelle comportant des rangées 16 et des colonnes 18. En complément, le circuit électronique 10 comporte plusieurs ensembles distincts de cellules mémoire 12 propres à fonctionner en parallèle, comme illustré notamment dans l’exemple de la . La matrice 14 sera désignée sous le terme de matrice de cellules 14 dans la suite de la description. Une cellule mémoire 12 a les coordonnées (i,j) lorsque ladite cellule mémoire 12 est positionnée au croisement de la i-ième rangée 16 i et de la j-ième colonne 18 j avec i et j deux entiers. Dans l’exemple de la , le nombre de rangées 16 et de colonnes 18 est égal à N, de sorte que les indices i et j sont compris entre 1 et N. Dans l’exemple de la , il a été représenté une matrice de cellules 14 pour laquelle N est égal à 9. En variante, le nombre de rangées 16 et de colonnes 18 peut bien entendu être différent. Plus généralement, dans l’exemple de la , le nombre de rangées 16 est égal à n et respectivement le nombre de colonnes 18 est égal à m, de sorte que l’indice i est compris entre 1 et n, et respectivement l’indice j est compris entre 1 et m. Le circuit électronique 10 comprend également des lignes de mot WL (visibles sur les figures 2, 7 et 10), des paires de lignes de bit complémentaires BL et BLb, des lignes de source SL et deux contrôleurs 20 et 22. Le circuit électronique 10 comprend également un module de lecture 24 mis en œuvre lors de chaque opération de calcul, qui sera décrit plus en détail dans la suite de la description. Dans les notations précédentes, une ligne de mot est référencée WL (de l’anglais W ord L ine ) ; les lignes de bit complémentaires BL et BLb utilisent le sigle BL (de l’anglais Bit Line ) et les lignes de source sont référencées avec le sigle SL (de l’anglais Source Line ). Dans l’exemple de la , chaque cellule mémoire 12 est connectée à une ligne d’entrée IN respective, une ligne de source SL respective et une paire respective de lignes de bit complémentaires BL et BLb. Chaque ligne d’entrée IN est propre à recevoir ou à sélectionner un opérande auquel l’opération de calcul est à appliquer. Chaque ligne d’entrée IN est par exemple propre à recevoir une valeur d’entrée pour l’opération de calcul. Chaque ligne d’entrée IN est elle-même connectée à une ligne de mot WL respective ou bien à une paire respective de lignes de mot complémentaires WL et WLb, en fonction de la topologie des cellules mémoire 12. Dans les exemples des figures 2, 4 et 7, chaque ligne d’entrée IN est connectée à une paire respective de lignes de mot complémentaires WL et WLb. Dans l’exemple de la , chaque ligne d’entrée IN est connectée à une seule ligne de mot WL respective. Chaque cellule mémoire 12 d’une même rangée 16 partage la même ligne d’entrée IN, elle-même connectée à une ligne de mot WL respective ou bien à une paire respective de lignes de mot complémentaires WL et WLb, de sorte que les lignes d’entrée IN, et respectivement les lignes de mot WL, WLb, peuvent également être indexées avec l’indice i. Ainsi, la première ligne d’entrée IN, c’est-à-dire celle qui relie les cellules mémoire 12 de la première rangée 16, est référencée IN 1 ; et la, ou respectivement les, ligne(s) de mot associée(s) à cette première ligne d’entrée IN 1 sont référencées WL 1 , ou respectivement WL 1 et WLb 1 . Les cellules mémoire 12 d’une même colonne 18 partagent la même paire de lignes de bit 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 bit 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 . Les cellules mémoire 12 d’une même rangée 16 sont alors sélectionnables par au moins une ligne de mot WL, et les cellules mémoire 12 d’une même colonne 18 sont reliées à une paire de lignes de bit complémentaires BL, BLb et une ligne de source SL. Le premier contrôleur 20 permet de sélectionner les cellules mémoire 12 d’une rangée 16 qui sont reliées à une même ligne de mot WL. Le premier contrôleur 20 est propre à contrôler chaque ligne d’entrée IN, et par transitivité chaque ligne de mot WL, WLb. En effet, lorsque chaque ligne d’entrée IN est connectée à une paire respective de lignes de mot complémentaires WL et WLb, la ligne d’entrée IN est connectée directement à l’une WL des lignes de mot, et via un inverseur 26, appelé par la suite inverseur 26 de ligne de mot, à l’autre WLb des lignes de mot ; et le contrôle de la valeur appliquée à la ligne d’entrée IN entraîne également le contrôle de la valeur appliquée à la paire respective de lignes de mot complémentaires WL et WLb. En effet, l’homme du métier comprendra bien entendu que la valeur appliquée à la ligne d’entrée IN est alors la même que celle appliquée à la ligne de mot WL qui est connectée directement à la ligne d’entrée IN, et de manière corollaire que la valeur appliquée à la ligne d’entrée IN est alors l’inverse de celle qui est appliquée à la ligne de mot complémentaire WLb qui est connectée à la ligne d’entrée IN par l’intermédiaire de l’inverseur 26 de ligne de mot. Bien entendu, lorsque chaque ligne d’entrée IN est connectée directement à une seule ligne de mot WL respective, comme dans l’exemple de la , alors la valeur appliquée à la ligne d’entrée IN est la même que celle appliquée à ladite ligne de mot WL connectée directement à la ligne d’entrée IN. Par « inverse » d’une valeur binaire, on entend la valeur complémentaire à 1 de ladite valeur binaire. Autrement dit, si une valeur binaire est égale à 0, l’inverse de cette valeur binaire est égal à 1 ; et respectivement si une valeur binaire est égale à 1, l’inverse de cette valeur binaire est égal à 0. Le deuxième contrôleur 22 est propre à contrôler les paires de lignes de bit complémentaires BL et BLb et les lignes de source SL. Le deuxième contrôleur 22 est relié aux paires de lignes de bit BL, BLb et permet d’appliquer sur chaque paire de ligne de bit BL, BLb des tensions différentes, les tensions appliquées lors de l’opération de calcul étant avantageusement symétriques par rapport à une tension milieu, la tension appliquée sur une ligne de bit BL étant supérieure ou inférieure à celle appliquée sur la ligne de bit complémentaire BLb associée. 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 mémoire 12 à l’aide des lignes qu’ils contrôlent selon le fonctionnement souhaité. En particulier, le premier contrôleur 20 est configuré pour amener les valeurs d’entrées circulant sur chacune des lignes d’entrée IN. Ce sont ces valeurs d’entrées qui viendront par exemple alimenter le réseau de neurones réalisé le cas échéant par le circuit électronique 10. L’inverseur 26 est un élément propre à recevoir un signal incident sur une entrée 26E et effectuer un calcul d’inversion logique pour émettre sur une sortie 26S un signal de sortie qui est l’inverse du signal incident. Ici, l’entrée 26E de l’inverseur 26 est connectée à la ligne d’entrée IN, et la sortie 26S de l’inverseur 26 est connectée à la ligne de mot complémentaire WLb. Chaque cellule mémoire 12 est propre à mémoriser au moins une valeur binaire, telle qu’un poids binaire, en particulier un poids synaptique binaire respectif du réseau de neurones lorsque l’opération de calcul effectuée est une opération de calcul neuronal. La structure d’une cellule mémoire 12 est représentée plus précisément sur la pour le cas de la cellule mémoire 12 ayant les coordonnées (i,j). Chaque cellule mémoire 12 comporte au moins une paire de memristors 28, 30, la ou chaque paire de memristors étant formée de deux memristors, à savoir un premier memristor 28 et un deuxième memristor 30, et au moins une paire de commutateurs 32, 34, la ou chaque paire de commutateurs étant formée de deux commutateurs, à savoir un premier commutateur 32 et un deuxième commutateur 34. Dans les exemples des figures 2, 4 et 7, chaque cellule mémoire 12 comporte deux paires de memristors 28, 30, c’est-à-dire deux premiers memristors 28 et deux deuxièmes memristors 30, et deux paires de commutateurs 32, 34, c’est-à-dire deux premiers commutateurs 32 et deux deuxièmes commutateurs 34. Dans l’exemple de la , chaque cellule mémoire 12 comporte une seule paire de memristors 28, 30, c’est-à-dire un seul premier memristor 28 et un seul deuxième memristor 30, et une seule paire de commutateurs 32, 34, c’est-à-dire un seul premier commutateur 32 et un seul deuxième commutateur 34. Du fait que des memristors 28 et 30 sont présents, une telle cellule mémoire 12 est une cellule de mémoire résistive à accès aléatoire. La cellule mémoire 12 est plus souvent désigné par l’acronyme RRAM ou ReRAM (de l’anglais Resistive random-access memory ). En outre, un tel agencement est généralement appelé structure 4T4R en référence à la présence des quatre commutateurs (appellation 4T) et de quatre memristors (appellation 4R) dans les exemples des figures 2, 4 et 7. Par analogie, 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) dans l’exemple de la . La cellule mémoire 12 est aussi parfois dénommée cellule 4T4R dans les exemples des figures 2, 4 et 7, ou respectivement cellule 2T2R dans l’exemple de la . Chaque memristor 28, 30 d’une cellule mémoire 12 respective est relié à la même ligne de source SL et à un commutateur 32, 34 respectif, et chaque paire de memristors 28, 30 est configurée pour mémoriser respectivement une valeur binaire en présentant respectivement des première et deuxième valeurs de résistances différentes. L’homme du métier observera que la ligne de source SL auxquels sont reliés les memristors 28, 30 de la cellule mémoire 12 respective est susceptible d’être formée de deux lignes de source distinctes connectées entre elles pendant l’opération de calcul. Chaque memristor 28, 30 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 résistance 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. Chaque memristor 28, 30 présente ainsi deux états, à savoir 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. 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. L’état bas est, de ce fait, dénommé état bas LRS dans la suite. Toutefois, du fait de la variabilité des memristors 28, 30 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 28, 30. Cette variabilité est présentée schématiquement sur la . Dans cette figure, il est proposé la probabilité qu’un memristor 28, 30 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 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 28, 30. Pour remédier à ce problème, 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, 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 les exemples des figures 2, 4, 7 et 10, un poids fort, c’est-à-dire un « 1 » logique, est représenté par un état haut HRS du premier memristor 28, et respectivement un état bas LRS du deuxième memristor 30. De manière corollaire, un poids faible, c’est-à-dire un « 0 » logique, est représenté par un état bas LRS du premier memristor 28, et respectivement un état haut HRS du deuxième memristor 30. En outre, dans les exemples des figures 2, 4 et 7 où chaque cellule mémoire 12 comporte deux paires de memristors 28, 30, les paires de memristors 28, 30 sont de préférence codées de manière complémentaire d’une paire à l’autre. Autrement dit, au sein de chaque cellule mémoire 12, une paire de memristors 28, 30 est de préférence configurée pour coder une valeur binaire, pendant que l’autre paire de memristors 28, 30 est de préférence configurée pour coder l’inverse de ladite valeur binaire. Aussi, dans l’exemple de logique de codage précitée, si la valeur binaire à encoder est égale à 1 pour la première paire de memristors 28, 30, le memristor de gauche, i.e. le premier memristor 28, est codé en forte résistance (état haut HRS), et le memristor de droite, i.e. le deuxième memristor 30, est codé en faible résistance (état bas LRS), tandis que pour la deuxième paire de memristors 28, 30 encodant l’inverse de ladite valeur binaire, soit 0, le memristor de gauche, i.e. i.e. le premier memristor 28, est codé en faible résistance (état bas LRS) et le memristor de droite, i.e. le deuxième memristor 30, est codé en forte résistance (état haut HRS). Une première paire de commutateurs 32, 34 est reliée à une première ligne de mot assignée à une entrée IN, à savoir la ligne de mot WL connectée directement la ligne d’entrée IN, et respectivement une deuxième paire de commutateurs 34, 32 est reliée à une deuxième ligne de mot assignée à l’inverse de ladite entrée IN, à savoir la ligne de mot complémentaire WLb connectée la ligne d’entrée IN via l’inverseur 26 de ligne de mot. La première paire de memristors 28, 30 est associée à la première paire de commutateurs 32, 34 et mémorise une valeur binaire w ; et respectivement la deuxième paire de memristors 28, 30 est associée à la deuxième paire de commutateurs 34, 32 et mémorise l’inverse de la même valeur binaire w. En outre, comme décrit précédemment, la première paire de memristors 28, 30 et la première paire associée de commutateurs 32, 34 verront leur ligne de mot WL assignée à l’entrée correspondant à la valeur binaire, tandis que la deuxième paire de memristors 28, 30 et la deuxième paire associée de commutateurs 32, 34 verront leur ligne de mot complémentaire WLb assignée à l’inverse de la même entrée, de par l’inverseur 26 de ligne de mot. Les commutateurs 32, 34 sont reliés, pour leur activation, à une ligne de mot WL, WLb respective et reliés respectivement à une paire de lignes de bit complémentaires BL, BLb, les deux commutateurs 32, 34 d’une paire respective étant reliés à une même ligne de mot WL, WLb. Chacun des deux commutateurs 32 et 34 est par exemple un transistor, tel qu’un transistor à effet de champ, également appelé FET (de l’anglais 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, où X désigne la référence 32 ou 34, 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. Selon l’exemple décrit, les deux commutateurs 32 et 34 sont des transistors à effet de champ à grille isolée, également appelés MOSFET (de l’anglais Metal Oxide Semiconductor Field Effect Transistor ). 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, i.e. bloqués. Le premier contrôleur 20 va en pratique choisir de sélectionner une ou plusieurs rangées 16 de cellules mémoire 12 en rendant conducteurs les commutateurs 32, 34 des cellules mémoire 12 de cette ou ces rangées 16. Chaque premier commutateur 32 est connecté à un premier memristor 28 respectif, et chaque deuxième commutateur 34 est connecté à un deuxième memristor 30 respectif. Le drain 32D du premier commutateur 32 est alors 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. 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 second contrôleur 22 va piloter l’alimentation des paires de lignes de bit, de sorte à ce que la tension présentée sur une ligne de bit BL j soit différente et complémentaire de la tension présentée sur la ligne de bit complémentaire BLb j . Ainsi, quand une cellule mémoire 12 de coordonnée i,j, en particulier une paire de memristors 28, 30, est sélectionnée (ses commutateurs étant rendus passants par la tension d’activation présentée sur la ligne de mot WL i ou WLb i associée), les memristors 28 et 30 de cette paire 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 de cette paire 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 égale à [V(BL)+V(BLb)]/2, dite tension milieu, où V(BL) représente la tension de la ligne de bit BL, et V(BLb) représente la tension de la ligne de bit complémentaire BLb. Dans les exemples des figures 2, 4 et 7, avec la logique de codage définie ci-dessus, si la valeur binaire, tel qu’un poids, en particulier un poids synaptique d’un réseau de neurones binaire, stockée dans une cellule mémoire 12 donnée est égale à 0, alors pour la première paire de memristors 28, 30, le premier memristor 28 (correspondant à celui en haut à gauche parmi les quatre memristors de la cellule mémoire 12) est l’état bas LRS et le deuxième memristor 30 (correspondant à celui en haut à droite) est à l’état haut HRS ; et inversement, pour la deuxième paire de memristors 28, 30, le premier memristor 28 (correspondant à celui en bas à gauche) est à l’état haut HRS et le deuxième memristor 30 (correspondant à celui en bas à droite) est à l’état bas LRS. L’homme du métier comprendra bien entendu que le codage est inversé si la valeur binaire stockée dans la cellule mémoire 12 est égale à 1, et pour la première paire de memristors 28, 30, le premier memristor 28 (correspondant à celui en haut à gauche) est l’état haut HRS et le deuxième memristor 30 (correspondant à celui en haut à droite) est à l’état bas LRS ; et inversement, pour la deuxième paire de memristors 28, 30, le premier memristor 28 (correspondant à celui en bas à gauche) est à l’état bas LRS et le deuxième memristor 30 (correspondant à celui en bas à droite) est l’état haut HRS. L’homme du métier observera en outre que dans les exemples des figures 2, 4 et 7 et de par l’inverseur 26 de ligne de mot, une seule paire de memristors 28, 30 parmi les deux paires de memristors 28, 30 est activable à la fois. En particulier, dans ces exemples, et étant donné que l’inverseur 26 de ligne de mot est connecté à la ligne de mot complémentaire WLb associée à la deuxième paire de memristors 28, 30, si la valeur d’entrée reçue sur la ligne d’entrée IN est égale à 1, alors la première paire de memristors 28, 30 est activée puisque la valeur sur la ligne de mot WL connectée directement la ligne d’entrée IN est aussi égale à 1 et que les commutateurs 32, 34 associés à cette première paire sont donc passants, tandis que la deuxième paire de memristors 28, 30 n’est pas activée puisque la valeur sur la ligne de mot complémentaire WLb est alors égale à 0, l’inverseur 26 de ligne de mot inversant la valeur d’entrée égale à 1 en la valeur 0, et que les commutateurs 32, 34 associés à cette deuxième paire sont donc non-passants, i.e. bloqués. Inversement, si la valeur d’entrée reçue sur la ligne d’entrée IN est égale à 0, alors la première paire de memristors 28, 30 n’est pas activée puisque la valeur sur la ligne de mot WL est aussi égale à 0 et que les commutateurs 32, 34 associés à cette première paire sont donc non-passants, tandis que la deuxième paire de memristors 28, 30 est dans ce cas activée puisque la valeur sur la ligne de mot complémentaire WLb est alors égale à 1, l’inverseur 26 de ligne de mot inversant la valeur d’entrée égale à 0 en la valeur 1, et que les commutateurs 32, 34 associés à cette deuxième paire sont donc passants. En outre, lorsqu’une tension est appliquée entre la ligne de bit BL et la ligne de bit complémentaire BLb, avec un potentiel plus haut V H pour la ligne de bit BL que celui V L pour la ligne de bit complémentaire BLb, cela résulte en un pont résistif entre les premier et deuxième memristors 28, 30 de la paire de memristors 28, 30 qui est activée, comme expliqué précédemment. Le memristor 28, 30 qui est à l’état haut HRS repousse alors systématiquement la tension du point milieu, i.e. celle de la ligne de source SL, vers la ligne de bit BL, BLb qui est connectée au memristor 28, 30 à l’état bas LRS. Aussi, dans les exemples des figures 2, 4 et 7, avec cette implémentation astucieuse des deux paires de memristors 28, 30 couplées aux deux lignes de mot complémentaires WL, WLb, l’une des lignes de mot étant connectée à la ligne d’entrée IN via l’inverseur 26 de ligne de mot, chaque cellule mémoire 12 permet alors d’effectuer directement une opération de non-ou-exclusif, ou XNOR, entre l’entrée binaire reçue sur la ligne d’entrée IN et la valeur binaire, telle que le poids synaptique correspondant d’un neurone respectif, stockée dans la cellule mémoire 12, et le résultat de l’opération XNOR est alors obtenu via la comparaison de la tension de la ligne de source SL avec la tension milieu. Dans l’exemple de la , avec la logique de codage définie ci-dessus, si la tension de la ligne de source SL est inférieure à la tension milieu [V(BL)+V(BLb)]/2, alors le résultat de l’opération XNOR est égal à 1 ; si la tension de la ligne de source SL est supérieure à la tension milieu [V(BL)+V(BLb)]/2, alors le résultat de l’opération XNOR est égal à 0. Les quatre situations possibles selon que la valeur d’entrée binaire, également appelée entrée binaire, reçue sur la ligne d’entrée IN i est égale à 0 ou 1, et est selon que la valeur binaire w ji stockée dans la cellule mémoire 12 est égale à 0 ou 1, sont alors représentées de manière synthétique sur la partie droite de la . Dans la première situation où l’entrée binaire reçue sur la ligne d’entrée IN i est égale à 0 et la valeur binaire w ji stockée dans la cellule mémoire 12 est égale à 0, la deuxième paire de memristors 28, 30 est activée, et le premier memristor 28 (correspondant à celui à gauche) est à l’état haut HRS pendant que le deuxième memristor 30 (correspondant à celui à droite) est l’état bas LRS. Le premier memristor 28 à l’état haut HRS repousse alors la tension de la ligne de source SL j vers la ligne de bit complémentaire BLb j connectée au deuxième memristor 30 à l’état bas LRS, comme représenté par la flèche F1. La tension de la ligne de source SL j est alors plus proche du potentiel bas V L pour la ligne de bit complémentaire BLb j que du potentiel haut V H de la ligne de bit BL j , et est donc inférieure à la tension milieu [V(BL)+V(BLb)]/2, si bien que le résultat de l’opération XNOR est égal à 1. Ceci vérifie donc bien XNOR(0,0) = 1. Dans la deuxième situation où l’entrée binaire reçue sur la ligne d’entrée IN i est égale à 1 et la valeur binaire w ji stockée dans la cellule mémoire 12 est égale à 1, la première paire de memristors 28, 30 est activée, et le premier memristor 28 (correspondant à celui à gauche) est l’état haut HRS, le deuxième memristor 30 (correspondant à celui à droite) étant à l’état bas LRS. Le premier memristor 28 à l’état haut HRS repousse alors la tension de la ligne de source SL j vers la ligne de bit complémentaire BLb j connectée au deuxième memristor 30 à l’état bas LRS, comme représenté par la flèche F1. La tension de la ligne de source SL j est alors inférieure à la tension milieu [V(BL)+V(BLb)]/2, et le résultat de l’opération XNOR est donc égal à 1. Ceci vérifie donc bien XNOR(1,1) = 1. Dans la troisième situation où l’entrée binaire reçue sur la ligne d’entrée IN i est égale à 1 et la valeur binaire w ji stockée dans la cellule mémoire 12 est égale à 0, la première paire de memristors 28, 30 est activée, et le premier memristor 28 (correspondant à celui à gauche) est l’état bas LRS, pendant que le deuxième memristor 30 (correspondant à celui à droite) est à l’état haut HRS. Le deuxième memristor 30 à l’état haut HRS repousse alors la tension de la ligne de source SL j vers la ligne de bit BL j connectée au premier memristor 28 à l’état bas LRS, comme représenté par la flèche F2. La tension de la ligne de source SL j est alors plus proche du potentiel haut V H de la ligne de bit BL j que du potentiel bas V L pour la ligne de bit complémentaire BLb j , et est donc supérieure à la tension milieu [V(BL)+V(BLb)]/2, si bien que le résultat de l’opération XNOR est égal à 0. Ceci vérifie donc bien XNOR(1,0) = 0. Dans la quatrième et dernière situation où l’entrée binaire reçue sur la ligne d’entrée IN i est égale à 0 et la valeur binaire w ji stockée dans la cellule mémoire 12 est égale à 1, la deuxième paire de memristors 28, 30 est activée, et le premier memristor 28 (correspondant à celui à gauche) est à l’état bas LRS, pendant que le deuxième memristor 30 (correspondant à celui à droite) est l’état haut HRS. Le deuxième memristor 30 à l’état haut HRS repousse alors la tension de la ligne de source SL j vers la ligne de bit BL j connectée au premier memristor 28 à l’état bas LRS, comme représenté par la flèche F2. La tension de la ligne de source SL j est alors supérieure à la tension milieu [V(BL)+V(BLb)]/2, et le résultat de l’opération XNOR est donc égal à 0. Ceci vérifie donc bien XNOR(0,1) = 0. L’homme du métier comprendra bien entendu qu’également avec une logique de codage inversée où la valeur binaire 1 stockée dans la cellule mémoire 12 est encodée sous la forme du premier memristor 28 à l’état bas LRS et du deuxième memristor 30 à l’état haut HRS, et de manière corollaire la valeur binaire 0 est encodée sous la forme du premier memristor 28 à l’état haut HRS et du deuxième memristor 30 à l’état bas LRS, chaque cellule mémoire 12 des exemples des figures 2, 4 et 7 permet toujours d’effectuer l’opération XNOR, et que le résultat de l’opération XNOR est alors égal à 0 si la tension de la ligne de source SL est inférieure à la tension milieu [V(BL)+V(BLb)]/2, et inversement égale à 1 si la tension de la ligne de source SL est supérieure à la tension milieu [V(BL)+V(BLb)]/2, ceci toujours dans l’hypothèse où le potentiel haut V H est appliqué à la ligne de bit BL, pendant que le potentiel bas V L est appliqué à la ligne de bit complémentaire BLb. Bien entendu, dans l’hypothèse où les potentiels seraient appliqués aux lignes de bit complémentaires BL, BLb de manière inversée par rapport à ce qui précède, avec le potentiel haut V H appliqué à la ligne de bit complémentaire BLb et le potentiel bas V L appliqué à la ligne de bit BL, alors la logique de comparaison de la tension de la ligne de source SL avec la tension milieu pour déterminer le résultat de l’opération XNOR serait également inversée. La concerne alors les distributions de tensions obtenues au global sur la ligne de source SL j , c’est-à-dire au bas de la ligne de source SL j dans les exemples des figures 1 et 7, lorsque plusieurs lignes d’entrée IN i sont utilisées simultanément, le graphe des distributions de tensions représenté à la illustrant le cas où cinq lignes d’entrée IN i sont utilisées simultanément. Cet exemple de la concernent notamment le cas de l’inférence d’un réseau de neurones binaire. 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ù représente la valeur de sortie calculée par le neurone, représentent les valeurs d’entrée pour ledit neurone, représentent les poids binaires respectifs associés audit neurone pour chacune des entrées ; est l’opération logique de non-ou-exclusif ; est la fonction qui compte le nombre de 1 dans une série de bits, lorsque i varie entre 1 et le nombre n d’entrées ; 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. Lorsque les valeurs d’entrée sont appliquées sur les n lignes d’entrée IN i , où n représente le nombre de lignes d’entrée IN i , n lignes de mot sont activées parmi les 2n lignes de mot complémentaires WL i , WLb i . Cela forme alors un pont diviseur entre la ligne de bit BL j et la ligne de bit complémentaire BLb j , comme représenté en partie supérieure de la , où une première résistance équivalente R BL correspond à la résistance équivalente pour la portion de pont diviseur connectée entre la ligne de bit BL j et la ligne de source SL j , et une deuxième résistance équivalente R BLb correspond à la résistance équivalente pour la portion de pont diviseur connectée entre la ligne de bit complémentaire BLb j et la ligne de source SL j . D’après ce qui précède, notamment au vu de l’exemple de la , si le résultat de l’opération XNOR est égal à 1, alors le premier memristor 28 à gauche de la ligne de source SL j est à l’état haut HRS et le deuxième memristor 30 à droite de la ligne de source SL j est à l’état bas LRS. Inversement, si le résultat de l’opération XNOR est égal à 0, alors le premier memristor 28 à gauche de la ligne de source SL j est à l’état bas LRS et le deuxième memristor 30 à droite de la ligne de source SL j est à l’état haut HRS. Pour la première résistance équivalente R BL correspondant à la portion de pont diviseur à gauche de la ligne de source SL j , le nombre de memristors à l’état haut HRS, noté #HRS sur la , est alors égal à pop, où pop est égal au résultat de la fonction popcount dans l’équation (1) précédente lorsque les valeurs d’entrée x i sont les valeurs d’entrée appliquées sur les n lignes d’entrée IN i , et pour la première résistance équivalente R BL le nombre de memristors à l’état bas LRS, noté #LRS sur la , est alors égal à n-pop, n représentant le nombre de lignes d’entrée IN i . Dans l’exemple de la , la première résistance équivalente R BL vérifie alors l’équation suivante : où R BL représente la première résistance équivalente, pop, ou encore la notation abrégée p, est égal au résultat de la fonction popcount de l’équation (1) précédente, n représentant le nombre de lignes d’entrée IN i , HRS, ou encore la notation abrégée H, représente la résistance du memristor 28, 30 à l’état haut HRS, et LRS, ou encore la notation abrégée L, représente la résistance du memristor 28, 30 à l’état bas LRS. De manière corollaire, pour la deuxième résistance équivalente R BLb correspondant à la portion de pont diviseur à droite de la ligne de source SL j , le nombre #LRS de memristors à l’état bas LRS est alors égal à pop, le nombre #HRS de memristors à l’état haut HRS est alors égal à n-pop. Dans l’exemple de la , la deuxième résistance équivalente R BLb vérifie alors l’équation suivante : où R BLb représente la deuxième résistance équivalente, pop, ou encore la notation abrégée p, est égal au résultat de la fonction popcount de l’équation (1) précédente, n représentant le nombre de lignes d’entrée IN i , HRS, ou encore la notation abrégée H, représente la résistance du memristor 28, 30 à l’état haut HRS, et LRS, ou encore la notation abrégée L, représente la résistance du memristor 28, 30 à l’état bas LRS. D’après les équations précédentes (2) et (3), la tension de la ligne de source SL vérifie alors l’équation suivante : où V(SL) représente la tension de la ligne de source SL, V(BLb) représente la tension de la ligne de bit complémentaire BLb, et ΔBL représente le différentiel de tension entre la tension de la ligne de bit BL et la tension de la ligne de bit complémentaire BLb selon l’équation suivante : Après simplification, la tension de la ligne de source SL vérifie alors l’équation suivante : où V(SL) représente la tension de la ligne de source SL, V(BLb) représente la tension de la ligne de bit complémentaire BLb, ΔBL représente le différentiel de tension entre la tension de la ligne de bit BL et la tension de la ligne de bit complémentaire BLb selon l’équation (5), pop est égal au résultat de la fonction popcount de l’équation (1) précédente, n représentant le nombre de lignes d’entrée IN i , HRS, ou encore la notation abrégée H, représente la résistance du memristor 28, 30 à l’état haut HRS, et LRS, ou encore la notation abrégée L, représente la résistance du memristor 28, 30 à l’état bas LRS. L’homme du métier observera que l’équation (6) précédente dépend de la valeur pop, c’est-à-dire du résultat de la fonction popcount de l’équation (1) précédente. Plus la valeur pop sera grande, plus le terme sera grand, et comme le terme est négatif car HRS>LRS, plus le terme sera faible. Par conséquent, plus la valeur pop sera grande, plus la tension de la ligne de source SL sera faible, et proche de la tension de la ligne de bit complémentaire BLb. Du fait de la variabilité des memristors en fonctionnement, telle que décrite précédemment en regard de la , une distribution 40 des tensions de la ligne de source SL selon l’équation (6) précédente comporte une pluralité de lobes 42, chaque lobe 42 représentant une densité de probabilité de la tension de la ligne de source SL pour une valeur pop donnée. Le nombre de lobes 42 contenus dans la distribution 40 est alors égal au nombre de valeurs possibles de la valeur pop, c’est-à-dire à n+1, avec n représentant le nombre de lignes d’entrée IN i . Le nombre de valeurs de seuil nécessaires pour déterminer la valeur de la tension de la ligne de source SL parmi ces n+1 lobes 42 est alors égal à n, ces valeurs d’un seuil th étant notés respectivement th=0 à th=n-1 dans l’exemple de la , avec n=5. Le module de lecture 24 va être à présent décrit plus en détail, en regard des figures 5 à 9. Le module de lecture 24 comporte une unité logique 50 pour chaque colonne 18, chaque unité logique 50 comprenant au moins une borne d’entrée 52 connectée à une ligne de source SL respective pour recevoir une valeur d’entrée dite valeur de colonne, et une borne de sortie 54. L’unité logique 50 est propre à effectuer une opération logique présentant un basculement entre une valeur basse et une valeur haute, en fonction d’une comparaison de la valeur de colonne par rapport à une valeur de seuil de basculement INV th , lors de l’opération de calcul, le résultat, noté a, de l’opération logique étant délivré en la borne de sortie 54. Selon l’invention, le module de lecture 24 comporte en outre une unité de modification 60 propre à modifier, pour au moins une unité logique 50 et en fonction de l’opération de calcul souhaitée, une différence entre la valeur de colonne et la valeur de seuil de basculement INV th . Autrement dit, l’unité de modification est propre à modifier, pour au moins une unité logique 50 et en fonction de l’opération de calcul souhaitée, la valeur de seuil de basculement INV th par rapport à la valeur de colonne. L’opération logique effectuée par l’unité logique 50 est de préférence une inversion, l’unité logique 50 étant typiquement un simple inverseur. L’unité logique 50 est alors propre à recevoir un signal incident sur sa borne d’entrée 52 et à effectuer un calcul d’inversion logique pour émettre sur sa borne de sortie 54 un signal de sortie qui est l’inverse du signal incident. L’homme du métier observera alors que si le module de lecture 24 comporte seulement l’unité de modification 60 en forme de simple inverseur, alors le module de lecture 24 peut comparer la tension de la ligne de source SL avec une seule valeur de seuil de basculement INV th , comme représenté à titre d’exemple de l’état de la technique en partie inférieure de la . Dans cet exemple, l’unique valeur de seuil de basculement INV th , également appelé seuil d’inversion, ou encore seuil de commutation, est choisie égale à 0,6 V soit le milieu entre la tension de la ligne de bit complémentaire BLb choisie égale à 0,3 V et la tension de la ligne de bit BL choisie égale à 0,9 V. Dans cet exemple, si la valeur pop, c’est-à-dire le résultat de la fonction popcount, est supérieure à un seuil milieu, c’est-à-dire égale à 3, 4 ou 5, alors la tension de la ligne de source SL est inférieure à 0,6V, et l’unité logique 50 donnera la valeur 1 en sa borne de sortie 54, la tension U 50 en la borne de sortie 54 représentée en trait pointillé étant alors à VDD. Si la valeur pop est inférieure au seuil milieu, c’est-à-dire égale à 0, 1 ou 2, alors la tension de la ligne de source SL est supérieure à 0,6V, et l’unité logique 50 donnera la valeur 0 en sa borne de sortie 54, la tension U 50 en la borne de sortie 54 étant alors à 0. Ainsi, avec un simple inverseur, il est possible d’effectuer la comparaison de la valeur pop avec un seuil, tel que le seuil du milieu. Cependant, cela est insuffisant pour effectuer une opération neuronale, où la valeur du seuil n’est pas fixée à la valeur moyenne. C’est la raison pour laquelle l’état de la technique utilise généralement un comparateur complet en bas de colonne pour comparer la valeur pop à n’importe quel seuil défini lors de l’entrainement. Or, l’utilisation d’un comparateur en bas de colonne nécessite une surface importante (bien plus importante qu’un simple inverseur), une consommation non négligeable et un faible parallélisme due au multiplexage en bas de colonne. Selon l’invention, l’unité de modification 60 permet alors de modifier, pour au moins une unité logique 50 et en fonction de l’opération de calcul souhaitée, la différence entre la valeur de colonne et la valeur de seuil de basculement INV th , c’est-à-dire de modifier la valeur de seuil de basculement INV th par rapport à la valeur de colonne. L’unité de modification 60 permet alors notamment de comparer la valeur pop, c’est-à-dire le résultat de la fonction popcount, à n’importe quelle valeur de seuil, en ayant en bas de colonne seulement l’unité logique 50, typiquement en forme simple inverseur, comme illustré sur les figures 7 à 9. L’unité de modification 60 est, par exemple, propre à modifier la différence entre la valeur de colonne et la valeur de basculement INV th pour une unité logique 50 respective, en commandant une modification des tensions complémentaires appliquées sur la paire de lignes de bit complémentaires BL, BLb pour la colonne 18 associée à ladite unité logique 50. Dans l’exemple de la , pour obtenir le premier seuil th=0 de la , la tension de la ligne de bit complémentaire BLb est commandée à la valeur INV th -5*Δth, soit par exemple 0,1 V, et la tension de la ligne de bit BL est commandée à la valeur INV th +Δth, soit par exemple 0,7 V, pendant que la valeur de seuil de basculement INV th , est inchangée, restant égale à 0,6 V dans cet exemple. Pour obtenir le deuxième seuil th=1 de la , la tension de la ligne de bit complémentaire BLb est commandée à la valeur INV th -4*Δth, soit par exemple 0,2 V, et la tension de la ligne de bit BL est commandée à la valeur INV th +2*Δth, soit par exemple 0,8 V, pendant que la valeur de seuil de basculement INV th , est inchangée, par exemple à 0,6 V. Pour obtenir le troisième seuil th=2 de la , la tension de la ligne de bit complémentaire BLb est commandée à la valeur INV th -3*Δth, soit par exemple 0,3 V, et la tension de la ligne de bit BL est commandée à la valeur INV th +3*Δth, soit par exemple 0,9 V, pendant que la valeur de seuil de basculement INV th , est inchangée, par exemple à 0,6 V. Pour obtenir le quatrième seuil th=3 de la , la tension de la ligne de bit complémentaire BLb est commandée à la valeur INV th -2*Δth, soit par exemple 0,4 V, et la tension de la ligne de bit BL est commandée à la valeur INV th +4*Δth, soit par exemple 1 V, pendant que la valeur de seuil de basculement INV th , est inchangée, par exemple à 0,6 V. Enfin, pour obtenir le cinquième seuil th=4 de la , la tension de la ligne de bit complémentaire BLb est commandée à la valeur INV th -Δth, soit par exemple 0,5 V, et la tension de la ligne de bit BL est commandée à la valeur INV th +5*Δth, soit par exemple 1,1 V, pendant que la valeur de seuil de basculement INV th , est inchangée, par exemple à 0,6 V. L’homme du métier observera que dans cet exemple de la , la modification des tensions complémentaires de la paire de lignes de bit complémentaires BL, BLb est effectuée avec une variation selon un pas de variation Δth d’un seuil au suivant. Le pas de variation Δth vérifie par exemple l’équation suivante : où ΔBL représente le différentiel de tension entre la tension de la ligne de bit BL et la tension de la ligne de bit complémentaire BLb selon l’équation (5), pop, ou encore la notation abrégée p, est égal au résultat de la fonction popcount de l’équation (1) précédente, n représentant le nombre de lignes d’entrée IN i , HRS, ou encore la notation abrégée H, représente la résistance du memristor 28, 30 à l’état haut HRS, et LRS, ou encore la notation abrégée L, représente la résistance du memristor 28, 30 à l’état bas LRS. En variante, non représentée, l’unité de modification 60 est propre à modifier la différence entre la valeur de colonne et la valeur de seuil de basculement INV th pour une unité logique 50 respective, en commandant une modification de la valeur de seuil de basculement INV th de ladite unité logique 5. Selon cette variante, la valeur de seuil de basculement INV th est par exemple modifiée via un changement de la tension d’alimentation de ladite unité logique 50, ou via un changement de la tension de polarisation d’une grille arrière d’au moins un transistor de ladite unité logique 50, ou encore via à la fois le changement de la tension d’alimentation et le changement de la tension de polarisation. En complément facultatif, l’unité de modification 60 est propre à modifier, de manière incrémentale selon un pas d’incrémentation prédéfini, ladite différence entre la valeur de colonne et la valeur de seuil de basculement INV th , pour déterminer - parmi une pluralité de valeurs possibles prédéfinies - une valeur résultante correspondant à la tension de la ligne de source SL respective, c’est-à-dire correspondant à ladite valeur de colonne. Le pas d’incrémentation dépend de ladite pluralité de valeurs possibles. Selon ce complément facultatif, le pas d’incrémentation est par exemple égal au pas de variation Δth défini précédemment. Lorsque l’opération de calcul effectuée est une opération de calcul neuronal, telle que l’opération MAC, le circuit électronique 10 selon l’invention avec l’ensemble de cellules mémoire 12 organisées selon la matrice 14 comportant n rangées 16 et m colonnes 18, permet alors d’implémenter un réseau de neurones 65 à n entrées et m sorties, tel qu’un réseau de neurones entièrement connecté (de l’anglais fully connected ), comme représenté à la . Dans l’exemple de la , le circuit électronique 10 comprend alors n*m cellules mémoire 12, chacune comportant deux paires de memristors 28, 30 et deux paires de commutateurs 32, 34, soit n*m cellules de type 4T4R ; ainsi que n paires de lignes de mot complémentaires WL, WLb, soit 2*n lignes de mot WL, WLb ; m lignes de source SL ; et m paires de lignes de bit complémentaires BL, BLb, soit 2*m lignes de bit BL, BLb. En raison de la forte variabilité des memristors 28, 30, le circuit électronique 10 est préférentiellement limité à 9 entrées activées simultanément, soit n égal à 9. Dans le cas où les réseaux de neurones utilisés nécessitent des neurones plus grands que 9 entrées (ce qui est très fréquent), il convient alors avantageusement de diviser le neurone global en portions de 9 entrées, et de sommer les résultats du MAC de chaque portion pour obtenir le popcount global, que l’on comparera au seuil propre au neurone. Cette division du neurone global en portion de 9 entrées est connue en soi, et présente même un aspect pratique, car les filtres de convolutions usuels ont une taille de 3 par 3, soit 9 entrées au total. Par conséquent, la génération des tensions des paires de lignes de bit complémentaires BL, BLb est avantageusement mutualisée pour toutes les colonnes 18 de la matrice 14, diminuant ainsi la complexité de la génération des décalages des tensions des paires de lignes de bit complémentaires BL, BLb, décrits précédemment pour modifier successivement la valeur de seuil de basculement INV th par rapport à la valeur de colonne. Tous les seuils th=0 à th=n-1 sont alors préférentiellement testés successivement dans l’ordre croissant, ou alternativement dans l’ordre décroissant, résultant en sortie de chaque unité logique 50 en une suite de bits qui correspond à la valeur du MAC partiel à 9 entrées. Cette suite de bits est d’ailleurs interprétable par un codage de type thermométrique, proche du codage one-hot. Cette suite de bits contient une suite de 1 qui correspond aux seuils plus faibles que la valeur pop (résultat de la fonction popcount ). En complément facultatif, le module de lecture 24 comporte en outre une unité d’extinction 70 pour chaque colonne 18, chaque unité d’extinction 70 étant propre - après détermination de la valeur résultante pour la colonne 18 respective et dans l’attente de la détermination de toutes les valeurs résultantes pour un groupe respectif de colonnes 18 - à commander l’application de la même tension à la paire de lignes de bit complémentaires BL, BLb pour la circulation d’un courant sensiblement nul dans la ligne de source SL de la colonne 18 respective. Chaque unité d’extinction 70 permet alors de limiter la consommation en courant en sortie de la ligne de source SL correspondante, en « éteignant » la colonne correspondante dès l’obtention de son premier « 1 » en sortie de l’unité logique 50. De plus, on obtient alors un codage one-hot complet, comme représenté à la , sans la suite inutile de 1. Le deuxième contrôleur 20 propre à commander les paires de lignes de bit complémentaires BL, BLb contient généralement deux multiplexeurs à deux entrées 72, un pour chaque ligne de bit BL, BLb, chaque multiplexeur 72 étant utile pour les opérations d’écriture et lecture classiques. Ces multiplexeurs 72 sont contrôlés par des bits de contrôle stockés dans des registres. Chaque unité d’extinction 70 est alors par exemple obtenue en reliant la sortie de chaque unité logique 50 au signal clr de mise à zéro, i.e. de réinitialisation (de l’anglais clear ou reset ), d’une bascule 74 de commande de sa ligne de bit complémentaire BLb respective, ceci via une porte logique ET 76, qui est également reliée à un signal d’effacement global CLR_G, comme représenté dans l’exemple de la . Dans l’exemple de la , l’autre bascule 78 est une bascule de commande de la ligne de bit BL respective. Dans l’exemple de la , à la fin de chaque décalage des tensions des paires de lignes de bit complémentaires BL, BLb, si la sortie de l’unité logique 50 est un « 1 », cette sortie va effacer la bascule 74 de commande de la ligne de bit complémentaire BLb respective au cycle suivant, mettant ainsi les deux tensions des paires de lignes de bit complémentaires BL, BLb à la tension de la ligne de bit BL, c’est-à-dire à la tension haute V H , et résultant ainsi en un courant nul au sein de la colonne 18 concernée, puis en un « 0 » en sortie de l’unité logique 50 correspondante. Dans cet exemple, il faut simplement commencer par le seuil le plus élevé, en allant en décrément vers le seuil le moins élevé. Sur la , le sens de l’évolution temporelle pour la succession de bits en sortie de chaque unité logique 50 est représentée par la flèche F3. En complément facultatif, les sorties successives des unités logiques 50 sont stockées dans des registres propres à chaque colonne 18. En complément facultatif encore, le module de lecture 24 comporte en outre une unité de mémorisation 80 pour chaque colonne 18, chaque unité de mémorisation 80 étant propre à stocker la valeur résultante déterminée pour la colonne 18 respective, dans l’attente de la détermination de toutes les valeurs résultantes pour un groupe respectif de plusieurs colonnes 18. Chaque unité de mémorisation 80 comporte de préférence un registre de bits 82 pour stocker sous forme binaire ladite valeur résultante déterminée. Chaque unité de mémorisation 80 est avantageusement en forme du registre de bits 82. Selon ce complément facultatif, dans l’exemple de la , chaque sortie d’unité logique 50 est connectée à un registre de bits 82 respectif, chaque sortie pilotant le signal « enable » 84 du registre 82 associé. Ce registre 82 contient typiquement 4 bits, car il suffit de 4 bits pour coder une opération MAC dont la valeur varie entre 0 et 9. Les registres 82 ont en outre une entrée d’horloge 85 recevant un signal d’horloge CLK et une entrée 86 commune et parallèle à tous les registres 82. Cette entrée commune 86 est pilotée par un compteur (ou décompteur) 88. Le compteur (ou décompteur) 88 est avantageusement le même que celui utilisé dans le contrôle des paires de lignes de bit complémentaires BL, BLb. La illustre le fonctionnement global de telles unités de mémorisation 80, avec un chronogramme montrant deux cas : en gris foncé une colonne avec un MAC égal à 9, et en gris clair une colonne avec un MAC égal à 3. Après avoir sélectionné les lignes d’entrée IN correspondant aux entrées des neurones, les tensions des paires de lignes de bit complémentaires BL, BLb correspondant au premier seuil souhaité (par exemple ici le seuil le plus élevé) sont d’abord appliquées aux paires de lignes de bit complémentaires BL, BLb. La sortie, notée inv[0], de l’unité logique 50 de la colonne en hachuré se met à 1, car son opération MAC, notée MAC[0], est maximale et est égale à 9. Par conséquent, quand l’horloge CLK des registres 82 passe à 1, le registre 82 de la colonne en hachuré capture le code binaire du compteur 88, qui correspond à la valeur 9. Par la suite, au front du signal d’effacement global CLR_G, la bascule 74 de commande de la ligne de bit complémentaire BLb de la colonne en hachuré est effacée, égalisant - par exemple au potentiel haut V H - les tensions des paires de lignes de bit complémentaires BL, BLb de cette colonne 18, pour « l’éteindre » dans la suite des calculs avec les seuils restants, fixant à 0 la sortie de son unité logique 50, notée inv[0]. Quant à la colonne remplie de points, la sortie, notée inv[1], de son unité logique 50 reste à 0 jusqu’au cycle du seuil « 3 », où elle bascule à 1 car son opération MAC, notée MAC[1], est égale à 3, et suis ensuite la même séquence que la colonne en hachuré. Des simulations effectuées de ce neurone à 9 entrées montrent d’excellents résultats. En effet, lorsque la variabilité des transistors formant les commutateurs 32, 34 n’est pas simulée, le taux d’erreur en sortie de l’unité logique 50 est nul pour tous les cas de figure, c’est-à-dire quelle que soit la valeur pop résultant de la fonction popcount et quelle que soit la valeur du seuil. Lorsque ladite variabilité des transistors est simulée, le taux d’erreur en sortie de l’unité logique 50 est similaire à celui d’une approche classique, tout en observant que la consommation électrique avec le circuit électronique 10 selon l’invention est alors nettement plus faible, typiquement plus de 80 fois plus faible, que celle du circuit de l’état de la technique, pour une latence meilleure ou équivalente. L’homme du métier observera alors que le circuit électronique 10 selon l’invention permet alors d’effectuer efficacement l’opération de calcul neuronal, telle que l’opération MAC selon l’équation (1) précédente, et en requérant une faible surface pour les composants mettant en œuvre ladite opération, tout en ayant également une faible consommation, et en offrant une possibilité accrue de parallélisme, comme représenté sur la notamment. Dans l’exemple de la , chaque cellule mémoire 12 comporte une seule paire de memristors 28, 30, c’est-à-dire un seul premier memristor 28 et un seul deuxième memristor 30, et une seule paire de commutateurs 32, 34, c’est-à-dire un seul premier commutateur 32 et un seul deuxième commutateur 34. Selon l’exemple de la , chaque cellule mémoire 12 est également propre à mémoriser au moins une valeur binaire, telle qu’un poids binaire, en particulier un poids synaptique binaire respectif du réseau de neurones lorsque l’opération de calcul effectuée est une opération de calcul neuronal. Le codage de chaque cellule mémoire 12 est par exemple celui décrit dans l’article « Efficient and Robust Nonvolatile Computing-In-Memory Based on Voltage Division in 2T2R RRAM With Input-Dependent Sensing Control » de L. Wang et al. (2021). Chaque colonne 18 présente aussi une paire de lignes de bit complémentaires BL, BLb et une ligne de source SL. Chaque rangée 16 comporte alors une seule ligne de mot WL. Les premier et deuxième memristors 28, 30 sont utilisés pour coder chaque poids en différentiel (HRS-LRS ou LRS-HRS), de manière analogue à ce qui a été décrit précédemment. Une tension est ensuite appliquée entre les lignes de bit complémentaires BL, BLb de la colonne 18, créant ainsi un pont résistif entre les memristors des côtés gauche et droit de la colonne 18. La tension résultante correspond au résultat de l’opération MAC, effectuée cette fois-ci avec une opération ET (de l’anglais AND ), plutôt que l’opération XNOR décrite précédemment. Pour éviter d’avoir parfois un nombre pair de cellules mémoire 12 activées, une ligne de mot de parité WL_p est ajoutée, et cette ligne de mot de parité WL_p est configurée pour activer les cellules mémoire 12 de type 2T2R (codées en HRS, LRS), qui s’activeraient si le nombre d’entrées IN est pair. De ce fait, les distributions de tensions seront toujours de part et d’autre du seuil de l’unité logique. Cette ligne de mot de parité WL_p est avantageuse surtout lorsque l’opération de calcul est l’opération Majorité logique. Une fois ce problème de symétrie résolu, le nombre de décalages de seuil via les variations des tensions des paires de lignes de bit complémentaires BL, BLb est adapté au nombre de lignes de mot WL activées. La valeur maximale du compteur (ou décompteur) 88 est alors égale au nombre de lignes de mot WL activées plus un. Les tensions des paires de lignes de bit complémentaires BL, BLb qui sont symétriques par rapport au seuil de l’inverseur correspondent au seuil du milieu, un décalage vers le haut correspondra à un seuil plus bas, et un décalage vers le bas correspondra à un seuil plus haut. Dans le cas où le nombre de lignes de mot WL est pair, l’homme du métier comprendra qu’il ne faut pas considérer le seuil le plus « bas », qui correspond simplement à la cellule mémoire 12 associée à la ligne de mot de parité WL_p. L’avantage de cet exemple de la est, qu’en activant seulement les lignes de mot WL nécessaires, on diminue fortement le courant dans les colonnes 18. La cellule mémoire 12 utilisée est en outre une cellule 2T2R, plutôt qu’une cellule mémoire 4T4R dans les exemples des figures 2, 4 et 7. De plus, cet exemple de la permet de diminuer aussi le nombre de décalages de seuil via les variations des tensions des paires de lignes de bit complémentaires BL, BLb, ce nombre s’adaptant en fonction du nombre de lignes de mot WL activées. En variante, aucune ligne de mot de parité n’est ajoutée, et le circuit électronique 10 comprend alors en outre une unité de contrôle configurée pour adapter de manière analogique les tensions des paires de lignes de bit complémentaires BL, BLb dans le cas où le nombre de lignes de mot WL activées est impair. Dans l’exemple de la , l’opération de calcul effectuée par le circuit électronique 10 est une opération ET sur des opérandes binaires, ou une opération OU sur des opérandes binaires, ou encore une opération Majorité parmi des opérandes binaires. Dans l’exemple de la , la distribution 40 des tensions de la ligne de source SL est similaire à celle de la , décrite précédemment, et comporte la pluralité de lobes 42, chaque lobe 42 représentant une densité de probabilité de la tension de la ligne de source SL pour une valeur pop donnée. Le nombre de lobes 42 contenus dans la distribution 40 est alors égal au nombre de valeurs possibles de la tension de la ligne de source S(VL), c’est-à-dire à n+1, avec n représentant le nombre de lignes d’entrée IN i . Le nombre de valeurs de seuil nécessaires pour déterminer la valeur de la tension de la ligne de source SL parmi ces n+1 lobes 42 est alors égal à n, ces valeurs d’un seuil th étant notés respectivement th=0 à th=n-1 dans l’exemple de la , avec n=5. Toutefois, lorsque l’opération de calcul effectuée est l’opération ET sur des opérandes binaires, ou l’opération OU sur des opérandes binaires, ou encore l’opération Majorité parmi des opérandes binaires, l’homme du métier observera qu’un seul seuil est nécessaire à chaque fois. En effet, l’opération ET sur la pluralité d’opérandes binaires est égale à 1 si et seulement si tous les opérandes binaires sont égaux à 1, et égale à 0 dans tous les autres cas. Le seuil est alors positionné de manière à pouvoir détecter ce lobe de densité de probabilité de tension correspondant au cas où tous les opérandes sont égaux à 1, et déterminer alors si tous les opérandes sont égaux à 1 ou non, puis en déduire le résultat de l’opération ET. Inversement, l’opération OU sur la pluralité d’opérandes binaires est égale à 0 si et seulement si tous les opérandes binaires sont égaux à 0, et égale à 1 dans tous les autres cas. Le seuil est alors positionné de manière à pouvoir détecter ce lobe de densité de probabilité de tension correspondant au cas où tous les opérandes sont égaux à 0, et déterminer alors si tous les opérandes sont égaux à 0 ou non, puis en déduire le résultat de l’opération OU. Dans l’exemple de logique de codage précitée où la valeur binaire est encodée égale à 1, avec pour la première paire de memristors 28, 30 (ou la seule paire dans l’exemple de la ), le memristor de gauche, i.e. le premier memristor 28, est codé en forte résistance (état haut HRS), et le memristor de droite, i.e. le deuxième memristor 30, est codé en faible résistance (état bas LRS), l’unique seuil utilisé est alors le seuil le plus bas pour implémenter l’opération ET (de l’anglais AND ), et respectivement le seuil le plus haut pour implémenter l’opération OU (de l’anglais OR ), et respectivement encore le seuil du milieu pour l’opération Majorité, comme représenté sur la . L’opération de calcul permet alors d’effectuer un ET logique, ou un OU logique, ou encore une Majorité logique pour chaque colonne 18 séparément pour l’ensemble des rangées 16 de la matrice 14, et ce seulement pour les rangées dont les lignes de mot WL sont activées. Le circuit électronique 10 selon cet exemple de l’invention permet alors d’activer plusieurs rangées 16 en parallèle pour faire le calcul booléen - à savoir ET logique, ou OU logique, ou encore une Majorité logique - bit à bit sur plusieurs entrées en parallèle. De manière générale, la valeur du seuil de basculement INV th dépend de l’opération de calcul associée. Dans l’exemple de la , lorsque l’opération de calcul associée est l’opération ET ou l’opération OU, la valeur du seuil de basculement INV th est typiquement à un pas de tension d’une tension de ligne bit BL, BLb correspondante, la tension de ligne bit BL, BLb correspondante étant l’une des tensions de lignes de bit complémentaires BL, BLb pour l’opération ET et l’autre desdites tensions pour l’opération OU. Le pas de tension vérifie typiquement l’équation suivante : où P représente le pas de tension ; ΔBL représente le différentiel de tension entre la tension de la ligne de bit BL et la tension de la ligne de bit complémentaire BLb, et OPD représente le nombre d’opérandes auxquelles l’opération de calcul est appliquée. Dans l’exemple de la , lorsque l’opération de calcul associée est l’opération Majorité, la valeur du seuil de basculement INV th est typiquement la valeur médiane des tensions de lignes de bit complémentaires BL, BLb. Tous les cas où le résultat de l’opération Majorité est égal à 1 correspondent alors à des lobes 42 de densité de probabilité de tension disposés du même côté de ce seuil médian ; et tous les cas où le résultat de l’opération Majorité est égal à 0 correspondent alors à des lobes 42 de densité de probabilité de tension disposés de l’autre côté dudit seuil médian. En complément facultatif encore, le module de lecture 24 comporte en outre une unité de combinaison 90 pour au moins une colonne 18, chaque unité de combinaison 90 étant propre à combiner les résultats d’opérations logiques effectuées successivement par une unité logique 50 respective, pour mettre en œuvre une opération logique combinée. L’opération logique combinée est typiquement choisie parmi le groupe consistant en : une opération de ou-exclusif et une opération de non-ou-exclusif. Chaque unité de combinaison 90 comporte de préférence une bascule 92 connectée en sortie de l’unité logique 50 respective. Chaque unité de combinaison 90 est avantageusement en forme de la bascule 92. Selon ce complément facultatif, dans l’exemple de la , chaque sortie d’unité logique 50, notée inv[0] pour la première colonne 18, puis inv[1] pour la deuxième colonne 18, et ainsi de suite, est connectée à une bascule 92 respective, chaque sortie inv[i] pilotant le signal « enable » 94 de la bascule 92 associée, avec i indice entier compris entre 0 et le nombre de colonnes 18 moins un. Les bascules 92 ont en outre une entrée d’horloge 95 recevant un signal d’horloge CLK et une entrée 96 commune et parallèle à toutes les bascules 82. Cette entrée commune 96 est pilotée par une unité de commande 98. L’unité de commande 98 est avantageusement commune avec celle utilisée dans le contrôle des paires de lignes de bit complémentaires BL, BLb. (A vérifier par l’inventrice) La illustre le fonctionnement global de telles unités de combinaison 90, avec par exemple une séquence en trois étapes. Lors d’une première étape initiale, repérée par un 1 encerclé, le contenu de toutes les bascules 92 est réinitialisé à 0 via l’application d’un signal d’effacement (de l’anglais clear ), comme connu en soi. Lors d’une deuxième étape, repérée par un 2 encerclé, les deux opérandes de chaque colonne 18 auxquels l’opération logique combinée, telle qu’une opération de ou-exclusif, ou XOR, est à appliquer sont tout d’abord sélectionnés via les lignes de mot WL correspondantes. Dans l’exemple de la , lors de cette deuxième étape, une opération OU est alors effectuée avec les deux opérandes de chaque colonne 18, et via chaque unité logique 50 respective, de la manière décrite précédemment en regard de la . Le résultat de chaque opération OU est alors appliqué sur l’entrée Enable de la bascule 92 correspondante et lors d’un prochain front du signal d’horloge CLK, en appliquant la valeur 1 sur l’entrée commune 96 des bascules 92. Il en résulte que les bascules 92 dont l’entrée Enable est à « 1 » prennent la valeur « 1 » et les autres bascules 92 dont l’entrée Enable est à « 0 » gardent la valeur « 0 » correspondant à l’étape de réinitialisation précédente. Lors d’une troisième étape, repérée par un 3 encerclé, une nouvelle opération logique est effectuée avec les deux opérandes de chaque colonne 18, et via chaque unité logique 50 respective. Dans l’exemple de la , lors de cette troisième étape, une opération ET est alors effectuée avec les deux opérandes de chaque colonne 18, et via chaque unité logique 50 respective, de la manière décrite précédemment en regard de la . Une opération ET entre le résultat de la précédente opération OU et le résultat inverse de chaque opération ET (c’est-à-dire le résultat complémenté à 1 de chaque opération ET) est alors obtenu dans la bascule 92 correspondante au prochain front du signal d’horloge CLK, en appliquant la valeur 0 sur l’entrée commune 96 des bascules 92. En effet, lors du prochain front du signal d’horloge CLK, la valeur 0 sur l’entrée commune 96 sera forcée dans les bascules 92 pour lesquelles le signal « enable » 94 est à 1, c’est-à-dire celles pour lesquelles le résultat de l’opération ET effectuée lors de la troisième étape est égal à 1. Autrement dit, si l’opération de NON-ET appliquée avec les deux opérandes de chaque colonne 18 est égal à 1, alors le signal « enable » 94 est à 0, et le résultat de l’opération OU de la deuxième étape est alors conservé dans la bascule 92 correspondante. En d’autres termes encore, dans l’exemple de la , l’unité de combinaison 90 permet alors d’effectuer une opération de ou-exclusif, notée XOR, avec les deux opérandes de chaque colonne 18, compte tenu de l’équation suivante : où XOR désigne l’opération de ou-exclusif ; a et b représentent les deux opérandes ; OR, ou encore « + », désigne l’opération logique OU ; AND, ou encore « . », désigne l’opération logique ET ; et représente l’opérateur NON. Dans l’exemple de la , le résultat de l’opération logique combinée, obtenu dans chaque bascule 92 à la fin de la séquence est alors noté OP[i], avec i indice entier compris entre 0 et le nombre de colonnes 18 moins un, c’est-à-dire OP[0] pour la première colonne 18, puis OP[1] pour la deuxième colonne 18, et ainsi de suite. L’homme du métier comprendra alors que les bascules 92 permettent plus généralement de mettre en œuvre tout type de combinaison d’opérations logiques ET ou OU pour réaliser des opérations logiques combinées, les opérations logiques ET ou OU étant effectuées via les unités logiques 50, tel que décrit précédemment en regard de la . L’homme du métier observera en outre que, si seulement les deux premières étapes repérées par le 1 et le 2 encerclés sont mises en œuvre, les bascules 92 forment alors un moyen de mémorisation du résultat des opérations logiques effectuées par les unités logiques 50. Selon un aspect complémentaire facultatif, le circuit électronique 10 selon l’invention comprend en outre des commutateurs additionnels, non représentés, configurés pour connecter entre elles les lignes de source SL d’un groupe de plusieurs colonnes 18, et effectuer alors les opérations logiques par groupe de colonnes 18, plutôt que par groupe de rangées 16. Selon cet aspect complémentaire, l’unité logique 50 utilisée pour effectuer l’opération logique pour ledit groupe de colonnes 18 est préférentiellement celle connectée à la ligne de source SL qui est apte à être connectée à toutes les autres lignes de source SL des colonnes 18 du groupe. Selon cet aspect complémentaire, toutes les lignes de source SL sont optionnellement connectées entre elles via les commutateurs additionnels, qui sont alors avantageusement configurés pour être tous fermés lors de chaque opération de calcul. Le cas échéant, le deuxième contrôleur 22 inhibe la ou les colonnes 18 n’appartenant pas au groupe de colonnes 18 pour lesquelles l’opération logique est à effectuer, en appliquant un potentiel de haute impédance aux paires de lignes de bit complémentaires BL, BLb de ladite ou desdites colonnes 18 n’appartenant pas au groupe de colonnes 18. Cela simplifie alors la commande des commutateurs additionnels. On notera qu’il est possible en pratique de combiner, en même temps, les deux possibilités de « combinaison d’opérandes » en colonnes 18 ou en rangées 16 en sélectionnant des opérandes sur plusieurs rangées 16 et en reliant les colonnes 18 comme décrit ci-dessus via une connexion entre leurs lignes de source SL. Dans les exemples des figures 2, 4, 7 et 10, chaque memristor 28, 30 d’une cellule mémoire 12 respective est relié à la même ligne de source SL et à un commutateur 32, 34 respectif. L’homme du métier comprendra qu’en variante, non représentée, chaque cellule mémoire 12 d’une colonne 18 respective comprend au moins une paire de sous-cellules, non représentées, chaque sous-cellule comportant un memristor 28, 30 et un commutateur 32, 34, chaque memristor 28, 30 d’une sous-cellule respective étant connecté à une ligne de source et à un commutateur 32, 34 respectifs. De manière analogue, les memristors 28, 30 de chaque paire de sous-cellules mémorisent alors respectivement une valeur binaire en présentant respectivement des première et deuxième valeurs de résistances différentes. Similairement, les commutateurs 32, 34 sont reliés, pour leur activation, à une ligne de mot WL respective et reliés respectivement à une paire de lignes de bit complémentaires BL, BLb, les deux commutateurs 32, 34 d’une paire respective de sous-cellules étant reliés à une même ligne de mot WL. Selon cette variante, les deux lignes de source associées à une paire respective de sous-cellules sont alors connectées entre elles lors de chaque opération de calcul via un commutateur auxiliaire, non représenté, pour former alors la même ligne de source SL, également appelée ligne de source commune aux cellules mémoire 12 d’une même colonne 18, à laquelle chaque memristor 28, 30 d’une cellule mémoire 12 respective est relié lors de chaque opération de calcul. On conçoit ainsi que le circuit électronique 10 selon l’invention permet de déterminer plus efficacement une valeur résultante correspondant à la tension de la ligne de source SL respective, de par son module de lecture 24 comportant une unité logique 50 pour chaque colonne 18 et l’unité de modification 60 propre à modifier, pour au moins une unité logique 50 et en fonction de l’opération de calcul, la différence entre la valeur de colonne et la valeur de seuil de basculement INV th de l’unité logique 50 correspondante. Circuit électronique (10) propre à mettre en œuvre des opérations de calcul fournissant chacune une sortie binaire, le circuit comprenant : - des lignes de mot (WL) ; - des paires de lignes de bit complémentaires (BL, BLb) ; - des lignes de source (SL) ; - un ensemble de cellules mémoire (12) organisées selon une matrice (14) comportant des rangées (16) et des colonnes (18), les cellules mémoire (12) d’une même rangée (16) étant sélectionnables par au moins une ligne de mot (WL), les cellules mémoire (12) d’une même colonne (18) étant reliées à une paire de lignes de bit complémentaires (BL, BLb) et au moins une ligne de source (SL) ; chaque cellule mémoire (12) comportant au moins une paire de memristors et au moins une paire de commutateurs, chaque memristor d’une cellule mémoire (12) respective étant connecté à un commutateur respectif et relié à la même ligne de source (SL) lors de chaque opération de calcul, chaque paire de memristors mémorisant respectivement une valeur binaire 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) respective et reliés respectivement à une paire de lignes de bit complémentaires (BL, BLb), les deux commutateurs d’une paire respective étant reliés à une même ligne de mot (WL) ; - un module de lecture (24) mis en œuvre lors de chaque opération de calcul, le module de lecture (24) comportant : + une unité logique (50) pour chaque colonne (18), chaque unité logique (50) comprenant au moins une borne d’entrée (52) connectée à une ligne de source (SL) respective pour recevoir une valeur d’entrée dite valeur de colonne, l’unité logique (50) étant propre à effectuer une opération logique présentant un basculement entre une valeur basse et une valeur haute en fonction d’une comparaison de la valeur de colonne par rapport à une valeur de seuil de basculement (INV th ), lors de l’opération de calcul, et + une unité de modification (60) propre à modifier, pour au moins une unité logique (50) et en fonction de l’opération de calcul souhaitée, une différence entre la valeur de colonne et la valeur de seuil de basculement (INV th ). Circuit électronique (10) selon la revendication 1, dans lequel l’unité de modification (60) est propre à modifier la différence entre la valeur de colonne et la valeur de basculement (INV th ) pour une unité logique (50) respective, en commandant une modification des tensions complémentaires appliquées sur la paire de lignes de bit complémentaires (BL, BLb) pour la colonne (18) associée à ladite unité logique (50). Circuit électronique (10) selon la revendication 1 ou 2, dans lequel l’unité de modification (60) est propre à modifier la différence entre la valeur de colonne et la valeur de seuil pour une unité logique (50) respective, en commandant une modification de la valeur de seuil de ladite unité logique (50) ; ladite valeur de seuil étant de préférence modifiée via un changement de la tension d’alimentation de ladite unité logique (50) et/ou via un changement de la tension de polarisation d’une grille arrière d’au moins un transistor de ladite unité logique (50). Circuit électronique (10) selon l’une quelconque des revendications précédentes, dans lequel l’unité de modification (60) est propre à modifier, de manière incrémentale selon un pas d’incrémentation prédéfini, ladite différence entre la valeur de colonne et la valeur de seuil de basculement (INV th ), pour déterminer - parmi une pluralité de valeurs possibles prédéfinies - une valeur résultante correspondant à la tension de la ligne de source (SL) respective correspondant à ladite valeur de colonne ; le pas d’incrémentation dépendant de ladite pluralité de valeurs possibles. Circuit électronique (10) selon la revendication 4, dans lequel le module de lecture (24) comporte en outre une unité de mémorisation (80) pour au moins une colonne (18), chaque unité de mémorisation (80) étant propre à stocker la valeur résultante déterminée pour la colonne (18) respective, dans l’attente de la détermination de toutes les valeurs résultantes pour un groupe respectif de plusieurs colonnes (18) ; chaque unité de mémorisation (80) comportant de préférence un registre de bits (82) pour stocker sous forme binaire ladite valeur résultante déterminée. Circuit électronique (10) selon la revendication 4 ou 5, dans lequel le module de lecture (24) comporte en outre une unité d’extinction (70) pour chaque colonne (18), chaque unité d’extinction (70) étant propre - après détermination de la valeur résultante pour la colonne (18) respective et dans l’attente de la détermination de toutes les valeurs résultantes pour un groupe respectif - à commander l’application de la même tension à la paire de lignes de bit complémentaires (BL, BLb) pour la circulation d’un courant sensiblement nul dans la ligne de source (SL) de la colonne (18) respective. Circuit électronique (10) selon l’une quelconque des revendications précédentes, dans lequel chaque cellule mémoire (12) comporte deux paires de memristors et deux paires de commutateurs. Circuit électronique (10) selon la revendication 7, dans lequel une première paire de commutateurs (32, 34) est reliée à une première ligne de mot (WL) assignée à une entrée (IN), et respectivement une deuxième paire de commutateurs (34, 32) est reliée à une deuxième ligne de mot (WLb) assignée à l’inverse de ladite entrée (IN) ; et dans lequel une première paire de memristors (28, 30) est associée à la première paire de commutateurs (32, 34) et mémorisant une valeur binaire (w), et respectivement une deuxième paire de memristors (30, 28) est associée à la deuxième paire de commutateurs (34, 32) et mémorisant l’inverse de la même valeur binaire (w). Circuit électronique (10) selon l’une quelconque des revendications 1 à 6, dans lequel chaque cellule mémoire (12) comporte une seule paire de memristors et une seule paire de commutateurs, chaque paire de memristors mémorisant respectivement un poids synaptique. Circuit électronique (10) selon l’une quelconque des revendications précédentes, dans lequel l’opération logique effectuée par l’unité logique (50) est une inversion, et l’opération de calcul associée est choisie parmi : une opération de calcul neuronal, telle que l’opération MAC ; une opération ET ; une opération OU ; une opération Majorité. Circuit électronique (10) selon la revendication 11, dans lequel la valeur du seuil de basculement (INV th ) dépend de l’opération de calcul associée ; lorsque l’opération de calcul associée est l’opération ET ou l’opération OU, la valeur du seuil de basculement (INV th ) étant de préférence à un pas de tension d’une tension de ligne bit (BL, BLb) correspondante, la tension de ligne bit (BL, BLb) correspondante étant l’une des tensions de lignes de bit complémentaires (BL, BLb) pour l’opération ET et l’autre desdites tensions pour l’opération OU, le pas de tension vérifiant l’équation suivante : où P réprésente le pas de tension ; ΔBL représente le différentiel de tension entre la tension de la ligne de bit (BL) et la tension de la ligne de bit complémentaire (BLb), et OPD représente le nombre d’opérandes auxquelles l’opération de calcul est appliquée ; lorsque l’opération de calcul associée est l’opération Majorité, la valeur du seuil de basculement (INV th ) étant de préférence une valeur médiane des tensions de lignes de bit complémentaires (BL, BLb). Circuit électronique (10) selon la revendication 10 ou 11, dans lequel le module de lecture (24) comporte en outre une unité de combinaison (90) pour au moins une colonne (18), chaque unité de combinaison (90) étant propre à combiner les résultats d’opérations logiques effectuées successivement par une unité logique (50) respective, pour mettre en œuvre une opération logique combinée ; chaque unité de combinaison (90) comportant de préférence une bascule (92) connectée en sortie de l’unité logique (50) respective ; l’opération logique combinée étant de préférence encore choisie parmi le groupe consistant en : une opération de ou-exclusif et une opération de non-ou-exclusif. Circuit électronique (10) selon l’une quelconque des revendications précédentes, dans lequel chaque cellule mémoire (12) d’une colonne (18) respective comprend au moins une paire de sous-cellules, chaque sous-cellule comportant un memristor et un commutateur, chaque memristor d’une sous-cellule respective étant connecté à une ligne de source et à un commutateur respectifs, les memristors de chaque paire de sous-cellules mémorisant respectivement une valeur binaire 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) respective et reliés respectivement à une paire de lignes de bit complémentaires (BL, BLb), les deux commutateurs d’une paire respective de sous-cellules étant reliés à une même ligne de mot (WL) ; les deux lignes de source associées à une paire respective de sous-cellules étant connectées entre elles via un commutateur auxiliaire lors de chaque opération de calcul et formant alors la même ligne de source (SL) à laquelle chaque memristor d’une cellule mémoire (12) respective est relié lors de chaque opération de calcul. Circuit électronique (10) selon l’une quelconque des revendications précédentes, dans lequel le circuit électronique (10) est un circuit neuromorphique propre à mettre en œuvre un réseau de neurones à sortie binaire, chaque cellule mémoire (12) étant associée à un poids synaptique respectif d’un neurone, et les lignes de mot (WL) étant aptes à recevoir des tensions d’entrée lors d’une opération de calcul neuronal. Circuit électronique (10) selon l’une quelconque des revendications précédentes, comprenant un premier contrôleur (20) permettant de sélectionner les cellules mémoire (12) d’une rangée (16) qui sont reliées à une même ligne de mot (WL), et comprenant un deuxième contrôleur (22) relié aux paires de lignes de bit (BL, BLb) et permettant d’appliquer sur chaque paire de ligne de bit (BL, BLb) des tensions différentes et symétriques par rapport à une tension milieu, la tension appliquée sur une ligne de bit (BL) étant supérieure ou inférieur à celle appliquée sur la ligne de bit complémentaire (BLb) associée. Circuit électronique (10) selon l’une quelconque des revendications précédentes, dans lequel le circuit électronique (10) comporte plusieurs ensembles distincts de cellules mémoire (12) propres à fonctionner en parallèle.