Login| Sign Up| Help| Contact|

Patent Searching and Data


Title:
METHOD FOR WRITING AND READING THE CONTENTS OF A MICROCIRCUIT CARD NON VOLATILE MEMORY
Document Type and Number:
WIPO Patent Application WO/1999/053450
Kind Code:
A1
Abstract:
The non volatile memory is organised into sectors each comprising: a data field, preserving an informative content; an identifying field, forming an access key to the sector; and a relevance field, forming a subfield of the identifying field to discriminate among several sectors of a common user identification the one whereof the data field is to be considered. Writing data in a sector consists in: a) applying in input the data to be written and the corresponding sector user identification; b) scanning the memory to search for possible sectors whereof the user identification is the same as the one applied in input; c) scanning the memory to search for an available sector; and d) writing in said available sector: the data applied in input; the user identification applied in input; and a relevance value higher than that possibly found in step b). Advantageously, if the search in step b) is fruitless, prior to step d) an indicator is posted, and is erased subsequently to step d), said indicator signalling that possibly step d) is incomplete.

Inventors:
GRIEU FRANCOIS (FR)
DIDIER STEPHANE (FR)
Application Number:
PCT/FR1999/000836
Publication Date:
October 21, 1999
Filing Date:
April 09, 1999
Export Citation:
Click for automatic bibliography generation   Help
Assignee:
INNOVATRON ELECTRONIQUE SOCIET (FR)
GRIEU FRANCOIS (FR)
DIDIER STEPHANE (FR)
International Classes:
G07F7/10; G06F12/14; (IPC1-7): G07F7/10
Foreign References:
EP0398545A11990-11-22
FR2699704A11994-06-24
EP0159651A21985-10-30
FR2701578A11994-08-19
FR2667192A11992-03-27
EP0831433A11998-03-25
Attorney, Agent or Firm:
Dupuis-latour, Dominique (Pagenberg & Partner 14, boulevard Malesherbes Paris, FR)
Download PDF:
Claims:
REVENDICATIONS
1. Un procédé d'écriture du contenu de la mémoire non volatile d'une carte à microcircuit, caractérisé en ce que, cette mémoire étant organisée en secteurs comportant chacun : un champ de données, conservant un contenu informatif, un champ d'identifiant, formant clef d'accès au secteur, et un champ de pertinence, formant souschamp du champ d'iden tifiant pour discriminer parmi plusieurs secteurs de mme iden tifiant celui dont le champ de données est à prendre en compte, l'écriture de données dans un secteur consiste à : a) appliquer en entrée les données à écrire et l'identifiant du secteur correspondant ; b) scruter la mémoire à la recherche d'éventuels secteurs dont l'iden tifiant est le mme que celui appliqué en entrée ; c) scruter la mémoire à la recherche d'un secteur disponible ; et d) écrire dans ce secteur disponible : les données appliquées en en trée ; l'identifiant appliqué en entrée ; et une valeur de pertinence plus grande que celle éventuellement trouvée à l'étape b).
2. Le procédé d'écriture de la revendication 1, dans lequel, si la re cherche de l'étape b) est infructueuse, on prévoit préalablement à l'éta pe d) l'inscription d'un témoin, et son effacement postérieurement à l'é tape d), ce témoin indiquant une possible réalisation incomplète de l'é tape d).
3. Le procédé d'écriture de l'une des revendications 1 ou 2, dans le quel, lorsque l'on trouve à l'étape b) un secteur dont l'identifiant est le mme que celui appliqué en entrée, alors on 1'efface à une étape consé cutive à l'étape d).
4. Le procédé d'écriture de l'une des revendications 1 ou 2, dans le quel chaque secteur comprend également : un champ de contrôle, contenant une information de vérification de l'intégrité conjointe des trois champs de données, d'identifi ant et de pertinence, et dans lequel, à l'étape b), on ignore les secteurs non intègres.
5. Le procédé d'écriture de la revendication 4, dans lequel on efface les secteurs non intègres.
6. Le procédé d'écriture de la revendication 1, dans lequel le choix de l'emplacement mémoire qui sera écrit est opéré de manière à répar tir l'usure de la mémoire, notamment par choix aléatoire d'un secteur parmi ceux disponibles.
7. Un procédé de lecture du contenu de la mémoire non volatile d'une carte à microcircuit apte à faire l'objet d'une écriture par le procé dé de l'une des revendications 1 à 6, caractérisé en ce que la lecture de données dans un secteur consiste à : A) appliquer en entrée l'identifiant du secteur à lire ; B) scruter la mémoire à la recherche de secteurs dont l'identifiant est le mme que celui appliqué en entrée ; et C) délivrer en sortie le champ de données d'un secteur choisi par com paraison des champs de pertinence parmi les secteurs trouvés à l'é tape B).
8. Le procédé de lecture de la revendication 7, dans lequel, lorsque l'on trouve à l'étape B) une pluralité de secteurs dont l'identifiant est le mme que celui appliqué en entrée, on efface ultérieurement ou conco mitamment ces secteurs à l'exception de celui dont les données sont dé livrées en sortie à l'étape C).
9. Le procédé de lecture de l'une des revendications 7 et 8, dans le quel, lorsque l'on trouve à l'étape B) une pluralité de secteurs dont l'i dentifiant est le mme que celui appliqué en entrée, on réitère l'écriture du secteur dont les données sont délivrées en sortie à l'étape C).
10. Le procédé de lecture de l'une des revendications 7 à 9 prises en dépendance de la revendication 4, dans lequel on ne retient à l'étape C) que les secteurs intègres.
11. Le procédé de lecture de la revendication 10, dans lequel on ef face les secteurs non intègres.
Description:
Procédé d'écriture et de lecture du contenu de la mémoire non volatile d'une carte à microcircuit L'invention concerne les cartes à microcircuit, et plus particulière- ment les cartes à microprocesseur, qui réalisent elles-mmes diverses modifications de leur mémoire non volatile.

Lorsque de telles modifications sont opérées, il est bien entendu né- cessaire de s'assurer qu'elles ont été correctement effectuées avant de pouvoir exploiter l'information nouvellement écrite. Dans le cas con- traire, l'information nouvellement écrite devra tre ignorée ou effacée et l'information à considérer devra tre celle qui était écrite dans la carte avec l'exécution de l'opération incorrecte.

La cause habituelle d'une telle opération imparfaite est la rupture inattendue de l'alimentation due à un"arrachement"de la carte, c'est- à-dire un retrait de celle-ci avant la fin du traitement, entraînant une interruption prématurée du couplage avec le terminal. Ce risque est particulièrement élevé avec les cartes du type"sans contact", où les li- mites du volume dans lequel la carte peut fonctionner correctement au- tour du terminal ne sont pas perceptibles. Il existe dans ce cas un ris- que non négligeable de rupture inattendue de la communication entre carte et terminal, dû à la sortie de la carte du rayon d'action du termi- nal avant la fin du traitement, ou du fait d'une perturbation passagère, par exemple le passage d'une masse métallique à proximité.

Une difficulté supplémentaire se présente dans le cas des mémoires non volatiles de type E2PROM avec lesquelles, si l'on interrompt une opération d'écriture avant sa fin normale, il peut se faire que les don- nées soient néanmoins écrites, et puissent donc tre correctement lues peu après l'écriture. Toutefois, si l'on réitère cette lecture plus tard, il n'est pas certain que l'on puisse l'effectuer correctement, car la réten- tion de l'information dans la cellule mémoire aura été insuffisante du fait de l'écriture interrompue avant terme.

Pour assurer l'intégrité des données, il est donc souhaitable que, par leur gestion interne de la mémoire, les cartes se protègent à l'en- contre de tels risques, en garantissant que les données sont soit dans l'état modifié, soit dans l'état avant demande de modification, mais ja-

mais dans un état intermédiaire indéterminé résultant d'un"arrache- ment".

Une première solution consiste à réserver une zone, fixe, de la mé- moire non volatile pour l'écriture temporaire des données à modifier.

Outre les données, cette zone comporte un champ de localisation (indi- cation de l'adresse de ces données dans la mémoire) et un champ de contrôle (par exemple un contrôle de type parité ou analogue) qui as- sure l'intégrité du champ de données et du champ de localisation.

Lors d'une lecture, la carte ignore cette zone temporaire et les don- nées sont lues à leur emplacement réel.

Lors d'une modification, la carte écrit tout d'abord les données à modifier dans la zone temporaire (supposée effacée), efface 1'emplace- ment réel des données, écrit les données à partir du contenu de la zone temporaire et termine l'opération en effaçant la zone temporaire.

Avant le premier accès aux données depuis la dernière interruption (normale ou anormale) du fonctionnement de la carte, par exemple à la remise à zéro ("reset"), la carte contrôle la zone temporaire et : -si elle est effacée, la carte ne fait rien ; -si elle n'est pas effacée mais que les données et leur localisation sont intègres, la carte écrit les données à partir du contenu de la zone temporaire et termine l'opération en effaçant la zone tempo- raire ; -si la zone temporaire n'est pas effacée et que les données et/ou leur localisation ne sont pas intègres, la carte efface la zone temporaire.

Cette première solution, la plus courante, présente l'avantage de n'impliquer qu'un surcoût très faible en espace mémoire (seulement pour la zone temporaire).

En revanche, elle présente deux inconvénients sérieux, à savoir (i) d'user rapidement la mémoire non volatile car la zone temporaire est utilisée à chaque opération, ce qui limite la durée de vie de la carte (avec les technologies actuelles une cellule mémoire E2PROM supporte au plus 105 à 106 écritures) et (ii) de prendre beaucoup de temps, ce qui est un inconvénient majeur dans les applications sans contact.

Une deuxième solution consiste à dédoubler la mémoire en deux zo- nes"flip-flop"susceptibles de contenir les données à protéger. Chaque

zone comporte en plus des données un champ de contrôle qui indique quelle est la zone qui contient les données réelles (zone"pertinente") et qui assure l'intégrité des données et de leur pertinence.

Lors d'une lecture, la carte détermine la zone pertinente et opère la lecture dans cette dernière.

Lors d'une modification, la carte détermine la zone pertinente et opère l'écriture dans l'autre zone (supposée effacée) des nouvelles don- nées et du nouveau champ de contrôle, qui indique que c'est désormais cette autre zone qui devient la zone pertinente, puis efface la zone initi- alement pertinente, devenue obsolète.

Lors de tout accès à une zone, la carte en contrôle l'intégrité et 1'ef face si elle n'est pas intègre.

Cette deuxième solution ne ralentit pas les traitements (une seule opération d'écriture à chaque modification), et double la limite d'usure de la mémoire non volatile.

En revanche, elle fait plus que doubler 1'espace mémoire nécessaire au stockage des données, ce qui grève significativement le coût de la carte.

L'un des buts de l'invention est de proposer un procédé qui pallie ces divers inconvénients et garantisse parfaitement l'intégrité des don- nées sans grever significativement 1'espace mémoire, le temps de trai- tement ni la durée de vie de la mémoire non volatile.

Pour la mise en oeuvre du procédé de l'invention, la mémoire étant organisée en secteurs comportant chacun un champ de données, conser- vant un contenu informatif, un champ d'identifiant, formant clef d'ac- ces au secteur, et un champ de pertinence, formant sous-champ du champ d'identifiant pour discriminer parmi plusieurs secteurs de mme identifiant celui dont le champ de données est à prendre en compte.

L'écriture de données dans un secteur consiste à : a) appliquer en entrée les données à écrire et l'identifiant du secteur correspondant ; b) scruter la mémoire à la recherche d'éventuels secteurs dont l'identifiant est le mme que celui appliqué en entrée ; c) scruter la mémoire à la re- cherche d'un secteur disponible ; et d) écrire dans ce secteur disponible : les données appliquées en entrée ; l'identifiant appliqué en entrée ; et une valeur de pertinence plus grande que celle éventuellement trouvée

à l'étape b).

Dans une forme de mise en oeuvre avantageuse, si la recherche de l'étape b) est infructueuse, on prévoit préalablement à l'étape d) l'ins- cription d'un témoin, et son effacement postérieurement à l'étape d), ce témoin indiquant une possible réalisation incomplète de l'étape d).

De préférence, lorsque l'on trouve à l'étape b) un secteur dont l'i- dentifiant est le mme que celui appliqué en entrée, alors on 1'efface à une étape consécutive à l'étape d).

Chaque secteur peut également comprendre un champ de contrôle, contenant une information de vérification de l'intégrité conjointe des trois champs de données, d'identifiant et de pertinence ; à l'étape b), on ignore alors les secteurs non intègres, que l'on peut également effacer.

De préférence, le choix de l'emplacement mémoire qui sera écrit est opéré de manière à répartir l'usure de la mémoire, notamment par choix aléatoire d'un secteur parmi ceux disponibles.

En ce qui concerne la lecture de données dans un secteur, celle-ci consiste à : A) appliquer en entrée l'identifiant du secteur à lire ; B) scruter la mémoire à la recherche de secteurs dont l'identifiant est le mme que celui appliqué en entrée ; et C) délivrer en sortie le champ de données d'un secteur choisi par comparaison des champs de pertinence parmi les secteurs trouvés à l'étape B).

Avantageusement, lorsque l'on trouve à l'étape B) une pluralité de secteurs dont l'identifiant est le mme que celui appliqué en entrée, on efface ultérieurement ou concomitamment ces secteurs à l'exception de celui dont les données sont délivrées en sortie à l'étape C).

Dans le cas où chaque secteur comprend également un champ de contrôle, lorsque l'on trouve à l'étape B) une pluralité de secteurs dont l'identifiant est le mme que celui appliqué en entrée, on réitère l'écri- ture du secteur dont les données sont délivrées en sortie à l'étape C). On peut également ne retenir à l'étape C) que les secteurs intègres et effacer les secteurs non intègres.

D'autres caractéristiques et avantages ressortiront de la descrip- tion ci-dessous d'un exemple de mise en oeuvre de l'invention.

Exemple Dans cet exemple les données de la mémoire sont organisées en secteurs comportant chacun quatre champs : 1. données ; 2. identifiant (clé d'accès permettant de sélectionner un secteur) ; 3. pertinence : permet de déterminer le secteur pertinent si deux sec- teurs ont le mme identifiant ; 4. contrôle : permet de vérifier l'intégrité des trois champs précédents (par exemple un contrôle de type parité).

Un secteur sera désigné par son identifiant, notion qui se substitue à celle d'adresse. La procédure d'écriture d'un secteur a comme para- mètre un identifiant et des données à associer à cet identifiant. La pro- cédure de lecture d'un secteur a comme paramètre un identifiant, et retourne les données associées à cet identifiant lors de la dernière écri- ture effectuée avec ce mme identifiant (ou une indication appropriée si cet identifiant n'a jamais été utilisé). En d'autres termes, on réalise un accès de type associatif au lieu d'un accès indexé.

Lors de la procédure de lecture d'un secteur, la carte recherche les secteurs dont l'identifiant a la valeur demandée, et qui (sur la base du champ de contrôle) sont intègres. Au cas où plusieurs secteurs répon- dent à ces deux critères, elle en retient un sur la base du champ de per- tinence.

Lors d'une écriture de secteur, la carte écrit, dans un secteur dispo- nible, les champs données et identifiant demandés, le champ pertinence tel que ce secteur sera, pour la procédure de lecture, le plus pertinent des secteurs intègres possédant cet identifiant, et le champ contrôle en accord avec les trois champs précédents (en d'autres termes, l'écriture est gérée de manière que la lecture ultérieure puisse tre correctement opérée).

Avantageusement, la procédure d'écriture se poursuit par 1'efface- ment du secteur rendu non pertinent par l'écriture du nouveau secteur, créant ainsi un nouveau secteur disponible.

On prévoit avantageusement un système (complémentaire) de type garbage collection, c'est-à-dire de récupération des secteurs inutiles,

qu'ils soient non intègres ou non pertinents.

On prévoit avantageusement un système qui répartit l'usure résul- tant de l'écriture en évitant d'utiliser toujours les mmes secteurs, par exemple en choisissant aléatoirement un secteur parmi les secteurs disponibles.

Une variante généralement avantageuse de la procédure de recher- che de secteur consiste à profiter de cette étape de recherche pour effa- cer les secteurs dont il est déterminé qu'ils sont non intègres, et/ou ceux qui ne sont pas les plus pertinents, recréant ainsi des secteurs libres (cela perd du temps lors de cette lecture, en faveur de la vitesse des lectures et écritures ultérieures). Avantageusement, avant l'effacement d'un secteur dont on a déterminé qu'il est intègre mais non pertinent, on écrira à nouveau le secteur pertinent, dont l'écriture peut tre im- parfaite.

La taille utile de la mémoire est égale au nombre de secteurs dispo- nibles, moins un secteur qui doit rester effacé. Tous les secteurs (y com- pris celui effacé) sont répartis dynamiquement dans la mémoire.

Si les données doivent tre structurées en fichiers, par exemple selon la norme ISO/IEC 7816-4, l'identifiant de secteur se décompose en deux sous-champs, un identifiant de fichier et un identifiant du secteur dans ce fichier.

On va donner ci-dessous une implémentation (non limitative) des opérations de lecture/écriture utilisant cette structuration particulière en secteurs : -Le champ de contrôle contient, codé en binaire, le nombre de bits à zéro dans les trois autres champs ; on montre que si un problème tel qu'une écriture ou un effacement interrompu modifie un nombre quelconque de bits du secteur tous dans le mme sens, le contrôle de la valeur du champ de contrôle permet toujours la détection du problème.

-Le champ pertinence est un entier de 0 à 3, codé sur 2 bits.

-La procédure de lecture parcourt séquentiellement tous les secteurs jusqu'à trouver un premier secteur possédant l'identifiant re- cherché, et intègre. Si cette recherche ne trouve aucun secteur, on

termine la procédure avec un compte-rendu"secteur non trouvé". Si on trouve un tel premier secteur, on mémorise sa position, ses données, et sa pertinence p. La recherche se poursuit. Si l'on dé- tecte un second secteur possédant 1'identifiant recherché, et intè- gre, on teste si sa pertinence q est le reste de la division entière de p+1 par 3 ; si oui, on écrit à nouveau le second secteur, on efface le premier et on retourne les données du second ; sinon, on écrit à nouveau le premier secteur, on efface le second et on retourne les données du premier. Si un second secteur n'est pas trouvé et si la pertinence du premier secteur est p=3, on efface ce secteur et on donne le compte-rendu"secteur non trouvé" ; dans les autres cas, on retourne les données du premier secteur trouvé.

La procédure d'écriture commence comme la procédure de lecture ci-dessus. Si l'on a trouvé le secteur que retournerait la procédure de lecture pour l'identifiant fourni, on mémorise la position de ce secteur et sa pertinence p (qui vaut 0,1 ou 2) ; si on ne l'a pas trou- vé, on sélectionne un secteur libre (par la procédure ci-après) et on écrit dans ce secteur les champs identifiant, données, pertinence p=3 et contrôle, et l'on mémorise la position et la pertinence de ce secteur. Dans les deux cas, on poursuit en sélectionnant un secteur libre (par la procédure ci-après). On écrit dans ce secteur les champs identifiant, données, pertinence q (calculée comme le reste de la division entière de p+1 par 3) et contrôle. Puis on efface le secteur mémorisé.

Pour la recherche de secteur libre, on initialise à zéro le nombre n de secteurs libres trouvés. On examine séquentiellement les sec- teurs. Pour chaque secteur, s'il est non vierge et non intègre, on 1'efface et il devient vierge (contribuant ainsi à la garbage collec- tion mentionnée plus haut) ; s'il est intègre et si sa pertinence est p=3, on 1'efface (idem) ; s'il est intègre et si sa pertinence n'est pas p=3, alors on recherche dans la zone non encore parcourue un autre secteur intègre de mme identifiant, et si l'on en trouve un on ef- face celui qui n'est pas pertinent, en procédant comme pour la lec- ture ; si à l'issue de ce processus le secteur est vierge, on incrémen- te le nombre n de secteurs libres trouvés, et l'on effectue le tirage

aléatoire d'un entier de 0 à n-1 ; si cet entier est 0, on mémorise la position du secteur vierge. Quand tous les secteurs ont été parcou- rus, tous les secteurs non vierges sont intègres, il n'existe pas deux secteurs de mme identifiant, on connaît le nombre n de secteurs vierges, et l'on a mémorisé l'un d'eux choisi aléatoirement de ma- nière équiprobable. Si aucun secteur libre n'est trouvé, la procédure d'écriture est interrompue.

Le procédé selon l'invention que l'on vient d'exposer présente, com- me on peut le comprendre, de nombreux avantages : -en cas d'interruption du fonctionnement pendant une écriture ou un effacement, une lecture ultérieure restituera toujours fiable- ment les données, soit les données avant l'écriture (dans le cas d'une interruption tôt dans le processus d'écriture), soit les données nouvellement écrites (dans le cas d'une interruption tardive en fin de processus d'écriture) ; -le nombre d'opérations qui modifient l'état de la mémoire non vo- latile est minimisé (une écriture puis un effacement de secteur par utilisation de la procédure d'écriture, dans le cas le plus fréquent où il n'y a pas de traitement d'exception), d'où un gain de temps ; -les modifications de secteurs qui provoquent une usure de la mé- moire non volatile sont réparties ; dans le pire des cas (où tous les secteurs sont utilisés sauf un, et où l'écriture est répétée avec le mme identifiant), la carte double l'endurance théorique par rap- port à un processus de lecture connu ; si l'on choisit judicieusement, par exemple au hasard, le secteur où l'on va écrire parmi N sec- teurs effacés, l'usure est diminuée statistiquement d'un facteur de l'ordre de N+1.

-ces avantages sont obtenus avec un surcoût très faible en espace mémoire ; -on peut sans difficulté implémenter dans la carte une structure de fichiers et prévoir une allocation dynamique de la mémoire : lors- que l'on crée des fichiers, il n'est en effet pas nécessaire de prédéfi- nir et figer leur taille.