FR3008534B1 - Procede de gestion du fonctionnement d'un dispositif de memoire associant un plan-memoire du type sram et un plan memoire du type non volatil, et dispositif de memoire correspondant - Google Patents
Procede de gestion du fonctionnement d'un dispositif de memoire associant un plan-memoire du type sram et un plan memoire du type non volatil, et dispositif de memoire correspondant Download PDFInfo
- Publication number
- FR3008534B1 FR3008534B1 FR1356720A FR1356720A FR3008534B1 FR 3008534 B1 FR3008534 B1 FR 3008534B1 FR 1356720 A FR1356720 A FR 1356720A FR 1356720 A FR1356720 A FR 1356720A FR 3008534 B1 FR3008534 B1 FR 3008534B1
- Authority
- FR
- France
- Prior art keywords
- memory cell
- sram
- data
- elementary
- value
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Expired - Fee Related
Links
Classifications
-
- G—PHYSICS
- G11—INFORMATION STORAGE
- G11C—STATIC STORES
- G11C14/00—Digital stores characterised by arrangements of cells having volatile and non-volatile storage properties for back-up when the power is down
- G11C14/0054—Digital stores characterised by arrangements of cells having volatile and non-volatile storage properties for back-up when the power is down in which the volatile element is a SRAM cell
- G11C14/0063—Digital stores characterised by arrangements of cells having volatile and non-volatile storage properties for back-up when the power is down in which the volatile element is a SRAM cell and the nonvolatile element is an EEPROM element, e.g. a floating gate or MNOS transistor
-
- G—PHYSICS
- G11—INFORMATION STORAGE
- G11C—STATIC STORES
- G11C16/00—Erasable programmable read-only memories
- G11C16/02—Erasable programmable read-only memories electrically programmable
- G11C16/04—Erasable programmable read-only memories electrically programmable using variable threshold transistors, e.g. FAMOS
- G11C16/0408—Erasable programmable read-only memories electrically programmable using variable threshold transistors, e.g. FAMOS comprising cells containing floating gate transistors
-
- G—PHYSICS
- G11—INFORMATION STORAGE
- G11C—STATIC STORES
- G11C16/00—Erasable programmable read-only memories
- G11C16/02—Erasable programmable read-only memories electrically programmable
- G11C16/06—Auxiliary circuits, e.g. for writing into memory
- G11C16/34—Determination of programming status, e.g. threshold voltage, overprogramming or underprogramming, retention
- G11C16/3418—Disturbance prevention or evaluation; Refreshing of disturbed memory data
-
- G—PHYSICS
- G11—INFORMATION STORAGE
- G11C—STATIC STORES
- G11C7/00—Arrangements for writing information into, or reading information out from, a digital store
- G11C7/10—Input/output [I/O] data interface arrangements, e.g. I/O data control circuits, I/O data buffers
- G11C7/1006—Data managing, e.g. manipulating data before writing or reading out, data bus switches or control circuits therefor
Landscapes
- Engineering & Computer Science (AREA)
- Microelectronics & Electronic Packaging (AREA)
- Static Random-Access Memory (AREA)
Abstract
Procédé de gestion du fonctionnement d'un ensemble d'au moins une cellule-mémoire (CEL) du type comportant une cellule-mémoire élémentaire du type SRAM (CELSR) et au moins une cellule-mémoire élémentaire non volatile (CELNV) mutuellement couplées, ladite au moins une cellule-mémoire étant configurée pour effectuer une inversion de valeur de donnée lors d'un rechargement dans la cellule-mémoire élémentaire SRAM d'une donnée préalablement écrite dans ladite au moins une cellule élémentaire non volatile, procédé comprenant, à chaque transfert d'une donnée de ladite cellule-mémoire élémentaire du type SRAM (CELSR) dans ladite au moins une cellule-mémoire élémentaire non volatile (CELNV) et à chaque rechargement de ladite cellule-mémoire élémentaire SRAM, une mise en œuvre respective des mêmes opérations sur une donnée témoin d'une cellule-mémoire témoin (CELT) fonctionnellement analogue et associée à ladite au moins une cellule-mémoire, et à chaque lecture (22) d'une donnée de ladite cellule-mémoire élémentaire SRAM, une lecture correspondante (23) de la donnée témoin, et une inversion ou non de la donnée lue dans ladite cellule-mémoire élémentaire SRAM (CELSR) en fonction de la valeur lue de la donnée témoin.
Description
Procédé de gestion du fonctionnement d’un dispositif de mémoire associant un plan-mémoire du type SRAM et un plan mémoire du type non volatil, et dispositif de mémoire correspondant L’invention concerne les dispositifs de mémoire, notamment ceux associant, au sein d’une même cellule-mémoire, une cellule élémentaire du type mémoire vive statique (SRAM : Static Random Access Memory) et une ou plusieurs cellules-mémoire élémentaires non volatiles, par exemple deux ou quatre, en particulier des cellules-mémoire élémentaires du type mémoire morte électriquement effaçable et programmable (EEPROM : Electrically-Erasable and Programmable Read-Only Memory), bien qu’il soit possible d’utiliser des cellules non volatiles du type FLASH. L’invention concerne plus particulièrement la gestion de l’inversion des données lors d’un rechargement de la mémoire de type SRAM par la mémoire non volatile associée.
Une cellule-mémoire élémentaire du type SRAM est une cellule-mémoire volatile, c’est-à-dire perdant ses données en cas de coupure d’alimentation, mais offrant une rapidité d’accès très rapide ainsi qu’un cyclage infini.
Une cellule-mémoire élémentaire non volatile, par exemple une cellule-mémoire du type EEPROM, permet de conserver la donnée en cas de coupure d’alimentation mais ne peut pas être cyclée indéfiniment.
Une cellule-mémoire associant une cellule élémentaire du type SRAM et une ou plusieurs cellules non volatiles (par exemple deux ou quatre) permet de cumuler les performances des deux approches, à savoir la vitesse et l’endurance infinie de la mémoire SRAM et la non-volatilité de la mémoire non volatile, par exemple la mémoire flash ou EEPROM.
Dans des conditions normales de fonctionnement, l’écriture et la lecture d’une donnée dans une telle cellule-mémoire s’effectuent dans la cellule élémentaire du type SRAM. Par contre, notamment lors d’une coupure d’alimentation, il y a transfert du contenu de la cellule élémentaire SRAM dans la ou les cellules-mémoire élémentaires non volatiles qui lui sont associées.
Puis, lors d’une remontée d’alimentation notamment, il y a rechargement des données contenues dans les cellules-mémoire non volatiles, dans la cellule-mémoire élémentaire SRAM correspondante.
Des exemples d’architectures de telles cellules-mémoire associant mémoire SRAM et mémoire non volatile sont décrites dans les documents US 4,132,905, US 4,467,451, US 4,980,859, US 7,164,608, US 8,018,768 et dans les demandes de brevets français déposées sous les n° 1355439 et 1355440.
Certains modes de réalisation de ces structures décrites dans ces documents présentent une inversion de données lors du rechargement de la mémoire de type SRAM par le contenu de la mémoire non volatile associée.
Plusieurs solutions peuvent être envisagées pour gérer cette inversion de données.
Une première approche peut consister à faire un double stockage non volatil, c’est-à-dire deux inversions successives. Cependant, une telle approche présente un coût double en termes de temps et d’énergie.
Une autre approche envisagée peut consister à croiser, entre l’écriture non volatile et le rechargement de la cellule-mémoire élémentaire SRAM, les connexions des cellules-mémoire élémentaires. Cependant, ceci présente un coût en terme d’encombrement.
Une autre approche peut consister à effectuer le rechargement de la cellule-mémoire élémentaire du type SRAM depuis les cellules-mémoire élémentaires non volatiles par un tirage à la tension d’alimentation Vdd. Cependant, ceci impose alors des contraintes de dimensionnement des cellules-mémoire élémentaires et des contraintes de courants de cellules (il est nécessaire d’avoir des courants importants et on a en plus un risque de perte de charge de la cellule-mémoire élémentaire non volatile (phénomène connu par l’homme du métier sous l’acronyme anglo-saxon « disturb »).
Selon un mode de mise en œuvre et de réalisation, il est proposé un procédé et un dispositif de mémoire offrant une gestion de l’inversion de donnée lors du rechargement de la cellule SRAM par la ou les cellules non volatiles qui est totalement différente des gestions de l’art antérieur et qui est plus performante en termes de débit d’écriture et d’énergie consommée.
Selon un mode de mise en œuvre, il est proposé de ne pas modifier la configuration existante d’une cellule-mémoire conduisant à une inversion de donnée lors du rechargement de la cellule SRAM depuis la cellule non volatile, que ce soit en terme structurel ou en terme d’alimentation, mais d’associer à une ou plusieurs de ces cellules-mémoire une cellule-témoin qui va permettre de détecter l’inversion ou non d’une donnée lue dans la cellule-mémoire élémentaire SRAM.
Ainsi, selon un aspect, il est proposé un procédé de gestion du fonctionnement d’un ensemble d’au moins une cellule-mémoire du type comportant une cellule-mémoire élémentaire du type SRAM et au moins une cellule-mémoire élémentaire non volatile mutuellement couplées, ladite au moins une cellule-mémoire étant configurée pour effectuer une inversion de valeur de donnée lors d’un rechargement dans la cellule SRAM d’une donnée préalablement écrite dans ladite au moins une cellule-mémoire élémentaire non volatile.
Le procédé selon cet aspect procédé comprend, à chaque transfert d’une donnée de ladite cellule-mémoire élémentaire du type SRAM dans ladite au moins une cellule-mémoire élémentaire non volatile et à chaque rechargement de ladite cellule-mémoire élémentaire SRAM, une mise en œuvre respective des mêmes opérations sur une donnée témoin d’une cellule-mémoire témoin fonctionnellement analogue et associée à ladite au moins une cellule-mémoire ;
Et à chaque lecture d’une donnée de ladite cellule-mémoire élémentaire SRAM, une lecture correspondante de la donnée témoin, et une inversion ou non de la donnée lue dans ladite cellule-mémoire élémentaire SRAM en fonction de la valeur lue de la donnée témoin.
Une cellule-mémoire témoin fonctionnellement analogue à ladite au moins une cellule-mémoire est une cellule-mémoire qui, tout en pouvant être de structure différente de celle de la cellule-mémoire, est également configurée pour effectuer une inversion de valeur de donnée lors d’un rechargement de sa cellule-mémoire élémentaire SRAM d’une donnée préalablement écrite dans sa ou ses cellules-mémoire élémentaires non volatiles associées.
Selon un mode de mise en œuvre le procédé comprend par ailleurs, a) lors de la première écriture d’une donnée dans ladite cellule-mémoire élémentaire SRAM de ladite au moins un cellule-mémoire, postérieure à un nombre impair de rechargement(s) de ladite cellule-mémoire élémentaire SRAM depuis la dernière écriture dans cette cellule-mémoire élémentaire SRAM, une écriture de la donnée témoin ayant une première valeur, par exemple la valeur logique « 0 », dans la cellule-mémoire élémentaire SRAM de ladite cellule-mémoire témoin, et, b) si, lors de la lecture, la valeur lue de la donnée témoin est égale à une deuxième valeur, différente de la première valeur, par exemple la valeur logique « 1 », une inversion de la valeur de la donnée de la cellule-mémoire élémentaire SRAM de ladite au moins une cellule-mémoire et une délivrance de chaque donnée inversée, tandis que si la valeur lue de la donnée témoin est égale à la première valeur, une délivrance de la donnée effectivement lue dans la cellule-mémoire élémentaire SRAM de ladite au moins une cellule-mémoire.
Ainsi, lorsqu’on lit la cellule-mémoire élémentaire SRAM de la cellule-mémoire, on lit également la cellule-mémoire élémentaire SRAM de la cellule-mémoire témoin et si la donnée témoin, en l’espèce un bit, a été inversée, cela signifie non seulement qu’il y a eu effectivement un rechargement non volatil de la cellule-mémoire élémentaire SRAM de la cellule-mémoire avec inversion de donnée, mais encore qu’il n’y a pas eu d’écriture de la cellule-mémoire élémentaire SRAM depuis, c'est-à-dire que la dernière opération ayant repositionné la cellule SRAM dans un état logique donné est un rechargement.
Et, dans ce cas, on inverse la donnée effectivement lue.
Par contre, si le bit témoin ne change pas de valeur, cela signifie qu’il n’y a pas eu rechargement non volatil de la cellule-mémoire SRAM et qu’il s’agit là simplement d’une lecture d’une cellule SRAM au cours d’un fonctionnement SRAM classique sans transfert non volatil préalable. Il n’y a donc pas lieu d’inverser la donnée effectivement lue.
La granularité des cellules-mémoire témoins dépend de l’application envisagée et/ou du mode de fonctionnement des cellules-mémoire élémentaires du type SRAM.
Ainsi, selon un mode de mise en œuvre, on peut associer à chaque mot SRAM (huit bits par exemple) correspondant à un bloc de plusieurs cellules-mémoire (huit par exemple) une neuvième cellule qui est la cellule-mémoire témoin.
Plus précisément, dans un tel mode de mise en œuvre, l’ensemble de cellules-mémoire comprend plusieurs blocs de plusieurs cellules-mémoire (par exemple plusieurs blocs de huit cellules-mémoire) et on associe une cellule-mémoire témoin à chaque bloc de cellules-mémoire et a) lors de la première écriture d’un bloc de données (un octet par exemple) dans un bloc de cellules-mémoire élémentaires SRAM du bloc correspondant de cellules-mémoire, postérieure à un nombre impair de rechargement(s) du bloc de cellules-mémoires élémentaires SRAM depuis la dernière écriture dans ledit bloc de cellules-mémoires élémentaires SRAM, on écrit la donnée témoin ayant la première valeur logique dans la cellule mémoire élémentaire SRAM de ladite cellule-mémoire témoin correspondante, et b) lors d’une commande de lecture du contenu de chaque cellule-mémoire élémentaire SRAM dudit bloc, on lit le contenu de la cellule-mémoire élémentaire SRAM de la cellule-mémoire témoin correspondante, et si la valeur lue de la donnée témoin est égale à la deuxième valeur logique, on inverse la valeur de la donnée de chaque cellule-mémoire élémentaire SRAM dudit bloc et on délivre chaque donnée inversée, tandis que si la valeur lue de la donnée témoin est égale à la première valeur logique, on délivre la donnée effectivement lue dans chaque cellule-mémoire élémentaire SRAM dudit bloc.
Ainsi, dans le mode de mise en œuvre qui vient d’être évoqué, avec une organisation par mots de n bits, la gestion de l’inversion de la donnée nécessite n+1 bits. En d’autres termes, pour n=8, on a 9 bits, et on perd environ 12% en encombrement.
Il est possible toutefois de gagner de la place au prix d’un peu plus de complexité, en utilisant un bit témoin commun pour p mots, par exemple p octets.
Ainsi par exemple, à la suite d’un rechargement non volatil, ce bit témoin, initialement à 0, est inversé et lu à «1 » et les données des p octets sont inversées pour récupérer les données correctes. Et, ultérieurement, en cas d’écriture du type SRAM d’au moins un mot (un octet par exemple) parmi les p mots, ce bit témoin sera remis à 0 mais les données des p-1 autres mots devront être lues et rechargées dans l’état opposé. Ainsi, toute lecture SRAM ultérieure de l’un des p mots se fera avec les données initiales non inversées.
Ainsi, selon un autre mode de mise en œuvre, dans lequel l’ensemble comprend plusieurs sous-ensembles de plusieurs blocs (par exemple p blocs) de plusieurs cellules-mémoire (chaque bloc comprend par exemple huit cellules-mémoire) on associe une cellule-mémoire témoin à chaque sous-ensemble de blocs de cellules-mémoire et a) lors de la première écriture d’au moins un bloc de données dans au moins un bloc de cellules-mémoire élémentaires SRAM d’un sous-ensemble de cellules-mémoire, postérieure à un nombre impair de rechargement(s) du sous-ensemble de cellules-mémoires élémentaires SRAM depuis la dernière écriture dans au moins un bloc de cellules-mémoire élémentaires SRAM de ce sous-ensemble, on écrit la donnée témoin ayant la première valeur logique dans la cellule SRAM de ladite cellule-mémoire témoin correspondante, et on lit les données des autres cellules-mémoires élémentaires SRAM des autres blocs dudit sous-ensemble et on réécrit dans ces autres cellules-mémoires élémentaires SRAM des autres blocs lesdites données lues mais inversées, b) lors d’une commande de lecture du contenu de chaque cellule-mémoire élémentaire SRAM dudit sous-ensemble, on lit le contenu de la cellule SRAM de la cellule-mémoire témoin, et bl) si la valeur lue de la donnée témoin est égale à la deuxième valeur logique, on inverse la valeur de la donnée de chaque cellule-mémoire élémentaire SRAM dudit sous-ensemble et on délivre chaque donnée inversée, tandis que b2) si la valeur lue de la donnée témoin est égale à la première valeur logique, on délivre la donnée effectivement lue dans chaque cellule-mémoire élémentaire SRAM dudit sous-ensemble.
Quel que soit le mode de mise en œuvre, si un nombre pair de rechargement d’une cellule-mémoire élémentaire SRAM s’est produit depuis la dernière écriture dans cette cellule-mémoire élémentaire, (parce que par exemple durant cette période tout le plan mémoire a été rechargé un nombre pair de fois et qu’aucune écriture n’a été effectuée dans cette cellule alors que des écritures ont été faites dans d’autres cellules SRAM du plan mémoire associées à d’autres bits témoins) alors le bit témoin associé à cette cellule a été inversé un nombre pair de fois et est revenu à sa première valeur logique (« 0 » en l’espèce) et la donnée de la cellule-mémoire élémentaire SRAM a été également inversée un nombre pair de fois ce qui correspond à sa valeur initiale.
Dans une telle situation, il n’est donc pas nécessaire, quoique possible dans certains cas, lors d’une première écriture d’une donnée dans la cellule SRAM, postérieure à un nombre pair de rechargements, de réécrire le bit témoin à « 0 » et il suffit simplement d’écrire la donnée dans la cellule SRAM.
Quel que soit le mode de mise en œuvre une solution simple pour détecter une première écriture après un nombre impair de rechargement(s) depuis une dernière écriture peut comprendre un test de la valeur de la donnée témoin.
Plus précisément selon un mode de mise en œuvre, l’étape a) comprend en outre, préalablement à l’écriture de la donnée témoin ayant la première valeur dans la cellule-mémoire élémentaire SRAM de ladite cellule-mémoire témoin correspondante, une lecture de la valeur ladite donnée témoin dans la cellule-mémoire élémentaire SRAM de ladite cellule-mémoire témoin correspondante, une valeur lue de la donnée témoin égale à ladite deuxième valeur signifiant que ladite écriture d’une donnée dans la cellule-mémoire élémentaire SRAM d’une cellule-mémoire est bien une première écriture postérieure à un nombre impair de rechargement(s) depuis la dernière écriture dans ladite cellule-mémoire élémentaire SRAM.
Ceci est particulièrement intéressant lorsque ledit ensemble comprend plusieurs sous-ensembles de plusieurs blocs (par exemple p blocs) de plusieurs cellules-mémoire (chaque bloc comprend par exemple huit cellules-mémoire) et qu’on associe une cellule-mémoire témoin à chaque sous-ensemble de blocs de cellules-mémoire.
En effet dans ce cas, le procédé comprend avantageusement lors de chaque commande d’écriture d’au moins un bloc de données dans au moins un bloc de cellules-mémoire élémentaires SRAM d’un sous-ensemble de cellules-mémoire, une lecture de la donnée témoin correspondante, et si cette donnée témoin a la deuxième valeur (en l’espèce la valeur logique « 1 »), une écriture dudit bloc de données dans ledit au moins un bloc de cellules-mémoire élémentaires SRAM du sous-ensemble de cellules-mémoire, une écriture de la donnée témoin ayant la première valeur dans la cellule-mémoire élémentaire SRAM de ladite cellule-mémoire témoin correspondante, une lecture des données des autres cellules-mémoires élémentaires SRAM des autres blocs dudit sous-ensemble et une récriture, dans ces autres cellules-mémoires élémentaires SRAM des autres blocs, desdites données lues mais inversées, tandis que si cette donnée témoin a déjà la première valeur (en l’espèce la valeur logique « 0 »), une écriture dudit bloc de données dans ledit au moins un bloc de cellules-mémoire élémentaires SRAM du sous-ensemble de cellules-mémoire. A titre d’exemple non limitatif, si la première valeur logique de la donnée témoin est un « 0 » et l’étape b) peut comprendre alors une application d’une fonction logique OU EXCLUSIF sur la donnée lue de chaque cellule-mémoire élémentaire SRAM et sur la donnée témoin lue de la cellule-mémoire élémentaire SRAM de ladite cellule-mémoire témoin associée.
Selon un autre aspect, il est proposé un dispositif de mémoire comprenant un ensemble d’au moins une cellule-mémoire du type comportant une cellule-mémoire élémentaire du type SRAM et au moins une cellule-mémoire élémentaire non volatile mutuellement couplées, ladite au moins une cellule-mémoire étant configurée pour effectuer une inversion de valeur de donnée lors d’un rechargement dans la cellule SRAM d’une donnée préalablement écrite dans ladite au moins une cellule élémentaire non volatile, une cellule-mémoire témoin fonctionnellement analogue à ladite au moins une cellule-mémoire, associée à ladite au moins une cellule-mémoire, des premiers moyens de traitement configurés pour, à chaque transfert d’une donnée de ladite cellule-mémoire élémentaire du type SRAM dans ladite au moins une cellule-mémoire élémentaire non volatile de ladite au moins une cellule-mémoire et à chaque rechargement de ladite cellule-mémoire élémentaire SRAM de ladite au moins une cellule-mémoire, effectuer respectivement les mêmes opérations sur une donnée témoin de ladite cellule-mémoire témoin, et des deuxièmes moyens de traitement configurés pour, à chaque lecture d’une donnée de ladite cellule-mémoire élémentaire SRAM, effectuer une lecture correspondante de la donnée témoin, et une inversion ou non de la donnée lue dans ladite cellule-mémoire élémentaire SRAM en fonction de la valeur lue de la donnée témoin.
Selon un mode de réalisation, le dispositif comprend en outre des troisièmes moyens de traitement configurés pour, lors de la première écriture d’une donnée dans ladite cellule-mémoire élémentaire SRAM de ladite au moins une cellule-mémoire, postérieure à un nombre impair de rechargement(s) de ladite cellule-mémoire élémentaire SRAM depuis la dernière écriture dans ladite cellule-mémoire élémentaire SRAM, écrire la donnée témoin ayant une première valeur dans la cellule-mémoire élémentaire SRAM de ladite cellule-mémoire témoin, et les deuxièmes moyens de traitement sont configurés pour, lors d’une commande de lecture du contenu de la cellule-mémoire élémentaire SRAM de ladite au moins une cellule-mémoire, lire le contenu de la cellule SRAM de la cellule-mémoire témoin, et si la valeur lue de la donnée témoin est égale à une deuxième valeur différente de la première, inverser la valeur de la donnée de la cellule-mémoire-élémentaire SRAM de ladite au moins une cellule-mémoire et délivrer chaque donnée inversée, tandis que si la valeur lue de la donnée témoin est égale à la première valeur, délivrer la donnée effectivement lue dans la cellule-mémoire élémentaire SRAM de ladite au moins une cellule-mémoire.
Selon un mode de réalisation, ledit ensemble comprend plusieurs blocs de plusieurs cellules-mémoire, et une cellule-mémoire témoin est associée à chaque bloc de cellules-mémoire, et le dispositif comprend en outre des troisièmes moyens de traitement configurés pour, lors de la première écriture d’un bloc de données dans un bloc de cellules-mémoire élémentaires SRAM du bloc correspondant de cellules-mémoire, postérieure à un nombre impair de rechargement(s) du bloc de cellules-mémoires élémentaires SRAM depuis la dernière écriture dans ledit bloc de cellules-mémoires élémentaires SRAM, écrire la donnée témoin ayant la première valeur logique dans la cellule SRAM de ladite cellule-mémoire témoin correspondante, et les deuxièmes moyens de traitement sont configurés pour, lors d’une commande de lecture du contenu de chaque cellule-mémoire élémentaire SRAM dudit bloc, lire le contenu de la cellule SRAM de la cellule-mémoire témoin correspondante, et si la valeur lue de la donnée témoin est égale à la deuxième valeur logique, inverser la valeur de la donnée de chaque cellule-mémoire élémentaire SRAM dudit bloc et délivrer chaque donnée inversée, tandis que si la valeur lue de la donnée témoin est égale à la première valeur logique, délivrer la donnée effectivement lue dans chaque cellule-mémoire élémentaire SRAM dudit bloc.
Selon un mode de réalisation les troisièmes moyens de traitement sont configurés pour préalablement à l’écriture de la donnée témoin ayant la première valeur dans la cellule-mémoire élémentaire SRAM de ladite cellule-mémoire témoin correspondante, lire la valeur ladite donnée témoin dans la cellule-mémoire élémentaire SRAM de ladite cellule-mémoire témoin correspondante, une valeur lue de la donnée témoin égale à ladite deuxième valeur signifiant que ladite écriture d’une donnée dans la cellule-mémoire élémentaire SRAM d’une cellule-mémoire est bien une première écriture postérieure à un nombre impair de rechargement(s) depuis la dernière écriture dans ladite cellule-mémoire élémentaire SRAM.
Selon un mode de réalisation, l’ensemble comprend plusieurs sous-ensembles de plusieurs blocs de plusieurs cellules-mémoire, et une cellule-mémoire témoin est associée à chaque sous-ensemble de blocs de cellules-mémoire, et le dispositif comprend en outre des troisièmes moyens de traitement sont configurés pour, lors de la première écriture d’au moins un bloc de données dans au moins un bloc de cellules-mémoire élémentaires SRAM d’un sous-ensemble de cellules-mémoire, postérieure à un nombre impair de rechargement(s) du sous-ensemble de cellules-mémoires élémentaires SRAM depuis la dernière écriture dans au moins un bloc (pas nécessairement le même) de cellules-mémoire élémentaires SRAM de ce sous-ensemble, écrire la donnée témoin ayant la première valeur logique dans la cellule SRAM de ladite cellule-mémoire témoin correspondante, lire les données contenues dans les autres cellules-mémoires élémentaires SRAM des autres blocs dudit sous-ensemble et réécrire dans ces autres cellules-mémoires élémentaires SRAM des autres blocs, lesdites données lues mais inversées, les deuxièmes moyens de traitement sont configurés pour, lors d’une commande de lecture du contenu de chaque cellule-mémoire élémentaire SRAM dudit sous-ensemble, lire le contenu de la cellule SRAM de la cellule-mémoire témoin, et si la valeur lue de la donnée témoin est égale à la deuxième valeur logique, inverser la valeur de la donnée de chaque cellule-mémoire élémentaire SRAM dudit sous-ensemble et délivrer chaque donnée inversée, tandis que si la valeur lue de la donnée témoin est égale à la première valeur logique, délivrer la donnée effectivement lue dans chaque cellule-mémoire élémentaire SRAM dudit sous-ensemble.
Selon un mode de réalisation les troisièmes moyens de traitement sont configurés pour, lors de chaque commande d’écriture d’au moins un bloc de données dans au moins un bloc de cellules-mémoire élémentaires SRAM d’un sous-ensemble de cellules-mémoire, lire la donnée témoin correspondante, et si cette donnée témoin a la deuxième valeur, écrire ledit bloc de données dans ledit au moins un bloc de cellules-mémoire élémentaires SRAM du sous-ensemble de cellules-mémoire, écrire la donnée témoin ayant la première valeur dans la cellule-mémoire élémentaire SRAM de ladite cellule-mémoire témoin correspondante, lire les données des autres cellules-mémoires élémentaires SRAM des autres blocs dudit sous-ensemble et réécrire, dans ces autres cellules-mémoires élémentaires SRAM des autres blocs, lesdites données lues mais inversées, tandis que si cette donnée témoin a déjà la première valeur, écrire ledit bloc de données dans ledit au moins un bloc de cellules-mémoire élémentaires SRAM du sous-ensemble de cellules-mémoire.
Selon un mode de réalisation, la première valeur logique est un 0 et les deuxièmes moyens de traitement comprennent, pour chaque cellule-mémoire élémentaire SRAM de chaque cellule-mémoire, un opérateur logique OU EXCLUSIF configuré pour recevoir en entrée la donnée lue de ladite cellule-mémoire élémentaire SRAM et la donnée témoin lue de la cellule-mémoire élémentaire SRAM de la cellule-mémoire témoin associée. A titre d’exemple, la cellule-mémoire élémentaire du type SRAM de ladite au moins une cellule-mémoire comportant deux inverseurs mutuellement connectés de façon croisée, ladite au moins une cellule-mémoire comprend une unique cellule-mémoire élémentaire non volatile comportant un transistor à grille flottante connecté entre une borne d’alimentation et une première sortie des deux inverseurs, et un transistor d’interconnexion connecté en série entre la borne d’alimentation et le transistor à grille flottante ou entre le transistor à grille flottante et ladite première sortie des deux inverseurs.
Selon un autre exemple possible, ladite au moins une cellule-mémoire comporte au moins deux cellules-mémoire élémentaires non volatiles possédant chacune un transistor à grille flottante, les transistors à grille flottante ayant des premières électrodes de conduction connectées à une borne d’alimentation et des deuxièmes électrodes de conduction respectivement connectées aux deux sorties des deux inverseurs par l’intermédiaire de deux transistors d’interconnexion.
Chaque cellule-mémoire élémentaire non volatile peut être du type EEPROM.
Selon un autre aspect, il est également proposé un circuit intégré comprenant un dispositif de mémoire tel que défini ci-avant. D’autres avantages et caractéristiques de l’invention apparaîtront à l’examen de la description détaillée de modes de mis en œuvre et de réalisation, nullement limitatifs, et des dessins annexés sur lesquels : - les figures 1 à 11 ont trait à différents modes de mise en œuvre et de réalisation de l’invention.
Sur la figure 1, la référence CEL désigne une cellule-mémoire d’un plan mémoire, comportant une cellule-mémoire élémentaire du type SRAM CELSR et au moins une cellule-mémoire élémentaire non volatile CELNV, ces deux cellules-mémoire élémentaire étant mutuellement couplées.
La cellule-mémoire élémentaire CELSR est de structure classique et comprend une bascule BSC formée de deux inverseurs CMOS connectés de façon croisée, ainsi que deux transistors d’accès TA1 et TA2.
Les deux inverseurs sont connectés entre une borne d’alimentation destinée à être connectée à la tension d’alimentation Vdd, et la masse GND.
Les deux transistors d’accès TA1 et TA2 sont respectivement connectés entre les sorties des deux inverseurs et deux lignes de bits BL et BL, BL désignant la ligne de bits complémentée de la ligne BL.
Les grilles des transistors d’accès TA1 et TA2 sont connectées sur une ligne de mots WL.
En fonctionnement non volatil, l’écriture et la lecture d’une donnée dans la cellule-mémoire élémentaire CELSR sont des opérations classiques et connues en soi. Par ailleurs, lors de ce fonctionnement non volatil, une donnée écrite dans la cellule CELSR est lue sans être inversée.
Par contre, lors d’une coupure d’alimentation ou sur commande externe, la donnée contenue dans la cellule-mémoire élémentaire CELSR est transférée et stockée dans la cellule-mémoire élémentaire non volatile CELNV. Puis, lors d’une remontée d’alimentation, la cellule-mémoire élémentaire CELSR est rechargée avec le contenu de la cellule-mémoire élémentaire non volatile CELNV.
Et, la cellule-mémoire CEL est configurée ici pour, lors de cette opération de rechargement de la cellule CELSR, inverser la donnée par rapport à celle qui était initialement stockée dans la cellule-mémoire CELSR avant le transfert non volatil vers la cellule-mémoire élémentaire non volatile CELNV.
Comme indiqué ci-avant, des exemples de telles cellules-mémoire CEL procédant à une inversion de la donnée lors du rechargement de la cellule CELSR, sont bien connus.
La gestion de cette inversion de données est effectuée ici en associant (figures 2 et 3) à chaque cellule-mémoire CEL, une cellule-mémoire témoin CELT fonctionnellement analogue à la cellule-mémoire CEL. Cette cellule-mémoire témoin CELT est donc également configurée pour inverser la donnée lors d’un rechargement de sa cellule-mémoire élémentaire CELSRT depuis sa cellule-mémoire non volatile CELNVT. En pratique, la cellule-mémoire témoin est également structurellement analogue à la cellule-mémoire CEL, bien que ce ne soit pas absolument indispensable.
Sur la figure 3 la référence MT1 désigne des premiers moyens de traitement configurés pour, à chaque transfert d’une donnée de ladite cellule-mémoire élémentaire du type SRAM CELSR dans ladite cellule-mémoire élémentaire non volatile CELNV et à chaque rechargement de ladite cellule-mémoire élémentaire SRAM CELSR, effectuer respectivement les mêmes opérations sur une donnée témoin, en l’espèce un bit, de ladite cellule-mémoire témoin CELT.
Ces moyens MT1 comportent des moyens classiques d’écriture dans une mémoire non volatile et des moyens classiques de transfert d’une donnée depuis une mémoire non volatile vers une mémoire SRAM utilisés dans les mémoires ayant une telle structure.
La référence MT2 désigne des deuxièmes moyens de traitement configurés pour, à chaque lecture d’une donnée de la cellule-mémoire élémentaire SRAM CELSR, effectuer une lecture correspondante de la donnée témoin, et une inversion ou non de la donnée lue dans ladite cellule-mémoire élémentaire SRAM CELSR en fonction de la valeur lue de la donnée témoin.
On reviendra plus en détails ci-après sur un exemple de structure de ces moyens MT2. D’une façon générale lors de la première écriture d’une donnée dans la cellule-mémoire élémentaire SRAM CELSR de la cellule-mémoire CLE, postérieure à un nombre impair de rechargement(s) de ladite cellule-mémoire élémentaire SRAM CELSR depuis la dernière écriture dans cette cellule-mémoire CELSR, on écrit la donnée témoin ayant une première valeur, par exemple la valeur logique « 0 », dans la cellule-mémoire élémentaire SRAM CELSRT de ladite cellule-mémoire témoin CELT, et si, lors de la lecture, la valeur lue de la donnée témoin est égale à une deuxième valeur, différente de la première valeur, par exemple la valeur logique « 1 », on procède à une inversion de la valeur de la donnée de la cellule-mémoire élémentaire SRAM CELSR de ladite cellule-mémoire et à une délivrance de la donnée inversée, tandis que si la valeur lue de la donnée témoin est égale à la première valeur, on procède à une délivrance de la donnée effectivement lue dans la cellule-mémoire élémentaire SRAM CELSR.
En pratique une façon de déterminer si une écriture dans la cellule SRAM CELSR est une première écriture postérieure à un nombre impair de rechargement(s) de cette cellule CELSR depuis la dernière écriture dans cette cellule-mémoire CELSR, consiste à lire la valeur de la donnée témoin et de vérifier si elle a la deuxième valeur logique « 1 ».
En effet, comme indiqué ci-avant, un rechargement de la cellule SRAM CELSRT postérieur à un transfert non volatil, inverse le contenu de cette cellule CELSRT.
Plus précisément, comme illustré sur la figure 2, lors d’une commande d’écriture 20 d’une donnée, en l’espèce 1 bit, dans la cellule-mémoire élémentaire CELSR de la cellule-mémoire CEL, que cette commande d’écriture soit ou non postérieure à un rechargement 19 de la cellule-mémoire élémentaire CELSR, on lit (étape 21) la donnée témoin et on vérifie (étape 28) si cette donnée témoin à la deuxième valeur logique « 1 ».
Si tel est le cas, ce qui signifie que cette écriture dans la cellule SRAM CELSR sera la première après un nombre impair de rechargement(s) de cette cellule CELSR depuis la dernière écriture dans cette cellule-mémoire CELSR, on écrit non seulement (étape 29) la donnée dans la cellule CELSR, mais également (étape 30) la donnée témoin dans la cellule-mémoire élémentaire CELSRT de la cellule-mémoire témoin CELT en lui conférant la valeur logique « 0 ».
Si par contre dans l’étape 28, la donnée témoin avait déjà la valeur logique « 0 », on ne fait qu’écrire la donnée dans la cellule CELSR (étape 29). Ceci correspond au cas où il y a eu pendant une période un nombre pair de rechargements volatils du plan mémoire avec durant cette période des écritures dans d’autres cellules du plan mémoire mais aucune écriture dans cette cellule CELSR considérée.
Ultérieurement, lors d’une lecture 22 de la donnée contenue dans la cellule-mémoire élémentaire CELSR, on lit également (étape 23) le bit témoin stocké dans la cellule-mémoire élémentaire CELSRT.
On vérifie alors (étape 24) la valeur logique de ce bit témoin.
Si le bit témoin a été inversé, c'est-à-dire s’il a en l’espèce la valeur logique 1, cela signifie alors qu’il y a eu un transfert non volatil des données contenues dans les cellules-mémoire élémentaires CELSR et CELSRT des cellules CEL et CELT vers les cellules-mémoire non volatiles correspondantes CELNV et CELNVT suivi d’un rechargement de ces cellules CELSR et CELSRT.
Dans ce cas, on inverse (étape 25), la donnée lue de la cellule-mémoire élémentaire CELSR puisque la donnée a été inversée lors du rechargement, et on délivre donc (étape 26) la donnée lue inversée, ce qui correspond à la donnée initialement stockée dans la cellule-mémoire CELSR avant transfert non volatil vers la cellule-mémoire élémentaire CELNV.
Si le bit témoin n’est pas inversé, c’est-à-dire s’il garde sa valeur logique 0, alors cela signifie qu’il n’y a pas eu de rechargement non volatil en un nombre impair et qu’il s’agit là d’une simple lecture SRAM au cours d’un fonctionnement classique SRAM. On délivre donc alors (étape 27) la donnée effectivement lue de la cellule-mémoire élémentaire CELSR.
Les deuxièmes moyens de traitement MT2 comportent ici (figure 3) des moyens classiques de lecture d’une cellule SRAM, typiquement des amplificateurs de lecture AMPL et AMPLT respectivement connectés sur les lignes de bits BL et les lignes de bits complémentées BL des deux cellules CEL et CELT.
Par ailleurs, puisque la première valeur logique du bit témoin est égale à 0, et que par conséquent cette valeur logique est égale à 1 lors d’une inversion de données, les deuxièmes moyens de traitement MT2 comportent également un opérateur logique OU EXCLUSIF PL2 recevant en entrée les sorties des deux amplificateurs de lecture AMPL et AMPLT.
Ainsi, lorsque le bit témoin est égal à 0, la donnée délivrée par l’amplificateur de lecture AMPL n’est pas inversée en sortie de la porte PL2, tandis qu’elle est inversée en sortie de la porte PL2 si la valeur du bit témoin délivrée par l’amplificateur AMPLT a la valeur logique 1. Ainsi dans tous les cas on délivre en sortie de la porte PL2 une donnée non inversée par rapport à la donnée initialement écrite dans la cellule CELSR.
Les troisièmes moyens de traitement sont configurés pour mettre en œuvre ici les étapes 20, 21, 28 et 29 de la figure 2. Ils comportent donc des moyens classiques d’écriture et de lecture dans une cellule SRAM ainsi qu’une circuiterie logique par exemple pour tester la valeur du bit témoin et pour commander en conséquence l’écriture dans la cellule CELSR et éventuellement dans la cellule CELSRT.
Alors que le mode de mise en œuvre et de réalisation qui vient d’être décrit, l’écriture du bit témoin à 0 dans la cellule CELSRT n’est effectuée qu’une seule fois lors de la première écriture d’une donnée dans la cellule CELSR postérieure à un nombre impair de rechargement(s) de cette cellule CELSR depuis la dernière écriture dans cette cellule CELSR, il convient de noter qu’il serait possible, en variante, d’écrire le bit témoin à 0 dans la cellule CELSRT à chaque écriture d’une donnée dans la cellule CELSR.
Le mode de mise en œuvre et de réalisation prévoyant l’écriture unique du bit témoin est moins consommatrice en courant mais nécessite de prévoir au sein des troisièmes moyens de traitement MT3 un circuit logique supplémentaire permettant d’inhiber l’écriture du bit témoin dans la cellule CELSRT lors des écritures dans la cellule CELSR postérieures à la première.
Par contre la variante évoquée ci-avant est plus consommatrice en courant mais conduit à une réalisation plus simple des moyens MT3.
Dans les autres modes de mise en œuvre et de réalisation qui vont maintenant être décrits, on adoptera la solution de l’écriture du bit témoin à 0 uniquement lors d’une première écriture dans une cellule CELSR postérieure à un nombre impair de rechargement(s) de cette cellule CELSR depuis la dernière écriture dans cette cellule CELSR, même si la variante évoquée ci-avant pourrait aussi être appliquée. Dans le mode de réalisation des figures 4 et 5, une cellule-mémoire témoin CELT est associée à chaque bloc de cellules-mémoire CEL1-CEL8. Dans cet exemple, chaque bloc comporte huit cellules-mémoire. Et, on écrit dans les blocs de cellules-mémoire élémentaires CELSR1-CELSR8 des blocs de données, ici des octets.
Et, comme illustré sur la figure 4, lors d’une commande d’écriture 40 d’un octet de données dans les cellules CELSRi du bloc de cellules, postérieure ou non à un rechargement 39 du bloc de cellules CELSRi, on lit (étape 41) la donnée témoin et on vérifie (étape 48) si cette donnée témoin à la deuxième valeur logique « 1 ».
Si tel est le cas, ce qui signifie que cette écriture dans le bloc de cellules SRAM CELSRi sera la première après un nombre impair de rechargement(s) de ce bloc de cellules depuis la dernière écriture dans ce bloc de cellules SRAM CELSRi, on écrit non seulement (étape 49) l’octet de données dans le bloc de cellules CELSRi, mais également le bit témoin avec la valeur «0 », dans la cellule-mémoire élémentaire SRAM CELSRT de la cellule-mémoire témoin CELT (étape 50).
Si par contre dans l’étape 48, la donnée témoin avait déjà la valeur logique « 0 », on ne fait qu’écrire l’octet dans le bloc de cellules CELSRi (étape 49).
Ultérieurement, lors de la lecture 42 d’un octet dans les cellules-mémoire élémentaires CELSR1-CELSR8, on lit également le bit témoin contenu dans la cellule-mémoire élémentaire CELSRT (étape 43). Là encore, on vérifie l’inversion ou non du bit témoin, c'est-à-dire si le bit témoin a ou non la valeur logique 1 (étape 44). En cas d’inversion de la valeur du bit témoin, on inverse alors (étape 45) les données lues de l’octet qui étaient contenues dans les cellules-mémoire élémentaires CELSR1-CELSR8 (étape 45) et on délivre (étape 46) l’octet inversé.
Dans le cas contraire, on délivre l’octet tel que lu dans les cellules-mémoire élémentaires CELSR1-CELSR8. A cet égard, comme illustré sur la figure 5, les moyens MT2 comportent cette fois-ci huit portes logiques OU EXCLUSIF PL91-PL98 à deux entrées. Chaque porte logique PL9i est connectée à la sortie de l’amplificateur de lecture correspondant AMPLi connecté à la cellule-mémoire CELi ainsi qu’à la sortie de l’amplificateur de lecture AMPLT connecté à la cellule-mémoire témoin CELT.
Les troisièmes moyens MT3 sont configurés pour mettre en œuvre les étapes 40, 41, 48, 49 et 50. Ils présentent par exemple une structure similaire aux moyens MT3 de la figure 3.
Afin de gagner de la place sur le silicium, on peut, comme illustré dans les modes de mise en œuvre et de réalisation des figures 6 et 7, associer une cellule-mémoire témoin à chaque sous-ensemble contenant p blocs de plusieurs cellules.
Ainsi, à titre d’exemple, comme illustré sur la figure 7, chaque sous-ensemble SES1, SES2, ... contient p blocs BLCl-BLCp, chaque bloc comportant plusieurs cellules, ici huit cellules.
Ainsi, comme illustré sur la figure 6, lors d’une commande d’écriture (étape 60) d’un octet dans au moins un bloc BLCi d’un sous-ensemble SES1 par exemple, postérieurement ou non au rechargement 59 de toutes les cellules CELSRi de ce sous-ensemble, on lit (étape 61) la donnée témoin correspondante et on vérifie (étape 68) si cette donnée témoin à la deuxième valeur logique « 1 ».
Si tel est le cas, ce qui signifie que cette écriture de l’octet dans les cellule SRAM CELSRi du bloc BLCi sera la première après un nombre impair de rechargement(s) 59 depuis la dernière écriture d’au moins un octet dans les cellule SRAM d’ au moins un des blocs BLCi, on écrit non seulement (étape 69) l’octet de données dans le bloc de cellules CELSRi, mais également (étape 72) la donnée témoin avec la valeur logique « 0 » dans la cellule-mémoire élémentaire SRAM de cette cellule témoin CELT1.
Et on effectue en outre (étape 70) une lecture des octets contenus dans les p-1 autres blocs du sous-ensemble puis une réécriture 71 de ces octets inversés dans ces p-1 autres blocs du sous-ensemble SES1.
De ce fait, lors d’une lecture ultérieure SRAM sans transfert non volatil préalable (correspondant donc à un bit témoin non inversé) les p-1 octets contenus dans ces p-1 autres blocs auront été inversés deux fois (une première fois lors du rechargement non volatil et une deuxième fois lors de l’étape 71) de sorte que ces données correspondront bien aux données initialement stockées dans les mémoires élémentaires SRAM correspondantes.
La lecture des p-1 autres octets et la réécriture des données inversées peuvent se faire en série octet à octet, soit en parallèle selon le meilleur compromis d’architecture choisi.
Si par contre dans l’étape 68, la donnée témoin avait déjà la valeur logique « 0 », on ne fait qu’écrire l’octet dans le bloc de cellules CELSRi (étape 69) sans effectuer les étapes 70 et 71.
Ultérieurement, lorsqu’on lit (étape 62) tous les octets de tous les blocs du sous-ensemble correspondant (SES1 par exemple) on lit également (étape 63) la donnée témoin (bit témoin) contenue dans la cellule CELSRT.
On vérifie là encore l’inversion ou non de ce bit témoin (étape 64) c'est-à-dire si le bit témoin a ou non la valeur logique 1.
Si le bit témoin est inversé, on inverse alors tous les octets lus (étape 65) et on délivre les octets lus inversés (étape 66). Dans le cas contraire on délivre les octets effectivement lus (étape 67).
Cette fois-ci, comme illustré sur la figure 7, les moyens MT2 comportent pour chaque sous-ensemble SES1 et la cellule-mémoire témoin associée CELT1, n fois p portes logiques OU EXCLUSIF PL911-ayant 2 entrées, où n désigne le nombre de cellules-mémoire de chacun des p blocs. Là encore l’une des entrées d’une porte logique PLi est connectée à la sortie de l’amplificateur de lecture de la cellule CELi correspondante et l’autre entrée de cette porte logique est connectée à la sortie de l’amplificateur de lecture de la cellule témoin CELTi correspondante.
Les troisièmes moyens MT3 sont configurés pour mettre en œuvre les étapes 60, 61, 68, 69 et 70-72. Ils présentent également par exemple une structure similaire aux moyens MT3 de la figure 3, la circuiterie logique testant la valeur du bit témoin pour commander les écriture/réécriture et/ou lectures appropriées.
Dans tout ce qui précède on suppose que le plan-mémoire avait été initialisé avec les tous les bits témoins à « 0 ». Il aurait été toutefois possible d’initialiser les bits témoins à « 1 » mais en stockant dans les cellules SRAM CELSR des données déjà inversées par rapport aux données initiales effectivement désirées.
On se réfère maintenant plus particulièrement à la figure 8 pour illustrer un exemple de réalisation d’une cellule-mémoire CEL configurée pour effectuer une inversion de données lors du rechargement de la cellule-mémoire élémentaire CELSR à partir de la cellule-mémoire élémentaire non volatile. Une telle cellule a été évoquée dans la demande de brevet français n° 1355439.
Sur la figure 8, la cellule-mémoire CEL comporte la cellule-mémoire élémentaire du type SRAM CELSR et deux cellules élémentaires non volatiles du type EEPROM comportant ici deux transistors à grille flottante El et E2.
Les cellules non volatiles EEPROM de la cellule CEL sont des cellules classiques c’est-à-dire dans lesquelles on a retiré le transistor de sélection et présentant une zone d’injection tunnel entre grille flottante et drain.
Les sources de ces deux transistors El et E2 sont reliées à une borne d’alimentation BAL qui est ici reliée à la masse.
Les électrodes de commande des deux transistors à grille flottante El et E2 sont quant à elles reconnectées sur une première ligne de commande CGL.
La cellule élémentaire CELSR est de structure classique et comprend un premier inverseur comportant le transistor PMOS Pl et le transistor NMOS N3, et un deuxième inverseur comportant le transistor PMOS P2 et le transistor NMOS N6. Ces deux inverseurs sont connectés entre une autre borne d’alimentation destinée à être connectée à la tension d’alimentation Vdd et la masse.
Ces deux inverseurs sont mutuellement connectés de façon croisée, c’est-à-dire que l’entrée du premier inverseur formée par les grilles des transistors Pl et N3 est connectée la sortie du deuxième inverseur formée par les drains des transistors N6 et P2, tandis que l’entrée du deuxième inverseur, formée par les grilles des transistors P2 et N6, est connectée à la sortie du premier inverseur formée par les drains des transistors Pl et N3.
La cellule CELSR comporte également deux transistors d’accès NMOS, référencés NI et N8, respectivement connectés entre les sorties des deux inverseurs et deux lignes de bits BL et BL, BL désignant la ligne de bits complémentaire de la ligne BL.
Les grilles des transistors d’accès NI et N8 sont connectées sur une ligne de mots WL.
Les drains des deux transistors à grille flottante El et E2 sont connectés aux entrées et aux sorties des deux inverseurs par un étage d’interconnexion comportant ici deux transistors d’interconnexion NMOS référencés N2 et N7.
Plus précisément, les deux transistors d’interconnexion N2 et N7 sont respectivement connectés entre les drains des deux transistors à grille flottante El et E2 et les deux sorties des deux inverseurs Pl, N3 et P2, N6. Par ailleurs, les électrodes de commande (grilles) de ces deux transistors d’interconnexion N2 et N7 sont connectées sur une deuxième ligne de commande PRL.
On se réfère maintenant plus particulièrement à la figure 9 qui est un chronogramme temporel illustrant les différents modes de fonctionnement de la cellule-mémoire CEL de la figure 8. L’écriture dans la cellule mémoire élémentaire CELSR, référencée 20 sur la figure 9, est une écriture classique.
Plus précisément, pour écrire un « 1 », la ligne de bits BL est portée à la tension d’alimentation Vdd (ici deux volts) tandis que la ligne de bits complémentée BL est à la masse et que la ligne de mots WL est portée à la tension d’alimentation Vdd.
La ligne de commande PRL est à la masse, rendant bloqué l’étage d’interconnexion. De même, la première ligne de commande CGL est également à la masse.
Le drain du transistor N6 et les grilles des transistors Pl et N3 sont tirés à la masse par l’intermédiaire du transistor N8 qui est passant. Il y a alors basculement de la mémoire verrou formée par les deux inverseurs croisés par passage du drain du transistor N3 à Vdd et passage du drain du transistor N6 à la masse.
Lorsque la cellule est sélectionnée pour écrire un « 0 » dans la cellule élémentaire CELSR, la ligne de bits BL est à la masse, la ligne de bits complémentaire BL est à la tension d’alimentation Vdd et la ligne de mots également à la tension d’alimentation Vdd.
Le drain du transistor N3 et la grille des transistors P2 et N6 sont tirés vers la masse par le transistor NI qui est passant. Il y a basculement de la mémoire verrou (« latch ») par l’intermédiaire du drain du transistor N3 qui passe à la masse et du drain du transistor N6 qui passe à Vdd.
La donnée est maintenue lorsque la cellule est désélectionnée.
On va maintenant décrire un transfert ou stockage non volatil 21 du contenu de la cellule CELSR vers les deux cellules-mémoire élémentaires non volatiles El et E2.
On suppose à cet égard que la cellule CELSR est par exemple positionnée pour stocker un « 1 », c’est-à-dire que la source du transistor N2 est à la tension d’alimentation Vdd tandis que la source du transistor N7 est à la masse.
La ligne de mots WL est également à la masse.
Bien entendu, tout ce qui suit devra être inversé si la cellule SRAM est positionnée pour stocker un « 0 ».
Un transfert ou écriture non volatil se compose d’un cycle d’effacement suivi d’un cycle de programmation différentielle puisqu’on est en présence de deux cellules-mémoire élémentaires non volatiles.
Pour le cycle d’effacement, la ligne PRL est maintenue à la masse, rendant bloqués les transistors d’interconnexion N2 et N7. On envoie ensuite une tension d’effacement sur la première ligne de commande CGL. Dans l’exemple décrit ici, cette tension d’effacement comporte une rampe puis un plateau ayant une amplitude typique de 13 volts. La montée de la rampe peut être effectuée typiquement en 0,5 milliseconde environ tandis que la durée typique du plateau est de 1 milliseconde.
Par couplage avec la première ligne de commande CGL, les grilles flottantes des transistors El et E2 montent vers 9 volts environ, rendant les cellules non volatiles passantes et forçant la zone de drain à 0 volt.
Le courant tunnel décharge les grilles flottantes de El et de E2 vers la zone de drain. Une fois la tension sur la première ligne de commande CGL repassée au repos (0 volt), on a une charge négative d’environ -1,5 volt sur les grilles flottantes de El et de E2.
Les deux cellules El et E2 sont alors effacées.
Le cycle de programmation différentielle s’effectue alors comme suit.
La deuxième ligne de commande PRL passe à la tension d’alimentation Vdd qui est passée ici à 4 volts.
De ce fait, les transistors d’interconnexion N2 et N7 sont passants.
On envoie ensuite une tension de programmation sur la première ligne de commande CGL.
Cette tension de programmation est une tension négative formée d’une rampe puis d’un plateau d’amplitude typique -8,5 volts. Là encore, la durée de la rampe est typiquement de 0,5 milliseconde tandis que la durée du plateau est typiquement de 1 milliseconde.
Les transistors à grille flottante El et E2 sont bloqués ce qui permet d’éviter un court-circuit vers la borne d’alimentation BAL reliée à la masse et ce, sans utilisation de transistors d’isolement supplémentaires qui seraient connectés entre les sources des transistors El et E2 et la borne d’alimentation BAL.
Le transistor N2 passant transfère une tension égale à Vdd moins la tension de seuil du transistor NMOS au drain du transistor El. Le transistor N7 passant transmet une tension de 0 volt au drain du transistor E2.
La grille flottante du transistor El, auparavant déchargée à -1,5 volt, va par couplage capacitif descendre vers -6,5 volts. La différence de potentiel à travers la zone d’injection du transistor El est typiquement de 9,5 volts. Par conséquent, la grille flottante du transistor El va se charger positivement par effet tunnel.
La grille flottante du transistor E2, auparavant déchargée à -1,5 volt, va par couplage capacitif descendre vers -7,5 volts. La différence de potentiel à travers la zone d’injection du transistor E2, typiquement de l’ordre de 7,5 volts, est insuffisante pour charger la grille flottante de E2 par effet tunnel.
Une fois la tension de la première ligne de commande CGL repassée au repos, c’est-à-dire à l’issue de la programmation différentielle, la charge positive de 1,5 volt sur la grille flottante de El rend cette cellule passante et à l’état écrit tandis que la charge négative de -1,5 volt sur la grille flottante de E2 rend cette cellule bloquée c’est-à-dire à l’état effacé.
On remarque donc ici que l’effacement des cellules non volatiles est un effacement inconditionnel tandis que la programmation est sélective selon la valeur de la donnée contenue dans la cellule SRAM CELSR c’est-à-dire selon la tension de drain de la cellule non volatile.
On suppose ensuite que se produit une perte d’alimentation 22 puis une remise en tension. On va donc maintenant décrire le rechargement des données non volatiles (c’est-à-dire les données contenues dans les cellules non volatiles El et E2) dans la cellule SRAM CELSR.
Pour ce rechargement, la première ligne de commande CGL passe à une tension de référence de lecture, typiquement 1 volt, tandis que la deuxième ligne de commande PRL est à une tension de 2 volts par exemple de façon à rendre passants les transistors N2 et N7.
La tension de la ligne de mots WL est nulle.
La cellule non volatile El, passante, tire vers la masse le drain du transistor N3 ainsi que les grilles des transistors P2 et N6.
La cellule E2 est quant à elle bloquée.
Par conséquent, la cellule CELSR passe dans l’état 0, stockant cette fois-ci le « 0 » logique.
On remarque donc ici qu’il y a effectivement inversion de donnée lors du rechargement de la cellule CELSR par le contenu des cellules non volatiles El et E2.
La lecture d’une donnée dans la cellule CELSR est également une lecture classique et est illustrée par la référence 24 sur la figure 9. L’accès en lecture à la cellule s’effectue par la ligne de bits BL et la ligne de bits complémentée BL, la ligne de mots « WL » étant portée à la tension d’alimentation Vdd. L’une des deux lignes de bits est tirée vers la masse, l’autre étant à la tension Vdd moins la tension de seuil d’un transistor NMOS. Les états différents des lignes de bits sont envoyés dans la circuiterie classique de lecture de façon à déterminer la valeur logique de la donnée lue.
On se réfère maintenant plus particulièrement à la figure 10 pour illustrer un autre exemple de cellule-mémoire CEL configurée pour inverser la donnée lors d’un rechargement non volatil vers la cellule-mémoire élémentaire CELSR. Une telle cellule a été décrite dans la demande de brevet français précitée n° 1355440.
Sur la figure 10, la cellule-mémoire CEL comporte la cellule-mémoire élémentaire du type SRAM CELSR et une unique cellule élémentaire non volatile du type EEPROM comportant ici un transistor à grille flottante El.
La cellule non volatile EEPROM de la cellule CEL est là encore une cellule classique c’est-à-dire dans laquelle on a retiré le transistor de sélection et présentant une zone d’injection tunnel entre grille flottante et drain.
La source du transistor El est reliée à une borne d’alimentation BAL qui est ici reliée à la masse. L’électrode de commande du transistor à grille flottante El est quant à elle connectée sur une première ligne de commande CGL.
La cellule élémentaire CELSR est là encore de structure classique et comprend un premier inverseur comportant le transistor PMOS Pl et le transistor NMOS N3, et un deuxième inverseur comportant le transistor PMOS P2 et le transistor NMOS N4. Ces deux inverseurs sont connectés entre une autre borne d’alimentation destinée à être connectée à la tension d’alimentation Vdd et la masse.
Ces deux inverseurs sont mutuellement connectés de façon croisée, c’est-à-dire que l’entrée du premier inverseur formée par les grilles des transistors Pl et N3 est connectée la sortie du deuxième inverseur formée par les drains des transistors N4 et P2, tandis que l’entrée du deuxième inverseur, formée par les grilles des transistors P2 et N4, est connectée à la sortie du premier inverseur formée par les drains des transistors Pl et N3.
La cellule CELSR comporte également deux transistors d’accès NMOS, référencés NI et N5, respectivement connectés entre les sorties des deux inverseurs et deux lignes de bits BL et BL, BL désignant la ligne de bits complémentée de la ligne BL.
Les grilles des transistors d’accès NI et N5 sont connectées sur une ligne de mots WL.
Le drain du transistor à grille flottante El est connecté ici à la sortie (nœud ND) du premier inverseur Pl, N3 de la cellule-mémoire élémentaire CELSR par l’intermédiaire d’un étage d’interconnexion comportant ici un premier transistor d’interconnexion N2. Cet unique transistor d’interconnexion N2 est ici un transistor NMOS. L’électrode de commande (grille) de ce premier transistor d’interconnexion N2 est connectée sur une deuxième ligne de commande PRL. De ce fait l’étage d’interconnexion est commandé par un signal externe à la cellule-mémoire CEL, à savoir par la tension de commande présente sur la deuxième ligne de commande PRL.
On notera ici que la cellule-mémoire CEL comporte huit transistors, ce qui la rend particulièrement compacte.
On se réfère maintenant plus particulièrement à la figure 11 qui est un chronogramme temporel illustrant différents modes de fonctionnement de la cellule-mémoire CEL de la figure 1. L’écriture dans la cellule mémoire élémentaire CELSR, référencée 20 sur la figure 11, est là encore une écriture classique.
Plus précisément, pour écrire un « 1 », la ligne de bits BL est portée à la tension d’alimentation Vdd (ici deux volts) tandis que la ligne de bits complémentée BL est à la masse et que la ligne de mots WL est portée à la tension d’alimentation Vdd.
La ligne de commande PRL est à la masse, rendant bloqué l’étage d’interconnexion. De même, la première ligne de commande CGL est également à la masse.
Le drain du transistor N4 et les grilles des transistors Pl et N3 sont tirés à la masse par l’intermédiaire du transistor N5 qui est passant. Il y a alors basculement de la mémoire verrou formée par les deux inverseurs croisés par passage du drain du transistor N3 à Vdd et passage du drain du transistor N4 à la masse.
Lorsque la cellule est sélectionnée pour écrire un « 0 » dans la cellule élémentaire CELSR, la ligne de bits BL est à la masse, la ligne de bits complémentée BL est à la tension d’alimentation Vdd et la ligne de mots également à la tension d’alimentation Vdd.
Le drain du transistor N3 et la grille des transistors P2 et N4 sont tirés vers la masse par le transistor NI qui est passant. Il y a basculement de la mémoire verrou (« latch ») par l’intermédiaire du drain du transistor N3 qui passe à la masse et du drain du transistor N4 qui passe à Vdd.
La donnée est maintenue lorsque la cellule est désélectionnée.
On va maintenant décrire un transfert ou stockage non volatil 21 du contenu de la cellule CELSR vers la cellule-mémoire élémentaire non volatile El.
Comme indiqué ci-avant, un transfert ou écriture non volatil se compose d’un cycle d’effacement et d’un cycle de programmation.
Pour le cycle d’effacement, la ligne PRL est maintenue à la masse, rendant bloqué le transistor d’interconnexion N2. On envoie ensuite une tension d’effacement sur la première ligne de commande CGL. Dans l’exemple décrit ici, cette tension d’effacement comporte une rampe puis un plateau ayant une amplitude typique de 13 volts. La montée de la rampe peut être effectuée typiquement en 0,5 milliseconde environ tandis que la durée typique du plateau est de 1 milliseconde.
Par couplage avec la première ligne de commande CGL, la grille flottante du transistor El monte vers 9 volts environ, rendant la cellule non volatile passante et forçant la zone de drain à 0 volt.
Le courant tunnel décharge la grille flottante de El vers la zone de drain. Une fois la tension sur la première ligne de commande CGL repassée au repos (0 volt), on a une charge négative d’environ -1,5 volt sur la grille flottante de El.
La cellule El est alors effacée.
On suppose maintenant que la cellule CELSR est par exemple positionnée pour stocker un « 1 » c’est-à-dire que la source du transistor N2 (nœud ND) est à la tension d’alimentation Vdd tandis que la sortie de l’autre inverseur N4, P2 est à la masse.
La ligne de mots WL est également à la masse.
Le cycle de programmation s’effectue alors comme suit.
La deuxième ligne de commande PRL passe à la tension d’alimentation Vdd qui est passée ici à 4 volts.
De ce fait, le transistor d’interconnexion N2 est passant.
On envoie ensuite une tension de programmation sur la première ligne de commande CGL.
Cette tension de programmation est une tension négative formée d’une rampe puis d’un plateau d’amplitude typique -8,5 volts. Là encore, la durée de la rampe est typiquement de 0,5 milliseconde tandis que la durée du plateau est typiquement de 1 milliseconde.
Le transistor à grille flottante El est bloqué.
Le transistor N2 passant transfère une tension égale à Vdd moins la tension de seuil du transistor NMOS au drain du transistor El.
La grille flottante du transistor El, auparavant déchargée à -1,5 volt, va par couplage capacitif descendre vers -6,5 volts. La différence de potentiel à travers la zone d’injection du transistor El est typiquement de 9,5 volts. Par conséquent, la grille flottante du transistor El va se charger positivement par effet tunnel.
Une fois la tension de la première ligne de commande CGL repassée au repos, c’est-à-dire à l’issue de la programmation, la charge positive de 1,5 volt sur la grille flottante de El rend cette cellule passante et à l’état écrit.
On notera ici que le fait de bloquer le transistor à grille flottante El pendant la programmation évite de court-circuiter le nœud ND à la masse (borne d’alimentation BAL).
On suppose maintenant que la cellule CELSR est positionnée pour stocker un « 0 », c’est-à-dire que la source du transistor N2 est à la masse tandis que la sortie de l’inverseur P2, N4 est à la tension d’alimentation Vdd. La ligne de mots WL est également à la masse.
Le cycle de programmation s’effectue alors comme suit.
La deuxième ligne de commande PRL passe là encore à la tension d’alimentation Vdd, rendant passant le transistor d’interconnexion N2. On envoie ensuite la tension de programmation sur la première ligne de commande CGL. Cette tension de programmation est analogue à celle qui a été envoyée lorsque la cellule CELSR contenait un « 1 ».
Le transistor à grille flottante El est donc bloqué.
Le transistor N2 passant transfère une tension nulle au drain du transistor El.
La grille flottante du transistor El, auparavant déchargée à -1,5 volt, va, par couplage capacitif descendre vers -7,5 volts. La différence de potentiel à travers la zone d’injection du transistor El est cette fois-ci de l’ordre de 7,5 volts, ce qui est insuffisant pour charger cette grille par effet tunnel. La grille flottante du transistor El reste donc déchargée.
Une fois la tension de la première ligne de commande CGL repassée au repos, c’est-à-dire à l’issue de la programmation, la charge de -1,5 volt sur la grille flottante de El rend cette cellule bloquée et à l’état effacé.
On remarque donc ici que l’effacement de la cellule non volatile est un effacement inconditionnel tandis que la programmation est sélective selon la valeur de la donnée contenue dans la cellule SRAM CELSR c’est-à-dire selon la tension de drain de la cellule non volatile.
On suppose ensuite que se produit une perte d’alimentation 22 puis une remise en tension. On va donc maintenant décrire le rechargement 23 de la donnée non volatile (c’est-à-dire la donnée contenue dans la cellule non volatile El) dans la cellule SRAM CELSR.
Préalablement à ce rechargement, on effectue une initialisation 220 (ou une réinitialisation) de la cellule-mémoire élémentaire SRAM CELSR de façon à l’initialiser dans un état connu et éviter qu’elle soit dans un état métastable.
Dans l’exemple décrit ici, cette initialisation 220 s’effectue par écriture d’un « 1 » dans la cellule SRAM en utilisant la procédure d’écriture classique.
Pour le rechargement, la première ligne de commande CGL passe à une tension de référence de lecture, typiquement 1 volt, tandis que la deuxième ligne de commande PRL est à une tension de 2 volts par exemple de façon à rendre passant le transistor d’interconnexion N2.
La tension de la ligne de mots WL est nulle.
Si la cellule SRAM CELSR stockait initialement (avant coupure d’alimentation) un « 1 » logique, et que par conséquent la donnée stockée dans la cellule non volatile El (qui doit être rechargée) est également un « 1 » logique, alors la cellule non volatile El, passante, tire vers la masse, à travers le transistor N2 passant, le nœud commun ND. Par conséquent, la cellule CELSR bascule dans l’état logique « 0 ».
Si la cellule CELSR stockait initialement un « 0 » logique, alors la cellule non volatile E2 est bloquée et la cellule CELSR reste dans l’état initialisé, c’est-à-dire l’état « 1 » logique.
On remarque donc que la donnée rechargée de la cellule SRAM est bien inversée par rapport à la donnée initiale après un transfert non volatil vers la cellule non volatile suivi d’un rechargement depuis cette cellule non volatile.
Il convient de noter que dans le mode de réalisation de la figure 1, le transistor d’interconnexion N2 aurait pu être connecté non pas à la sortie de l’inverseur Pl, N3 mais à la sortie de l’inverseur P2, N4. Ceci n’aurait rien changé en ce qui concerne le cycle d’écriture (effacement puis programmation) de la cellule non volatile. Par contre, lors du rechargement depuis la cellule non volatile vers la cellule SRAM, il aurait fallu alors initialiser la cellule SRAM par écriture d’un « 0 » logique de façon à avoir le niveau logique haut au nœud commun des transistors N2, P2 et P4.
La lecture d’une donnée dans la cellule CELSR est également une lecture classique et est illustrée par la référence 24 sur la figure 2. L’accès en lecture à la cellule s’effectue par la ligne de bits BL et la ligne de bits complémentée BL, la ligne de mots « WL » étant portée à la tension d’alimentation Vdd. L’une des deux lignes de bits est tirée vers la masse, l’autre étant à la tension Vdd moins la tension de seuil d’un transistor NMOS. Les états différents des lignes de bits sont envoyés dans une circuiterie classique de lecture de façon à déterminer la valeur logique de la donnée lue.
Il convient également de noter qu’en variante le transistor N2 aurait pu être connecté entre la borne d’alimentation et la source du transistor El. Là encore on obtiendrait une inversion de donnée à la suite d’un rechargement non volatil.
Le dispositif de mémoire qui vient d’être décrit peut dans toutes ces variantes de réalisation faire partie d’un circuit intégré, par exemple mais non limitativement incorporé au sein d’une puce d’un produit sans contact, par exemple une carte à puce sans contact.
Claims (17)
- REVENDICATIONS1. Procédé de gestion du fonctionnement d’un ensemble d’au moins une cellule-mémoire (CEL) du type comportant une cellule-mémoire élémentaire du type SRAM (CELSR) et au moins une cellule-mémoire élémentaire non volatile (CELNV) mutuellement couplées, ladite au moins une cellule-mémoire étant configurée pour effectuer une inversion de valeur de donnée lors d’un rechargement dans la cellule-mémoire élémentaire SRAM d’une donnée préalablement écrite dans ladite au moins une cellule élémentaire non volatile, procédé comprenant, à chaque transfert d’une donnée de ladite cellule-mémoire élémentaire du type SRAM (CELSR) dans ladite au moins une cellule-mémoire élémentaire non volatile (CELNV) et à chaque rechargement de ladite cellule-mémoire élémentaire SRAM, une mise en œuvre respective des mêmes opérations sur une donnée témoin d’une cellule-mémoire témoin (CELT) fonctionnellement analogue et associée à ladite au moins une cellule-mémoire, et à chaque lecture (22) d’une donnée de ladite cellule-mémoire élémentaire SRAM, une lecture correspondante (23) de la donnée témoin, et une inversion ou non de la donnée lue dans ladite cellule-mémoire élémentaire SRAM (CELSR) en fonction de la valeur lue de la donnée témoin, le procédé comprenant en outre a) lors de la première écriture (29) d’une donnée dans ladite cellule-mémoire élémentaire SRAM de ladite au moins une cellule-mémoire postérieure à un nombre impair de rechargement(s) (19) de ladite cellule-mémoire élémentaire SRAM depuis la dernière écriture dans ladite cellule-mémoire élémentaire SRAM, une écriture (30) de ladite donnée témoin ayant une première valeur dans la cellule-mémoire élémentaire SRAM de ladite cellule-mémoire témoin, et b) si une valeur lue de donnée témoin est égale à une deuxième valeur différente de la première valeur, une inversion (25) de la valeur de la donnée de la cellule-mémoire-élémentaire SRAM de ladite au moins une cellule-mémoire et une délivrance (26) de la donnée inversée, tandis que si la valeur lue de la donnée témoin est égale à la première valeur, une délivrance (27) de la donnée effectivement lue dans la cellule-mémoire élémentaire SRAM de ladite au moins une cellule-mémoire.
- 2. Procédé de gestion du fonctionnement d’un ensemble de plusieurs blocs de plusieurs cellules-mémoire (CEL) du type comportant une cellule-mémoire élémentaire du type SRAM (CELSR) et au moins une cellule-mémoire élémentaire non volatile (CELNV) mutuellement couplées, chaque cellule-mémoire étant configurée pour effectuer une inversion de valeur de donnée lors d’un rechargement dans la cellule-mémoire élémentaire SRAM d’une donnée préalablement écrite dans ladite cellule élémentaire non volatile, procédé comprenant une association à chaque bloc de cellules-mémoire d’une cellule-mémoire témoin (CELT) fonctionnellement analogue aux cellules-mémoire (CEL), et a) lors de la première écriture (49) d’un bloc de données dans un bloc de cellules-mémoire élémentaires SRAM du bloc correspondant de cellules-mémoire, postérieure à un nombre impair de rechargement(s) (39) du bloc de cellules-mémoires élémentaires SRAM depuis la dernière écriture dans ledit bloc de cellules-mémoires élémentaires SRAM, une écriture (50) d’une donnée témoin ayant une première valeur dans la cellule-mémoire élémentaire SRAM de ladite cellule-mémoire témoin correspondante, et b) lors d’une commande de lecture (42) du contenu de chaque cellule-mémoire élémentaire SRAM dudit bloc, une lecture (43) de la donnée témoin de la cellule-mémoire témoin correspondante, et si la valeur lue de la donnée témoin est égale à une deuxième valeur différente de la première, une inversion (45) de la valeur de la donnée de chaque cellule-mémoire élémentaire SRAM dudit bloc et une délivrance (46) de chaque donnée inversée, tandis que si la valeur lue de la donnée témoin est égale à la première valeur, une délivrance (47) de la donnée effectivement lue dans chaque cellule-mémoire élémentaire SRAM dudit bloc.
- 3. Procédé de gestion du fonctionnement d’un ensemble de plusieurs sous-ensembles de plusieurs blocs de plusieurs cellules-mémoire (CEL) du type comportant une cellule-mémoire élémentaire du type SRAM (CELSR) et au moins une cellule-mémoire élémentaire non volatile (CELNV) mutuellement couplées, chaque cellule-mémoire étant configurée pour effectuer une inversion de valeur de donnée lors d’un rechargement dans la cellule-mémoire élémentaire SRAM d’une donnée préalablement écrite dans ladite cellule élémentaire non volatile, procédé comprenant une association à chaque sous-ensemble de blocs de cellules-mémoire d’une cellule-mémoire témoin(CELT) fonctionnellement analogue aux cellules-mémoire (CEL), et a) lors de la première écriture (69) d’au moins un bloc de données dans au moins un bloc de cellules-mémoire élémentaires SRAM d’un sous-ensemble de cellules-mémoire, postérieure à un nombre impair de rechargement(s) du sous-ensemble de cellules-mémoires élémentaires SRAM depuis la dernière écriture dans au moins un bloc de cellules-mémoires élémentaires SRAM de ce sous-ensemble, une écriture (72) de la donnée témoin ayant une première valeur dans la cellule-mémoire élémentaire SRAM de ladite cellule-mémoire témoin correspondante et une lecture (70) des données des autres cellules-mémoires élémentaires SRAM des autres blocs dudit sous-ensemble et une réécriture (71) dans ces autres cellules-mémoires élémentaires SRAM des autres blocs desdites données lues mais inversées, b) lors d’une commande de lecture (62) du contenu de chaque cellule-mémoire élémentaire SRAM dudit sous-ensemble, une lecture (63) de la donnée témoin de la cellule SRAM de la cellule-mémoire témoin, et si la valeur lue de la donnée témoin est égale à une deuxième valeur différente de la première, une inversion (65) de la valeur de la donnée de chaque cellule-mémoire élémentaire SRAM dudit sous-ensemble et une délivrance (66) de chaque donnée inversée, tandis que si la valeur lue de la donnée témoin est égale à la première valeur, une délivrance (67) de la donnée effectivement lue dans chaque cellule-mémoire élémentaire SRAM dudit sous-ensemble.
- 4. Procédé selon l’une des revendications précédentes, dans lequel l’étape a) comprend en outre, préalablement à l’écriture (30, 50, 72) de la donnée témoin ayant la première valeur dans la cellule-mémoire élémentaire SRAM de ladite cellule-mémoire témoin correspondante, une lecture (21, 41, 61) de la valeur ladite donnée témoin dans la cellule-mémoire élémentaire SRAM de ladite cellule-mémoire témoin correspondante, une valeur lue de la donnée témoin égale à ladite deuxième valeur signifiant que ladite écriture d’une donnée dans la cellule-mémoire élémentaire SRAM d’une cellule-mémoire est bien une première écriture postérieure à un nombre impair de rechargement(s) depuis la dernière écriture dans ladite cellule-mémoire élémentaire SRAM.
- 5. Procédé selon les revendications 3 et 4, comprenant lors de chaque commande d’écriture (60) d’au moins un bloc de données dans au moins un bloc de cellules-mémoire élémentaires SRAM d’un sous-ensemble de cellules-mémoire, une lecture (61) de la donnée témoin correspondante, et si cette donnée témoin a la deuxième valeur, une écriture (69) dudit bloc de données dans ledit au moins un bloc de cellules-mémoire élémentaires SRAM du sous-ensemble de cellules-mémoire, une écriture (72) de la donnée témoin ayant la première valeur dans la cellule-mémoire élémentaire SRAM (CELSRT) de ladite cellule-mémoire témoin correspondante, une lecture (70) des données des autres cellules-mémoires élémentaires SRAM des autres blocs dudit sous-ensemble et une récriture (71), dans ces autres cellules-mémoires élémentaires SRAM des autres blocs, desdites données lues mais inversées, tandis que si cette donnée témoin a déjà la première valeur, une écriture (69) dudit bloc de données dans ledit au moins un bloc de cellules-mémoire élémentaires SRAM du sous-ensemble de cellules-mémoire.
- 6. Procédé selon l’une des revendications précédentes, dans lequel la première valeur est une valeur logique égale à 0 et l’étape b) comprend une application d’une fonction logique OU EXCLUSIF (PL2) sur la donnée lue de chaque cellule-mémoire élémentaire SRAM et sur la donnée témoin lue de la cellule-mémoire élémentaire SRAM de ladite cellule-mémoire témoin associée.
- 7. Procédé selon l’une des revendications précédentes, dans lequel chaque cellule-mémoire élémentaire non volatile (CELNV) est du type EEPROM.
- 8. Dispositif de mémoire, comprenant un ensemble d’au moins une cellule-mémoire (CEL) du type comportant une cellule-mémoire élémentaire du type SRAM (CELSR) et au moins une cellule-mémoire élémentaire non volatile (CELNV) mutuellement couplées, ladite au moins une cellule-mémoire étant configurée pour effectuer une inversion de valeur de donnée lors d’un rechargement dans la cellule SRAM d’une donnée préalablement écrite dans ladite au moins une cellule élémentaire non volatile, une cellule-mémoire témoin (CELT) fonctionnellement analogue à ladite au moins une cellule-mémoire (CEL), et associée à ladite au moins une cellule-mémoire, des premiers moyens de traitement (MT1) configurés pour, à chaque transfert d’une donnée de ladite cellule-mémoire élémentaire du type SRAM dans ladite au moins une cellule-mémoire élémentaire non volatile de ladite au moins une cellule-mémoire et à chaque rechargement de ladite cellule-mémoire élémentaire SRAM de ladite au moins une cellule-mémoire, effectuer les mêmes opérations correspondantes sur une donnée témoin de ladite cellule-mémoire témoin, des deuxièmes moyens de traitement (MT2) configurés pour, à chaque lecture d’une donnée de ladite cellule-mémoire élémentaire SRAM, effectuer une lecture correspondante de la donnée témoin, et une inversion ou non de la donnée lue dans ladite cellule-mémoire élémentaire SRAM en fonction de la valeur lue de la donnée témoin, et des troisièmes moyens de traitement (MT3) configurés pour, lors de la première écriture d’une donnée dans ladite cellule-mémoire élémentaire SRAM de ladite au moins une cellule-mémoire, postérieure à un nombre impair de rechargement(s) de ladite cellule-mémoire élémentaire SRAM depuis la dernière écriture dans ladite cellule-mémoire élémentaire SRAM, écrire la donnée témoin ayant une première valeur dans la cellule-mémoire élémentaire SRAM de ladite cellule-mémoire témoin, et les deuxièmes moyens de traitement (MT2) sont configurés pour, lors d’une commande de lecture du contenu de la cellule-mémoire élémentaire SRAM de ladite au moins une cellule-mémoire, lire le contenu de la cellule SRAM de la cellule-mémoire témoin, et si la valeur lue de la donnée témoin est égale à une deuxième valeur différente de la première, inverser la valeur de la donnée de la cellule-mémoire-élémentaire SRAM de ladite au moins une cellule-mémoire et délivrer chaque donnée inversée, tandis que si la valeur lue de la donnée témoin est égale à la première valeur, délivrer la donnée effectivement lue dans la cellule-mémoire élémentaire SRAM de ladite au moins une cellule-mémoire,
- 9. Dispositif de mémoire, comprenant un ensemble de plusieurs blocs de plusieurs cellules-mémoire (CEL1-CEL8) du type comportant une cellule-mémoire élémentaire du type SRAM (CELSR) et au moins une cellule-mémoire élémentaire non volatile (CELNV) mutuellement couplées, ladite au moins une cellule-mémoire étant configurée pour effectuer une inversion de valeur de donnée lors d’un rechargement dans la cellule SRAM d’une donnée préalablement écrite dans ladite au moins une cellule élémentaire non volatile, une cellule-mémoire témoin (CELT) fonctionnellement analogue auxdites cellules-mémoire (CEL) et associée à chaque bloc de cellules-mémoire, des premiers moyens de traitement (MT1) configurés pour, à chaque transfert d’une donnée de ladite cellule-mémoire élémentaire du type SRAM dans ladite au moins une cellule-mémoire élémentaire non volatile de ladite au moins une cellule-mémoire et à chaque rechargement de ladite cellule-mémoire élémentaire SRAM de ladite au moins une cellule-mémoire, effectuer les mêmes opérations correspondantes sur une donnée témoin de ladite cellule-mémoire témoin, des deuxièmes moyens de traitement (MT2) configurés pour, lors d’une commande de lecture du contenu de chaque cellule-mémoire élémentaire SRAM dudit bloc, lire le contenu de la cellule SRAM de la cellule-mémoire témoin correspondante, et si la valeur lue de la donnée témoin est égale à une deuxième valeur logique différente d’une première valeur logique, inverser la valeur de la donnée de chaque cellule-mémoire élémentaire SRAM dudit bloc et délivrer chaque donnée inversée, tandis que si la valeur lue de la donnée témoin est égale à la première valeur logique, délivrer la donnée effectivement lue dans chaque cellule-mémoire élémentaire SRAM dudit bloc, et des troisièmes moyens de traitement (MT3) configurés pour, lors de la première écriture d’un bloc de données dans un bloc de cellules-mémoire élémentaires SRAM du bloc correspondant de cellules-mémoire, postérieure à un nombre impair de rechargement(s) du bloc de cellules-mémoires élémentaires SRAM depuis la dernière écriture dans ledit bloc de cellules-mémoires élémentaires SRAM, écrire la donnée témoin ayant ladite première valeur logique dans la cellule-mémoire élémentaire SRAM de ladite cellule-mémoire témoin correspondante.
- 10. Dispositif de mémoire, comprenant un ensemble de plusieurs sous-ensembles (SES1, SES2) de plusieurs blocs (BLCi) de plusieurs cellules-mémoire (CELi) du type comportant une cellule-mémoire élémentaire du type SRAM (CELSR) et au moins une cellule-mémoire élémentaire non volatile (CELNV) mutuellement couplées, ladite au moins une cellule-mémoire étant configurée pour effectuer une inversion de valeur de donnée lors d’un rechargement dans la cellule SRAM d’une donnée préalablement écrite dans ladite au moins une cellule élémentaire non volatile, une cellule-mémoire témoin (CELTU CELT2) fonctionnellement analogue auxdites cellules-mémoire (CEL) et associée à chaque sous-ensemble de blocs de cellules-mémoire, des premiers moyens de traitement (MT1) configurés pour, à chaque transfert d’une donnée de ladite cellule-mémoire élémentaire du type SRAM dans ladite au moins une cellule-mémoire élémentaire non volatile de ladite au moins une cellule-mémoire et à chaque rechargement de ladite cellule-mémoire élémentaire SRAM de ladite au moins une cellule-mémoire, effectuer les mêmes opérations correspondantes sur une donnée témoin de ladite cellule-mémoire témoin, des deuxièmes moyens de traitement (MT2) configurés pour, lors d’une commande de lecture du contenu de chaque cellule-mémoire élémentaire SRAM dudit sous-ensemble, lire le contenu de la cellule SRAM de la cellule-mémoire témoin, et si la valeur lue de la donnée témoin est égale à une deuxième valeur logique différente d’une première valeur logique, inverser la valeur de la donnée de chaque cellule-mémoire élémentaire SRAM dudit sous-ensemble et délivrer chaque donnée inversée, tandis que si la valeur lue de la donnée témoin est égale à la première valeur logique, délivrer la donnée effectivement lue dans chaque cellule-mémoire élémentaire SRAM dudit sous-ensemble, et des troisièmes moyens de traitement (MT3) configurés pour, lors de la première écriture d’au moins un bloc de données dans au moins un bloc de cellules-mémoire élémentaires SRAM d’un sous-ensemble de cellules-mémoire, postérieure à un nombre impair de rechargement(s) du sous-ensemble de cellules-mémoires élémentaires SRAM depuis la dernière écriture dans au moins un bloc de cellules-mémoires élémentaires SRAM de ce sous-ensemble, écrire la donnée témoin ayant la première valeur logique dans la cellule SRAM de ladite cellule-mémoire témoin correspondante, lire les données contenues dans les autres cellules-mémoires élémentaires SRAM des autres blocs dudit sous-ensemble et réécrire dans ces autres cellules- mémoires élémentaires SRAM des autres blocs desdites données lues mais inversées.
- 11. Dispositif selon l’une des revendications 8 à 10, dans lequel les troisièmes moyens de traitement (MT3) sont configurés pour préalablement à l’écriture de la donnée témoin ayant la première valeur dans la cellule-mémoire élémentaire SRAM de ladite cellule-mémoire témoin correspondante, lire la valeur ladite donnée témoin dans la cellule-mémoire élémentaire SRAM de ladite cellule-mémoire témoin correspondante, une valeur lue de la donnée témoin égale à ladite deuxième valeur signifiant que ladite écriture d’une donnée dans la cellule-mémoire élémentaire SRAM d’une cellule-mémoire est bien une première écriture postérieure à un nombre impair de rechargement(s) depuis la dernière écriture dans ladite cellule-mémoire élémentaire SRAM.
- 12. Dispositif selon les revendications 10 et 11, dans lequel les troisièmes moyens de traitement (MT3) sont configurés pour, lors de chaque commande d’écriture d’au moins un bloc de données dans au moins un bloc de cellules-mémoire élémentaires SRAM d’un sous-ensemble de cellules-mémoire, lire la donnée témoin correspondante, et si cette donnée témoin a la deuxième valeur, écrire ledit bloc de données dans ledit au moins un bloc de cellules-mémoire élémentaires SRAM du sous-ensemble de cellules-mémoire, écrire la donnée témoin ayant la première valeur dans la cellule-mémoire élémentaire SRAM de ladite cellule-mémoire témoin correspondante, lire les données des autres cellules-mémoires élémentaires SRAM des autres blocs dudit sous-ensemble et réécrire, dans ces autres cellules-mémoires élémentaires SRAM des autres blocs, lesdites données lues mais inversées, tandis que si cette donnée témoin a déjà la première valeur, écrire ledit bloc de données dans ledit au moins un bloc de cellules-mémoire élémentaires SRAM du sous-ensemble de cellules-mémoire.
- 13. Dispositif selon l’une des revendications 8 à 12, dans lequel la première valeur est une valeur logique égale à 0 et les deuxièmes moyens de traitement comprennent, pour chaque cellule-mémoire élémentaire SRAM de chaque cellule-mémoire, un opérateur logique OU EXCLUSIF (PL2) configuré pour recevoir en entrée la donnée lue de ladite cellule-mémoire élémentaire SRAM et la donnée témoin lue de la cellule-mémoire élémentaire SRAM de la cellule-mémoire témoin associée.
- 14. Dispositif selon l’une des revendications 8 à 13, dans lequel, la cellule-mémoire élémentaire du type SRAM de ladite au moins une cellule-mémoire comportant deux inverseurs mutuellement connectés de façon croisée, ladite au moins une cellule-mémoire comprend une unique cellule-mémoire élémentaire non volatile (El) comportant un transistor à grille flottante connecté entre une borne d’alimentation (BAL) et une première sortie des deux inverseurs, et un transistor d’interconnexion (N2) connecté en série entre la borne d’alimentation et le transistor à grille flottante ou entre le transistor à grille flottante et ladite première sortie des deux inverseurs.
- 15. Dispositif selon l’une des revendications 8 à 13, dans lequel, la cellule-mémoire élémentaire du type SRAM de ladite au moins une cellule-mémoire comportant deux inverseurs mutuellement connectés de façon croisée, ladite au moins une cellule-mémoire comporte au moins deux cellules-mémoire élémentaires non volatiles (El, E2) possédant chacune un transistor à grille flottante, les transistors à grille flottante ayant des premières électrodes de conduction connectées à une borne d’alimentation (BAL) et des deuxièmes électrodes de conduction respectivement connectées aux deux sorties des deux inverseurs par l’intermédiaire de deux transistors d’interconnexion (N2, N7).
- 16. Dispositif selon l’une des revendications 8 à 15, dans lequel chaque cellule-mémoire élémentaire non volatile est du type EEPROM.
- 17. Circuit intégré comprenant un dispositif de mémoire selon l’une des revendications 8 à 16.
Priority Applications (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
FR1356720A FR3008534B1 (fr) | 2013-07-09 | 2013-07-09 | Procede de gestion du fonctionnement d'un dispositif de memoire associant un plan-memoire du type sram et un plan memoire du type non volatil, et dispositif de memoire correspondant |
US14/315,401 US9123413B2 (en) | 2013-07-09 | 2014-06-26 | Method for managing the operation of a memory device having a SRAM memory plane and a non volatile memory plane, and corresponding memory device |
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
FR1356720 | 2013-07-09 | ||
FR1356720A FR3008534B1 (fr) | 2013-07-09 | 2013-07-09 | Procede de gestion du fonctionnement d'un dispositif de memoire associant un plan-memoire du type sram et un plan memoire du type non volatil, et dispositif de memoire correspondant |
Publications (2)
Publication Number | Publication Date |
---|---|
FR3008534A1 FR3008534A1 (fr) | 2015-01-16 |
FR3008534B1 true FR3008534B1 (fr) | 2019-06-28 |
Family
ID=49578408
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
FR1356720A Expired - Fee Related FR3008534B1 (fr) | 2013-07-09 | 2013-07-09 | Procede de gestion du fonctionnement d'un dispositif de memoire associant un plan-memoire du type sram et un plan memoire du type non volatil, et dispositif de memoire correspondant |
Country Status (2)
Country | Link |
---|---|
US (1) | US9123413B2 (fr) |
FR (1) | FR3008534B1 (fr) |
Families Citing this family (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
FR3018944A1 (fr) | 2014-03-21 | 2015-09-25 | St Microelectronics Rousset | Dispositif de memoire associant un plan memoire du type sram et un plan-memoire du type non volatil, durci contre des basculements accidentels |
FR3018952B1 (fr) | 2014-03-21 | 2016-04-15 | Stmicroelectronics Rousset | Structure integree comportant des transistors mos voisins |
KR102244856B1 (ko) * | 2014-04-22 | 2021-04-27 | 삼성전자 주식회사 | 웨어러블 장치와의 사용자 인터랙션을 제공하는 방법 및 이를 수행하는 웨어러블 장치 |
US10373694B2 (en) | 2017-08-31 | 2019-08-06 | Micron Technology, Inc. | Responding to power loss |
US10192626B1 (en) | 2017-08-31 | 2019-01-29 | Micro Technology, Inc. | Responding to power loss |
Family Cites Families (13)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
FR1355439A (fr) | 1963-05-10 | 1964-03-13 | Ferme-porte à double effet | |
FR1355440A (fr) | 1963-05-10 | 1964-03-13 | Wright Anderson South Africa L | Procédé et appareil perfectionnés pour le traitement des vidanges |
US4132904A (en) | 1977-07-28 | 1979-01-02 | Hughes Aircraft Company | Volatile/non-volatile logic latch circuit |
US4337522A (en) * | 1980-04-29 | 1982-06-29 | Rca Corporation | Memory circuit with means for compensating for inversion of stored data |
US4467451A (en) | 1981-12-07 | 1984-08-21 | Hughes Aircraft Company | Nonvolatile random access memory cell |
US4980859A (en) | 1989-04-07 | 1990-12-25 | Xicor, Inc. | NOVRAM cell using two differential decouplable nonvolatile memory elements |
US5519663A (en) | 1994-09-28 | 1996-05-21 | Sci Systems, Inc. | Preservation system for volatile memory with nonvolatile backup memory |
US6097618A (en) * | 1997-12-11 | 2000-08-01 | Cypress Semiconductor Corporation | Apparatus and method for correcting data in a non-volatile random access memory |
US6556487B1 (en) * | 2000-09-20 | 2003-04-29 | Cypress Semiconductor Corp. | Non-volatile static memory cell |
US7164608B2 (en) * | 2004-07-28 | 2007-01-16 | Aplus Flash Technology, Inc. | NVRAM memory cell architecture that integrates conventional SRAM and flash cells |
US7483290B2 (en) * | 2007-02-02 | 2009-01-27 | Nscore Inc. | Nonvolatile memory utilizing hot-carrier effect with data reversal function |
US8331150B2 (en) | 2008-01-03 | 2012-12-11 | Aplus Flash Technology, Inc. | Integrated SRAM and FLOTOX EEPROM memory device |
US8018768B2 (en) * | 2009-08-18 | 2011-09-13 | United Microelectronics Corp. | Non-volatile static random access memory (NVSRAM) device |
-
2013
- 2013-07-09 FR FR1356720A patent/FR3008534B1/fr not_active Expired - Fee Related
-
2014
- 2014-06-26 US US14/315,401 patent/US9123413B2/en active Active
Also Published As
Publication number | Publication date |
---|---|
US20150016188A1 (en) | 2015-01-15 |
FR3008534A1 (fr) | 2015-01-16 |
US9123413B2 (en) | 2015-09-01 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
FR3008534B1 (fr) | Procede de gestion du fonctionnement d'un dispositif de memoire associant un plan-memoire du type sram et un plan memoire du type non volatil, et dispositif de memoire correspondant | |
EP0666573B1 (fr) | Bascule bistable non volatile programmable par la source, notamment pour circuit de redondance de mémoire | |
EP1988548B1 (fr) | Mémoire non volatile à écriture rapide | |
EP1342244A1 (fr) | Memoire flash effacable par page | |
FR2715782A1 (fr) | Bascule bistable non volatile programmable, à état initial prédéfini, notamment pour circuit de redondance de mémoire. | |
FR2640797A1 (fr) | Dispositif de memoire electriquement effacable programmable a semi-conducteur et procede pour l'effacement et la programmation de celui-ci | |
FR2716566A1 (fr) | Circuit de sélection d'éléments de mémoire redondants et mémoire "Flash Eeprom" comportant ledit circuit. | |
EP2922062B1 (fr) | Dispositif de mémoire associant un plan mémoire du type SRAM et un plan-mémoire du type non volatil, durci contre des basculements accidentels | |
FR2800503A1 (fr) | Dispositif de memorisation a semiconducteur remanent permettant de maintenir une marge entre les distributions de tensions de seuil | |
TW201007767A (en) | Memory cell sensing using negative voltage | |
FR3007186A1 (fr) | Dispositif de memoire compact associant un plan memoire du type sram et un plan memoire du type non volatil, et procedes de fonctionnement | |
US9697897B2 (en) | Memory device with combined non-volatile memory (NVM) and volatile memory | |
FR3041806A1 (fr) | Dispositif de memoire non volatile, par exemple du type eeprom, ayant une capacite memoire importante, par exemple 16mbits | |
FR2956228A1 (fr) | Procede d'ecriture a chevauchement dans une memoire non remanente | |
EP2337032A1 (fr) | Procédé de programmation d'un point-mémoire du type non-volatile électriquement programmable et effaçable et dispositif de mémoire correspondant | |
FR3007185A1 (fr) | Dispositif de memoire associant un plan-memoire du type sram et un plan-memoire du type non volatil, et procedes de fonctionnement | |
FR2816750A1 (fr) | Memoire flash comprenant des moyens de controle de la tension de seuil de cellules memoire | |
EP0665559B1 (fr) | Bascule bistable non volatile programmable, à reduction de parasites en mode de lecture, notamment pour circuit de redondance de mémoire | |
FR3039922A1 (fr) | Procede d'ecriture dans une memoire du type eeprom et dispositif de memoire correspondant | |
FR3006491A1 (fr) | Procede d’ecriture dans une memoire de type eeprom incluant un rafraichissement de cellules memoire | |
FR2735896A1 (fr) | Memoire eeprom programmable et effacable par effet de fowler-nordheim | |
EP1818942A1 (fr) | Dispositif de mémoire non volatile | |
FR3044460A1 (fr) | Amplificateur de lecture pour memoire, en particulier une memoire eeprom | |
FR2776820A1 (fr) | Memoire a grille flottante electriquement effacable organisee en mots | |
FR3047136A1 (fr) |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PLFP | Fee payment |
Year of fee payment: 3 |
|
PLFP | Fee payment |
Year of fee payment: 4 |
|
PLFP | Fee payment |
Year of fee payment: 5 |
|
PLFP | Fee payment |
Year of fee payment: 6 |
|
PLFP | Fee payment |
Year of fee payment: 7 |
|
ST | Notification of lapse |
Effective date: 20210305 |