FR 3046267 A1 20170630 FR 1563377 A 20151228 B14678 - 15-ZV2-0568 1 STOCKAGE DE DONNÉES DANS UNE MÉMOIRE FLASH Domaine La présente description concerne de façon générale les circuits électroniques et, plus particulièrement, les circuits exploitant une mémoire flash. La présente description vise plus particulièrement la gestion du stockage de données dans une mémoire flash. Exposé de l'art antérieur Les mémoires flash sont de plus en plus utilisées dans des microcontrôleurs pour stocker de façon non volatile des 10 informations. Le stockage de données dans une mémoire flash présente diverses contraintes temporelles liées à la granularité des opérations réalisées, l'écriture s'effectuant par octet tandis que la lecture et surtout l'effacement s'effectuent par page. 15 Dans certaines applications, on souhaite s'assurer que les transactions réalisées et stockées respectent un critère d'atomicité. L'atomicité d'une transaction correspond à s'assurer que des données stockées en mémoire présentent bien un état exploitable. Cela revient à s'assurer que des données en 20 mémoire non volatile présentent soit l'état avant la transaction soit l'état après la transaction concernée mais qu'elles ne présentent pas un état intermédiaire. 3046267 B14678 - 15-ZV2-0568 2 La gestion de l'atomicité de transaction est particulièrement utilisée dans des applications où une interruption de l'alimentation du circuit ou l'apparition d'une perturbation accidentelle ou volontaire peut engendrer le stockage de données 5 dans un état les rendant soit inexploitables par la suite soit vulnérables du point de vue de la confidentialité. On connait de nombreuses techniques de gestion d'atomicité, plus particulièrement dans des microcontrôleurs appliqués à des transactions dites de sécurité, par exemple des 10 transactions bancaires, de contrôle d'accès, etc. Résumé Il serait souhaitable de disposer d'une solution de stockage de données dans une mémoire flash qui respecte le critère d'atomicité des données manipulées. 15 Il serait souhaitable de disposer d'une solution particulièrement adaptée à des transactions basées sur des communications sans contact. Ainsi, un mode de réalisation prévoit un procédé de stockage de données dans une mémoire non volatile, lors d'une 20 transaction hors ligne entre un circuit contenant ladite mémoire et un terminal, dans lequel : une page de la mémoire est affectée à chaque transaction ; les données de chaque transaction sont stockées de 25 façon séquentielle dans la page correspondante ; et la page affectée à une transaction est verrouillée en écriture à la fin de la transaction correspondante. Selon un mode de réalisation, un compteur, également stocké en mémoire non volatile, est mis à jour à la fin de 30 chaque transaction. Selon un mode de réalisation, le compteur est un compteur du nombre de transactions. Selon un mode de réalisation, un stockage de données d'une nouvelle transaction n'est autorisé que si le compteur n'a 3046267 B14678 - 15-ZV2-0568 3 pas atteint un seuil correspondant au nombre de pages de la mémoire affectées aux transactions. Un mode de réalisation prévoit un procédé de gestion d'une mémoire non volatile dans laquelle sont stockées des 5 données par application du procédé, dans lequel, lors d'une communication entre ledit circuit et un serveur distant par l'intermédiaire d'un terminal : les données contenues dans les pages sont lues et chargées dans le serveur distant ; et les pages lues sont effacées. Selon un mode de réalisation, le réinitialisé une fois toutes les pages traitées. Un mode de réalisation prévoit une programmée conformément au procédé ci-dessus. Un mode de réalisation prévoit un circuit électroniqu comportant une mémoire flash. Brève description des dessins Ces caractéristiques et avantages, ainsi que d'autres, seront exposés en détail dans la description suivante de mode 20 de réalisation particuliers faite à titre non limitatif relation avec les figures jointes parmi lesquelles : la figure 1 est un schéma-bloc d'un exemple de circui électronique du type auquel s'applique les modes de réalisatio qui vont être décrits ; et 25 la figure 2 illustre, de façon très schématique et sous forme de blocs, un mode de mise oeuvre d'un procédé de gestion du stockage dans une mémoire flash du circuit de la figure 1. Description détaillée 30 De mêmes éléments ont été références aux différentes figures. Par souci de clarté, seuls les étapes et éléments utiles à la compréhension des modes de réalisation qui vont être décrits ont été représentés et seront détaillés. En particulier, en compteur est mémoire flash, e s t n désignés par de mêmes 35 3046267 B14678 - 15-ZV2-0568 4 le fonctionnement électrique d'une mémoire flash lors des étapes d'écriture, de lecture et d'effacement n'a pas été détaillé, les modes de réalisation décrits étant compatibles avec les technologies usuelles des mémoires flash. De plus, les 5 applications utilisant une gestion d'atomicité n'ont pas non plus été détaillées, les modes de réalisation décrits étant, là encore, compatibles avec les applications usuelles. Dans la description qui suit, lorsqu'on fait référence aux termes approximativement, environ et, de l'ordre de, cela 10 signifie à 10% près, de préférence à 5% près. La figure 1 représente, de façon très schématique et sous forme de blocs, un mode de réalisation d'un circuit électronique 1 du type auquel d'appliquent, à titre d'exemple, les modes de réalisation qui vont être décrits. 15 Le circuit 1 comporte : une unité de traitement 11 (CORE), par exemple une machine d'états, un microprocesseur, un circuit logique programmable, etc. ; une ou plusieurs zones 12 (RAM) de stockage volatile, 20 par exemple de type mémoire RAM ou registres, pour stocker temporairement des informations (instructions, adresses, données) pendant les traitements ; une ou plusieurs zones 13 de stockage non volatile, dont au moins une mémoire de type flash (FLASH) pour stocker des 25 informations de façon durable et en particulier quand le circuit n'est pas alimenté ; un ou plusieurs bus 14 de données, d'adresses et/ou de commandes entre les différents éléments internes au circuit 1 ; et 30 une interface d'entrée-sortie 15 (I/O) de communi- cation, par exemple de type bus série, avec l'extérieur du circuit 1. Dans les applications plus particulièrement visées par la présente description, le circuit 1 intègre également un 35 circuit 16 de communication sans contact (CLF - ContactLess 3046267 B14678 - 15-ZV2-0568 5 Front-end), de type communication en champ proche (Near Field Communication - NFC). Par ailleurs, le circuit 1 peut intégrer d'autres fonctions, symbolisées par un bloc 17 (FCT), selon l'appli5 cation, par exemple, un crypto-processeur, d'autres interfaces, d'autres mémoire, etc. La gestion de l'atomicité des transactions dans un circuit équipé d'une mémoire flash est particulière car la mémoire flash présente une granularité de traitement par page et 10 non par bit ou par octet, en particulier pour l'effacement. Une mémoire flash se programme, à partir d'un état initial vers des états 0 (états non conducteurs des cellules). Cela signifie que les cellules de la mémoire doivent être initialisées à un état haut et que, pour stocker une donnée, on choisit soit de ne pas 15 intervenir sur l'état du bit, soit de programmer ce bit à 0. Un effacement (remise dans l'état initial haut) s'effectue forcément par page mémoire. Une page est définie comme la taille minimale susceptible d'être adressée simultanément pour effacement. Typiquement, une page représente actuellement, dans une mémoire flash, 32, 64, 128, 256 ou 512 octets. En pratique, cela correspond à la taille d'un registre recevant les données en série pour les transférer en parallèle au plan mémoire pour stockage. Afin de garantir l'atomicité de transactions, le stockage en mémoire flash des données ne doit être effectué qu'une fois que la transaction est terminée et que les données sont dites stables. En pratique, les procédés de gestion d'atomicité activent un indicateur de traitement d'une donnée lorsque celle-ci est extraite de la mémoire non volatile, puis organisent le stockage de la donnée mise à jour, une fois le traitement terminé, l'indicateur de traitement changeant alors d'état. L'atomicité peut concerner une quantité plus ou moins importante de données (d'octets) selon la nature de la transaction. 3046267 B14678 - 15-ZV2-0568 6 Le caractère atomique des transactions est particulièrement important dans le cas de transactions de type bancaire (paiement par exemple) où il est nécessaire de s'assurer que l'information stockée dans la mémoire flash, par exemple le 5 solde d'un porte-monnaie électronique ou d'une autorisation d'achat, ou l'identifiant validant une transaction, est stocké de façon fiable. Cela est critique pour des transactions réalisées hors ligne (off line), c'est-à-dire sans communication avec un serveur bancaire. En effet, pour des transactions 10 effectuées hors ligne, les autorisations sont gérées par le circuit de paiement directement et on doit s'assurer que les transactions soient correctement stockées. Un exemple particulier concerne les transactions dites EMV (Eurocard, Mastercard, Visa). 15 Dans les applications sans contact, les transactions doivent être effectuées très rapidement en raison du caractère fugace de la communication qui est lié à la durée pendant laquelle le circuit 1 peut communiquer avec un terminal. Or, la gestion de l'atomicité des transactions prend du temps, de même 20 que les opérations d'effacement qui sont nécessaires en mémoire flash pour autoriser une programmation. La mémoire flash est plus particulièrement utilisée dans les transactions hors ligne afin de stocker les informations relatives à ces transactions jusqu'à ce que le 25 circuit soit en ligne (avec ou sans contact) avec un serveur auquel sont destinées ces informations. Lorsque le circuit est dans une communication en ligne, les transactions sont télé-chargées dans le serveur et les zones correspondantes de la mémoire flash sont effacées. Ainsi, l'espace mémoire est de 30 nouveau libéré pour stocker de nouvelles transactions hors ligne. En particulier pour des applications EMV, le circuit contient un compteur du nombre de transactions hors ligne autorisées et/ou un compteur du montant maximal autorisé, qui 35 est décrémenté au fur et à mesure que le montant est consommé 3046267 B14678 - 15-ZV2-0568 7 hors ligne. Lors d'une connexion en ligne, le compteur du nombre de transactions est réinitialisé et le compteur du montant maximal est mis à jour à partir des informations du serveur bancaire. 5 Selon ce mode de réalisation, on prévoit, entre autres : d'affecter une page de la mémoire flash à chaque transaction ; d'écrire les données relatives à une transaction hors 10 ligne séquentiellement dans la page affectée à cette transaction ; de mémoriser la page utilisée à la fin de la transaction et d'interdire sa mise à jour hors ligne une fois la transaction terminée ; et 15 d'effacer les pages de la mémoire flash lors d'une transaction en ligne. Ainsi, on s'interdit de procéder à des opérations d'effacement de la mémoire flash pendant les périodes où des transactions sont effectuées hors ligne et qui constituent des 20 périodes critiques du point de vue temporel. La figure 2 est un schéma-bloc illustrant un mode de mise en oeuvre d'un tel procédé de gestion du stockage en mémoire flash. La figure 2 synthétise en partie gauche les opérations 25 effectuées hors ligne et en partie droite celles effectuées en ligne. A chaque fois que le circuit communique en ligne, que ce soit par contact (par exemple, l'introduction d'une carte bancaire dans un distributeur de billet) ou sans contact, les 30 pages de la mémoire flash sont lues, c'est-à-dire que les pages de la mémoire flash sont téléchargés vers le serveur (A/ UPLOAD FLASH PAGES). Puis, les pages chargées sont effacées (B/ ERASE FLASH PAGES). Cette opération est relativement longue par rapport aux opérations de lecture et d'écriture mais elle n'est effectuée que lorsque le circuit communique en ligne, c'est-à- 3046267 B14678 - 15-ZV2-0568 8 dire qu'il dispose de plus de temps. Enfin, lorsque toutes les pages ont été effacées, le terminal avec lequel le circuit 1 communique provoque la réinitialisation du compteur de transactions autorisées hors ligne et/ou du plafond de débit 5 autorisé (C/ INITIALIZE TRANSACTIONS AND/OR AMOUNT COUNTER). Le circuit 1 est alors prêt pour une nouvelle phase de transactions hors ligne. Pour ces transactions hors ligne, le circuit 1 (en pratique son unité de traitement 11 qui contrôle l'ensemble des opérations) sélectionne, à chaque nouvelle 10 transaction (TRANSACTION 1, TRANSACTION 2, TRANSACTION n), une page vide de la mémoire flash (F/ SELECT AN EMPTY PAGE). La transaction est alors opérée en mettant en oeuvre, de préférence, une gestion de l'atomicité de sorte que les informations qui sont stockées respectent le critère d'être soit 15 l'état initial soit l'état final de la donnée concernée. N'importe quel algorithme d'atomicité peut être utilisé pourvu qu'il n'impose pas l'effacement de la mémoire 13 dans un fonctionnement hors ligne. Les données relatives à la transaction sont stockées séquentiellement dans la page (G/ 20 WRITE SEQUENTIALLY), ce qui réduit les temps d'accès par rapport à un stockage non séquentiel. Une fois la transaction terminée, la page est verrouillée (H/ LOCK PAGE) même si elle n'est pas pleine. En d'autres termes, l'espace résiduel éventuel dans la page ne peut 25 pas être utilisé pour stocker, même partiellement, une autre transaction. Par ailleurs, le compteur du nombre de transactions et/ou le compteur du montant maximal est mis à jour (I/ UPDATE COUNTER), c'est-à-dire décrémenté ou incrémenté selon le seuil (valeur minimale ou valeur maximale) par rapport auquel 30 s'effectue le contrôle. Dans le cas d'un compteur du nombre de transactions, celui-ci est fonction du nombre de pages de la mémoire flash affectées aux transactions (par exemple entre 3 et 50). Si ce nombre est atteint (ou si le seuil de montant 35 est atteint), aucune nouvelle transaction hors ligne n'est 3046267 B14678 - 15-ZV2-0568 9 autorisée et il faut une nouvelle connexion en ligne (étapes A à C) pour que le circuit puisse de nouveau fonctionner hors ligne. Le mode de réalisation décrit tire profit de la différence de durée entre le temps de programmation et le temps 5 d'effacement. En pratique, dans une mémoire flash, l'opération d'effacement d'une page est relativement longue (typiquement de l'ordre de quelques millisecondes) par rapport à une opération de programmation d'un octet (typiquement de l'ordre de la dizaine de microsecondes). 10 On tire également profit du fait qu'une mémoire flash s'écrit par octet, ce qui rend compatible le traitement d'une transaction par écriture séquentielle dans la mémoire flash en respectant un caractère atomique des transactions. Le fait que la lecture s'effectue, dans une mémoire flash, par page entière 15 n'est pas préjudiciable car cette lecture s'effectue en ligne. Le choix de la taille des pages dépend de l'application et de la taille maximale nécessaire pour stocker une transaction. Un avantage des modes de réalisation qui ont été 20 décrits est qu'ils améliorent la gestion d'une mémoire flash dans des transactions hors ligne entre un circuit intégrant une mémoire flash et un terminal. Un autre avantage est une compatibilité avec des transactions bancaire, par exemple de type EMV. 25 Un autre avantage des modes de réalisation décrits est qu'ils ne nuisent pas à l'atomicité de l'écriture d'une transaction dans la mémoire. Divers modes de réalisation ont été décrits. Diverses variantes et modifications apparaîtront à l'homme de l'art. En 30 particulier, bien que les modes de réalisation aient été plus particulièrement décrits en relation avec un exemple d'application à des transactions de type EMV et à une mémoire flash, ils se transposent à d'autres applications et mémoires dans lesquelles des problèmes similaires se posent. Par ailleurs, la 35 mise en oeuvre pratique des modes de réalisation qui ont été 3046267 B14678 - 15-ZV2-0568 10 décrits est à la portée de l'homme du métier à partir des indications fonctionnelles données ci-dessus et en utilisant des circuits en eux-mêmes usuels. Notamment, l'organisation de l'adressage de la mémoire et la génération des signaux adaptés à 5 sa commande et à cet adressage font appel à des techniques en elles-mêmes usuelles. REVENDICATIONS1. Procédé de stockage de données dans une mémoire non volatile (13), lors d'une transaction hors ligne entre un circuit contenant ladite mémoire et un terminal, dans lequel : une page de la mémoire est affectée à chaque transaction ; les données de chaque transaction sont stockées de façon séquentielle dans la page correspondante ; et la page affectée à une transaction est verrouillée en écriture à la fin de la transaction correspondante. 2. Procédé selon la revendication 1, dans lequel un compteur, également stocké en mémoire non volatile, est mis à jour à la fin de chaque transaction. 3. Procédé selon la revendication 2, dans lequel le compteur est un compteur du nombre de transactions. 4. Procédé selon la revendication 3, dans lequel un stockage de données d'une nouvelle transaction n'est autorisé que si le compteur n'a pas atteint un seuil correspondant au nombre de pages de la mémoire affectées aux transactions. 5. Procédé de gestion d'une mémoire non volatile dans laquelle sont stockées des données par application du procédé selon l'une quelconque des revendications 1 à 4, dans lequel, lors d'une communication entre ledit circuit et un serveur distant par l'intermédiaire d'un terminal : les données contenues dans les pages sont lues et 25 chargées dans le serveur distant ; et les pages lues sont effacées. 6. Procédé selon la revendication 5, dans son rattachement à l'une quelconque des revendications 2 à 4, dans lequel le compteur est réinitialisé une fois toutes les pages 30 traitées. 7. Mémoire flash, programmée conformément au procédé selon l'une quelconque des revendications 1 à 6. 8. Circuit électronique comportant une mémoire flash (13) conforme à la revendication 7.