FR 3074317 A1 20190531 FR 1761223 A 20171127 DOMAINE TECHNIQUE GENERAL La présente invention concerne un procédé d'écriture dans une mémoire flash non-volatile. ETAT DE LA TECHNIQUE Un dispositif électronique tel qu'une carte SIM, eSIM (« Embedded SIM » ou eUICC), ou un élément sécurisé embarqué (« Embedded Secure Element » en anglais) utilise conventionnellement une mémoire « flash » non volatile dans laquelle sont, notamment, mémorisées des applications ainsi que des données utiles à ces applications. Les mémoires de types « flash » sont partitionnées en plusieurs pages (ou secteurs), chaque page comprenant un nombre d'octets prédéfini. La page est l'unité de base d'écriture dans la mémoire flash (cela veut dire que les octets d'une page doivent être modifiés simultanément- on ne peut pas mettre à jour un seul octet d'une page sans affecter les autres octets de cette page, sauf si cet octet est « vide ». Donc normalement, il faut effacer la page, puis en réécrire toutes les données. Par contre, il est possible de modifier les octets « vides », sans affecter les autres octets de la page. Au cours de son utilisation, une mémoire non volatile est soumise à de nombreux cycles d'effacements et d'écritures, ce qui crée une usure de la mémoire flash. Typiquement, une page mémoire peut supporter jusqu'à 100 000 cycles d'effacement / écriture. Afin de limiter l'usure prématurée de la mémoire flash, des techniques dites de répartition de l'usure ou d'uniformisation de l'usure (« wear leveling » en anglais) ont été développées. Ces techniques visent à prolonger la durée de vie de la mémoire flash et sont habituellement implémentées au niveau du contrôleur de la mémoire flash. Un problème est que pour des raisons de couts certains éléments sécurisés n'intègrent pas de mécanisme de « wear leveling », et ne gèrent donc pas l'usure. Un autre problème est que ces mécanismes peuvent ralentir le fonctionnement de l'élément sécurisé. 2 PRESENTATION DE L'INVENTION Un but de l'invention est d'améliorer la durée de vie d'un dispositif électronique comprenant une mémoire non volatile de type flash. A cet effet, l'invention propose un procédé d'accès à une zone mémoire non 5 volatile de type flash d'un élément sécurisé, tel qu'une carte à puce, au moins un programme étant stocké dans ladite mémoire non volatile, le procédé comprenant : - un premier mode d'accès à une zone mémoire non volatile selon lequel il est en mis en oeuvre un mécanisme de gestion de la mémoire ; - un deuxième mode d'accès à une zone mémoire non volatile selon lequel 10 ledit mécanisme de gestion de la mémoire n'est pas utilisé ; - procédé dans lequel l'un des premier ou deuxième mode d'accès est sélectionné, au cours de l'exécution du programme, lorsqu'au moins une donnée est manipulée. L'invention est avantageusement complétée par les caractéristiques suivantes, 15 prises seules ou en une quelconque de leur combinaison techniquement possible. - L'un des premier ou deuxième mode d'accès est en outre sélectionné en fonction de la ou les donnée(s) lue(s) ou écrite(s) ; - Le procédé comprend, préalablement, à la sélection du second mode d'accès, une étape de mise en pause du premier mode d'accès ; 20 - Le procédé comprend, préalablement, à la sélection du second mode d'accès, une étape d'arrêt du premier mode d'accès ; - La mise en pause du premier mode d'accès est mise en oeuvre lors de la manipulation d'un objet dont les modifications sont uniquement faites en mémoire volatile ; 25 - L'arrêt du premier mode d'accès est mis en oeuvre lors de la création ou l'effacement d'un objet dont les en-têtes sont présentes en mémoire non volatile. Ceci concerne aussi la manipulation de données volumineuses, qui risquent de saturer l'espace de stockage du mécanisme de gestion de mémoire. L'écriture directe de ces données dans leur emplacement définitif 30 est plus avantageuse dans ce cas ; - l'élément sécurisé comprend en outre une mémoire volatile qui est mise en oeuvre lorsque le second mode d'accès est sélectionné ; - la mémoire non volatile comprend une portion dite tampon allouée au stockage temporaire des données modifiées pendant l'exécution du 3 programme, le mécanisme de gestion de la mémoire comprenant un mode de création/mise à jour des données, consistant à mettre en oeuvre les étapes suivantes : écriture successive des données modifiées/crées dans la portion tampon au fur et à mesure de l'exécution du programme ; 5 déclenchement, selon un critère prédéterminé, d'une mise à jour des données dans la mémoire non volatile dans une portion allouée au programme en fonction des données modifiées/créées. Et l'invention concerne également un produit programme d'ordinateur comprenant des instructions de code de programme pour l'exécution des étapes du 10 procédé selon l'invention, lorsque ce procédé est exécuté par au moins un processeur. L'invention permet de sélectionner au cours de l'exécution d'un programme un mode d'accès à la mémoire non volatile. En particulier il est prévu de pouvoir basculer d'un mode d'accès à la mémoire selon lequel un mécanisme de gestion de la 15 mémoire est mis en oeuvre ou pas. Un tel mécanisme de gestion de la mémoire est du type à répartition d'usure (en anglais, « wear leveling ») ou à tampon d'écriture (en anglais, « write buffer»). En particulier, il est prévu de mettre en pause ou d'arrêter le mécanisme de gestion de la mémoire qui consomme de la ressource et ralenti les programmes. 20 Une telle mise en pause ou arrêt est particulièrement avantageuse pendant la manipulation de certaines données. Ces données doivent être des objets mémoires qui ne sont pas modifiés en mémoire non volatile (ou dont les portions manipulées ne sont pas modifiées en mémoire non volatile) pendant la mise en pause ou l'arrêt du mécanisme de gestion 25 de mémoire. On note que lorsque le mécanisme de gestion de la mémoire n'est pas utilisé les accès à la mémoire sont effectués de manière conventionnelle. Ainsi, le fait de commuter d'un mode d'accès à l'autre permet d'optimiser les performances (accès à la mémoire), tout en réduisant l'usure de la mémoire flash. 30 En particulier, les en-têtes des objets Java ne changent pas après leur création. Ces en-têtes contiennent, entre autres, des informations concernant l'emplacement en mémoire non volatile des données de ces objets. De même, certains objets Java dits hybrides (en partie en mémoire volatile RAM et en partie en 4 mémoire non volatile flash) ne sont modifiés qu'en mémoire RAM, et donc leur modification n'a pas d'effets sur le contenu de la mémoire flash. Ainsi, on prévoit les modes de fonctionnement suivants du mécanisme de gestion de la mémoire : 5 - la mise en pause est effectuée lors de la manipulation des objets en mémoire volatile (on accède directement aux adresses physiques des en-têtes d'objets) ; le mécanisme est toujours actif mais n'est pas utilisé. - L'arrêt est effectué lors de la création ou de destruction d'objets (pour écrire les en-têtes). 10 - Le redémarrage est effectué après la fin de l'action ayant nécessité la mise en pause ou l'arrêt. Ces différents modes sont appelés dans des emplacements clé dans le code du programme et sont par conséquent appelés directement par le programme au cours de son exécution. 15 PRESENTATION DES FIGURES D'autres caractéristiques, buts et avantages de l'invention ressortiront de la description qui suit, qui est purement illustrative et non limitative, et qui doit être lue en regard des dessins annexés sur lesquels : 20 - la figure 1 illustre schématiquement un élément sécurisé tel qu'une carte à puce ; - les figures 2 à 4 illustrent des étapes d'un procédé selon l'invention ; - la figure 5 illustre des partitions d'une mémoire volatile mise en oeuvre dans l'invention. 25 Sur l'ensemble des figures les éléments similaires portent des références identiques. DESCRIPTION DETAILLEE DE L'INVENTION En référence à la figure 1, un dispositif électronique 1 comprend au moins un 30 processeur 2, au moins une mémoire non volatile 3 et au moins une mémoire volatile 4. La mémoire non volatile 3 mémorise de manière persistante des programmes et des données destinées à être manipulées par les programmes. Cette mémoire 3 est par exemple de type flash. 5 La mémoire non volatile 3 peut être interne ou externe. La mémoire non volatile 3 comprend une pluralité de secteurs physiques. Chaque secteur physique a une adresse physique, et est susceptible d'héberger des données. 5 La mémoire non volatile 3 stocke notamment plusieurs programmes : un système d'exploitation, au moins une application susceptible d'être exécuté par le système d'exploitation. Le processeur 2 est configuré pour exécuter l'un ou l'autre de ces programmes. 10 La mémoire non volatile 3 est également destinée à stocker des données manipulées par ces programmes. Ces données sont soit présentes dans la mémoire 3 avant la première mise en service du dispositif électronique, soit écrites dans la mémoire 3 par l'un ou l'autre de ces programmes après une telle mise en service. En particulier, le système d'exploitation occupe une pluralité de secteurs 15 physiques de la mémoire non volatile 3. Par ailleurs, la mémoire volatile 4 a vocation à stocker des données de manière temporaire, jusqu'à une mise hors tension du dispositif électronique 1. La mémoire 4 est par exemple de type RAM (en anglais, « Random Access Memory»). Le dispositif électronique 1 comprend également une interface de 20 communication 5 avec un autre dispositif 6. L'interface de communication 5 comprend par exemple au moins un contact électrique destiné à être mis en contact électrique avec un contact de l'autre dispositif 6, de sorte que des signaux électriques porteurs de données puissent être communiqués entre les deux dispositifs. En variante ou à titre complémentaire, 25 l'interface de communication comprend une antenne radio, par exemple pour établir une communication du type « en champ proche » (en anglais « Near Field Communication », (NFC)). Le dispositif électronique 1 est par exemple un élément sécurisé embarqué ou intégré (« Embedded/Integrated Secure Element » en anglais), (par exemple au 30 format UICC). En relation avec la figure 2, un procédé mis en oeuvre par un programme stocké dans la mémoire non volatile au cours de son exécution comprend les étapes suivantes. 6 Dans un premier temps, un programme stocké dans la mémoire 3 non volatile est exécuté (étape El). Au cours de l'exécution de ce programme, des données doivent être manipulées : lues ou écrites dans la mémoire non volatile (étape E2). 5 En particulier, au cours de l'exécution du programme on accède à la mémoire non volatile selon un premier mode d'accès (étape E3) ou un deuxième mode d'accès (étape E4). Avantageusement, selon le premier mode d'accès il est en mis en oeuvre un mécanisme de gestion de la mémoire tandis que selon le deuxième mode d'accès ce 10 mécanisme de gestion de la mémoire n'est pas mis en oeuvre. Un tel mécanisme de gestion de la mémoire est du type à répartition d'usure (en anglais, « wear leveling ») ou à tampon d'écriture (en anglais, « write buffer»). S'agissant du « wear leveling » on pourra se référer au document Mittal / Vetter, A Survey of Software Techniques for Using Non-Volatile Memories for Storage and 15 Main Memory Systems, IEEE, 2015. La sélection du premier mode ou du second s'effectue au cours de l'exécution du programme (en pratique à certains endroits du code). Selon le deuxième mode d'accès, les données sont manipulées de manière classique. 20 En particulier, les modifications (création d'objet ou mise à jour d'un objet) du contenu de la mémoire non volatile se font dans la mémoire volatile. Aussi lorsqu'une modification doit être effectuée, le contenu de la mémoire non volatile est intégralement copié dans la mémoire volatile, et les modifications sont effectuées sur cette copie dans la mémoire volatile. 25 Une fois les modifications effectuées en mémoire volatile, la mémoire non volatile est effacée et le contenu issu de la mémoire volatile est copié dans la mémoire non volatile. C'est ce mécanisme de modifications qui « use » la mémoire non volatile. Par ailleurs, toujours selon ce deuxième mode d'accès la lecture dans le 30 contenu de la mémoire non volatile se fait directement dans la mémoire non volatile. En relation avec la figure 3, au cours de la mise en oeuvre du premier mode d'accès ce dernier peut être mis en pause (étape E32) ou arrêté (étape E33) en fonction des données (étape E31) manipulées au cours du programme. Dans le cas où le premier mode d'accès est mis en pause ou arrêté, les données sont manipulées 7 selon le deuxième mode d'accès (c'est-à-dire sans mise en oeuvre d'un mécanisme de gestion de la mémoire). Selon un mode de réalisation avantageuse, le premier mode d'accès comprend la mise en oeuvre d'un mécanisme de gestion de la mémoire à tampon 5 d'écriture décrit en relation avec la figure 4. A titre préliminaire, on considère qu'une première portion 31 de la mémoire 3 non volatile est réservée pour l'exécution du programme ainsi que pour le stockage du code du programmer ainsi que des données (persistantes entre deux redémarrages) tandis qu'une seconde portion 32 de la mémoire 3 non volatile est 10 allouée à un tampon d'écriture (voir la figure 5). En particulier, une petite portion de la mémoire volatile est réservée pour le tampon d'écriture. Le reste est utilisé pour stocker le code ainsi que les données. En revenant à la figure 4, au cours de l'exécution du programme, lorsque des données doivent être écrites (crées ou mises à jour) ces dernières sont écrites (étape 15 E4) les unes à la suite des autres dans le tampon d'écriture. Le remplissage (étape E5) du tampon est vérifié après chaque écriture dans le tampon de manière à qu'il puisse contenir des nouvelles données. Lorsque le tampon est plein ou bien qu'il est détecté que sa capacité n'est plus suffisante pour contenir de nouvelles données alors (étape E6) il est procédé à une 20 mise à jours des données dans la première portion 31 de la mémoire 3 non volatile (la portion allouée à l'exécution du programme). Cette mise à jour (étape E6) est exécutée page par page. Elle comprend les étapes suivantes. Le contenu de la page à mettre à jour est copié à partir de la première portion 25 31 de la mémoire 3 non volatile dans le contenu de la mémoire 4 volatile. Le tampon d'écriture 32 est balayé afin de récupérer les données dans leur dernière version (modification ou création). Ces modifications sont consolidées vers le contenu copié en mémoire volatile. Puis, le contenu de la mémoire volatile est copié dans la page de la première 30 portion de la mémoire non volatile (après l'effacement de cette dernière). Avantageusement, le tampon est remis à zéro, son contenu est effacé. Ainsi, comme on l'aura compris, la procédure d'effacement / écriture dans la mémoire non volatile n'est effectuée que dans des cas où le tampon est plein ou bien en limite de capacité. 8 De manière complémentaire, lorsque des données doivent être lues (étape E7), alors que le mécanisme de gestion de la mémoire à tampon d'écriture est actif, il convient de consolider les données entre celles qui viennent d'être modifiées et/ou créées dans le tampon d'écriture 32 avec celles présentes dans la mémoire non 5 volatile 31. Pour ce faire, là encore, le tampon est balayé afin de vérifier si la donnée lue est dans le tampon d'écriture ou dans la première portion de la mémoire non volatile uniquement. Cela induit des effets notables sur les performances, surtout en cas d'accès fréquents. 10 Par contre, en cas de mise en pause ou arrêt du mécanisme de gestion de la mémoire à tampon d'écriture, la procédure de lecture de données avec consolidation décrite ci-dessus n'est pas exécutées. Les données sont lues directement à partir de la mémoire non volatile 31, permettant d'éviter la dégradation des performances. Ceci dit, l'arrêt consiste à vider entièrement le tampon d'écriture 32 en mettant 15 à jour toutes les pages modifiées dans la mémoire non volatile 31. Donc des arrêts fréquents du mécanisme de gestion de mémoire à tampon d'écriture affectent la performance en provoquant des écritures, et induisent une usure de la mémoire non volatile. Alors qu'une mise en pause du mécanisme de gestion de mémoire à tampon 20 d'écriture ne fait que désactiver la procédure de lecture de données avec consolidation. Donc, le contenu du tampon d'écriture est maintenu, REVENDICATIONS1. Procédé d'accès à une zone mémoire (3) non volatile de type flash d'un élément sécurisé (1), tel qu'une carte à puce, au moins un programme étant stocké dans ladite mémoire non volatile, le procédé comprenant : - un premier mode d'accès à une zone mémoire non volatile selon lequel il est en mis en oeuvre un mécanisme de gestion de la mémoire ; - un deuxième mode d'accès à une zone mémoire non volatile selon lequel ledit mécanisme de gestion de la mémoire n'est pas utilisé ; - procédé dans lequel l'un des premier ou deuxième mode d'accès est sélectionné, au cours de l'exécution du programme, lorsqu'au moins une donnée est manipulée. 2. Procédé selon la revendication 1, dans lequel l'un des premier ou deuxième mode d'accès est en outre sélectionné en fonction de la ou les donnée(s) lue(s) ou écrite(s). 3. Procédé selon l'une des revendications 1 à 2, comprenant, préalablement à la sélection du second mode d'accès, une étape de mise en pause du premier mode d'accès. 4. Procédé selon l'une des revendications 1 à 2, comprenant, préalablement à la sélection du second mode d'accès, une étape d'arrêt du premier mode d'accès. 5. Procédé selon la revendication 3, dans lequel la mise en pause du premier mode d'accès est mis en oeuvre lors de la manipulation d'un objet dont les modifications sont uniquement faites en mémoire volatile. 6. Procédé selon la revendication 4, dans lequel l'arrêt du premier mode d'accès est mis en oeuvre lors de la création ou l'effacement d'un objet dont les en-têtes sont présentes en mémoire non volatile. 7. Procédé selon l'une des revendications précédentes, dans lequel, l'élément sécurisé comprend en outre une mémoire volatile qui est mise en oeuvre lorsque le second mode d'accès est sélectionné. 9 10 8. Procédé selon l'une des revendications précédentes, la mémoire non volatile comprenant une portion (32) dite tampon allouée au stockage temporaire des données modifiées pendant l'exécution du programme, le mécanisme de gestion de 5 la mémoire comprenant un mode de création/mise à jour des données, consistant à mettre en oeuvre les étapes suivantes : - écriture successive des données modifiées/crées dans la portion tampon (32) au fur et à mesure de l'exécution du programme ; - déclenchement, selon un critère prédéterminé, d'une mise à jour des données dans 10 la mémoire non volatile dans une portion (31) allouée au programme en fonction des données modifiées/créées. 9. Produit programme d'ordinateur comprenant des instructions de code de programme pour l'exécution des étapes du procédé selon l'une des revendications 15 précédentes, lorsque ce procédé est exécuté par au moins un processeur.