FR 3142592 A1 20240531 FR 2212578 A 20221130 Mémoire non volatile La présente description concerne une mémoire non volatile comprenant une pluralité de secteurs de mémoire courants (S1, S2), un secteur de mémoire de substitution (S3) et un circuit de commande de la mémoire non volatile configuré pour stocker des données dans les secteurs et pour effacer des données stockées dans un des secteurs en effaçant toutes les données stockées dans ledit secteur en une seule fois ; un premier secteur de mémoire courant comprenant au moins une première donnée (D1_0) valide et un deuxième secteur courant comprenant au moins une deuxième donnée valide (D2_0) ; le circuit de commande de la mémoire étant configuré pour déterminer qu’un des secteurs courants est à effacer, et sélectionner en conséquence un secteur parmi les secteurs courants ; copier les données valides du secteur courant sélectionné dans le secteur de mémoire de substitution ; et effacer toutes les données du secteur courant sélectionné. Figure pour l'abrégé : Fig. 5 Mémoire non volatile La présente description concerne de façon générale des mémoires non volatiles et notamment les mémoires de type FLASH. Il a été proposé d’émuler une mémoire morte reprogrammable effaçable électriquement (EEPROM), ou une autre mémoire à faible granularité d’accès, par une mémoire effaçable par secteur, comme une mémoire FLASH. Dans des mémoires effaçables par secteur, des adresses peuvent être écrites une première fois mais, avant une deuxième écriture à une même adresse, il est en général nécessaire d’effacer préalablement le secteur comprenant l’adresse visée. Si un secteur contient à la fois des données courantes et des données obsolètes, avant de pouvoir réutiliser les adresses qui contiennent les données obsolètes, il est donc nécessaire de procéder à la sauvegarde des données courantes, à l’effacement du secteur entier, et à la réécriture des données courantes dans le secteur. Un mécanisme est généralement mis en œuvre pour ne pas perdre les données courantes au cas où le processus d’écriture des données courantes dans le secteur ne pourrait pas être terminé, par exemple si l’alimentation est coupée pendant l’opération d’écriture. Toutefois, les mécanismes existants imposent une empreinte physique importante dans les circuits ainsi qu’un nombre de cycles d’écriture ou d’effacement élevé, accélérant le vieillissement des mémoires. Un mode de réalisation pallie tout ou partie des inconvénients des solutions existantes. Un mode de réalisation prévoit une mémoire non volatile comprenant : - une pluralité de secteurs de mémoire courants ; - au moins un secteur de mémoire de substitution ; et - un circuit de commande de la mémoire non volatile configuré pour stocker des données dans les secteurs et pour effacer des données stockées dans un des secteurs en effaçant toutes les données stockées dans ledit secteur en une seule fois ; un premier secteur de mémoire courant comprenant au moins une première donnée valide et un deuxième secteur courant comprenant au moins une deuxième donnée valide ; le circuit de commande de la mémoire étant configuré pour : - déterminer qu’un des secteurs courants est à effacer, et sélectionner en conséquence un secteur parmi le premier et le deuxième secteurs courants ; - copier a minima la ou les données valides du secteur courant sélectionné dans le secteur de mémoire de substitution, le secteur de mémoire de substitution devenant un secteur courant ; et - effacer toutes les données du secteur courant sélectionné, le secteur courant sélectionné devenant le secteur de substitution. Un autre mode de réalisation prévoit un procédé de fonctionnement d’une mémoire non volatile comprenant : - déterminer, par un circuit de commande de la mémoire, qu’un des secteurs courants d’une pluralité de secteurs de mémoire courants de la mémoire est à effacer, et sélectionner en conséquence, avec le circuit de commande de la mémoire, un secteur parmi le premier et le deuxième secteurs courants, le circuit de commande de la mémoire non volatile étant configuré pour stocker séquentiellement des données dans les secteurs et pour effacer des données stockées dans un des secteurs en effaçant toutes les données stockées dans ledit secteur en une seule fois, un premier secteur de mémoire courant comprenant au moins une première donnée valide et un deuxième secteur courant comprenant au moins une deuxième donnée valide ; - copier, avec le circuit de commande de la mémoire, a minima la ou les données valides du secteur courant sélectionné dans le secteur de mémoire de substitution, le secteur de mémoire de substitution devenant un secteur courant ; et - effacer, avec le circuit de commande de la mémoire, toutes les données du secteur courant sélectionné, le secteur courant sélectionné devenant le secteur de substitution. Selon un mode de réalisation, le circuit de commande est configuré pour sélectionner le secteur courant ayant le moins d’espace occupé par des données valides. Selon un mode de réalisation, un compteur d’effacement comptabilise, pour chaque secteur de mémoire, un nombre de fois où il est effacé, et le circuit de commande est configuré pour que, si le nombre comptabilisé par le compteur d’effacement pour un des secteurs de mémoire est supérieur à un premier seuil, le copier vers le secteur de substitution. Selon un mode de réalisation, la plus grande donnée à écrire a une première taille, la taille de chaque secteur de mémoire étant supérieure ou égale à ladite première taille. Selon un mode de réalisation, un espace disponible en écriture des secteurs de mémoire courants de la pluralité, additionné à un espace disponible en écriture du secteur de mémoire de substitution, est supérieur ou égal à la quantité de données à écrire dans la mémoire. Selon un mode de réalisation, la pluralité comprend un troisième secteur de mémoire courant, le circuit de commande de la mémoire étant configuré pour déterminer qu’un des secteurs courants est à renouveler, et sélectionner en conséquence un secteur courant parmi les premier, deuxième ou troisième secteurs courants. Selon un mode de réalisation, le circuit de commande de la mémoire non volatile est configuré pour stocker séquentiellement des données dans les secteurs. Selon un mode de réalisation, le circuit de commande de la mémoire est configuré pour copier uniquement la ou les données valides du secteur courant sélectionné dans le secteur de mémoire de substitution. Selon un mode de réalisation, le circuit de commande est configuré pour sélectionner le secteur courant ayant un espace occupé par des données valides qui puisse être contenu dans le secteur de substitution. Ces 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 représente, de manière schématique, un exemple de dispositif à mémoire non volatile selon un mode de réalisation de la présente description ; la représente, de manière schématique, un exemple d’un élément de donnée qui est écrit dans une adresse de la mémoire non volatile de la ; la est une vue schématique illustrant des étapes de fonctionnement d’une mémoire non volatile selon un exemple ; la est une vue schématique illustrant un exemple des étapes de fonctionnement d’une mémoire non volatile selon un mode de réalisation de la présente description ; la est une vue schématique illustrant un autre exemple des étapes de fonctionnement d’une mémoire non volatile selon un mode de réalisation de la présente description ; et la illustre, sous forme de blocs, d’un procédé de fonctionnement d’une mémoire non volatile selon un mode de réalisation de la présente description. De mêmes éléments ont été désignés par de mêmes références dans les différentes figures. En particulier, les éléments structurels et/ou fonctionnels communs aux différents modes de réalisation peuvent présenter les mêmes références et peuvent disposer de propriétés structurelles, dimensionnelles et matérielles identiques. Par souci de clarté, seuls les étapes et éléments utiles à la compréhension des modes de réalisation décrits ont été représentés et sont détaillés. Sauf précision contraire, lorsque l'on fait référence à deux éléments connectés entre eux, cela signifie directement connectés sans éléments intermédiaires autres que des conducteurs, et lorsque l'on fait référence à deux éléments reliés (en anglais "coupled") entre eux, cela signifie que ces deux éléments peuvent être connectés ou être reliés par l'intermédiaire d'un ou plusieurs autres éléments. Dans la description qui suit, lorsque l'on fait référence à des qualificatifs de position absolue, tels que les termes "avant", "arrière", "haut", "bas", "gauche", "droite", etc., ou relative, tels que les termes "dessus", "dessous", "supérieur", "inférieur", etc., ou à des qualificatifs d'orientation, tels que les termes "horizontal", "vertical", etc., il est fait référence sauf précision contraire à l'orientation des figures. Sauf précision contraire, les expressions "environ", "approximativement", "sensiblement", et "de l'ordre de" signifient à 10 % près, de préférence à 5 % près. La représente, de manière schématique, un exemple de dispositif 13 à mémoire non volatile selon un mode de réalisation de la présente description. Le dispositif 13 à mémoire non volatile comprend une mémoire non volatile 10, par exemple de type FLASH (FLASH MEMORY). La mémoire non volatile 10 est par exemple relié à un bus système du dispositif 13 par l’intermédiaire d’une interface de mémoire non volatile 12 (FLASH INTERFACE). L’interface de mémoire non volatile 12 est reliée, par exemple, à la mémoire non-volatile 10 par l’intermédiaire d’un bus de communication 11 et est configurée, par exemple, pour assurer notamment la gestion de l’écriture et la lecture de données vers et depuis la mémoire FLASH 10. Le dispositif 13 comprend en outre, par exemple, une unité de traitement 15 (CPU) comprenant un ou plusieurs processeurs sous contrôle d’instructions stockées dans une mémoire d’instructions 17 (INSTR MEM). La mémoire d’instruction 17 est par exemple de type à accès aléatoire (en anglais Random Access Memory, RAM). L’unité de traitement 15 et la mémoire 10 communiquent, par exemple, via le bus système 16. Dans un exemple, le dispositif 13 comprend en outre une interface d’entrée/sortie 14 (I/O INTERFACE) reliée au bus système 16. Bien que les mémoires 10 et 17 soient représentées par des dispositifs mémoire distincts, dans un autre exemple, les mémoires 10 et 17 sont implémentées par un même dispositif mémoire. Ce dispositif mémoire contient par exemple à la fois le code à exécuter et est utilisée en outre pour stocker des données type EPPROM. La mémoire 10 est une mémoire divisée en plusieurs secteurs dans lesquels des données, représentées par des éléments de données, sont stockées. Dans ce type de mémoire à secteurs, des données peuvent être écrites dans des zones vides de chaque secteur avec une granularité assez faible, par exemple par mots de 16, 32 ou 64 bits. Toutefois, il n’est en général pas possible de récrire dans une zone déjà programmée sans procéder préalablement à l’effacement de la zone. Dans certains modes de réalisation, il est toutefois possible de faire passer des bits de l’état « 1 » à l’état « 0 », mais un nombre de fois limité pour une même adresse. De plus, comme il n'est pas possible de procéder à l’effacement d’une partie uniquement d’un secteur, l’opération d’effacement est appliquée à un secteur entier à la fois. La est un exemple d’un élément de donnée qui est, par exemple, écrit dans la mémoire non volatile 10 de la . Un élément de donnée est, par exemple, formé d’une séquence de bits. Ces bits représentent par exemple un ensemble d’un premier champ comprenant un identifiant x (ID: x) et d’un deuxième champ comprenant une valeur de donnée Dx (DATA VALUE: Dx). La valeur de donnée Dx est par exemple composée d’un ou plusieurs octets ayant une valeur qui peut être mise à jour et dont on cherche la dernière mise à jour lorsqu’on accède à la mémoire 10. L’identifiant x est par exemple un entier indiquant l’identifiant de la valeur de donnée. Dans la suite, les éléments de données sont représentés par Dx_y, où x est l’identifiant de la valeur de donnée et où y est un entier indiquant un indice de la version de la valeur de l’élément de donnée. Pour un identifiant de donnée x, -c’est-à-dire à x fixe-, l’indice y le plus élevé correspond à l’élément de donnée d’identifiant x qui est valide, c’est-à-dire qui est à jour. L’indice y ne fait pas partie, par exemple, des éléments de données stockés dans la mémoire non volatile 10, car l’élément de donnée valide est par exemple indiqué par l’ordre de stockage des données dans la mémoire. Par exemple, l’élément de donnée d’identifiant x qui est valide est celui ayant l’adresse la plus importante (de valeur la plus élevée). La est une vue schématique d’étapes de fonctionnement de la mémoire 10 non volatile selon un exemple non optimal. Dans l’exemple de la , la mémoire 10 comprend deux banques de données 110, 112. La banque 110 comprend deux secteurs de mémoire S1, S2 et la banque de données 112 comprend deux secteurs de mémoire S3, S4. Dans l’exemple de la , les secteurs de mémoire S1, S2, S3, S4 ont chacun une capacité de 8 kilo octets. Dans un autre exemple, la capacité de mémoire des secteurs est supérieure à 8 kilo octets, par exemple 16 ou 32 kilo octets, voire plusieurs centaines ou milliers de kilo octets. Dans encore un autre exemple, la capacité de mémoire des secteurs est inférieure à 8 kilo octets, par exemple, de 1 kilo octet. La mémoire 10 est commandée, par exemple, par un circuit de commande 104. Dans l’exemple de la , le circuit de commande 104 est compris dans la mémoire 10. Dans un autre exemple non illustré, le circuit de commande 104 est à l’extérieur de la mémoire non volatile 10, et fait partie, par exemple, de l’interface de mémoire non volatile 12. Le circuit de commande 104 de la mémoire 10 est configuré pour stocker séquentiellement des données dans les secteurs, c’est-à-dire, par exemple, une par une, ou deux par deux, ou plus généralement n par n, où n est un entier positif. Le circuit de commande 104 est également configuré pour effacer les données stockées dans un des secteurs en effaçant toutes les données stockées dans le secteur en une seule fois. Autrement dit, l’ensemble des données d’un secteur est effacé d’un coup sans qu’il soit possible de n’effacer qu’une partie des données d’un même secteur. Dans l’exemple de la , préalablement à une étape de fonctionnement 130, des données D1_0, D2_0, D3_0, D4_0 et D5_0 sont écrites dans le secteur S1. Les secteurs S2, S3, S4 sont initialement vides. Dans l’étape 130, la donnée D1_0 est mise à jour en mémorisant une nouvelle donnée D1_1, puis la donnée D2_0 est mise à jour trois fois en mémorisant séquentiellement des nouvelles données D2_1, D2_2 et D2_3, et enfin la donnée D5_0 est mise à jour en mémorisant une nouvelle donnée D5_1. Pour ce faire, le secteur S1 étant plein, les données mises à jour D1_1, D2_1, D2_2, D2_3, et D5_1 sont écrites dans le secteur libre suivant, c’est-à-dire le secteur S2. Le secteur S2 devient plein à son tour. La banque 110 est donc pleine. Les secteurs S1 et S2 contiennent des données valides : D3_0 et D4_0 pour S1, et D1_1, D2_3 et D5_1 pour S2. Dans une étape 140, la donnée D1_1 est mise à jour en mémorisant une nouvelle donnée D1_2, puis la donnée D2_3 est mise à jour trois fois en mémorisant séquentiellement des nouvelles données D2_4, D2_5 et D2_6 et enfin la donnée D5_1 est mise à jour en mémorisant une nouvelle donnée D5_2. Les secteurs S1 et S2, et la banque 110, étant pleins, la donnée D1_2 est mémorisée dans le secteur S3. Cette mémorisation provoque, par exemple, un basculement des banques 110, 112 afin de pouvoir continuer à mémoriser les données mises à jour. Il convient, en particulier, de libérer de l’espace, ce qui implique de libérer la banque 110. Pour ce faire, l’ensemble des données valides à mémoriser et celles contenues dans les secteurs S1 et S2 sont copiées, c’est-à-dire transférées, depuis les secteurs S1 et S2 vers le secteur S3, puis vers le secteur S4 lorsque le secteur S3 est plein. Dans l’exemple de la , après la recopie des données valides et la mise à jour des données dans les secteurs S3 et S4, il reste un espace non écrit de 1 kilo octets. Dans une étape 150, la donnée D1_2 est mise à jour en mémorisant une nouvelle donnée D1_3, puis la donnée D2_6 est mise à jour trois fois en mémorisant des nouvelles données D2_7, D2_8 et D2_9, et enfin la donnée D5_2 est mise à jour en mémorisant une nouvelle donnée D5_3. Pour ce faire, la donnée D1_3 est écrite dans l’espace de 1 kilo octet restant libre de secteur S4. Le secteur S4 est alors plein. Pour pouvoir écrire la donnée mise à jour D2_7, il convient de changer de banque et d’écrire dans le secteur S1 qui a été effacé à l’étape 140. Les données valides des secteurs S3 et S4 sont ensuite copiées dans le secteur S1, puis la banque 112 est effacée. Les données mises à jour successivement D2_8, D2_9 et D5_3 sont ensuite mémorisées dans l’espace restant de la banque 110, c’est-à-dire dans le secteur S2. Dans l’exemple de la , il reste alors 2 kilo octets libres dans le secteur S2. Dans une étape 160, la donnée D1_3 est mise à jour en mémorisant une nouvelle donnée D1_4, puis la donnée D2_9 est mise à jour en mémorisant une nouvelle donnée D2_10, qui elle-même est mise à jour en mémorisant une nouvelle donnée D2_11, qui elle-même est mise à jour en mémorisant une nouvelle donnée D2_12 et enfin la donnée D5_3 est mise à jour en mémorisant la nouvelle donnée D5_4. Pour ce faire, la donnée D1_4 puis la donnée D2_10 sont écrites dans l’espace de 2 kilo octets restant libre du secteur S2. Le secteur S2 est alors plein. Pour pouvoir écrire la donnée mise à jour D2_11, il convient de changer de banque et d’écrire dans le secteur S3 qui a été effacé à l’étape 150. Les données valides de S1 et S2 sont ensuite copiées dans le secteur S3, puis la banque 110 est effacée. Pour ce faire, la donnée D2_11 est écrite dans le secteur S3 qui a été effacé préalablement à l’étape 150. Les données valides de S1 et S2 (c’est-à-dire D3_0, D4_0, D5_3 et D1_4) sont ensuite copiées dans le secteur S3, puis la banque 110 est effacée. Les données mises à jour D2_12 et D5_4 sont ensuite mémorisées dans l’espace restant de la banque 112 c’est-à-dire dans le secteur S4. Dans l’exemple de la il reste alors 3 kilo octets libres dans S4. Dans l’exemple de la , les données D3_0 et D4_0 sont statiques ou quasiment, c’est-à-dire qu’elles ne sont pas mises à jour souvent, tandis que les données D1, D2 et D5 sont mises à jour régulièrement. Dans le cas où les données D3_0 et D4_0 sont plus volumineuses que les données D1, D2 et D5, la recopie des données valables D3_0 et D4_0 après le changement de banque de mémoire consomme une énergie qu’il est intéressant de limiter. De plus, cela augmente le vieillissement des secteurs mémoires, le nombre total des cycles d’écriture et d’effacement d’un même secteur avant que ce secteur ne devienne défectueux étant limité. Pour limiter ces effets, la taille des secteurs des banques peut être augmentée, mais cela entraîne une empreinte plus grande sur le circuit ce qui est couteux. La est une vue schématique illustrant des étapes de fonctionnement d’une mémoire non volatile 10 selon un mode de réalisation de la présente description. La mémoire 10 comprend quatre secteurs de mémoire S1, S2, S3 et S4. Les secteurs S1, S2, S3 et S4 ont par exemple chacun une capacité de stockage comme décrite ci-dessus en relation avec la . La mémoire 10 est commandée, par exemple, par un circuit de commande 204. Dans l’exemple de la , le circuit de commande 204 est compris dans la mémoire 10. Dans un autre exemple non illustré, le circuit de commande 104 est à l’extérieur de la mémoire non volatile 10, et fait partie, par exemple, de l’interface de mémoire non volatile 12. Comme pour le circuit de commande 104 de la , le circuit de commande 204 de la mémoire 10 est configuré pour stocker séquentiellement des données dans les secteurs, c’est-à-dire, par exemple, une par une, ou deux par deux, ou plus généralement n par n, où n est un entier positif. Le circuit de commande 204 est également configuré pour effacer les données stockées dans un des secteurs en effaçant toutes les données stockées dans le secteur en une seule fois. Autrement dit, l’ensemble des données d’un secteur est effacé d’un coup sans qu’il ne soit possible de n’effacer qu’une partie des données d’un même secteur. Dans l’exemple de la , préalablement à une étape de fonctionnement 220, des données D1_0, D2_0, D3_0, D4_0 et D5_0 sont écrites dans le secteur S1. Les secteurs S2, S3, S4 sont initialement vides. A l’étape 220, les secteurs S1, S2 et S3 sont des secteurs mémoire dits courants et le secteur S4 est un secteur mémoire dit de substitution. Dans l’étape 220, la donnée D1_0 est mise à jour en mémorisant une nouvelle donnée D1_1, puis la donnée D2_0 est mise à jour trois fois en mémorisant séquentiellement des nouvelles données D2_1 puis D2_2 et D2_3, et enfin la donnée D5_0 est mise à jour et doit être mémorisée. Pour ce faire, le secteur S1 étant plein, les données mises à jour D1_1, D2_1, D2_2, D2_3, et D5_1 sont écrites dans le secteur libre suivant, c’est-à-dire le secteur S2. Le secteur S2 devient plein à son tour. Les secteurs S1 et S2 contiennent alors les données valides suivantes : D3_0, D4_0 pour le secteur S1 et D1_1, D2_3, D5_1 pour le secteur S2. Dans une étape 230, la donnée D1_1 est mise à jour en mémorisant une nouvelle donnée D1_2, puis la donnée D2_3 est mise à jour en mémorisant séquentiellement trois fois de nouvelles données D2_4, D2_5 et D2_6, et enfin la donnée D5_1 est mise à jour en mémorisant une nouvelle donnée D5_2. Pour ce faire, le secteur S2 étant plein, les données mises à jour D1_2, D2_4, D2_5, D2_6, et D5_2 sont écrites dans le secteur libre suivant, c’est-à-dire le secteur S3. Le secteur S3 devient plein à son tour. Les secteurs S1 et S3 contiennent des données valides : D3_0, D4_0 pour le secteur S1 et D1_2, D2_6, D5_2 pour le secteur S3. Le secteur S2 ne contient plus de données valides. Dans une étape 240, la donnée D1_2 est mise à jour en mémorisant une nouvelle donnée D1_3, puis la donnée D2_6 est mise à jour trois fois en mémorisant séquentiellement des nouvelles données D2_7, puis D2_8 et D2_9, et enfin la donnée D5_2 est mise à jour en mémorisant une nouvelle donnée D5_3. Pour ce faire, la donnée valide D1_3 est écrite dans le secteur S4. Le circuit de commande 204 de la mémoire est configuré pour déterminer lequel parmi les secteurs de mémoire courants S1, S2 et S3 est à effacer. Dans un exemple, le secteur S2 est sélectionné car il contient, par exemple, moins de données valables que le secteur S1 ou le secteur S3. Une fois le secteur S2 sélectionné, seules les données valides du secteur S2 sont copiées dans le secteur de mémoire de substitution, c’est-à-dire le secteur S4. Dans l’exemple de la , le secteur S2 n’a pas de données valides et donc aucune donnée n’est copiée. Toutes les données du secteur courant sélectionné S2 sont ensuite effacées. Le secteur de mémoire de substitution S4 devient alors un secteur courant et le secteur courant sélectionné S2 devient le secteur de mémoire de substitution. Les données mises à jour D2_7, D2_8 et D2_9 sont écrites successivement au fur et à mesure de leur mise à jour respective. Ensuite, la donnée D5_3 est écrite dans le secteur S4. A la fin de l’étape 240, les secteurs S1 et S4 contiennent des données valides : D3_0, D4_0 pour le secteur S1 et D1_3, D2_9, D5_3 pour le secteur S4. Le secteur S3 ne contient plus de données valides. Dans une étape 250, la donnée D1_3 est mise à jour en mémorisant une nouvelle donnée D1_4, puis la donnée D2_9 est mise à jour en mémorisant séquentiellement des nouvelles données D2_10, D2_11 et D2_12, et enfin la donnée D5_3 est mise à jour en mémorisant une nouvelle donnée D5_4. Pour ce faire, la donnée valide D1_4 est écrite dans le secteur de substitution, c’est-à-dire S2. Le circuit de commande 204 de la mémoire est configuré pour déterminer lequel parmi les secteurs de mémoire courants S1, S3 et S4 est à effacer. Dans un exemple, le secteur S3 est sélectionné car il contient, par exemple, moins de données valables que le secteur S1 ou le secteur S4. Une fois le secteur S3 sélectionné, a minima les données valides du secteur S3, s’il en contient, sont copiées dans le secteur de mémoire de substitution, c’est-à-dire le secteur S2. Dans un autre exemple non-illustré, une fois le secteur S3 sélectionné, les données valides du secteur S3 ainsi qu’une ou plusieurs données non valides, sont copiées dans le secteur de mémoire de substitution S2. Dans l’exemple de la , le secteur S3 n’a pas de données valides et donc aucune n’est copiée. Toutes les données du secteur courant sélectionné S3 sont ensuite effacées. Le secteur de mémoire de substitution S2 devient alors un secteur courant et le secteur courant sélectionné S3 devient le secteur de mémoire de substitution. Les données mises à jour D2_10, D2_11 et D2_12 sont écrites successivement au fur et à mesure de leur mise à jour respective dans le secteur S2. Ensuite, la donnée D5_4 est écrite dans le secteur S2. Dans l’exemple de la , la mémoire 10 comprend un compteur d’effacement 206 facultatif qui comptabilise, pour chaque secteur de mémoire, un nombre de fois où il est effacé. Dans cet exemple, le circuit de commande 204 est configuré pour que, si le nombre comptabilisé par le compteur d’effacement pour un des secteurs de mémoire est supérieur à un premier seuil, le secteur qui est déterminé par le circuit de commande 204 est copié dans le secteur de substitution pour être ensuite effacé et devenir le nouveau secteur de substitution. Cela permet de moyenner le vieillissement des secteurs au cas où, comme dans l’exemple de la , un secteur contient des données statiques comme les données D3_0 et D4_0. Un avantage de l’exemple de la est que les données valides d’un secteur ne sont pas copiées si aucune mise à jour n’intervient sur elles. Cela permet de limiter le nombre de cycles d’écriture/effacement de la mémoire. La mise en oeuvre facultative du compteur d’effacement permet en outre d’améliorer le vieillissement des secteurs mémoires en réintroduisant dans le mécanisme un secteur sous-utilisé. La est une vue schématique illustrant des étapes de fonctionnement de la mémoire non volatile 10 selon un autre exemple du mode de réalisation de la de la présente description. La mémoire 10 de l’exemple de la comprend trois secteurs de mémoire S1, S2, S3. Les secteurs S1, S2 et S3 ont par exemple chacun une capacité de stockage comme décrite ci-dessus en relation avec la . La mémoire 10 est couplée à un circuit de commande 204, qui est similaire à celui décrit en relation avec la , et ne va pas être décrit à nouveau en détail. Dans l’exemple de la , préalablement à une étape de fonctionnement 520, une donnée D1_0, par exemple de 6 kilo octets, est écrite dans le secteur S1. Une donnée D2_0, par exemple de 4 kilo octets, est écrite dans le secteur S2 car le secteur S1 ne dispose pas de l’espace libre nécessaire à l’écriture de la donnée D2_0. Une donnée D3_0, par exemple de 4 kilo octets, est écrite dans la partie restante du secteur S2. Le secteur S2 devient plein à son tour. Le secteur S3 est par exemple initialement vide. A l’étape 520, les secteurs S1 et S2 sont des secteurs mémoire dits courants et le secteur S3 est un secteur mémoire dit de substitution. Dans l’étape 520, la donnée D2_0 est mise à jour en mémorisant une nouvelle donnée D2_1. Pour ce faire, les secteurs S1 et S2 ne disposant pas de l’espace libre nécessaire à l’écriture de la donnée D2_1, la donnée D2_1 est écrite dans le secteur libre suivant, c’est-à-dire le secteur S3. Les secteurs S1 et S2 contiennent alors les données valides suivantes : D1_0 pour le secteur S1 et D3_0 pour le secteur S2. Dans une étape 530, le circuit de commande 204 de la mémoire 10 détermine lequel parmi les secteurs de mémoire courants S1 et S2 est à effacer, par exemple avant de mémoriser une nouvelle donnée D2_2, qui est la mise à jour de la donnée D2_1. Dans l’exemple de la , le secteur S2 est sélectionné car l’ensemble des données valides peuvent être copiées dans le secteur S3. De façon plus générale, le secteur S2 est sélectionné car il contient, par exemple, moins de quantité de données valables que le secteur S1, car la donnée D3_0 est de plus petite taille que la donnée D1_0 et la donnée D2_0 n’est pas valide. Une fois le secteur S2 sélectionné, seules les données valides du secteur S2 sont copiées dans le secteur de mémoire de substitution, c’est-à-dire le secteur S3. La donnée D3_0 est donc copiée dans le secteur S3. Dans une étape 540, toutes les données du secteur courant sélectionné S2 sont ensuite effacées. Le secteur de mémoire de substitution S3 devient alors un secteur courant et le secteur courant sélectionné S2 devient le nouveau secteur de mémoire de substitution. Dans une étape 550, la donnée D2_2 est mémorisée. Pour ce faire, le secteur S3 étant plein, la donnée D2_2 est écrite dans le nouveau secteur de substitution S2. Les secteurs S1 et S3 contiennent alors les données valides suivantes : D1_0 pour le secteur S1 et D3_0 pour le secteur S3. Dans une étape 560, le circuit de commande de la mémoire 10 détermine lequel parmi les secteurs de mémoire courants S1 et S3 est à renouveler, par exemple avant de pouvoir mémoriser une nouvelle donnée D2_3, qui est la mise à jour de la donnée D2_2. Dans un exemple, le secteur S3 est sélectionné car il contient, par exemple, moins de quantité de données valables que le secteur S1, car la donnée D3_0 est de plus petite taille que la donnée D1_0. Une fois le secteur S3 sélectionné, seules les données valides du secteur S3 sont copiées dans le secteur de mémoire de substitution actuel, c’est-à-dire le secteur S2. La donnée D3_0 est donc copiée dans le secteur S2. Dans une étape 570, toutes les données du secteur courant sélectionné S3 sont ensuite effacées. Le secteur de mémoire de substitution S2 devient alors un secteur courant et le secteur courant sélectionné S3 devient le nouveau secteur de mémoire de substitution. Dans une étape 580, la donnée D2_2 est mise à jour en mémorisant une nouvelle donnée D2_3. Pour ce faire, les secteurs S1 et S2 ne disposant pas de l’espace libre nécessaire à l’écriture de la donnée D2_3, la donnée D2_3 est écrite dans le secteur libre suivant, c’est-à-dire le secteur S3. Les secteurs S1 et S2 contiennent alors les données valides suivantes : D1_0 pour le secteur S1 et D3_0 pour le secteur S2. Dans une étape 590, le circuit de commande 204 de la mémoire 10 détermine lequel parmi les secteurs de mémoire courants S1 et S2 est à renouveler, par exemple avant de mémoriser la nouvelle donnée D2_3. Dans un exemple, le secteur S2 est sélectionné car il contient, par exemple, moins de quantité de données valables que le secteur S1, car la donnée D3_0 est de plus petite taille que la donnée D1_0. Une fois le secteur S2 sélectionné, seules les données valides du secteur S2 sont copiées dans le secteur de mémoire de substitution actuel, c’est-à-dire le secteur S3. La donnée D3_0 est donc copiée dans le secteur S3. Dans une étape 598, toutes les données du secteur courant sélectionné S2 sont ensuite effacées. Le secteur de mémoire de substitution S3 devient alors un secteur courant et le secteur courant sélectionné S2 devient le nouveau secteur de mémoire de substitution. Dans l’exemple de la , la mémoire 10 comprend le compteur d’effacement facultatif 206, comme décrit en relation avec la . Un avantage de l’exemple de la est qu’il requiert l’usage d’un secteur de moins, par exemple trois secteurs, par rapport au fonctionnement qui est décrit dans l’exemple de la qui requiert au minimum l’usage de quatre secteurs. La est une vue par bloc d’un procédé de fonctionnement d’une mémoire non volatile selon un mode de réalisation de la présente description. Ce procédé est mis en œuvre par exemple par le circuit de commande 204 de la ou de la . Dans une étape 600 (DETERMINE A CURRENT SECTOR TO ERASE), il est déterminé qu’un des secteurs courants est à effacer, par exemple parce qu’il ne reste plus d’espace libre dans les secteurs courant. Le secteur courant à renouveler est déterminé, par exemple par le circuit de commande 204. Le secteur courant à renouveler est par exemple celui disposant d’une quantité de données valides la plus faible. Dans une étape 602 (SELECT CURRENT SECTOR), le secteur courant qui est à renouveler est sélectionné. Dans une étape 604 (COPY VALID DATA OF SELECTED SECTOR TO SUBSTITUTION SECTOR), les données valides du secteur sélectionné à l’étape 602 sont copiées et écrites dans le secteur de substitution actuel. Dans une étape 606 (ERASE ALL DATA OF SELECTED SECTOR), toutes les données du secteur courant qui a été sélectionné sont effacées. Dans une étape 608 (SELECTED SECTOR BECOMES THE SUBSTITUTION SECTOR), le secteur dont les données ont été effacées devient le nouveau secteur de substitution. Divers modes de réalisation et variantes ont été décrits. La personne du métier comprendra que certaines caractéristiques de ces divers modes de réalisation et variantes pourraient être combinées, et d’autres variantes apparaîtront à la personne du métier. En particulier, dans les exemples de la ou 5, la détermination par le circuit de commande 204, du secteur à renouveler, est dans un exemple, indépendante de la quantité de données valides que les secteurs courants contiennent. Dans un exemple, la personne du métier comprendra que le fonctionnement de la mémoire non volatile pourra être ajusté en mettant en oeuvre plus d’un secteur de mémoire de substitution. Par exemple, la mémoire non-volatile serait performante avec plus de quatre secteurs courants, par exemple huit, et deux ou plus secteurs de substitution. Dans un autre exemple, la personne du métier comprendra que le fonctionnement de la mémoire non volatile pourra être ajusté en partitionnant les secteurs en plusieurs sections et le circuit de commande 204 sera par exemple configuré pour stocker des données dans une section libre quelconque du secteur sélectionné. Dans un exemple supplémentaire, dans le cas où la taille de la donnée est supérieure à un secteur courant, par exemple égale à deux secteurs, la personne du métier comprendra que deux secteurs courants pourraient être considérés comme un secteur « virtuel » ayant une double capacité de stockage et appliquer les mêmes processus que pour les figures 4 et 5. Dans ce cas, effacer un secteur virtuel impliquera d'effacer les deux secteurs physiques qui le compose. Enfin, la mise en oeuvre pratique des modes de réalisation et variantes décrits est à la portée de la personne du métier à partir des indications fonctionnelles données ci-dessus. En particulier, l’exemple de la se limite à l’étape 250, cependant, il est évident que la personne du métier pourra mettre en oeuvre une répétition des opérations 240 et 250 autant de fois que nécessaire durant la vie de la mémoire. De même, l’exemple de la se limite à l’étape 598, cependant, il est évident que la personne du métier pourra mettre en oeuvre une répétition des opérations 520 à 598 autant de fois que nécessaire durant la vie de la mémoire. Mémoire non volatile comprenant : - une pluralité de secteurs de mémoire courants (S1, S2) ; - au moins un secteur de mémoire de substitution (S3) ; et - un circuit de commande de la mémoire non volatile configuré pour stocker des données, dans les secteurs courants ou dans l’au moins un secteur de mémoire de substitution, et pour effacer des données stockées dans un des secteurs courants ou dans un de l’au moins un secteur de mémoire de substitution, en effaçant toutes les données stockées, dans ledit un des secteurs courants ou un de l’au moins un secteur de substitution, en une seule fois ; un premier secteur de mémoire courant comprenant au moins une première donnée (D1_0) valide et un deuxième secteur courant comprenant au moins une deuxième donnée valide (D2_0) ; le circuit de commande de la mémoire étant configuré pour : - déterminer qu’un des secteurs courants est à effacer, et sélectionner en conséquence un secteur parmi le premier et le deuxième secteurs courants ; - copier a minima les première et deuxième données valides du secteur courant sélectionné dans le secteur de mémoire de substitution, le secteur de mémoire de substitution devenant un secteur courant ; et - effacer toutes les données du secteur courant sélectionné, le secteur courant sélectionné devenant le secteur de substitution. Mémoire selon la revendication 1, dans laquelle le circuit de commande est configuré pour sélectionner le secteur courant ayant le moins d’espace occupé par l’au moins une première ou deuxième donnée valide. Mémoire selon la revendication 1 ou 2, dans laquelle un compteur d’effacement comptabilise, pour chaque secteur de mémoire, un nombre de fois où il est effacé, et le circuit de commande est configuré pour que, si le nombre comptabilisé par le compteur d’effacement pour un des secteurs de mémoire est supérieur à un premier seuil, le copier vers le secteur de substitution. Mémoire selon l’une quelconque des revendications 1 à 3, dans laquelle la plus grande donnée à écrire a une première taille, la taille de chaque secteur de mémoire étant supérieure ou égale à ladite première taille. Mémoire selon l’une quelconque des revendications 1 à 4, dans laquelle un espace restant libre des secteurs de mémoire courants de la pluralité, additionné à un espace restant libre du secteur de mémoire de substitution, est supérieur ou égal à la quantité de données à écrire dans la mémoire. Mémoire selon l’une quelconque des revendications 1 à 5, dans laquelle la pluralité de secteurs courants comprend un troisième secteur de mémoire (S4) courant, le circuit de commande de la mémoire étant configuré pour déterminer qu’un des secteurs courants est à renouveler, et sélectionner en conséquence un secteur courant parmi les premier, deuxième ou troisième secteurs courants. Mémoire selon l’une quelconque des revendications 1 à 6, dans laquelle le circuit de commande de la mémoire non volatile est configuré pour stocker séquentiellement des données dans les secteurs. Mémoire selon l’une quelconque des revendications 1 à 7, dans laquelle le circuit de commande de la mémoire est configuré pour copier uniquement la ou les données valides du secteur courant sélectionné dans le secteur de mémoire de substitution. Mémoire selon l’une quelconque des revendications 1 à 8, dans laquelle le circuit de commande est configuré pour sélectionner le secteur courant ayant un espace occupé par des données valides qui puisse être contenu dans le secteur de substitution. Procédé de fonctionnement d’une mémoire non volatile selon l’une quelconque des revendications précédentes, le procédé comprenant : - déterminer, par le circuit de commande de la mémoire, qu’un des secteurs courants de la pluralité de secteurs de mémoire courants (S1, S2) de la mémoire est à effacer, et sélectionner en conséquence, avec le circuit de commande de la mémoire, un secteur parmi le premier et le deuxième secteurs courants, le circuit de commande de la mémoire non volatile étant configuré pour stocker séquentiellement des données dans les secteurs et pour effacer des données stockées dans un des secteurs en effaçant toutes les données stockées dans ledit secteur en une seule fois ; - copier, avec le circuit de commande de la mémoire, a minima la ou les données valides du secteur courant sélectionné dans le secteur de mémoire de substitution, le secteur de mémoire de substitution devenant un secteur courant ; et - effacer, avec le circuit de commande de la mémoire, toutes les données du secteur courant sélectionné, le secteur courant sélectionné devenant le secteur de substitution.