FR3070081A1 - Procede d'ecriture d'un programme dans une memoire non-volatile tenant compte de l'usure de ladite memoire - Google Patents
Procede d'ecriture d'un programme dans une memoire non-volatile tenant compte de l'usure de ladite memoire Download PDFInfo
- Publication number
- FR3070081A1 FR3070081A1 FR1757638A FR1757638A FR3070081A1 FR 3070081 A1 FR3070081 A1 FR 3070081A1 FR 1757638 A FR1757638 A FR 1757638A FR 1757638 A FR1757638 A FR 1757638A FR 3070081 A1 FR3070081 A1 FR 3070081A1
- Authority
- FR
- France
- Prior art keywords
- program
- volatile memory
- data
- write
- zone
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Granted
Links
- 238000000034 method Methods 0.000 title claims abstract description 26
- PWPJGUXAGUPAHP-UHFFFAOYSA-N lufenuron Chemical compound C1=C(Cl)C(OC(F)(F)C(C(F)(F)F)F)=CC(Cl)=C1NC(=O)NC(=O)C1=C(F)C=CC=C1F PWPJGUXAGUPAHP-UHFFFAOYSA-N 0.000 title 1
- 230000011664 signaling Effects 0.000 claims description 3
- 238000004590 computer program Methods 0.000 claims description 2
- 238000004891 communication Methods 0.000 description 8
- 238000013316 zoning Methods 0.000 description 6
- 238000007726 management method Methods 0.000 description 2
- 230000002085 persistent effect Effects 0.000 description 2
- 230000008569 process Effects 0.000 description 2
- 230000008521 reorganization Effects 0.000 description 2
- 230000008439 repair process Effects 0.000 description 2
- 230000003068 static effect Effects 0.000 description 2
- 238000012360 testing method Methods 0.000 description 2
- 238000012795 verification Methods 0.000 description 2
- 238000010586 diagram Methods 0.000 description 1
- 230000006870 function Effects 0.000 description 1
- 230000002028 premature Effects 0.000 description 1
- 238000012545 processing Methods 0.000 description 1
- 230000004044 response Effects 0.000 description 1
- 230000009897 systematic effect Effects 0.000 description 1
- 238000013519 translation Methods 0.000 description 1
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/60—Software deployment
- G06F8/65—Updates
- G06F8/654—Updates using techniques specially adapted for alterable solid state memories, e.g. for EEPROM or flash memories
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/0223—User address space allocation, e.g. contiguous or non contiguous base addressing
- G06F12/023—Free address space management
- G06F12/0238—Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory
- G06F12/0246—Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory in block erasable memory, e.g. flash memory
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/10—Providing a specific technical effect
- G06F2212/1032—Reliability improvement, data loss prevention, degraded operation etc
- G06F2212/1036—Life time enhancement
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/72—Details relating to flash memory management
- G06F2212/7211—Wear leveling
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- General Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Computer Security & Cryptography (AREA)
- Techniques For Improving Reliability Of Storages (AREA)
Abstract
La présente invention concerne un procédé embarqué sur dispositif discret ou intégré d'écriture d'un programme incluant code et données dans une mémoire non-volatile, le procédé comprenant des étapes de : • pour une pluralité de zones de la mémoire non-volatile, détermination (102) sans données préalables d'un état d'usure de la zone avant écriture du nouveau programme, • réception et utilisation (106) de données de condition d'accès à une portion du programme depuis la mémoire volatile, la détermination desdites données étant mise en œuvre avant que la portion du programme ne soit écrite dans la mémoire non-volatile , • sélection (110, 116) d'au moins une des zones de la mémoire non-volatile où écrire la portion du programme, en fonction des données et des états d'usure déterminés.
Description
DOMAINE DE L'INVENTION
La présente invention concerne un procédé d’écriture d’un programme dans une mémoire non-volatile.
ETAT DE LA TECHNIQUE
Un dispositif électronique tel qu’un élément sécurisé embarqué ou intégré (« Embedded/lntegrated Secure Elément » ou « eSE/eUICC » et « ÎSE/ÎUICC » en anglais) utilise conventionnellement une mémoire non volatile dans laquelle est mémorisé un système d’exploitation. Ce système d’exploitation est exécuté par un processeur du dispositif électronique.
Le système d’exploitation d’un tel dispositif électronique peut, pour diverses raisons, être remplacé dans la mémoire non volatile du dispositif électronique par un nouveau système d’exploitation.
Par exemple, un tel remplacement est mis en œuvre vers un nouveau système d’exploitation du même type mais plus récent, afin de corriger des bugs, ou bien vers un système d’exploitation différent, fourni par un fournisseur différent du premier système d’exploitation déjà présent dans le dispositif électronique.
Un tel remplacement peut typiquement être mis en œuvre lors d’un reconditionnement du dispositif après un retour terrain.
Dans tous les cas, ce remplacement peut survenir après une utilisation intensive du premier système d’exploitation.
Or, la durée de vie d’une mémoire non volatile, telles que de la mémoire flash, dépend du nombre d’écritures de données faites dans cette mémoire. Par conséquent, la mémoire volatile peut être déjà fortement usée lorsqu’il est décidé de remplacer le premier système d’exploitation par un autre.
Cette usure engendre un problème de répartition de responsabilités entre le vendeur du dispositif électronique, qui garantit généralement l’acheteur que le dispositif fonctionnera sur une certaine durée de vie, le fournisseur du premier système d’exploitation, voire le fournisseur du deuxième système d’exploitation s’il est différent. Si la mémoire non volatile est fortement usée, cette garantie sera difficile à maintenir après remplacement du système d’exploitation.
EXPOSE DE L'INVENTION
Un but de l’invention suivante vise à améliorer la durée de vie d’un dispositif électronique comprenant une mémoire non volatile.
Un autre but de l’invention est d’identifier le plus tôt possible une usure prématurée d’une mémoire non volatile d’un dispositif électronique susceptible d’être reconditionné.
Ainsi, selon un aspect, l’invention propose un procédé embarqué sur dispositif discret ou intégré d’écriture d’un programme incluant code et données dans une mémoire nonvolatile, le procédé comprenant des étapes de :
pour une pluralité de zones de la mémoire non-volatile, détermination sans données préalables d’un état d’usure de la zone avant écriture du nouveau programme, réception et utilisation de données de condition d’accès à une portion du programme depuis la mémoire volatile, la détermination desdites données étant mise en œuvre avant que la portion du programme ne soit écrite dans la mémoire non-volatile, sélection d’au moins une des zones de la mémoire non-volatile où écrire la portion du programme, en fonction des données et des états d’usure déterminés.
Les données de condition d’accès peuvent renseigner sur des droits d’accès à la portion de programme dans la mémoire non-volatile.
La zone sélectionnée peut être :
une zone usée lorsque les droits d’accès sont en lecture seule, une zone saine lorsque les droits d’accès sont en lecture et en écriture.
Les données de condition d’accès peuvent renseigner sur une fréquence d’accès en écriture estimée à la section de programme (code et données) dans la mémoire non-volatile.
La zone sélectionnée peut être :
une zone saine lorsque la fréquence d’accès en écriture est élevée, et une zone usée lorsque la fréquence d’accès en écriture est faible.
Notamment, la zone sélectionnée peut être une zone usée lorsque les données de condition d’accès indiquent que les droits sont en lecture seule ou que la fréquence d’accès en écriture est faible, une zone saine lorsque les données de condition d’accès indiquent cumulativement que les droits d’accès sont en lecture et en écriture, et que la fréquence d’accès en écriture est élevée.
Dans une mise oeuvre possible, le procédé comprend le signalement d’un message d’erreur lorsque les données déterminées autorisent que la zone sélectionnée soit une zone saine, mais qu’il ne reste plus aucune zone saine de disponible dans la mémoire non volatile où écrire la portion de programme.
Egalement, le procédé peut comprendre un abandon de l’écriture du programme dans la mémoire non volatile, lorsque les données déterminées autorisent que la zone sélectionnée soit une zone saine, mais qu’il ne reste plus aucune zone saine de disponible dans la mémoire non volatile où écrire la portion de programme.
En outre, le programme peut être un système d’exploitation destiné à remplacer un autre système d’exploitation ou une partie, déjà présent dans la mémoire non volatile.
L’invention concerne également un produit programme d’ordinateur comprenant des instructions de code de programme pour l'exécution des étapes du procédé proposé, lorsque ce procédé est exécuté par au moins un processeur.
DESCRIPTION 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 :
• Les figures 1a et 1b représentent de façon schématique un dispositif électronique pour le cas respectivement d’un eSE/eUICC et d’un iSE/îUICC.
• La figure 2 est un organigramme d’étapes d’un procédé d’écriture d’un programme dans une mémoire volatile.
• La figure 3 représente des espaces d’adressage logique et physique dans une mémoire non volatile.
• La figure 4 illustre un exemple de réorganisation de l’espace d’adressage physique. Sur l’ensemble des figures, les éléments similaires portent des références identiques.
DESCRIPTION DETAILLEE DE L'INVENTION
En référence aux figures 1a et 1b, un dispositif électronique 1 comprend au moins un processeur 2, au moins une mémoire non volatile 4 interne (eSE/eUICC - figure 1a) ou externe (iSE/îUICC - figure 1b), et au moins une mémoire volatile 5.
La mémoire non volatile 4 mémorise de manière persistante des programmes et des données destinées à être manipulées par les programmes. Cette mémoire 4 est par exemple de type flash.
La mémoire non volatile 4 comprend une pluralité de secteurs physiques. Chaque secteur physique a une adresse physique, et est susceptible d’héberger des données.
La mémoire non volatile 4 stocke notamment plusieurs programmes :
• un système d’exploitation, • au moins une application susceptible d’être lancée par le système d’exploitation.
• Un programme d’écriture de système d’exploitation en mémoire non-volatile. Un tel programme est également appelé programme de chargement dans la littérature (« loader » en anglais).
Le processeur 2 est configuré pour exécuter l’un ou l’autre de ces programmes.
La mémoire non volatile 4 est également destinée à stocker des données manipulées par ces programmes. Ces données sont soit présentes dans la mémoire 4 avant la première mise en service du dispositif électronique, soit écrites dans la mémoire 4 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 physiques de la mémoire non volatile 4.
Par ailleurs, la mémoire volatile 5 a vocation à stocker des données de manière temporaire, jusqu’à une mise hors tension du dispositif électronique 1. La mémoire 5 est par exemple de type RAM (« Random Access Memory »).
Le dispositif électronique 1 comprend en outre une unité de gestion mémoire paginée (« Memory Management Unit » en anglais, abrégé dans la suite en MMU).
De façon connue en soi, la MMU est configurée pour contrôler les accès que le processeur 2 fait à la mémoire non volatile 4, lorsque ce processeur exécute l’un des programmes de ce dispositif.
En particulier, la MMU est configurée pour abstraire la mémoire non volatile dans un espace d’adressage logique La MMU comprend des registres matériels configurables dits TLB (« Translation Lookaside Buffer»). Chaque TLB associe une adresse logique (par exemple, mais non limitativement, celui d’une page) à une adresse physique de la mémoire 4. L’ensemble des TLB peut être configuré à l’aide d’une table d’adressage définissant comment passer d’un espace d’adressage logique à un espace d’adressage physique, et vice/versa.
Le dispositif électronique 1 comprend également une interface de communication 6 avec un autre dispositif 8.
L’interface de communication 6 comprend par exemple au moins un contact électrique destiné à être mis en contact électrique avec un contact de l’autre dispositif 8, de sorte que des signaux électriques porteurs de données puissent être communiqués entre les deux dispositifs. En variante ou à titre complémentaire, l’interface de communication comprend une antenne radio, par exemple pour établir une communication du type « en champ proche » (NFC).
Le dispositif électronique 1 est par exemple élément sécurisé embarqué ou intégré (« Embedded/lntegrated Secure Elément » en anglais), (par exemple au format UICC).
En référence à la figure 2, un procédé mis en œuvre par le programme de chargement pour écrire un nouveau système d’exploitation dans la mémoire non volatile 4 comprend les étapes suivantes.
Le dispositif électronique reçoit par son interface de communication 6 un message indiquant qu’un nouveau système d’exploitation doit être écrit dans la mémoire non volatile 4, en lieu et place d’un précédent système d’exploitation déjà présent à ce stade dans la mémoire non volatile 4.
Le programme de chargement est alors démarré en réponse à la réception de ce message (étape 100).
Le programme de chargement met en œuvre un zonage de la mémoire non volatile (étape 102), de sorte à déterminer dans quelle mesure cette mémoire non volatile est usée.
Le zonage 102 comprend une répartition des secteurs physiques de la mémoire non volatile 4 en différentes zones, par exemple des zones qui sont toutes de même taille prédéterminées. Chaque zone peut par exemple être constituée d’au moins un secteur physique
Le zonage 102 comprend par ailleurs, pour chaque zone de la mémoire non volatile 4 identifiée, la détermination d’un état d’usure de la zone par le programme de chargement.
Pour une zone donnée, le programme de chargement met par exemple en œuvre un test sur au moins un secteur physique de la zone. Il choisit par exemple une page se trouvant sensiblement au milieu de la zone considérée, lorsque la zone comprend plusieurs pages. Ce test comprend une séquence de plusieurs cycles (par exemple 3), chaque cycle comprenant un effacement de la page physique choisie, une écriture de données prédéterminées dans la page physique choisie, une lecture des données prédéterminées écrites dans la page physique choisie, et une vérification des données lues.
Au cours de la vérification, le programme de chargement compare les données lues avec les données précédemment écrites. Si les données comparées sont différentes, alors l’état d’usure de la zone est positionné à une valeur indicative que cette zone est usée (par exemple 0). De façon connue en elle-même, une réparation automatique peut avoir été mise en œuvre au moment de la lecture par la mémoire non volatile elle-même ou un autre composant du dispositif électronique 1. Autrement dit, même si les données comparées par le programme sont identiques, il peut tout de même s’être produit des erreurs d’écriture ou de lecture au cours d’un cycle. Dans une telle éventualité, l’état d’usure de la zone est positionné à la valeur indicative que cette zone est usée.
Si au contraire les données comparées sont identiques et qu’il est détecté qu’aucune réparation n’a été mise en œuvre dans la zone considéré au cours d’un cycle, alors l’état d’usure de la zone est positionné à une valeur indicative que cette zone est saine (par exemple 1).
A l’issue de l’étape 102, le programme de chargement a ainsi généré autant d’états d’usure que de zones de la mémoire non volatile 4. Ces états d’usure sont mémorisés dans la mémoire volatile 5.
La figure 3 montre un exemple de zonage appliqué à huit zones d’une mémoire non volatile 4. Quatre zones ont été déclarées saines et les quatre autres zones ont été déclarées usées au cours du zonage 102 mis en œuvre par le programme de chargement.
Le programme de chargement efface par ailleurs le contenu de l’espace utilisateur dans la mémoire non volatile 4 (étape 104). A l’issue de cette étape 104, toutes les zones déterminées au cours de l’étape de zonage 102 marquées comme étant disponibles, c’est-àdire susceptible d’être sélectionnées pour héberger de nouvelles données.
Le dispositif électronique reçoit par ailleurs, via son interface de communication 6, une portion du nouveau système d’exploitation à écrire dans la mémoire non volatile 4 (étape 106). Cette portion est par convention appelée dans la suite une « section » du système d’exploitation.
La section est temporairement mémorisée dans la mémoire volatile 5 avant l’écriture dans la mémoire non volatile 4.
La section comprend conventionnellement des instructions de code du nouveau système d’exploitation et/ou des données statiques de ce système d’exploitation destinées à être utilisées au cours d’une exécution ultérieur d’instructions de code par le processeur 2 du dispositif électronique 1.
La section comprend par ailleurs des données qui renseignent le programme de chargement sur des conditions futures d’accès à la section par le processeur 2, une fois que cette section aura été écrite dans la mémoire non volatile 4. Par convention, on appelle ces données « données de conditions d’accès ». En variante, les données de conditions d’accès ne font pas partie de la section elle-même mais sont reçues par l’interface de communication 6 dans un ou plusieurs message (s) séparé (s) de la section.
Les données de conditions d’accès comprennent des données de droits d’accès à la section par le processeur 2.
Les données de droits d’accès indiquent que la section a vocation à être accessible depuis la mémoire non volatile 4 en lecture et en écriture (L/E), ou bien que cette section a vocation à être accessible depuis la mémoire non volatile en lecture seule (L).
Le programme de chargement lit les données de droits d’accès de la section (étape (108).
Le programme sélectionne parmi les zones disponibles au moins une zone de destination où la section doit être écrite. Bien entendu, le nombre de zones sélectionnées dépend de la taille de la section reçue. On considère par exemple dans ce qui suit que la taille de la section est inférieure à la taille d’une zone. Une seule zone de destination est dans ce cas sélectionnée.
La sélection de la zone de destination de la section dépend des états d’usures préalablement déterminés et des données de conditions d’accès contenues dans la section, que le programme de chargement a lues au cours de l’étape 108.
Si ces données de droits d’accès indiquent que la section a vocation à être accessible depuis la mémoire non volatile 4 en lecture seule, alors le programme de chargement sélectionne (étape 110) de préférence une zone usée en tant que zone de destination, c’està-dire une zone disponible dont l’état d’usure a été positionné à la valeur « zone usée ». S’il n’en a pas, il prend une zone saine.
Le programme de chargement commande alors l’écriture de la section dans la zone de destination usée sélectionnée. Pour cela, le programme de chargement configure l’entrée TLB pour associer à l’adresse logique l’adresse physique située dans la zone sélectionnée. Il écrit ensuite à l’adresse physique le contenu de la section.
Après l’écriture, la zone de destination sélectionnée devient occupée entièrement ou en partie. Si elle l’est en partie, le programme ajuste la taille et l’adresse de début de la zone encore disponible. Si elle est occupée entièrement, elle devient non disponible.
Par ailleurs, si les données de droits d’accès indiquent que la section a vocation à être accessible depuis la mémoire non volatile 4 en lecture et en écriture (L/E), alors le programme de chargement vérifie s’il reste une zone saine disponible (étape 112).
Dans la négative, le programme de chargement signale avantageusement un message d’erreur, par exemple avant que l’écriture du nouveau système d’exploitation dans la mémoire non volatile 4 ne soit terminée afin de gagner du temps (étape 114). Ce signalement de message permet de dégager une responsabilité entre les fournisseurs respectifs de l’ancien et du nouveau système d’exploitation, s’ils sont différents.
De préférence, l’écriture du programme dans la mémoire non volatile est abandonnée dans la même situation. Cet abandon est préférable à écrire la section dans une zone usée car, au vu des conditions d’accès futures à cette section, cette zone déjà usée serait fortement sollicitée après écriture. Le système d’exploitation ne pourrait ainsi être utilisé que pour une période très courte avant que la zone usée ne devienne totalement inutilisable.
Le procédé mis en œuvre par le programme de chargement permet en définitive d’anticiper des problèmes futurs en inspectant l’état de la mémoire dès le moment où un nouveau système d’exploitation est installé.
S’il reste au contraire une zone saine disponible dans la mémoire non volatile 4, le programme de chargement sélectionne (étape 116) une telle zone saine en tant que zone de destination où écrire la section, c’est-à-dire une zone disponible dont l’état d’usure a été positionné à la valeur « zone saine
Le programme de chargement commande alors l’écriture de la section dans la zone de destination usée sélectionnée. Pour cela, le programme de chargement configure l’entrée TLB pour associer à l’adresse logique l’adresse physique située dans la zone sélectionnée. Il écrit ensuite à l’adresse physique le contenu de la section.
Après l’écriture, la zone de destination sélectionnée devient occupée entièrement ou en partie. Si elle l’est en partie, le programme ajuste la taille et l’adresse de début de la zone encore disponible. Si elle est occupée entièrement, elle devient non disponible afin qu’elle ne puisse pas être à nouveau sélectionnée par le programme de chargement comme zone de destination d’une autre section du système d’exploitation.
Le programme de chargement vérifie ensuite si la section qui vient d’être écrite dans la mémoire non volatile 4 était la dernière. Le programme peut pour cela vérifier si une nouvelle section du nouveau système d’exploitation a été reçue via l’interface de communication 6 (étape 118) dans un délai prédéterminé.
Dans l’affirmative, les étapes 108 et suivantes sont répétées pour la nouvelle section.
Sinon, toutes les sections du programme ont été reçues se sont vues attribuer une zone de destination dans la mémoire non volatile 4, et ont donc été écrites dans la mémoire non volatile 4.
Une fois que toutes les sections ont été écrites dans la mémoire non volatile 4, il se peut que les sections en lecture seule et les sections en lecture/écritures soient entrelacées dans l’espace d’adressage physique.
Avantageusement, l’espace d’adressage physique est réorganisé par le programme de chargement (étape 120) de sorte que les pages des sections en lecture seule utilisent de préférence des zones usées, et que les pages des sections en lecture écriture utilisent de préférence des zones saines. L’espace d’adressage logique restant contiguë, le programme reste fonctionnel.
C’est ce qu’illustre la figure 4, sur laquelle on a représenté une image de différentes sections A-B-C-D-E-F avant chargement (première ligne), puis la même image après chargement et traitement (dernière ligne). Physiquement, les différentes sections sont réorganisées et ne sont pas contigües. Elles sont par contre contiguës au niveau logique pour rester fonctionnelles.
Cette réorganisation 120 comprend la génération d’une nouvelle table d’adressage, et une reconfiguration de la MMU à l’aide de cette nouvelle table d’adressage.
La table d’adressage est par exemple sauvegardée dans une mémoire persistante dédiée du dispositif électronique 1. Lors d’une mise sous tension suivante du dispositif électronique, le nouveau système d’exploitation est démarré. La nouvelle table d’adressage est récupérée par le nouveau système d’exploitation puis fournie au MMU. Les registres TLB de la MMU sont alors configurés de sorte à respecter cette table d’adressage.
Si le dispositif électronique 1 est par ailleurs équipé d’un programme d’uniformisation d’usure, il n’applique une telle uniformisation que sur les pages associées à des zones saines. Il peut également appliquer une uniformisation sur les autres pages, mais en appliquant un malus sur des compteurs de cycles associés aux pages.
Dans le procédé qui vient d’être décrit, seuls des droits d’accès futurs à une section donnée du nouveau système d’exploitation, compris dans les données de condition d’accès, ont été pris en considération par le programme de chargement pour décider si cette section devait être écrite dans une zone saine ou usée.
Dans un deuxième mode de réalisation, les données de conditions d’accès reçues par le dispositif électronique renseignent sur une fréquence d’accès en écriture estimée à la portion de programme dans la mémoire non-volatile. On entend ici par « fréquence d’accès » toute information permettant de discriminer les sections du programme en au moins deux groupes :
• un premier groupe de sections qui sera fortement sollicité lors d’une exécution ultérieure du système d’exploitation par le processeur 2, • un deuxième groupe de sections qui sera comparativement moins sollicité lors d’une lors d’une exécution ultérieure du système d’exploitation par le processeur 2.
Cette information de fréquence d’accès est donc susceptible de comprendre deux valeurs : une première valeur indicative d’un grand nombre d’accès futurs à la section par le processeur 2 au cours d’une période de durée prédéterminée, et une deuxième valeur indicative d’un plus petit nombre d’accès futurs à la section par le processeur 2 au cours d’une période ayant la même durée prédéterminée.
En pratique, cette information de fréquence d’accès en écriture peut être obtenue au cours d’une étape préliminaire de profilage du nouveau système d’exploitation conduite sur un dispositif témoin de préférence identique au dispositif électronique 1. Au cours de cette étape préliminaire de profilage, le nouveau système d’exploitation est compilé dans un mode spécial de sorte à intégrer des outils de profilage. Le nouveau système d’exploitation est ensuite installé dans le dispositif témoin, puis exécuté par le processeur de ce dispositif témoin au cours d’une période relativement longue. Au cours de cette période, les outils de profilage intégrés au système d’exploitation permettent de déterminer quelles sont les instructions de code et les données statiques du système d’exploitation les plus fréquemment utilisées par le processeur du dispositif témoin, et donc, par analogie, qui seront les plus fréquemment utilisées par le processeur 2 du dispositif électronique 1. C’est donc grâce à ces outils de profilage, connus en eux-mêmes, que les informations de fréquence d’accès futur à chaque section peuvent être déterminées et incluses dans les données de conditions d’accès fournies au programme de chargement du dispositif électronique 1.
Dans le deuxième mode de réalisation, le programme de chargement sélectionne une zone de destination d’une section de la manière suivante :
• la zone de destination est une zone saine lorsque la fréquence d’accès en écriture est élevée, et • la zone de destination est une zone usée lorsque la fréquence d’accès est comparativement plus faible.
De cette façon, on maximise la durée de vie du programme s’exécutant sur la mémoire non volatile 4 du dispositif 1 discret, ou intégré, cette mémoire s’usant pour chaque cycle d’effacement/écriture lors de l’exécution du programme.
Claims (10)
- REVENDICATIONS1. Procédé embarqué sur dispositif discret ou intégré d’écriture d’un programme incluant code et données dans une mémoire non-volatile, le procédé comprenant des étapes de :• pour une pluralité de zones de la mémoire non-volatile, détermination (102) sans données préalables d’un état d’usure de la zone avant écriture du nouveau programme, • réception et utilisation (106) de données de condition d’accès à une portion du programme depuis la mémoire volatile, la détermination desdites données étant mise en œuvre avant que la portion du programme ne soit écrite dans la mémoire nonvolatile, • sélection (110, 116) d’au moins une des zones de la mémoire non-volatile où écrire la portion du programme, en fonction des données et des états d’usure déterminés.
- 2. Procédé selon la revendication 1, dans lequel les données de condition d’accès renseignent sur des droits d’accès à la portion de programme dans la mémoire non-volatile.
- 3. Procédé selon la revendication 2, dans lequel la zone sélectionnée est • une zone usée lorsque les droits d’accès sont en lecture seule, • une zone saine lorsque les droits d’accès sont en lecture et en écriture.
- 4. Procédé selon l’une des revendications précédentes, dans lequel les données de condition d’accès renseignent sur une fréquence d’accès en écriture estimée à la section de programme (code et données) dans la mémoire non-volatile.
- 5. Procédé selon la revendication précédente, dans lequel la zone sélectionnée est • une zone saine lorsque la fréquence d’accès en écriture est élevée, et • une zone usée lorsque la fréquence d’accès en écriture est faible.
- 6. Procédé selon les revendications 2 et 4 prises en combinaison, dans lequel la zone sélectionnée est • une zone usée lorsque les données de condition d’accès indiquent que les droits sont en lecture seule ou que la fréquence d’accès en écriture est faible, • une zone saine lorsque les données de condition d’accès indiquent cumulativement que les droits d’accès sont en lecture et en écriture, et que la fréquence d’accès en écriture est élevée.
- 7. Procédé selon l’une des revendications précédentes, comprenant le signalement (114) d’un message d’erreur lorsque les données déterminées autorisent que la zone sélectionnée soit une zone saine, mais qu’il ne reste plus aucune zone saine de disponible dans la mémoire non volatile où écrire la portion de programme.
- 8. Procédé selon l’une des revendications précédentes, comprenant un abandon (114) de l’écriture du programme dans la mémoire non volatile, lorsque les données déterminées autorisent que la zone sélectionnée soit une zone saine, mais qu’il ne reste plus aucune zone saine de disponible dans la mémoire non volatile où écrire la portion de programme.
- 9. Procédé selon l’une des revendications précédentes, dans lequel le programme est un système d’exploitation destiné à remplacer un autre système d’exploitation ou une partie, déjà présent dans la mémoire non volatile.
- 10. 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 précédentes, lorsque ce procédé est exécuté par au moins un processeur.
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
FR1757638A FR3070081B1 (fr) | 2017-08-10 | 2017-08-10 | Procede d'ecriture d'un programme dans une memoire non-volatile tenant compte de l'usure de ladite memoire |
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
FR1757638A FR3070081B1 (fr) | 2017-08-10 | 2017-08-10 | Procede d'ecriture d'un programme dans une memoire non-volatile tenant compte de l'usure de ladite memoire |
FR1757638 | 2017-08-10 |
Publications (2)
Publication Number | Publication Date |
---|---|
FR3070081A1 true FR3070081A1 (fr) | 2019-02-15 |
FR3070081B1 FR3070081B1 (fr) | 2021-04-09 |
Family
ID=60765754
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
FR1757638A Active FR3070081B1 (fr) | 2017-08-10 | 2017-08-10 | Procede d'ecriture d'un programme dans une memoire non-volatile tenant compte de l'usure de ladite memoire |
Country Status (1)
Country | Link |
---|---|
FR (1) | FR3070081B1 (fr) |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20090138654A1 (en) * | 2006-12-11 | 2009-05-28 | Pantas Sutardja | Fatigue management system and method for hybrid nonvolatile solid state memory system |
US20120317337A1 (en) * | 2011-06-09 | 2012-12-13 | Microsoft Corporation | Managing data placement on flash-based storage by use |
EP2757479A1 (fr) * | 2013-01-22 | 2014-07-23 | LSI Corporation | Gestion et sélection de région pour écrire sur une mémoire non volatile |
US20160246585A1 (en) * | 2015-02-23 | 2016-08-25 | Apple Inc. | Managing firmware updates for integrated components within mobile devices |
-
2017
- 2017-08-10 FR FR1757638A patent/FR3070081B1/fr active Active
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20090138654A1 (en) * | 2006-12-11 | 2009-05-28 | Pantas Sutardja | Fatigue management system and method for hybrid nonvolatile solid state memory system |
US20120317337A1 (en) * | 2011-06-09 | 2012-12-13 | Microsoft Corporation | Managing data placement on flash-based storage by use |
EP2757479A1 (fr) * | 2013-01-22 | 2014-07-23 | LSI Corporation | Gestion et sélection de région pour écrire sur une mémoire non volatile |
US20160246585A1 (en) * | 2015-02-23 | 2016-08-25 | Apple Inc. | Managing firmware updates for integrated components within mobile devices |
Also Published As
Publication number | Publication date |
---|---|
FR3070081B1 (fr) | 2021-04-09 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN103123608A (zh) | 用于在存储器装置中重新分配可寻址空间的方法和设备 | |
FR2880963A1 (fr) | Points d'arrets logiciels destines a etre utilises avec des dispositifs a memoire | |
CN110286853B (zh) | 一种数据写入方法和装置、计算机可读存储介质 | |
US20120246384A1 (en) | Flash memory and flash memory accessing method | |
FR2643478A1 (fr) | Carte a circuit integre | |
EP2049967A2 (fr) | Coeur processeur a frequence pilotee et procede de demarrage dudit coeur processeur dans un mode programme | |
FR2977047A1 (fr) | Procede de gestion de l'endurance de memoires non volatiles. | |
US11808806B2 (en) | Allocation of test resources to perform a test of memory components | |
FR3070081A1 (fr) | Procede d'ecriture d'un programme dans une memoire non-volatile tenant compte de l'usure de ladite memoire | |
JP2014501870A (ja) | マイクロコントローラユニットの起動中に較正を有効にする方法およびその集積回路 | |
EP1932121B1 (fr) | Compteur d'evenements | |
WO2012107189A2 (fr) | Procede de reprogrammation d'un calculateur, support de memorisation de donnees et calculateur de vehicule automobile | |
FR2633767A1 (fr) | Dispositif a memoire permettant la detection et la correction d'erreurs de donnees | |
CN108776630B (zh) | 一种用于检测硬盘的方法、装置和存储介质 | |
EP2870605B1 (fr) | Procédé d'effacement ou de programmation d'une mémoire factice protégé contre la détection | |
EP3637266A1 (fr) | Procédé d'accès à une mémoire | |
JP5643058B2 (ja) | 車両の故障診断制御装置 | |
WO2021073990A1 (fr) | Procede d'aide a l'identification de secteurs vierges d'une memoire non-volatile d'un microcontroleur | |
EP1775595B1 (fr) | Simulateur de test de circuits intégrés | |
FR2748134A1 (fr) | Procede et dispositif permettant a un programme fige de pouvoir evoluer | |
EP3522020B1 (fr) | Gestion d'une mémoire non volatile | |
EP1467313B1 (fr) | Procédé et dispositif de sélection de mode de fonctionnement d'un circuit intégré | |
EP1818846B1 (fr) | Vérification d'intégrité de programmes ou de séquencement d'une machine d'états | |
FR3011656A1 (fr) | Procede et dispositif de realisation de fonction par un microcircuit | |
JP6184121B2 (ja) | 記憶装置検査システム、記憶装置検査方法および不揮発性半導体記憶装置 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PLSC | Publication of the preliminary search report |
Effective date: 20190215 |
|
PLFP | Fee payment |
Year of fee payment: 3 |
|
PLFP | Fee payment |
Year of fee payment: 4 |
|
PLFP | Fee payment |
Year of fee payment: 5 |
|
PLFP | Fee payment |
Year of fee payment: 6 |
|
CA | Change of address |
Effective date: 20230124 |
|
CD | Change of name or company name |
Owner name: IDEMIA IDENTITY & SECURITY FRANCE, FR Effective date: 20230124 |
|
PLFP | Fee payment |
Year of fee payment: 7 |
|
PLFP | Fee payment |
Year of fee payment: 8 |