FR 2959586 A1 20111104 FR 1053379 A 20100430 B10000 - 09-ZV2-409 1 PROCÉDÉ D'ÉCRITURE ET DE LECTURE DANS UNE MÉMOIRE D'ATOMICITÉ Domaine de l'invention La présente invention concerne le domaine des micro-contrôleurs embarqués dans des éléments électroniques et la réalisation de transactions atomiques dans de tels dispositifs. Plus particulièrement, la présente invention concerne un procédé d'écriture et de lecture dans une mémoire d'atomicité. Exposé de l'art antérieur Dans les microcontrôleurs embarqués, par exemple des cartes à puce avec ou sans contact, l'atomicité des transactions est primordiale. Une transaction est dite atomique si, lorsqu'elle est en cours de réalisation et qu'une interruption intervient, par exemple du fait d'une interruption de l'alimentation du dispositif, les données mémorisées dans une mémoire non volatile se retrouvent, après réactivation du dispositif, soit à l'état précédant la transaction, soit à l'état final après la transaction. Si l'état de plusieurs ensembles de points mémoire doit être changé lors d'une transaction, tous les points mémoire doivent être actualisés ou remis à leur état précédant la transaction. Pour une transaction atomique, un état inter- médiaire ou indéterminé de zones stockant les données de cette transaction dans la mémoire non volatile ne doit pas être autorisé. B10000 - 09-ZV2-409 2 De nombreuses techniques sont connues pour déterminer si une transaction s'est correctement déroulée et si l'état des mémoires non volatiles auxquelles on a accédé a été correctement actualisé. Pour réaliser des transactions atomiques, il est courant d'utiliser une zone mémoire de la mémoire non volatile, que l'on appelle "mémoire (ou buffer) d'atomicité", pour stocker, avant chaque transaction, l'état des mémoires non volatiles susceptibles d'être modifiées lors de la transaction. Ceci permet, dans le cas où la transaction serait interrompue, de restaurer dans les mémoires non volatiles l'ensemble des données précédant la transaction en y réinjectant les données stockées dans le buffer d'atomicité. Il est également connu de stocker, dans un buffer d'atomicité et avant chaque transaction, les nouvelles données destinées à être stockées dans les mémoires non volatiles à la fin de la transaction. Si la transaction est interrompue, les données stockées dans le buffer d'atomicité permettent d'achever la transaction. Dans le cas où la transaction a abouti, les données contenues dans le buffer d'atomicité sont effacées. Généralement, les buffers d'atomicité sont constitués de mémoires non volatiles effaçables électriquement et programmables, plus connues sous l'acronyme EEPROM. Un problème lié à l'utilisation de mémoires EEPROM est que ces mémoires supportent difficilement un nombre d'écritures supérieur à 500 000 cycles et tendent à se dégrader au fur et à mesure des écritures et des effacements. De plus, la dégradation des mémoires du buffer n'est pas uniforme puisque le nombre de données à écrire dans le buffer d'atomicité varie en fonction des transactions réalisées. Ainsi, les premières zones mémoire (premières adresses mémoire) du buffer d'atomicité sont atteintes à chaque transaction tandis que les dernières zones mémoire ne sont utilisées que lors de transactions modifiant l'état d'un grand nombre de points mémoire. B10000 - 09-ZV2-409 3 Ainsi, un buffer constitué de mémoires EEPROM se dégrade au cours des écritures et lectures de façon non uniforme. Résumé Un objet d'un mode de réalisation de la présente invention est de palier tout ou partie des inconvénients des buffers d'atomicité usuels. Plus particulièrement, un objet d'un mode de réalisation de la présente invention est de prévoir un buffer d'atomicité constitué de mémoires EEPROM dont l'état est susceptible d'être modifié un grand nombre de fois. Un autre objet d'un mode de réalisation de la présente invention est de prévoir un procédé d'écriture de données dans un buffer d'atomicité constitué de mémoires EEPROM. Un autre objet d'un mode de réalisation de la présente 15 invention est de prévoir un procédé de lecture de données dans un buffer d'atomicité constitué de mémoires EEPROM. Ainsi, un mode de réalisation de la présente invention prévoit un procédé d'écriture de données dans une mémoire non volatile reprogrammable, dans lequel : un motif de marquage 20 comportant plusieurs bits est ajouté au début des données ; et l'ensemble constitué du motif de marquage et des données est écrit à partir d'une adresse de la mémoire variant d'une écriture à une autre, le motif de marquage étant identique pour chaque écriture. 25 Selon un mode de réalisation de la présente invention, des informations associées aux données sont ajoutées dans l'ensemble, entre le motif de marquage et les données. Selon un mode de réalisation de la présente invention, des informations associées aux données sont imbriquées dans le 30 motif de marquage. Selon un mode de réalisation de la présente invention, le motif de marquage comprend au moins 64 bits. Selon un mode de réalisation de la présente invention, le motif de marquage comprend au moins 128 bits. B10000 - 09-ZV2-409 4 Selon un mode de réalisation de la présente invention, la mémoire non volatile reprogrammable est une mémoire d'atomicité. Un mode de réalisation de la présente invention prévoit en outre un procédé de lecture de données dans une mémoire non volatile reprogrammable, les données étant écrites selon le procédé décrit ci-dessus, comprenant une étape de balayage de la mémoire de façon à reconnaître le motif de marquage et une étape de lecture des données stockées à partir des adresses mémoire suivant le motif de marquage. Selon un mode de réalisation de la présente invention, la lecture est réalisée selon un adressage circulaire. Un mode de réalisation de la présente invention prévoit en outre un circuit électronique comprenant une mémoire non volatile reprogrammable dont des zones sont écrites selon le procédé décrit ci-dessus, comprenant en outre des moyens de mémorisation d'un motif de marquage. Brève description des dessins Ces objets, caractéristiques et avantages, ainsi que d'autres seront exposés en détail dans la description suivante de modes de réalisation particuliers faite à titre non-limitatif en relation avec les figures jointes parmi lesquelles : la figure 1 est un organigramme illustrant un procédé d'écriture dans un buffer d'atomicité selon un mode de réali- sation de la présente invention ; la figure 2 est un organigramme illustrant un procédé de lecture dans un buffer d'atomicité selon un mode de réalisation de la présente invention ; la figure 3 illustre un buffer d'atomicité dans lequel 30 sont écrites des données selon un mode de réalisation de la présente invention ; et la figure 4 illustre une autre configuration du buffer d'atomicité de la figure 3 dans lequel sont écrites des données selon un mode de réalisation de la présente invention. B10000 - 09-ZV2-409 Description détaillée Pour éviter que la mémoire EEPROM d'une mémoire (ou buffer) d'atomicité formée dans une mémoire non volatile de stockage de données ne se dégrade prématurément du fait du grand 5 nombre d'accès à cette mémoire, les inventeurs prévoient de réaliser une écriture dans le buffer d'atomicité à partir d'une première adresse du buffer d'atomicité variant d'une écriture à une autre. Ainsi, au fil des écritures et des lectures, toutes les adresses de la mémoire constituant le buffer d'atomicité sont écrites, lues et/ou supprimées statistiquement un même nombre de fois. Ceci permet d'augmenter la durée de vie du buffer d'atomicité. Pour permettre la lecture des données stockées dans le buffer d'atomicité, il est prévu, avant l'écriture des données dans le buffer, de stocker un motif de marquage du début d'écriture dans le buffer. Ce motif est une suite de bits choisis par exemple aléatoirement sous commande d'un programme associé au dispositif dans lequel des transactions atomiques sont désirées. Le motif de marquage pourra également être choisi, aléatoirement ou non, pendant la personnalisation du dispositif intégrant la mémoire ou lorsque le programme est lancé sur le dispositif pour la première fois. Un tel procédé d'écriture est ainsi compatible avec le fait que les données à stocker dans la mémoire présentent une 25 taille variable à chaque transaction. La figure 1 est un organigramme illustrant un procédé d'écriture 10 dans un buffer d'atomicité. Une première étape 12 du procédé d'écriture (DETERMINE FIRST ADDRESS) consiste à déterminer une première adresse du 30 buffer à partir de laquelle les données seront stockées. Cette détermination peut être réalisée par tout moyen connu, par exemple par un générateur d'adresse aléatoire. A une étape suivante 14 (WRITE PATTERN), un motif de marquage du début d'écriture est stocké dans le buffer d'atomicité, à partir de 35 l'adresse déterminée à l'étape 12. Une dernière étape 16 du B10000 - 09-ZV2-409 6 procédé d'écriture (WRITE DATA) consiste à écrire les données à stocker dans le buffer d'atomicité, à partir de l'adresse suivant la dernière adresse utilisée pour stocker le motif de marquage du début d'écriture. La figure 2 est un organigramme illustrant un procédé de lecture 20 dans un buffer d'atomicité dans lequel des données ont été écrites selon le procédé illustré en figure 1. Une première étape 22 du procédé de lecture (SCAN BUFFER) consiste à balayer les données contenues dans le buffer d'atomicité. Cette étape permet, en association avec une deuxième étape 24 (DETECT PATTERN), de détecter la présence du motif de marquage du début de l'écriture. Une dernière étape (READ DATA) consiste à se placer à la fin du motif de marquage pour lire les données stockées dans le buffer d'atomicité. Pour que le motif de marquage du début d'écriture ne risque pas d'être confondu avec des données écrites à l'étape 16, ce motif de marquage doit comprendre un grand nombre de bits. Avec un motif de marquage comprenant une trentaine de bits, la probabilité que les données reproduisent le motif de marquage est déjà de l'ordre de 10-9. De préférence, le motif de marquage de début d'écriture comprend 64 bits, voire 128 bits. Ce motif sera stocké de préférence dans un endroit secret de la puce dans laquelle est prévu le buffer d'atomicité. Un motif de marquage comprenant un grand nombre de bits permet également d'éviter qu'une personne malintentionnée ne le découvre et ne l'utilise pour modifier des états de la mémoire et/ou obtienne des informations secrètes. On notera que le buffer d'atomicité devra être prévu d'une taille suffisante pour stocker au moins le nombre maximum de données à stocker au cours d'une transaction auquel on ajoute les éléments du motif de marquage. Pour une dégradation dans le temps encore plus faible, le buffer d'atomicité pourra également être formé d'une zone de la mémoire non volatile de stockage de données comprenant un nombre de mémoires supérieur au nombre d'adresses mémoire nécessaire pour stocker le plus grand nombre B10000 - 09-ZV2-409 7 de données à stocker possible lors d'une transaction. En effet, puisque toutes les adresses du buffer d'atomicité sont utilisées statistiquement un même nombre de fois, l'utilisation d'un buffer comprenant un grand nombre d'adresses mémoire limite l'accès et donc l'usure de chacune des mémoires EEPROM le constituant. La figure 3 illustre un buffer d'atomicité 3 dans lequel sont stockées des données en suivant le procédé de la figure 1. A partir d'une adresse de début 30 sélectionnée, par exemple aléatoirement, sont stockées des données 32 formant le motif de marquage du début d'écriture. Ensuite, dans l'ordre des adresses du buffer d'atomicité, sont mémorisées les données à stocker proprement dites. Dans l'exemple représenté, deux ensembles de données sont représentés. Le premier ensemble de données comprend des "pré-données" 34 (PREDATA1) et des données 36 (DATAI). Le second ensemble de données comprend des "pré-données" 38 (PREDATA2) et des données 40 (DATA2). A titre d'exemple, les pré-données 34 et 38 peuvent être constituées d'informations sur l'ensemble de données associé, par exemple des données d'adresses, des codes de correction d'erreur (connus sous l'acronyme "CRC", de l'anglais Cyclic Redundancy Check), des informations sur la longueur des données. Les données 36 et 40 correspondent quant à elles aux données réellement stockées dans la mémoire avant la réalisation de la transaction. La figure 4 illustre une autre configuration du buffer d'atomicité 3 de la figure 3 dans lequel sont écrites des données selon le procédé de la figure 1. Dans le cas de la figure 4, l'adresse 50 de début de stockage est telle que la taille des données à stocker est supérieure au volume mémoire restant jusqu'à la fin du buffer, c'est-à-dire jusqu'à sa dernière adresse. On effectue alors un adressage circulaire pour revenir au début du buffer. Ainsi, un premier ensemble d'adresses mémoire 52 du buffer d'atomicité B10000 - 09-ZV2-409 8 mémorise le motif de marquage du début de l'écriture. Ensuite, dans l'ordre des adresses du buffer d'atomicité sont mémorisées les données à stocker à proprement parler. Dans l'exemple représenté, deux ensembles de données sont stockés. Le premier ensemble de données comprend des "pré-données" 54 (PREDATA1) et des données 56 (DATAI). Le second ensemble de données comprend des "pré-données" 58 (PREDATA2) et des données 60 (DATA2). Dans l'exemple de la figure 4, les données 56 sont stockées en deux parties, une première partie 56a au niveau des dernières adresses du buffer et une seconde partie 56b à partir du début du buffer. Ainsi, dans le cas de la figure 4, les données stockées le sont selon un adressage circulaire. De la même façon, la lecture des données à l'étape 26 sera faite selon un adressage circulaire et l'étape 22 de balayage du buffer d'atomicité également. On notera que l'on pourra également intégrer le motif de marquage de début d'écriture dans des pré-données, en une ou plusieurs parties, ou encore stocker le motif de marquage ou les pré-données en deux parties dans le buffer. Des modes de réalisation particuliers de la présente invention ont été décrits. Diverses variantes et modifications apparaîtront à l'homme de l'art. En particulier, on a représenté en figures 3 et 4 des buffers dans lesquels deux ensembles de données sont stockées avant la réalisation d'une transaction. On notera que les buffers d'atomicité pourront, au cours de la vie de la carte dans laquelle ils sont intégrés, stocker un nombre plus ou moins important d'ensembles de données. On pourra également prévoir des buffers dans lesquels un seul ensemble de "pré-données" sera prévu pour plusieurs ensembles de données. De plus, les pré-données pourront comprendre d'autres éléments que ceux cités ici. Enfin, l'étape de détermination de la première adresse d'écriture 12 variable et l'étape de balayage du buffer d'atomicité 22 pourront être réalisées à l'aide de tout B10000 - 09-ZV2-409 9 dispositif adapté à la réalisation de ces étapes, par exemple par le microcontrôleur associé à une carte à puce. REVENDICATIONS1. Procédé d'écriture de données (10) dans une mémoire non volatile reprogrammable (3), dans lequel : un motif de marquage (32, 52) comportant plusieurs bits est ajouté au début des données (36, 40, 56a, 56b, 60) ; et l'ensemble constitué dudit motif de marquage et des données est écrit à partir d'une adresse de la mémoire (30, 50) variant d'une écriture à une autre, le motif de marquage étant identique pour chaque écriture. 2. Procédé selon la revendication 1, dans lequel 10 l'adressage dudit ensemble est circulaire. 3. Procédé selon la revendication 1 ou 2, dans lequel des informations (34, 38, 54, 58) associées auxdites données (36, 40, 56, 60) sont ajoutées dans ledit ensemble, entre ledit motif de marquage (32, 52) et lesdites données. 15 4. Procédé selon la revendication 1 ou 2, dans lequel des informations (34, 38, 54, 58) associées auxdites données (36, 40, 56, 60) sont imbriquées dans ledit motif de marquage (32, 52). 5. Procédé selon l'une quelconque des revendications 1 20 à 4, dans lequel le motif de marquage (32, 52) comprend au moins 64 bits. 6. Procédé selon l'une quelconque des revendications 1 à 5, dans lequel le motif de marquage (32, 52) comprend au moins 128 bits. 25 7. Procédé selon l'une quelconque des revendications 1 à 6, dans lequel la mémoire non volatile reprogrammable (3) est une mémoire d'atomicité. 8. Procédé de lecture de données (20) dans une mémoire non volatile reprogrammable, lesdites données étant écrites 30 selon le procédé de l'une quelconque des revendications 1 à 6, comprenant une étape de balayage de la mémoire (22) de façon à reconnaître (24) ledit motif de marquage (32, 52) et une étape de lecture (26) des données stockées à partir des adresses mémoire suivant ledit motif de marquage.B10000 - 09-ZV2-409 11 9. Procédé selon la revendication 8, dans lequel la lecture (20) est réalisée selon un adressage circulaire. 10. Circuit électronique comprenant une mémoire non volatile reprogrammable (3) dont des zones sont écrites selon l'une quelconque des revendications 1 à 6, comprenant en outre des moyens de mémorisation d'un motif de marquage.