FR 2935502 A1 20100305 FR 0855870 A 20080902 Arrière-plan de l'invention L'invention se situe dans l'optimisation des opérations de lecture/écriture dans des mémoires non volatiles. On rappelle en premier lieu qu'une mémoire non volatile est une mémoire adaptée à conserver ses données en l'absence d'alimentation électrique. De façon connue, de telles mémoires sont partitionnées en une pluralité de zones, chacune de ces zones pouvant être effacée/écrite individuellement un nombre limité de fois, typiquement de l'ordre d'un million pour les mémoires les plus performantes. Le document US 2007/0147168 s'intéresse plus particulièrement au problème du stockage d'un compteur dans une mémoire non volatile, et propose, pour préserver la mémoire lors des accès répétés à ce compteur, d'encoder ce compteur en une valeur binaire composée de plusieurs champs, de telle sorte qu'un seul de ces champs soit modifié lors de l'incrémentation du compteur, grâce à un mécanisme généralisant le principe du codage de Gray, chacun de ces champs étant stocké dans une zone fixe de la mémoire. Une telle méthode permet de prolonger la durée de vie de la zone mémoire réservée au compteur par un facteur égal au nombre de champs, ce qui pour certaines applications est insuffisant. Objet et résumé de l'invention La présente invention propose un procédé d'optimisation de la durée de vie d'une mémoire non volatile réinscriptible. Ce procédé comporte, pour effectuer la mise à jour d'au moins une donnée dont la valeur est susceptible d'évoluer fréquemment : - une étape d'obtention, dans une structure de données associée à cette donnée, d'une position d'un premier registre, dite � première position �, ce premier registre comportant la valeur courante de cette donnée ; et - une étape d'écriture de la valeur mise à jour de cette donnée dans un deuxième registre de cette structure de données, dont la position, dite � deuxième position � est obtenue à partir de la première position, les premier et deuxième registres étant dans des cellules de la mémoire non volatile réinscriptible adressables indépendamment l'une de l'autre. Ainsi, l'invention propose d'effectuer les mises à jour successives d'une donnée particulière dans des registres de la mémoire situés dans des cellules différentes. Chaque cellule de la mémoire étant accédée beaucoup moins fréquemment, l'invention permet de limiter le vieillissement des cellules utilisées pour cette donnée. On notera que le mécanisme selon l'invention, qui se concentre sur l'usage d'une donnée particulière, se distingue des procédés connus de répartition qui gèrent les accès à l'ensemble d'une mémoire volatile. Dans un mode particulier de réalisation de l'invention, la structure de données est un buffer cyclique, les registres de ce buffer étant situés dans des cellules différentes. Dans ce mode de réalisation, chaque cellule est accédée une fois tous les N mises à jour de la donnée, N étant la taille de ce buffer cyclique. Dans un autre mode de réalisation, la structure de données peut être constituée par un tableau d'adresses pointant sur différents registres situés dans des cellules différentes. Dans un mode particulier de réalisation, l'obtention de la première position est effectuée en détectant une rupture dans une séquence de la structure de données. Dans un mode particulier de réalisation de l'invention, la position du registre courant est obtenue directement à partir de la valeur comprise dans le premier registre. Dans ce mode de réalisation, l'invention s'applique particulièrement bien pour optimiser la durée de vie d'une mémoire non volatile réinscriptible des accès répétés à un compteur pour son incrémentation, le premier registre étant déterminé comme étant celui qui mémorise la valeur la plus élevée du compteur. Ce mode de réalisation s'applique aussi très bien lorsque la donnée concernée est une date mise à jour chronologiquement. Mais l'invention permet de protéger la mémoire non volatile des 35 accès répétés à des données de tous types. Ainsi, dans un mode particulier de réalisation de l'invention, la première position est obtenue à partir d'un index compris dans le premier registre courant. Ce mode particulier de réalisation est particulièrement adapté pour protéger une mémoire non volatile des accès fréquents à une donnée constituée par une clef cryptographique, un montant ou un numéro de transaction bancaire. Corrélativement l'invention concerne un dispositif comportant une mémoire non volatile réinscriptible. Il comporte : - au moins une structure de donnée associée à une donnée dont la valeur est susceptible d'évoluer fréquemment : - des moyens d'obtention, dans cette structure de données, d'une position d'un premier registre, dite � première position �, ce premier registre comportant la valeur courante de la donnée ; et - des moyens d'écriture de la valeur mise à jour de cette donnée dans un registre de la structure de données, dont la position, dite � deuxième position � est obtenue à partir de la première position, les premier et deuxième registres étant dans des cellules de la mémoire non volatile réinscriptible adressables indépendamment l'une de l'autre. Les caractéristiques et avantages particuliers du dispositif d'optimisation selon l'invention sont les mêmes que ceux du procédé d'optimisation selon l'invention. En particulier, dans un mode de réalisation de l'invention, les moyens du dispositif pour obtenir la première position obtiennent cette première position directement à partir de la valeur comprise dans le premier registre. En variante, ils utilisent un index compris dans chaque registre de la structure de données. L'invention s'applique particulièrement bien aux mémoires 30 comportant des cellules de petite taille, par exemple 1 octet, telles que les EEPROM par exemple. En conséquence, dans un mode préféré de mise en oeuvre de l'invention, les registres de la mémoire sont choisis de tels que la taille de ces registres est supérieure à la taille des cellules. 35 Dans ce cas, on utilisera avantageusement la place perdue de ces registres (à savoir la partie de ces registres qui ne sert pas à mémoriser la donnée mise à jour fréquemment) pour mémoriser une autre information. L'invention vise aussi une carte à puce comportant un dispositif d'optimisation tel que mentionné ci-dessus. Dans un mode particulier de réalisation, les différentes étapes du procédé d'optimisation sont déterminées par des instructions de programmes d'ordinateurs. En conséquence, l'invention vise aussi un programme d'ordinateur sur un support d'informations, ce programme étant susceptible d'être mis en oeuvre dans un dispositif tel que mentionné ci-dessus ou plus généralement dans un ordinateur, ce programme comportant des instructions adaptées à la mise en oeuvre des étapes d'un procédé de gestion tel que décrit ci-dessus. Ce programme peut utiliser n'importe quel langage de programmation, et être sous la forme de code source, code objet, ou de code intermédiaire entre code source et code objet, tel que dans une forme partiellement compilée, ou dans n'importe quelle autre forme souhaitable. L'invention vise aussi un support d'informations lisible par un 20 ordinateur, et comportant des instructions d'un programme d'ordinateur tel que mentionné ci-dessus. Le support d'informations peut être n'importe quelle entité ou dispositif capable de stocker le programme. Par exemple, le support peut comporter un moyen de stockage, tel qu'une ROM, par exemple un CD 25 ROM ou une ROM de circuit microélectronique, ou encore un moyen d'enregistrement magnétique, par exemple une disquette (floppy disc) ou un disque dur. D'autre part, le support d'informations peut être un support transmissible tel qu'un signal électrique ou optique, qui peut être 30 acheminé via un câble électrique ou optique, par radio ou par d'autres moyens. Le programme selon l'invention peut être en particulier téléchargé sur un réseau de type Internet. Alternativement, le support d'informations peut être un circuit intégré dans lequel le programme est incorporé, le circuit étant adapté 35 pour exécuter ou pour être utilisé dans l'exécution du procédé en question. Brève description des dessins D'autres caractéristiques et avantages de la présente invention ressortiront de la description faite ci-dessous, en référence aux dessins annexés qui en illustrent un exemple de réalisation dépourvu de tout caractère limitatif. Sur les figures : - la figure 1 représente une carte à puce conforme à l'invention, dans un mode particulier de réalisation ; - la figure 2 représente un buffer cyclique pouvant être utilisé 10 dans l'invention ; et - la figure 3 représente, sous forme d'organigramme, les principales étapes d'un procédé d'optimisation conforme à un mode particulier de réalisation de l'invention. 15 Description détaillée d'un mode de réalisation La figure 1 représente une carte à puce 100 conforme à l'invention. Elle comporte un dispositif d'optimisation 50 conforme à l'invention. Ce dispositif 50 comporte un processeur 11, une mémoire 20 réinscriptible non volatile 15 (ci-après dénommée � mémoire non volatile 15 �), une mémoire morte de type 13 et une mémoire vive de type RAM 12. La mémoire non volatile 15 peut notamment être une mémoire de type FLASH ou une mémoire EEPROM. Dans l'exemple de réalisation 25 décrit ici, la taille des cellules de la mémoire 15 (une cellule étant une partie de la mémoire adressable indépendamment des autres) est de 1 octet. L'invention peut être mise en oeuvre par un ASIC. Mais dans le mode de réalisation décrit ici, l'invention est mise en oeuvre par un programme d'ordinateur PG conforme à l'invention, ce 30 programme étant stocké dans la mémoire morte 13. Ce programme PG comporte des instructions pour l'exécution des étapes d'un procédé d'optimisation de la durée de vie de la mémoire non volatile 15 selon l'invention, les principales étapes de ce procédé étant représentées sous forme d'organigramme à la figure 3. Le dispositif 50 comporte également des moyens d'entrée/sortie 14 par lequel le processeur 11 peut recevoir des ordres d'écriture W ou de lecture R dans la mémoire non volatile 15. Nous supposerons dans cet exemple que l'invention la mémoire 5 non volatile 15 mémorise un compteur dont la valeur évolue fréquemment. Afin de protéger la mémoire non volatile 15, le dispositif 50 selon l'invention comporte un buffer cyclique BC1 associé à ce compteur. Dans l'exemple de réalisation décrit ici, ce buffer cyclique BC1 10 comporte 8 registres R1 à R8 de même taille, la taille de ces registres étant supérieure à la taille des cellules de cette mémoire. Dans l'exemple de réalisation décrit ici, on note : - � RR �, la position du registre comportant la valeur courante du compteur ; et 15 - � WR �, la position du registre suivant dans le buffer cyclique BC1. L'homme du métier comprendra que le registre R1 est le registre suivant le registre R8 dans cet exemple. En référence à la figure 3, nous allons maintenant décrire les principales étapes d'un procédé d'optimisation de la durée de vie de la 20 mémoire non volatile 15. Dans l'exemple décrit ici, ce procédé est mis en oeuvre lorsque le processeur 11 lit (opération de lecture � R �) ou incrémente (opération d'écriture � W �) la valeur de ce compteur. Pour lire la valeur courante du compteur, le processeur 11 25 récupère la valeur contenue dans le registre courant � RR � et la retourne (étape [40). Dans l'exemple de la figure 1, la position du registre courant RR est obtenue en détectant une rupture dans la séquence {11, 12, 13, 14, 15, 16, 9, 10} des valeurs du buffer cyclique BC1. 30 Dans l'exemple de la figure 3, la valeur retournée est donc 16. Pour incrémenter la valeur du compteur (étape [10), le processeur 11 commence par rechercher, dans le buffer cyclique BC1, la valeur courante du compteur, à savoir 16. Il détermine ainsi, au cours d'une étape E20 que le registre 35 courant est le registre R6 et que par conséquent la position RR du registre courant est la position du registre R6. Puis, au cours d'une étape [30, le processeur 11 obtient la position WR du registre R7 devant contenir la valeur mise à jour du compteur, celle-ci étant, dans cet exemple la position suivant la position R6 dans le buffer cyclique BC1. On notera que l'invention s'applique particulièrement bien pour protéger la mémoire des accès répétés à un compteur puisque la position du registre d'écriture dans le buffer cyclique est directement liée à la valeur du compteur. Mais l'invention permet de protéger la mémoire non volatile 12 10 des accès à des données de tous types. La figure 2 représente un buffer cyclique BC2 pouvant être utilisé à la place du buffer BC1 pour protéger la mémoire non volatile 12 des accès répétés à une variable V contenant un log ou journal. Dans l'exemple de la figure 2, le buffer cyclique BC2 a 5 15 registres R1 à R5, chaque registre comportant un champ pour mémoriser la valeur du log, et un index IX permettant de repérer la position du registre courant RR. Ainsi, dans l'exemple de la figure 2, le registre courant est le registre R5, sa position RR étant déterminée en détectant une rupture 20 juste après la valeur 15 dans la séquence {11, 12, 13, 14, 15, 11, 12, ...} des index IX du buffer cyclique BC2. Par conséquent, si le processeur 11 reçoit un ordre de lecture du log, il obtient la valeur à jour du log par lecture du registre R5. S'il reçoit un ordre d'écriture d'une nouvelle valeur de ce log, il la mémorise 25 dans le registre R1, celui-ci suivant R5 dans le buffer cyclique BC2. REVENDICATIONS1. Procédé d'optimisation de la durée de vie d'une mémoire non volatile réinscriptible (15), caractérisé en ce qu'il comporte, pour effectuer la mise à jour d'au moins une donnée (D) dont la valeur est susceptible d'évoluer fréquemment : - une étape (E20) d'obtention, dans une structure de données (BC1, BC2) associée à cette donnée (D), d'une position (RR) d'un premier registre (R6, R5), dite � première position �, ce premier registre comportant la valeur courante de ladite donnée (D) ; et - une étape (E30) d'écriture de la valeur (V) mise à jour de ladite donnée dans un deuxième registre (R7, R1) de ladite structure de données (BC1, BC2), dont la position (WR), dite � deuxième position � est obtenue à partir de ladite première position (RR), les premier et deuxième registres étant dans des cellules de ladite mémoire (15) adressables indépendamment l'une de l'autre. 2. Procédé d'optimisation selon la revendication 1, caractérisé 20 en ce que ladite structure de données est un buffer cyclique (BC1, BC2). 3. Procédé d'optimisation selon la revendication 1 ou 2, caractérisé en ce que l'obtention (E20) de ladite première position (RR) est effectuée en détectant une rupture dans une séquence de ladite 25 structure de données (BC1, BC2). 4. Procédé d'optimisation selon l'une quelconque des revendications 1 à 3, caractérisé en ce que ladite première position (RR) est obtenue directement à partir de ladite valeur (V) comprise dans ledit 30 premier registre (R6). 5. Procédé d'optimisation selon l'une quelconque des revendications 1 à 3, caractérisé en ce que ladite première position (RR) est obtenue à partir d'un index (IX) compris dans ledit premier registre 35 (R5). 6. Utilisation du procédé d'optimisation selon la revendication 4, dans lequel ladite donnée (D) susceptible d'évoluer fréquemment est un compteur, la mise à jour consistant à incrémenter ledit compteur. 7. Utilisation du procédé d'optimisation selon la revendication 5, dans lequel ladite donnée (D) susceptible d'évoluer est une clef cryptographique, un montant ou un numéro de transaction bancaire. 8. Programme d'ordinateur (PG) comportant des instructions pour l'exécution des étapes du procédé d'optimisation selon l'une quelconque des revendications 1 à 5 lorsque ledit programme est exécuté par un ordinateur. 9. Support d'enregistrement (13) lisible par un ordinateur sur lequel est enregistré un programme d'ordinateur comprenant des instructions pour l'exécution des étapes du procédé d'optimisation selon l'une quelconque des revendications 1 à 5. 10. Dispositif (50) comportant une mémoire non volatile réinscriptible (15), caractérisé en ce qu'il comporte : - au moins une structure de données (BC1, BC2) associée à une donnée (D) dont la valeur (V) est susceptible d'évoluer fréquemment : - des moyens (11) d'obtention, dans ladite structure de données (BC1, BC2), d'une position (RR) d'un premier registre (R6, R5), dite � première position �, ce premier registre comportant la valeur courante de ladite donnée (D) ; et - des moyens (11) d'écriture de la valeur (V) mise à jour de ladite donnée dans un deuxième registre (R7, R1) de ladite structure de données (BC1, BC2), dont la position (WR), dite � deuxième position � est obtenue à partir de ladite première position (RR), les premier et deuxième registres étant dans des cellules de ladite mémoire (15) adressables indépendamment l'une de l'autre. 11. Dispositif selon la revendication 10, caractérisé en ce que la taille desdits registres est supérieure à la taille desdites cellules. 12. Dispositif d'optimisation selon la revendication 10 ou 11, caractérisé en ce que ladite structure de données est un buffer cyclique (BC1, BC2). 13. Dispositif selon l'une quelconque des revendications 10 à 12, caractérisé en ce que les dits moyens (11) d'obtention de ladite première position (RR) obtiennent cette première position directement à partir de la valeur (V) comprise dans ledit registre courant (R6). 14. Dispositif selon l'une quelconque des revendications 10 à 12, caractérisé en ce que chaque registre (R1-R5) dudit buffer cyclique (BC2) comporte un index (IX), et en ce que les dits moyens (11) d'obtention de ladite première position (RR) obtiennent cette première position à partir dudit index (IX). 15. Carte à puce (100) comportant un dispositif (50) selon l'une quelconque des revendications 10 à 14.