PROCEDE D'ECRITURE D'UNE INFORMATION
DANS UNE MEMOIRE. PROCEDE DE LECTURE ASSOCIE ET
DISPOSITIF DE GESTION D'UNE MEMOIRE ASSOCIE.
L'invention concerne un procédé d'écriture d'une information dans une mémoire, un procédé de lecture associé, et un dispositif de gestion de la mémoire associé. L'invention est notamment intéressante dans le cas d'une information susceptible d'être mise à jour. L'invention peut être avantageusement utilisée dans le domaine des cartes à mémoire, encore appelées cartes à puce .
Un problème récurrent dans les applications pour cartes à mémoire est la fiabilité de la sauvegarde d'informations dans la mémoire. Il est en effet indispensable de pouvoir garantir le contenu de certaines zones de la mémoire . C ' est le cas notamment des zones de mémoire utilisées pour mémoriser des informations secrètes et/ou essentielles dans des applications sensibles. Par exemple, pour une application de type bancaire, il est nécessaire de garantir la valeur d'un numéro mémorisé dans la carte et identifiant son possesseur. Dans d'autres applications, il est nécessaire de garantir la valeur d'un pointeur qui indique par exemple où, dans la mémoire, est mémorisée une information donnée. Ce problème de fiabilité se pose également pour des verrous de la carte, qui sont des zones de mémoire programmées au fur et à mesure de la vie de la carte pour bloquer certaines fonctionnalités de la carte .
Une solution à ce problème est l'utilisation de mémoire de type OTP (de l'anglais One Time Programmable Memory) . Une telle mémoire est par définition programmable une seule fois et son contenu ne peut pas
être efface électriquement. Aussi, après s'être assuré que l'information a été correctement mémorisée, la lecture de 1 ' information fournit dans tous les cas une valeur fiable et garantie. Une telle mémoire est très souvent utilisée pour la réalisation des verrous de la carte.
En contrepartie de sa fiabilité, une mémoire OTP ne permet pas la mise à jour des informations qu'elle contient. Or il est de plus en plus souvent nécessaire de pouvoir mémoriser de manière fiable une information devant être mise à jour, régulièrement ou non, fréquemment ou non.
Lorsque des informations doivent être mises à jour dans une carte, ces informations sont classiquement mémorisées dans une mémoire non volatile programmable et effaçable électriquement, par exemple de type EEPROM, etc. Cependant, une information mémorisée dans une telle mémoire n'est pas fiable, en ce sens qu'il n'est pas possible de garantir la valeur de 1 ' information mémorisée.
En effet, les fabricants de mémoires de type EPROM, EEPROM savent que quelle que soit la technologie utilisée, il existe un nombre maximum d'écritures et / ou de lectures pour chaque zone (cellules, blocs de cellules, etc.) de la mémoire. Au delà de ce nombre maximum, une zone ne mémorise plus correctement une information même si l'écriture se déroule dans de bonnes conditions, ou bien la lecture d'une zone donne une valeur incorrecte de l'information qu'elle contient. Par ailleurs, les fabricants de mémoires non volatiles savent également qu'une valeur mémorisée n'est fiable que si l'écriture de cette valeur a eu lieu correctement et complètement, ce qui n'est pas toujours le cas. L'écriture d'une mémoire, pour être complète et efficace, demande une quantité d'énergie déterminée
pendant un temps déterminé assez long (de l'ordre de quelques millisecondes) . Une carte à mémoire ne disposant pas de source d'énergie interne, l'énergie nécessaire à la réalisation d'une écriture est fournie par l'extérieur, par un lecteur de carte dans lequel est insérée la carte par exemple.
Un exemple typique et fréquent d'interruption de l'alimentation en énergie d'une carte est l'arrachement de la carte du lecteur de cartes pendant une écriture. Au cours de l'écriture d'une zone mémoire, son contenu DA, s'il existe, est éventuellement effacé progressivement puis remplacé par la programmation d'une information DB (qui est une nouvelle information ou bien une mise à jour de l'information DA) précédemment contenue dans la zone mémoire.
Si l'alimentation en énergie de la carte est interrompue pendant la programmation de l'information DB, la programmation (ou éventuellement l'effacement qui la précède) est interrompue brusquement. Si l'interruption a lieu au tout début de l'écriture, alors il est fort probable que la valeur DA précédemment mémorisée dans la zone le soit encore, auquel cas une lecture future de la zone donnera cette ancienne valeur DA. Inversement, si l'interruption a lieu tout à la fin de la programmation, alors il est fort probable que la nouvelle valeur DB soit déjà mémorisée dans la zone, de sorte qu'une lecture future de cette zone donnera la nouvelle valeur DB. Entre les deux, des situations intermédiaires se produisent . Si environ 50% de la programmation a été réalisée, alors le contenu de la zone est tel que la valeur DA ou la valeur DB pourra être lue avec la même probabilité au cours d'une lecture future. Si environ 20-30% de l'écriture a été réalisée, alors le contenu de la zone est tel que lors d'une lecture future de la zone, la valeur DA sera lue le plus souvent, avec parfois la lecture de la valeur DB . Inversement, si environ 70-80% de l'écriture a été
réalisée, alors le contenu de la zone est tel que lors d'une lecture future de la zone, la valeur DB sera lue le plus souvent, avec parfois la lecture de la valeur DA.
Dans ces conditions, il n'est évidemment pas possible de savoir si la zone mémoire concernée contient effectivement l'ancienne valeur DA ou la nouvelle valeur DB, ou si une lecture future de la zone donnera soit la valeur DA, soit la valeur DB, avec une probabilité variable. Dans ces conditions, il n'est évidemment pas possible de garantir la valeur de 1 ' information qui pourrait être lue par la suite dans la zone mémoire.
Un objet de l'invention est de proposer une solution pour sauvegarder une information dans une mémoire de manière fiable, pour garantir par la suite la valeur mémorisée de l'information.
Un autre objet de l'invention est de proposer une solution pour sauvegarder une information susceptible d'être mise à jour, de manière fiable. Un objet également est de proposer un procédé de mémorisation d'une information dans une mémoire.
Un autre objet de l'invention est de proposer un procédé de lecture de la donnée mémorisée, garantissant la valeur de l'information mémorisée. Un autre objet enfin est de réaliser un dispositif de gestion d'une mémoire, garantissant la valeur de l'information mémorisée.
Avec ces objectifs en vue, l'invention concerne un procédé d'écriture d'une information dans une mémoire, au cours duquel on mémorise X images de 1 ' information dans un ensemble de X zones en fonction d'un sens d'écriture précédemment mémorisé dans la mémoire. Le nombre X est de préférence supérieur ou égal à trois . La mémorisation de l'information dans X zones distinctes permet de garantir la valeur de l'information
lors d'une lecture future. En effet, dans la mesure où une valeur n'est écrite dans une des X zones qu'après écriture correcte et complète de la précédente zone, il existe au moins une zone contenant une valeur certaine de l'information. Dans le même esprit, une mise à jour de l'information (par mise en œuvre du procédé d'écriture de l'invention) ne peut commencer qu'après la réalisation correcte et complète de la mise à jour précédente.
Le sens d'écriture définit l'ordre dans lequel les X valeurs images de 1 ' information sont mémorisées dans les X zones. Il permet aussi de définir la première zone écrite et la dernière zone écrite (qui varient en fonction du sens d'écriture) .
De préférence, le sens d'écriture prend deux valeurs correspondant à deux ordres de classement différents de l'ensemble de X zones. De préférence également, ces deux valeurs sont contraire : on définit par exemple un sens positif correspondant à un parcours de l'ensemble des X zones depuis une première zone jusqu'à une dernière zone, et un sens d'écriture négatif, correspondant à un parcours de 1 ' ensemble des X zones depuis la dernière zone jusqu'à la première zone.
Le sens d'écriture est mémorisé dans la mémoire, et il est susceptible d'être actualisé, par exemple à chaque lecture de l'information.
Les X images mémorisées de 1 ' information peuvent être identiques ou non. Les X images peuvent être égales à la valeur réelle de l'information. Une ou plusieurs des X images peuvent également être dérivée de l'information par application d'une fonction mathématique. A titre d'exemple, une des images peut être égale à l'inverse (au sens l/DB) de la valeur réelle le l'information.
Selon un mode préféré de mise en œuvre, le procédé d'écriture comprend également une étape d'initialisation, réalisée avant l'écriture de l'information des X zones ou avant la première écriture de 1 ' information dans les X
zones. Au cours de l'étape d'initialisation une valeur prédéterminée et stable est mémorisée dans l'ensemble des X zones .
Par valeur stable, il faut comprendre une valeur qui est correctement et complètement programmée. La valeur stable d'initialisation peut être une valeur nulle ou tout autre valeur, telle que par exemple une valeur initiale de l'information à écrire.
L'invention concerne également un procédé de lecture associé au procédé d'écriture ci-dessus.
Le procédé de lecture permet de lire une information, précédemment écrite successivement dans X zones d'une mémoire dans un sens d'écriture précédent. Le procédé de lecture est caractérisé en ce que en ce qu'il comprend les étapes suivantes :
El : lecture du sens d'écriture précédent, E2 : lecture de X valeurs images de l'information mémorisée, respectivement dans les X zones, E3 : comparaison des X valeurs, puis
E4 : détermination de 1 ' information à partir du résultat de la comparaison et du sens d'écriture précédent, puis mémorisation d'un sens d'écriture actualisé . L'information à lire peut être une information mémorisée une seule fois ou bien une valeur mise à jour d'une information précédemment mémorisée.
L'information à lire est mémorisée dans X zones de la mémoire dont la taille (en termes d'octets) est fonction notamment de la taille de l'information et de la technologie utilisée pour la réalisation de la mémoire. La taille et répartition géographique des X zones dans la mémoire est indifférente.
L'information à lire est mémorisée sous la forme de X valeurs images de l'information. Par valeur image de l'information, il faut comprendre, de même que
précédemment, une valeur obtenue à partir de la valeur réelle de l'information par une application mathématique, telle que par exemple l'application identique (valeur image = valeur réelle), l'application inverse (valeur image = valeur inverse de la valeur réelle) ou toute autre application mathématique.
L'information à lire a été précédemment mémorisée selon le sens d'écriture précédent, qui peut prendre deux valeurs correspondant à deux ordres de classement différents (de préférence complémentaires l'un de l'autre) de l'ensemble des X zones. Arbitrairement, le sens d'écriture est dit positif ou négatif. Dans un exemple, si le sens d'écriture correspond à un classement de 1 à X des zones, alors le sens d'écriture négatif correspond à l'ordre inverse des zones, de X à 1.
Le sens d'écriture est mémorisé dans une zone de la mémoire réservé à cet effet, en vue d'être utilisé lors d'une prochaine mise en œuvre du procédé d'écriture. Le sens d'écriture est actualisé à la fin de chaque mise en œuvre du procédé de lecture .
Lors de la mise en œuvre du procédé de lecture, le sens d'écriture est lu dans la mémoire au cours de l'étape El. Les valeurs contenues dans les X zones sont également lues dans la mémoire au cours de l'étape E2. Il est à noter que les étapes El, E2 peut être réalisées l'une après l'autre, successivement, etc. Le sens de réalisation des étapes El, E2 est indifférent. De la même façon, le sens de lecture des X zones de la mémoire au cours de l'étape E2 est indifférent et peut varier entre deux mises en œuvre du procédé. Les X zones peuvent être lues dans le sens d'écriture, dans le sens inverse, ou même dans un ordre quelconque. L'essentiel est de lire toutes les valeurs contenues dans les X zones et de les classer dans l'ordre où elles ont été écrites, en fonction du sens d'écriture lu. Ceci permet de définir,
pour chaque sens d'écriture, la première valeur écrite et la dernière valeur écrite.
L'étape de comparaison E3 permet de déterminer si l'écriture de l'information dans les X zones a été correctement et complètement réalisée, ou si au contraire l'écriture a été interrompue, et le cas échéant à quel moment elle a été interrompue, comme on le verra mieux par la suite dans des exemples. Pour cela, on vérifie notamment si toutes les X valeurs sont égales ou pas. L'étape E4 permet ensuite de décider quelle est la valeur de 1 ' information parmi les X valeurs mémorisées de cette information. Cette valeur est certaine, comme on le verra mieux par la suite. Le sens d'écriture est finalement actualisé à la fin de l'étape E4. II est à noter que si les X valeurs images écrites sont différentes de la valeur réelle de l'information,
(par exemple si une des valeurs écrite est égale à l'inverse de l'information), alors l'étape E3 comprend de préférence les sous-étapes suivantes : E31 : lecture de X valeurs images de l'information mémorisée dans les X zones,
E32 : calcul de X valeurs de l'information. L'étape E4 sera ensuite bien sûr réalisée sur la base des X valeurs recalculées .
Selon un mode de réalisation du procédé de lecture de l'invention, l'étape E4 comprend les sous étapes décrites ci-dessous, réalisées si les X valeurs (éventuellement les X valeurs calculées) sont identiques :
ET11 : l'information est égale à la première valeur associée au sens d'écriture précédent, et
ET12 : le sens d'écriture actualisé est le sens complémentaire du sens d'écriture précédent. Si toutes les valeurs sont identiques, alors on estime que la précédente écriture de 1 ' information a été
correctement et complètement réalisée, ou qu'au moins les (X-l) premières zones ont été correctement et complètement écrites. Dans ce cas, l'information à lire est égale à la première valeur écrite associée au sens d'écriture précédent : cette valeur est en effet la zone la plus fiable au sens où il est certain qu'elle a été écrite correctement et complètement .
Le sens d'écriture est finalement mis à jour en vue d'une prochaine actualisation de l'information D. Le sens d'écriture actualisé est le sens complémentaire du sens d'écriture précédent, il est mémorisé dans la mémoire.
Selon un autre mode de réalisation, l'étape E4 comprend les sous-étapes suivantes, réalisées si les X valeurs ne sont pas identiques et si il existe une séquence majoritaire.
ET21 : l'information est égale à la première valeur précédemment écrite si la séquence majoritaire comprend la première valeur précédemment écrite et 1 ' information est égale à la dernière valeur précédemment écrite si la séquence majoritaire comprend la dernière valeur précédemment écrite, et
ET22 : le sens d'écriture actualisé est égal au sens d'écriture précédent. Si toutes les valeurs lues ne sont pas identiques, alors cela signifie que la précédente mise à jour de l'information n'a pas été effectuée correctement et complètement. Ce sera le cas par exemple en cas d'arrachement de la carte du lecteur pendant l'écriture des X zones.
Par séquence, il faut comprendre un ensemble de valeurs identiques écrites successivement, et comprenant au moins la première valeur écrite ou la dernière valeur écrite, selon le sens d'écriture précédent. Ainsi, pour chaque sens d'écriture, il est possible de définir deux séquences : l'une comprenant au moins la première valeur
écrite et 1 ' autre comprenant au moins la dernière valeur écrite. Des exemples numériques décrits plus loin faciliteront la compréhension de cette notion.
Une séquence est dite majoritaire si elle comprend un nombre d'éléments strictement supérieur au nombre d'éléments des autres séquences issues du même ensemble de valeurs écrites.
Dans le cas où il existe une séquence majoritaire
(étape ET21) , alors l'information est égale à la valeur extrême (première ou dernière) de la séquence majoritaire et qui est aussi une valeur extrême (première ou dernière) de l'ensemble des X valeurs lues.
Le sens d'écriture actualisé est ensuite mémorisé dans la mémoire : la valeur actualisée du sens d'écriture est égale à sa valeur précédente (ET22) .
Selon un autre mode de réalisation, l'étape E4 comprend les sous-étapes suivantes, réalisées si les X valeurs ne sont pas identiques et si il n'existe pas de séquence majoritaire :
ET31 : l'information est égale à la dernière valeur précédemment écrite, et
ET32 : le sens d'écriture actualisé est égal au sens d'écriture précédent.
L'invention a enfin pour objet un dispositif de gestion d'une mémoire de données, comprenant un automate pour la mise en œuvre d'un procédé d'écriture et / ou d'un procédé de lecture tels que décrits ci-dessus. La mémoire de données est une mémoire programmable et effaçable électriquement, par exemple une mémoire EEPROM.
Selon un mode de réalisation, le dispositif comprend une unité de traitement et une mémoire de programme associée, l'automate étant réalisé sous forme logiciel et mis en œuvre par un microprocesseur de l'unité de traitement.
Selon un autre mode de réalisation, l'automate est un circuit couplé aux entrées de commande de la mémoire de données.
Le dispositif de gestion selon l'invention est soit intégré sur le même support que la mémoire de données ou bien soit déporté dans un dispositif associé.
Par exemple, le dispositif de gestion et la mémoire peuvent être intégrés ensemble dans une carte à puce.
Dans un autre exemple, la mémoire est intégrée dans une carte à puce et le dispositif de gestion est intégré dans un lecteur associé.
Il est à noter que l'invention peut être utilisée quelle que soit la taille de l'information à mémoriser et quelle que soit la position respective des X zones utilisées dans la mémoire. Si nécessaire, le dispositif de gestion de la mémoire comprend notamment des moyens pour localiser geographiquement les X zones dans la mémoire .
A titre indicatif, l'invention peut être utilisée pour la gestion d'un verrou dans une carte à mémoire, ou bien pour la réalisation d'un système de mémorisation garantissant le contenu de la mémoire de données qu'il gère .
L'invention sera mieux comprise et d'autres caractéristiques et avantages apparaîtront à la lecture de la description qui va suivre, d'un exemple de mise en œuvre d'un procédé de mémorisation et d'un procédé de lecture selon l'invention. La description est à lire en relation au dessin annexé dans lequel :
- la figure 1 est un schéma fonctionnel d'une carte pouvant être utilisée pour la mise en œuvre de l'invention, et
- la figure 2 est un diagramme d'un algorithme de mise en œuvre du procédé de lecture d'une donnée dans une mémoire, selon l'invention.
L'invention est décrite ci-dessous en relation avec les figures 1, 2, dans le cadre d'une application particulière où une mémoire non volatile contient au moins une information D susceptible d'être mise à jour.
La figure 1 illustre une carte à puce, qui comprend une mémoire MD de données susceptibles d'être mises à jour et un dispositif CG de gestion de la mémoire MD. Dans un autre exemple (non représenté) , la carte à puce comprend seulement une mémoire MD de données, le dispositif CG de gestion de la mémoire est quant à lui déporté dans un lecteur de carte à puce . Ces deux modes de réalisation de cartes à puce sont classiques : il existe dans le commerce des cartes à puce qui ne comportent que la mémoire MD de données et des cartes à puce qui comportent la mémoire MD de données et un dispositif de gestion associé.
Dans l'exemple de la figure 1, le dispositif MG de gestion comprend notamment une unité UT de traitement, qui est par exemple un microprocesseur, et une mémoire MP de programme associée, par exemple de type ROM ou EPROM. La mémoire de programme comprend notamment un programme d'application, spécifique à l'utilisation prévue de la carte à puce. Selon 1 ' invention, la mémoire MP comprend également un programme PR de gestion de la mémoire MD de données, permettant la mise en œuvre d'un mécanisme d'écriture et de lecture de la mémoire MD. Le programme PR comprend notamment un sous-programme d'écriture de la mémoire, et un sous-programme de lecture de la mémoire, selon 1 ' invention.
La mémoire MD de données est ici de type EERPOM, elle comprend un plan mémoire comprenant notamment X zones mémoires PI, P2 , ... PX, destinées à la mémorisation et la sauvegarde de l'information D susceptible d'être mise à jour. Les X zones PI, P2 , ... PX sont ici X pages
identiques de la mémoire MD (chaque page comprenant éventuellement plusieurs octets), situées côte-à-côte. On rappelle que la taille et la position des X zones sur le plan mémoire sont indifférentes . Le plan mémoire comprend également une zone supplémentaire pour mémoriser la valeur du sens d'écriture S. Cette zone est dans l'exemple une zone de un bit dans laquelle on mémorise la valeur 1 si le sens d'écriture est positif et dans laquelle on mémorise la valeur 0 si le sens d'écriture est négatif.
Des exemples de mise en œuvre du procédé d'écriture et des exemples de mise en œuvre du procédé de lecture d'une information D dans mémoire MD, selon l'invention, vont maintenant être décrits en relation avec la figure 2.
Dans tous les exemples qui vont suivre, on suppose qu'initialement, les X zones PI, P2 , PX de la mémoire contiennent des données Dl, D2 , ..., DX, toutes égales à une valeur initiale DA de l'information à lire. Le contenu des X zones est donc stable, au sens où les X zones ont été correctement et complètement écrites.
Selon l'invention, la mise à jour de l'information D est réalisée de la manière suivante : lecture du sens d'écriture dans la mémoire MD puis écriture de valeur actualisée DB de l'information D successivement dans les X zones PI, P2 , ... PX de la mémoire si le sens d'écriture est positif ou dans les X zones PX, ..., P2 , PI si le sens d'écriture est négatif.
En ce qui concerne le procédé de lecture, on considère dans un premier exemple le cas d'une mémoire MD comprenant six zones PI à P6 réservées à l'écriture de l'information D. On suppose par ailleurs que le sens d'écriture est initialement positif.
La lecture de 1 ' information D est effectuée de la manière suivante. Au cours d'une première étape El, le sens d'écriture précédent est lu dans la mémoire (ici sens positif) . Au cours de l'étape E2 , les six valeurs Dl à D6 sont lues dans les six zones PI à P6 correspondantes. On rappelle que le sens de lecture des six zones est indifférent. L'essentiel est de lire toutes les zones, puis de classer les valeurs lues dans le sens d'écriture si nécessaire. La lecture donne dans cet exemple l'ensemble de valeurs suivants :
(Dl, ..., D6) = (DB, ..., DB) . Un tel ensemble de valeurs est obtenu notamment lorsque la mise à jour précédente a été correctement et complètement réalisée.
Toutes les valeurs Dl à D6 étant égales, l'étape ET1 est réalisée :
- l'information D est égale à Dl = DB (ET11) car, le sens d'écriture étant positif, la première valeur écrite précédemment était la valeur Dl,
- le sens d'écriture est actualisé : S+ = - S- (ET11) , il devient ainsi négatif et sa nouvelle valeur est mémorisé dans la zone de la mémoire MD réservée à cet effet.
Dans un deuxième exemple, on considère le cas d'une mémoire MD comprenant six zones PI à P6 réservées à l'écriture de l'information D. On suppose par ailleurs que le sens d'écriture est initialement positif. La lecture de 1 ' information D est effectuée de la manière suivante. Au cours d'une première étape El, le sens d'écriture précédent est lu dans la mémoire (ici sens positif). Au cours de l'étape E2 , les six valeurs Dl à D6 sont lues dans les six zones PI à P6 correspondantes .
La lecture donne dans cet exemple l'ensemble de valeurs suivants :
(Dl, ..., D6) = (DB, DB, Dl , DA, DA, DA) Dl est une valeur quelconque, éventuellement indéterminée .
Un tel ensemble de valeurs est obtenu notamment lorsque la mise à jour précédente a été interrompue en cours d'écriture de la zone P3 ou P4.
L'ensemble de valeurs comprend ici deux séquences de valeurs identiques et comprenant une des valeurs extrêmes (Dl ou D6) des données : la séquence (Dl, D2) et la séquence (D4, D5 , D6) . La deuxième séquence est majoritaire car elle comprend un nombre d'éléments strictement supérieur à celui de la première séquence. Aussi, dans ce deuxième exemple, la valeur de l'information lue (ET21) est égale à D6 = DA. La valeur actualisée du sens d'écriture est égale à sa valeur précédente (ET22) , elle reste donc positive.
Dans un troisième exemple, on considère le cas d'une mémoire MD comprenant trois zones PI à P3 réservées à l'écriture de l'information D. On suppose par ailleurs que le sens d'écriture est initialement positif.
La lecture de l'information D est effectuée de la manière suivante. Au cours d'une première étape El, le sens d'écriture précédent est lu dans la mémoire (ici sens positif) . Au cours de l'étape E2 , les trois valeurs
Dl à D3 sont lues dans les trois zones PI à P3.
La lecture donne dans cet exemple l'ensemble de valeurs suivants :
(Dl, D2, D3) = (DB, DB, DA)
Un tel ensemble de valeurs est obtenu notamment lorsque la mise à jour précédente a été interrompue en cours d'écriture de la zone P2 ou P3. L'ensemble de valeurs comprend ici deux séquences de valeurs identiques et comprenant une des valeurs
extrêmes (Dl ou D3) des données : la séquence (Dl, D2) et la séquence (D3) . La première séquence est majoritaire car elle comprend un nombre d'éléments strictement supérieur à celui de la deuxième séquence . Aussi, dans ce troisième exemple, la valeur de l'information lue (ET21) est égale à Dl = DB. La valeur actualisée du sens d'écriture est égale à sa valeur précédente (ET22) , elle reste donc positive.
Dans un quatrième exemple, on considère le cas d'une mémoire MD comprenant trois zones PI à P3 réservées à l'écriture de l'information D. On suppose par ailleurs que le sens d'écriture est initialement positif.
La lecture de 1 ' information D est effectuée de la manière suivante. Au cours d'une première étape El, le sens d'écriture précédent est lu dans la mémoire (ici sens positif) . Au cours de l'étape E2 , les trois valeurs
Dl à D3 sont lues dans les trois zones PI à P3.
La lecture donne dans cet exemple l'ensemble de valeurs suivants :
(Dl, D2, D3) = (DB, Dl, DA) Dl est une valeur quelconque, éventuellement indéterminée .
Un tel ensemble de valeurs est obtenu notamment lorsque la mise à jour précédente a été interrompue en cours d'écriture de la zone P2 ou P3.
L'ensemble de valeurs comprend ici deux séquences de valeurs identiques et comprenant une des valeurs extrêmes (Dl ou D3) des données : la séquence (Dl) et la séquence (D3) . Les deux séquences comprennent ici chacune une unique valeur et donc aucune n'est majoritaire.
Aussi, dans ce quatrième exemple, la valeur de l'information lue (ET31) est égale à D3 = DA, dernière valeur écrite lors de la dernière écriture complète. La valeur actualisée du sens d'écriture est égale à sa valeur précédente (ET32) , elle reste donc positive.
Des applications diverses et variées de l'invention peuvent être envisagées.
Une première application de 1 ' invention est la réalisation d'un verrou amovible dans une carte à mémoire. On rappelle qu'un verrou est une zone de mémoire utilisée par un utilisateur amont pour empêcher un utilisateur aval d'accéder à certaines fonctionnalités de la carte. L'état du verrou, ouvert ou fermé, doit bien entendu être garanti. L'invention permet de réaliser un verrou non définitif (contrairement à un verrou réalisé à l'aide d'une mémoire OTP) , c'est-à-dire un verrou pouvant être ouvert ou fermé par l'utilisateur amont. Dans un exemple pratique, un tel verrou pourra être intéressant pour une carte utilisée comme porte monnaie électronique. L'utilisateur amont, par exemple un banquier, se réserve ainsi la possibilité de recharger la carte par une somme d'argent, et interdit à l'utilisateur aval, son client, de recharger seul le porte monnaie. Une deuxième application de l'invention est la réalisation d'un mécanisme anti-stress pour une mémoire de données dans laquelle est mémorisée au moins une information courante susceptible d'être mise à jour. Un tel mécanisme est par exemple réalisé en utilisant deux ou plusieurs zones mémoires pour programmer une même information : les différentes zones sont utilisées successivement dans un ordre prédéfini au fur et à mesure des mises à jour de l'information. Au cours de chaque mise à jour, un pointeur est également mis à jour, indiquant quelle est la zone mémoire en cours d'utilisation. La valeur de ce pointeur doit bien entendu être certaine, afin de pouvoir toujours garantir l'accès à la dernière valeur mise à jour de l'information dans la mémoire. L'invention pourra être avantageusement utilisée pour mémoriser le pointeur, ce qui permettra de garantir sa valeur.