FR 3072494 A1 20190419 FR 1759765 A 20171018 DISPOSITIF ET PROCEDE DE CONTROLE DES CYCLES DE RAFRAICHISSEMENT DE DONNEES DANS DES MEMOIRES NON- VOLATILES REPROGRAMMABLES Domaine de l'invention L'invention concerne le domaine des mémoires non-volatiles et s'intéresse en particulier au temps de rétention et aux cycles de rafraichissement des données stockées dans des mémoires non-volatiles reprogrammables. Etat de la Technique Les mémoires non-volatiles (MNVs) ont la capacité de pouvoir garder leurs données après une mise hors tension. Les mémoires non-volatiles reprogrammables ont la capacité de pouvoir garder leurs données après une mise hors tension, tout en permettant la reprogrammation des données par l'utilisateur. Un exemple est la mémoire flash dont les utilisations sont nombreuses, e.g. dans les appareils photo numériques, les téléphones cellulaires, les imprimantes, les assistants personnels (PDA), ou dispositifs de lecture et d'enregistrement sonore comme les baladeurs numériques, les clés USB. Les mémoires flash forment l'infrastructure de stockage dans les disques électroniques connus sous le nom de disques (SSD) de l'anglais « SolidState Drive », destinés à remplacer les disques durs traditionnels connus sous le nom de disques (HDD) de l'anglais « Hard-Disk Drive ». Un SSD peut contenir des dizaines de mémoires flash. Une mémoire flash est divisée en milliers de blocs. Chaque bloc peut contenir une centaine de pages chacune ayant des milliers ou dizaines de milliers de bits. Certains SSDs utilisent des mémoires flash de type (MLC) de l'anglais « Multi Level Cell » permettant de stocker 2 bits par cellule 2 mémoire ou de type (TLC) de l'anglais « Triple Level Cell » permettant de stocker 3 bits par cellule mémoire au lieu de 1 bit par cellule mémoire comme dans les mémoires flash de type (SLC) de l'anglais « Single Level Cell ». En dehors de l'augmentation de la finesse de gravure, le fait de 5 loger plusieurs bits par cellule permet d'augmenter la densité de stockage d'information et de réduire la différence de prix par gigaoctet (GB) entre les SSDs et les disques durs HDDs. Cependant, l'amélioration de la densité de stockage affecte le temps de rétention des données stockées dans les cellules mémoire, i.e. 10 le temps correspondant à la période de temps garantie pour la conservation de données, et affecte l'endurance des mémoires flash qui est généralement mesurée en nombre de cycles de programmation/effacement (PIE) garantis. Par exemple, l'endurance d'une mémoire flash est réduite d'une décade en moyenne pour chaque 15 bit supplémentaire stocké dans les cellules mémoires. La rétention limitée des données est due à l'apparition des erreurs de rétention dont le nombre augmente avec l'âge de rétention, i.e. le temps écoulé depuis la programmation des données. Il est possible d'utiliser des codes correcteurs d'erreurs (ECC) plus 20 puissants avec plus de bits de vérification et plus de capacité de correction pour agir sur le temps de rétention des données. Le rafraîchissement périodique des données permet aussi d'estomper les effets de la réduction d'endurance et du temps de rétention. Ce rafraîchissement peut être exécuté sans changer le lieu où 25 les données sont stockées, en injectant juste la quantité de charge qui manque sur la grille flottante des cellules flash. Alternativement, le rafraichissement peut être fait par réécriture en reprogrammant les données à une autre location physique. 3 Cependant, un inconvénient de telles approches connues est qu'elles sont adaptées pour des situations « pire cas » sans tenir compte des variations du taux d'erreurs qui peuvent se manifester d'une mémoire à une autre, d'un bloc à un autre à l'intérieur d'une même mémoire, ou 5 d'une page à une autre à l'intérieur d'un même bloc. Ainsi, par exemple, une étude à grande échelle concernant les SSDs d'un centre de données, a montré qu'un nombre relativement restreint des SSDs contribue à la dégradation du taux d'erreurs total (J. Meza et al., "A large-scale study of flash memory failures in the field," ACM SIGMETRICS International 10 Conference on Measurement and Modeling of Computer System, pp. 177-190, 2015). Ces SSDs qui constituent la situation « pire cas » imposent une fréquence de rafraichissement fixe adaptée au taux d'erreurs de ces SSDs pire cas. Cependant, cette fréquence de rafraichissement est trop pessimiste pour les autres SSDs. 15 Aussi, il existe le besoin d'une solution pour agir sur le temps de rétention des données et sur l'endurance des mémoires, qui contourne l'utilisation de codes correcteurs plus puissants. Il existe le besoin d'une solution pour agir sur le temps de rétention des données et sur l'endurance des mémoires qui adapte les cycles de rafraichissement des 20 données au taux d'erreur de chaque SSD, mémoire, bloc mémoire ou page mémoire, et non des cycles adaptés au pire cas pour toute une population de mémoires non-volatiles MNVs ou de disques électroniques SSDs pouvant contenir des unités sujettes à plus d'erreurs que les autres. La présente invention répond à ce besoin. 25 Résumé de l'invention Un objet de la présente invention est de proposer un procédé et un dispositif associé, permettant de contrôler la fréquence de rafraichissement de données. 4 Le procède permet d'estimer un temps de rétention restant pour chaque page d'une mémoire non-volatile, en fonction du nombre d'erreurs de rétention et de l'âge de rétention de la page. Avantageusement, une page mémoire ayant des données valides 5 n'est rafraichie que si le temps de rétention restant est plus petit que la durée restante jusqu'au prochain accès à cette page mémoire. Pour obtenir les résultats recherchés, des procédés tels que revendiqués sont proposés. En particulier, un procédé pour contrôler le rafraichissement de données dans des mémoires non-volatiles 10 reprogrammables, lesdites mémoires comprenant une pluralité de pages mémoire pour stocker des données, comprend les étapes suivantes : - calculer le nombre d'erreurs de rétention et d'erreurs de non-rétention dans au moins une page mémoire; - calculer l'âge de rétention de ladite au moins une page mémoire ; 15 - estimer le temps de rétention restant pour ladite page en fonction des paramètres précédemment calculés ; et - déterminer si la page doit être rafraichie ou non en fonction de la valeur estimée du temps de rétention restant. 20 Selon des modes de réalisation : - l'étape de détermination du rafraichissement de la page consiste à comparer la valeur estimée du temps de rétention restant à une valeur prédéfinie, ladite valeur prédéfinie correspondant à un intervalle de temps maximum jusqu'au prochain accès à ladite page, et à rafraichir la page si 25 le temps de rétention restant est plus petit que la valeur prédéfinie ; - l'étape d'estimation du temps de rétention restant comprend au moins une étape consistant à utiliser une loi statistique avec les paramètres de nombre d'erreurs de rétention, de nombre d'erreurs de non-rétention et d'âge de rétention; 5 - la loi statistique utilisée est la loi du khi-carré ; - l'étape d'estimation du temps de rétention restant comprend au moins une étape consistant à obtenir une valeur d'un nombre d'erreurs de rétention maximum toléré pour ladite page, et l'étape de détermination du 5 rafraichissement comprend au moins une étape consistant à comparer le nombre d'erreurs de rétention maximum toléré au nombre d'erreurs de rétention calculé et à rafraichir la page si le nombre d'erreurs de rétention est supérieur au nombre d'erreurs de rétention maximum toléré; - le nombre d'erreurs de rétention maximum toléré correspond à la 10 plus grande valeur du nombre d'erreurs de rétention pour laquelle le temps de rétention restant est plus grand que ladite valeur prédéfinie ; - l'étape d'estimation du temps de rétention restant comprend au moins une étape consistant à obtenir une valeur d'un âge de rétention minimum toléré pour ladite page, et l'étape de détermination du 15 rafraichissement comprend au moins une étape consistant à comparer l'âge de rétention minimum toléré à l'âge de rétention calculé et à rafraichir la page si l'âge de rétention calculé est inférieur à l'âge de rétention minimum toléré ; - l'âge de rétention minimum toléré correspond au plus petit âge de 20 rétention pour lequel le temps de rétention restant est plus grand que ladite valeur prédéfinie ; - l'étape d'estimation du temps de rétention restant comprend au moins une étape consistant à lire une table de valeurs précalculées pour des combinaisons de paramètres de nombre d'erreurs de rétention, de 25 nombre d'erreurs de non-rétention et d'âge de rétention, et consistant à sélectionner une valeur stockée pour le nombre d'erreurs de rétention, le nombre d'erreurs de non-rétention et l'âge de rétention calculés pour ladite page ; 6 - la valeur sélectionnée est un temps de rétention restant ; - la valeur sélectionnée est un nombre d'erreur de rétention maximum toléré ; - la valeur sélectionnée est un âge de rétention minimum toléré ; 5 - la table de valeurs précalculées contient des valeurs binaires représentatives de résultats de la comparaison de temps de rétention restant avec ladite valeur prédéfinie, ou de résultats de la comparaison de nombre d'erreurs de rétention avec le nombre d'erreurs de rétention maximum toléré, ou de résultats de la comparaison d'âge de rétention 10 avec l'âge de rétention minimum toléré ; - l'étape de calculer l'âge de rétention de ladite au moins une page mémoire consiste à lire une étiquette de temps associée à ladite page et à faire la différence entre l'état d'un compteur ayant fourni des étiquettes de temps aux pages mémoire et l'étiquette de temps lue; 15 - l'étape de calculer le nombre d'erreurs de rétention et le nombre d'erreurs de non-rétention comprend au moins des étapes consistant à détecter les erreurs dans ladite page, corriger les erreurs selon la capacité d'un code correcteur d'erreur et à déterminer les erreurs de non-rétention en comparant les valeurs lues et les valeurs corrigées. 20 L'invention couvre aussi un dispositif pour contrôler le rafraichissement de données dans des mémoires non-volatiles reprogrammables, lesdites mémoires comprenant une pluralité de pages mémoire pour stocker des données, le dispositif comprenant des moyens pour mettre en oeuvre le procédé revendiqué dans ses différents modes 25 de réalisation. En particulier, le dispositif comprend: - un circuit apte à calculer le nombre d'erreurs de rétention et d'erreurs de non-rétention dans au moins une page mémoire; 7 - un circuit apte à calculer l'âge de rétention de ladite au moins une page mémoire ; - un circuit apte à estimer le temps de rétention restant pour ladite page en fonction des paramètres précédemment calculés ; et 5 - un circuit apte à déterminer si la page doit être rafraichie ou non en fonction de la valeur estimée du temps de rétention restant. Dans un mode de réalisation, le dispositif comprend de plus un circuit apte à rafraichir ladite page. 10 L'invention porte aussi sur un système de stockage de données comprenant au moins une mémoire non-volatile reprogrammable ayant une pluralité de pages mémoire pour stocker des données, et au moins un dispositif tel que revendiqué pour contrôler le rafraichissement de données dans ladite au moins une mémoire non-volatile reprogrammable. 15 Dans un mode de réalisation, le dispositif revendiqué est intégré à un contrôleur apte à gérer des opérations de lecture et écriture d'une pluralité de pages mémoire. L'invention porte aussi sur un programme d'ordinateur qui comporte des instructions de code pour l'exécution du procédé pour 20 contrôler le rafraichissement de données dans des mémoires non-volatiles reprogrammables tel que revendiqué. L'invention peut être disponible sur un support d'enregistrement lisible par un processeur sur lequel est enregistré un programme comportant des instructions pour l'exécution du procédé revendiqué. 25 Description des figures Différents aspects et avantages de l'invention vont apparaitre en appui de la description des modes préférés d'implémentation de l'invention mais non limitatifs, avec référence aux figures ci-dessous : 8 - La figure 1 montre un schéma bloc d'un hôte et d'une carte mémoire ou un disque SSD permettant d'implémenter le dispositif de l'invention ; - La figure 2 montre la structure interne d'une mémoire non-volatile 5 dans un mode de réalisation ; - La figure 3 montre un schéma bloc du dispositif de l'invention selon un mode de réalisation ; - La figure 4 illustre un enchainement d'étapes du procédé de l'invention selon un mode de réalisation ; 10 - La figure 5 illustre un enchainement d'étapes du procédé de l'invention selon une variante de réalisation ; et - La figure 6 illustre un enchainement d'étapes du procédé de l'invention selon une autre variante de réalisation. 15 Description détaillée de l'invention La figure 1 montre de manière schématique un hôte 120 couplé à un système de stockage 110 permettant d'implémenter le dispositif de l'invention. Le système de stockage 110 peut être par exemple un disque 20 SSD ou une carte mémoire. Dans l'exemple décrit, le système de stockage 110 est représenté comme comprenant une pluralité de mémoires non volatiles MNVs 112. Dans une variante d'implémentation, le système de stockage comprend une seule MNV. Le système de stockage 110 comprend aussi des interfaces de connexion 105 pour se 25 connecter avec l'hôte. De manière bien connue de l'homme du métier, de telles interfaces peuvent être des connecteurs de type USB de l'anglais « Universal System Bus » ou encore de type SATA de l'anglais « Serial Advanced Technology Attachment ». Le système de stockage 110 peut 9 ainsi se connecter via le connecteur à l'interface correspondante de l'hôte 120 pour échanger des données selon différents protocoles, tels que les protocoles USB, SATA ou d'autres protocoles plus spécifiques de l'hôte. Dans une variante de réalisation, le système de stockage 110 peut 5 être une carte embarquée d'un système hôte, l'hôte pouvant par ailleurs accueillir une ou plusieurs cartes mémoires. Selon un autre mode d'implémentation, l'hôte 120 et le système de stockage 110 sont en communication sans fil et échangent selon des protocoles Wi-Fi de l'anglais « Wireless Fidelity ». 10 L'hôte peut être tout système qui peut contenir des cartes mémoire ou disques SSD ou échanger des données avec des cartes mémoire ou des disques SSD. Ainsi, sans constituer une limitation, l'hôte 120 peut être un ordinateur personnel, fixe ou portable, incluant les tablettes, les téléphones portables, les Smartphones ou autres assistants personnels. 15 L'hôte peut aussi être un serveur et comprendre des réceptacles pour accueillir une ou plusieurs cartes mémoire ou disques SSD. L'hôte peut aussi être un microcontrôleur ou un processeur intégré sur la même puce avec le système de stockage 110. Le système de stockage 110 comprend un circuit de contrôle 111 20 comprenant des composants bien connus de l'homme du métier permettant de gérer des échanges de données et instructions entre les mémoires MNVs 112 et l'hôte 120 via des interfaces de communication hôte/mémoires, de gérer des opérations de lecture/écriture, de correction d'erreurs dans les mémoires via des codes de correction d'erreurs. Le 25 circuit de contrôle 111 peut être un contrôleur SSD ou un contrôleur carte mémoire. Dans un mode de réalisation, le contrôleur 111 peut être implémenté comme un microcontrôleur. Dans un autre mode de réalisation, l'ensemble des composants du circuit de contrôle peut être implémenté comme un module dédié tel qu'un ASIC de l'anglais « Application Specific Integrated Circuit ». 10 Dans un mode de réalisation, les mémoires non volatiles 112 peuvent être des mémoires de type flash. Dans une variante, les MNVs peuvent être des mémoires résistives émergeantes comme les mémoires PCRAM, de l'anglais « Phase-Change Random-Access Memory (RAM) », 5 CBRAM de l'anglais « Conductive-Bridging RAM », ou MRAM de l'anglais « Magnetic RAM ». Les MNVs 112 du système de stockage peuvent être implémentées sur des puces distinctes ou être intégrées avec le contrôleur 111 sur une même puce. Des circuits de correction d'erreurs 10 (ECC) 114 peuvent être associés aux MNVs afin de corriger les erreurs apparues lors du stockage de données. Le contrôleur 111 est couplé aux mémoires MNVs 112 via des bus ou canaux de communication 113. Selon des modes de réalisation, un bus peut être connecté à plusieurs MNVs. 15 La figure 2 montre la structure interne d'une mémoire non volatile permettant d'opérer le procédé de l'invention. Une MNV 210 peut contenir un ou plusieurs blocs mémoire 211-i, chaque bloc mémoire 211-i ayant une ou plusieurs pages mémoire 212-ij. Il est courant qu'un bloc mémoire contienne des centaines de pages. Les pages d'un bloc mémoire sont 20 écrites l'une après l'autre. Une page mémoire contient des bits d'information relatifs à des données accessibles à l'utilisateur et des bits d'information redondante qui peuvent être utilisés pour la correction d'erreurs ou pour la gestion des données effectuée par le contrôleur. 25 Les bits d'une page mémoire sont programmés et lus simultanément. Dans le cas d'une MNV de type flash, tous les bits d'un bloc mémoire sont effacés en même temps afin de permettre leur reprogrammation. Une opération d'écriture peut correspondre à une 11 opération de programmation ou à une opération d'effacement suivie d'une opération de programmation. Le principe général de l'invention repose sur une estimation du temps de rétention restant pour chaque page d'une mémoire non-volatile, 5 en fonction du nombre d'erreurs dans la page et de son âge de rétention. Le procédé de l'invention permettant de contrôler le rafraichissement de données dans des mémoires non-volatiles reprogrammables ayant une pluralité de pages mémoire pour stocker des données, va consister à calculer le nombre d'erreurs de rétention et d'erreurs de non-rétention 10 dans au moins une page mémoire; à calculer l'âge de rétention de ladite au moins une page mémoire ; à estimer le temps de rétention restant pour ladite page en fonction des paramètres précédemment calculés ; et à déterminer si la page doit être rafraichie ou non en fonction de la valeur estimée du temps de rétention restant. 15 En particulier, une page mémoire avec des données valides ne sera rafraichie que si le temps de rétention restant est plus petit que la durée jusqu'au prochain accès à cette page mémoire, un intervalle de temps maximum entre deux opérations de lecture successives d'une page mémoire étant prédéfini. 20 Ainsi, la fréquence de rafraichissement des pages dépend du taux d'erreurs effectif qui affecte ces pages, et n'est pas forcément corrélée à la fréquence de lecture de ces pages mémoire. Avantageusement, comme une opération de lecture peut être beaucoup plus rapide qu'une opération de rafraîchissement, l'impact sur la performance d'un système 25 de stockage peut être sensiblement réduit. Par ailleurs, la probabilité de rafraichissement d'une page devient négligeable quand les erreurs peuvent être gérées avec le code correcteur disponible même pour les plus longs temps de rétention garantis. 12 La figure 3 montre un schéma bloc du dispositif 300 de l'invention selon un mode de réalisation. Le dispositif peut être implémenté dans le contrôleur 111 ou sur du matériel dédié, tel que par exemple un microcontrôleur ou un ASIC ajouté ou couplé au système de stockage 5 110. Le dispositif comprend un module de lecture/écriture 302 pour accéder aux pages mémoires, qui peut être celui du contrôleur 111. Un compteur 304 permet d'assigner une étiquette de temps à chaque bloc mémoire lors de la première opération de programmation (après une opération d'effacement ou de réinitialisation du bloc). 10 L'étiquette de temps TS (« timestamp » selon l'anglicisme connu) associée à chaque bloc mémoire est prise en compte pour l'évaluation de l'âge de rétention TAGE des bits stockés. Dans un mode de réalisation alternatif, une étiquette de temps peut être assignée à chaque page. Le dispositif comprend un module de calcul 306 permettant de 15 calculer l'âge de rétention TAGE de l'ensemble des bits stockés dans un bloc mémoire. Avantageusement, en assignant une étiquette de temps au niveau d'un bloc mémoire pour éviter un surcoût de stockage, le procédé de l'invention permet de déterminer le rafraichissement de données au niveau de chaque page mémoire du bloc mémoire. En effet, le procédé 20 prend en compte le nombre d'erreurs au niveau de chaque page pour décider du rafraichissement ou non de la page. Le dispositif comprend un circuit de correction d'erreurs 310 (ECC) qui permet de corriger à l'aide d'un code correcteur, des erreurs apparues lors du stockage de données dans une page. Le circuit ECC a une 25 capacité de correction d'erreur prédéfinie. Le dispositif comprend un module de comptage d'erreurs ou décodeur d'erreurs 308 qui permet de compter les erreurs existantes sur une page, et de différencier les erreurs de rétention eR des autres types d'erreurs, comme les erreurs de programmation ou de lecture, ces autres 30 types d'erreurs étant par la suite, appelées erreurs de non-rétention eNR. 13 Dans un mode de réalisation, le décodeur d'erreurs et le correcteur d'erreurs sont un seul et même circuit. Le dispositif comprend de plus un module d'estimation du temps de rétention restant 312 qui permet de calculer ou d'obtenir un temps de 5 rétention restant TRET à partir des paramètres de nombre d'erreurs de rétention, de nombre d'erreurs de non-rétention et d'âge de rétention. Dans un mode de réalisation, le module d'estimation comprend des moyens de calcul permettant de calculer en ligne une estimation du temps restant. Dans un autre mode de réalisation, le module d'estimation 10 du temps de rétention consiste en une table comprenant des valeurs de temps de rétention restant précalculées. Les valeurs stockées sont calculées hors ligne pour différentes combinaisons des paramètres « nombre d'erreurs de rétention / nombre d'erreurs de non-rétention / âge de rétention ». 15 Dans une autre variante de réalisation, le module d'estimation du temps de rétention restant permet d'obtenir ou stocker des valeurs de nombre d'erreurs de rétention maximum toléré eR_NAAx pour différentes combinaisons des paramètres « nombre d'erreurs de non-rétention / âge de rétention ». 20 Dans une autre variante de réalisation, le module d'estimation du temps de rétention restant permet d'obtenir ou stocker des valeurs d'âge de rétention minimum toléré TAGE _MIN pour différentes combinaisons des paramètres « nombre d'erreurs de rétention / nombre d'erreurs de non-rétention ». 25 Un module de décision 314 permet de déterminer si un rafraichissement d'une page doit être opéré, en fonction du résultat produit par le module d'estimation 312. La figure 4 illustre un enchainement d'étapes du procédé 400 permettant de déterminer si un rafraîchissement des données stockées 14 dans une page d'une mémoire non volatile doit être effectué. Le procédé 400 débute par une opération de lecture 402 d'une page dans une MNV. L'opération de lecture peut être déclenchée sur une requête reçue de l'hôte 120 ou sur une opération initiée par le contrôleur 111, par exemple 5 lors du management des données stockées à l'intérieur du système de stockage. Pendant la lecture de la page, les erreurs qui étaient apparues lors du stockage préalable des données dans la page sont détectées et corrigées à l'aide d'un code correcteur (étape 404). 10 L'étape suivante 406 consiste à compter parmi les erreurs détectées, le nombre d'erreurs de rétention eR et d'erreurs de non-rétention eNR. Dans un mode de réalisation, les étapes de comptage d'erreurs et de correction d'erreurs peuvent être réalisées simultanément. Dans le cas où la mémoire non volatile est une mémoire flash de type 15 SLC, la différentiation des erreurs est faite en comparant les valeurs lues et les valeurs corrigées. Dans une telle mémoire, un bit est affecté par une erreur de rétention si la valeur lue est 1 et la valeur corrigée est 0. Dans le cas où la valeur lue est 0 et la valeur corrigée est 1, il s'agit d'une erreur de non-rétention. Dans le cas d'une mémoire PCRAM de type 20 SLC, un bit est affecté par une erreur de rétention si la valeur lue est 0 et la valeur corrigée est 1. L'étape 406 permet d'obtenir le nombre d'erreurs de rétention eR et le nombre d'erreurs de non-rétention eNR qui affectent la page lue. Le procédé continue par une étape 408 de détermination de l'âge 25 de rétention TAGE de la page lue. Dans un mode de réalisation, l'âge de rétention est obtenu en effectuant la différence entre l'état du compteur ayant fourni une étiquette au bloc mémoire hébergeant la page lue et l'étiquette de temps courante associée à la page lue. 15 Dans une étape suivante 410, le procédé permet de déterminer le temps de rétention restant TRET en fonction des paramètres obtenus aux étapes précédentes qui sont l'âge de rétention TAGE, le nombre d'erreurs de rétention eR et le nombre d'erreurs de non-rétention eNR. Dans un 5 mode de réalisation, des valeurs de temps de rétention restant TRET sont précalculées hors ligne pour une pluralité de combinaisons des paramètres « âge de rétention TAGE, nombre d'erreurs de rétention eR, nombre d'erreurs de non-rétention eNR >>. Les valeurs sont stockées comme des métadonnées dans une table dédiée du système de stockage 10 (table d'estimation), qui est accédée en ligne lors de la lecture d'une page. Il est à noter que les paramètres de nombre d'erreurs eR et eNR sont discrets, tandis que le paramètre d'âge de rétention TAGE est continu et peut par conséquent prendre une infinité de valeurs. Aussi, afin de diminuer le coût de stockage de la table des valeurs précalculées du 15 temps de rétention restant TRET, une variante de réalisation consiste à ne considérer que des valeurs discrètes de l'âge de rétention TAGE en prenant un pas TAGESTEP égal à TRET OU à une fraction du TRET, e.g., 1/2, 1/3 etc. La valeur du temps de rétention restant TRET qui correspondra à une valeur donnée de l'âge de rétention TAGE est alors recherchée dans la 20 table à l'aide d'un index correspondant à la partie entière du rapport TAGE/TAGE_STEP- Avantageusement, le calcul de l'estimation du temps de rétention restant TRET est fait en utilisant une loi statistique. Dans un mode de réalisation, le calcul consiste à utiliser la loi du khi-carré « x2» qui est 25 connue pour calculer le temps moyen entre les pannes d'un produit quelconque, sur les paramètres de nombre d'erreurs de rétention et d'âge de rétention. L'homme du métier peut considérer utiliser tout calcul de type « temps moyen entre pannes » (« mean time to failure » en anglais), d'un produit en fonction du temps de test, du nombre d'échantillons testé 30 et du nombre d'échantillons n'ayant pas passé le test. 16 Pour estimer le temps de rétention, la loi statistique qui donne l'évolution du nombre des erreurs de rétention avec l'âge de rétention peut être connue, sans nécessairement connaître tous les paramètres qui gouvernent cette loi. 5 Dans un mode de réalisation, les erreurs de non-rétention dont le nombre peut augmenter avec l'âge de rétention du bloc mémoire, telles les erreurs dues à des lectures répétées dans un bloc mémoire complètement programmé, sont négligées par rapport aux erreurs de rétention. 10 A l'étape suivante 412, le procédé permet de comparer le temps de rétention restant TRET (qui a été calculé en ligne ou récupéré dans la table de valeurs précalculées) à une valeur prédéfinie TREAD_NEXT correspondant à un intervalle de temps maximal entre deux opérations successives de lecture d'une page mémoire. La valeur TREAD_NEXT peut 15 être définie en fonction de la taille du système de stockage, de la capacité de calcul, des temps morts, et de l'application considérée. Une telle valeur peut être dans une plage allant de quelques semaines à quelques mois par exemple. Un temps de rétention restant TRET plus petit que TREAD_NEXT, 20 signifie que le nombre des erreurs qui vont s'accumuler jusqu'à la prochaine opération de lecture risque de devenir non-corrigeable, compte-tenu de la capacité de l'ECC. Le procédé permet alors (branche oui) de lancer un rafraichissement de la page (étape 414). Après l'opération de rafraichissement, le procédé retourne au début. 25 Un temps de rétention restant TRET plus grand que TREAD_NEXT, signifie qu'il n'y a pas besoin d'un rafraichissement des données, et le procédé retourne au début (branche non). Dans un mode de réalisation, afin de réduire le coût du stockage de la table, chaque entrée de la table peut contenir directement le résultat 30 de la comparaison d'un temps de rétention restant TRET avec TREAD_NEXT, 17 i.e. la table peut contenir un seul bit par entrée, au lieu de contenir les valeurs de TRET, nécessitant plusieurs bits par entrée. Dans une autre variante de réalisation, le coût du stockage de la table, peut être encore réduit, en tenant compte du fait que le temps de 5 rétention restant TRET est une fonction décroissante selon la variable eR pour toute combinaison des variables TAGE et ENR. Il est alors possible de stocker dans la table, pour chaque combinaison de paramètres TAGE et ENR, un paramètre eR_NAAx correspondant au nombre d'erreurs de rétention maximum qui peut être encore toléré jusqu'à la prochaine lecture de la 10 page mémoire sans épuiser la capacité de correction de l'ECC. Pour chaque combinaison de paramètres d'âge de rétention TAGE et de nombre d'erreurs de non-rétention ENR, la valeur du nombre d'erreurs de rétention maximum toléré eR_NAAx correspond alors à la plus grande valeur du paramètre de nombre d'erreurs de rétention eR pour laquelle le temps de 15 rétention restant TRET est plus grand que la valeur prédéfinie pour TREADNEXT. Cette variante permet de stocker une table en 2 dimensions indexées selon les valeurs des paramètres TAGE et ENR, par rapport à la variante où la table stockée est en 3 dimensions indexées selon les 20 valeurs de paramètres TAGE, ER et ENR. La figure 5 illustre un enchainement d'étapes 500 du procédé de l'invention dans une variante de réalisation de l'utilisation du paramètre d'erreurs de rétention maximum toléré eR_NAAx. Le procédé débute selon des étapes 502 à 508 identiques aux étapes 402 à 408 du procédé de la 25 figure 4. Elles ne sont pas de nouveau décrites. A l'étape suivante 510, le procédé permet d'obtenir un nombre d'erreurs de rétention maximum toléré eR_NAAx pour une page. La valeur de ER_MAX peut être calculée en ligne ou de manière préférentielle être récupérée dans la table d'estimation du nombre d'erreurs de rétention 18 maximum toléré. La valeur sélectionnée est celle correspondant à une valeur stockée pour les paramètres d'âge de rétention TAGE et de nombre d'erreurs de non-rétention eNR que ceux calculés, avec un temps de rétention restant correspondant à celui calculé, qui est supérieur à 5 l'intervalle de temps maximal (TRET > TREAD_NEXT). A l'étape suivante 512, le procédé permet de comparer le nombre d'erreurs de rétention eR qui a été obtenu suite au décodage par l'ECC de la page, au nombre d'erreurs de rétention maximum toléré eR_NAAx. Un nombre d'erreurs de rétention eR plus grand que le nombre 10 d'erreurs de rétention maximum toléré eR_NAAx, signifie que le nombre des erreurs qui peuvent être accumulées jusqu'à la prochaine opération de lecture de la page risque de devenir non-corrigeable. Le procédé permet alors que la page soit rafraichie (étape 514). Après l'opération de rafraichissement, le procédé retourne au début. 15 Un nombre d'erreurs de rétention eR plus petit ou égal au nombre d'erreurs de rétention maximum toléré eR_NAAx, signifie qu'il n'y a pas besoin d'un rafraichissement des données, et le procédé retourne au début (branche oui). Dans une autre variante de réalisation, le coût du stockage de la 20 table, peut aussi être réduit, en tenant compte du fait que le temps de rétention restant TRET est une fonction croissante relativement à la variable d'âge de rétention TAGE, pour toute combinaison des variables ER et eNR. Il est alors possible de stocker dans la table, pour chaque combinaison de paramètres eR et eNR, un paramètre TAGE _MIN 25 correspondant à l'âge de rétention minimum pour lequel un nombre d'erreurs de rétention eR et un nombre d'erreurs de non-rétention eNR peuvent être tolérés. Ainsi, pour chaque combinaison de paramètres eR et ENR, la valeur de l'âge de rétention minimum toléré TAGE _MIN correspond au 19 plus petit âge de rétention TAGE pour lequel le temps de rétention restant TRET est plus grand que la valeur prédéfinie pour TREAD_NEXT. Cette variante permet de stocker une table en 2 dimensions indexées selon les valeurs des paramètres eR et eNR, par rapport à la 5 variante où la table stockée est en 3 dimensions indexées selon les valeurs de paramètres TAGE, ER et ENR. La figure 6 illustre un enchainement d'étapes 600 du procédé de l'invention dans la variante de réalisation avec utilisation du paramètre d'âge de rétention minimum toléré TAGE _MIN. Le procédé débute selon des 10 étapes 602 à 608 identiques aux étapes 402 à 408 du procédé de la figure 4. Elles ne sont pas de nouveau décrites. A l'étape suivante 610, le procédé permet d'obtenir un âge de rétention minimum toléré TAGE_MIN pour une page. La valeur du paramètre TAGE_MIN peut être calculée en ligne ou de manière préférentielle être 15 récupérée dans la table d'estimation de l'âge de rétention minimum toléré. A l'étape suivante 612, le procédé permet de comparer l'âge de rétention TAGE calculé à l'étape 608 à l'âge de rétention minimum toléré TAGE_MIN- Un âge de rétention TAGE plus petit que l'âge de rétention minimum 20 toléré TAGE_MIN, signifie que le nombre des erreurs qui peuvent être accumulées jusqu'à la prochaine opération de lecture de la page risque de devenir non-corrigeable. Le procédé permet alors que la page soit rafraichie (étape 614). Après l'opération de rafraichissement, le procédé retourne au début. 25 Un âge de rétention TAGE plus grand ou égal à l'âge de rétention minimum toléré TAGE_MIN, signifie qu'il n'y a pas besoin d'un rafraichissement des données, et le procédé retourne au début (branche oui).Ainsi, la présente description illustre une implémentation 20 préférentielle de l'invention, mais n'est pas limitative. Des exemples sont choisis pour permettre une bonne compréhension des principes de l'invention et une application concrète, mais ne sont en rien exhaustifs et doivent permettre à l'homme du métier d'apporter des modifications et 5 des variantes d'implémentation en conservant les mêmes principes. L'invention peut s'implémenter à partir d'éléments matériel et/ou logiciel. Elle peut être disponible en tant que produit programme d'ordinateur exécuté par un processeur dédié ou par un contrôleur mémoire d'un système de stockage, REVENDICATIONS1. Procédé pour contrôler le rafraichissement de données dans des mémoires non-volatiles reprogrammables, lesdites mémoires comprenant une pluralité de pages mémoire pour stocker des données, le procédé comprenant les étapes suivantes : - calculer le nombre d'erreurs de rétention et d'erreurs de non-rétention dans au moins une page mémoire; - calculer l'âge de rétention de ladite au moins une page mémoire ; - estimer le temps de rétention restant pour ladite page en fonction des paramètres précédemment calculés ; et - déterminer si la page doit être rafraichie ou non en fonction de la valeur estimée du temps de rétention restant. 2. Le procédé selon la revendication 1 dans lequel l'étape de détermination du rafraichissement de la page consiste à comparer la valeur estimée du temps de rétention restant à une valeur prédéfinie, ladite valeur prédéfinie correspondant à un intervalle de temps maximum jusqu'au prochain accès à ladite page, et à rafraichir la page si le temps de rétention restant est plus petit que la valeur prédéfinie. 3. Le procédé selon la revendication 1 ou 2 dans lequel l'étape d'estimation du temps de rétention restant comprend au moins une étape consistant à utiliser une loi statistique avec les paramètres de nombre d'erreurs de rétention, de nombre d'erreurs de non-rétention et d'âge de rétention. 22 4. Le procédé selon la revendication 3 dans lequel la loi statistique est la loi du khi-carré x2. 5 5. Le procédé selon l'une quelconque des revendications 1 à 4 dans lequel l'étape d'estimation du temps de rétention restant comprend au moins une étape consistant à obtenir une valeur d'un nombre d'erreurs de rétention maximum toléré pour ladite page, et l'étape de détermination du rafraichissement comprend 10 au moins une étape consistant à comparer le nombre d'erreurs de rétention maximum toléré au nombre d'erreurs de rétention calculé et à rafraichir la page si le nombre d'erreurs de rétention calculé est supérieur au nombre d'erreurs de rétention maximum toléré. 15 6. Le procédé selon la revendication 5 dans lequel le nombre d'erreurs de rétention maximum toléré correspond à la plus grande valeur du nombre d'erreurs de rétention pour laquelle le temps de rétention restant est plus grand que ladite valeur 20 prédéfinie. 7. Le procédé selon l'une quelconque des revendications 1 à 4 dans lequel l'étape d'estimation du temps de rétention restant comprend au moins une étape consistant à obtenir une valeur 25 d'un âge de rétention minimum toléré pour ladite page, et l'étape de détermination du rafraichissement comprend au moins une étape consistant à comparer l'âge de rétention minimum toléré à l'âge de rétention calculé et à rafraichir la page si l'âge de rétention calculé est inférieur à l'âge de rétention minimum toléré. 23 8. Le procédé selon la revendication 7 dans lequel l'âge de rétention minimum toléré correspond au plus petit âge de rétention pour lequel le temps de rétention restant est plus grand 5 que ladite valeur prédéfinie. 9. Le procédé selon l'une quelconque des revendications 1 à 8 dans lequel l'étape d'estimation du temps de rétention restant comprend au moins une étape consistant à lire une table de 10 valeurs précalculées pour des combinaisons de paramètres de nombre d'erreurs de rétention, de nombre d'erreurs de non-rétention et d'âge de rétention, et consistant à sélectionner une valeur stockée pour le nombre d'erreurs de rétention, le nombre d'erreurs de non-rétention et l'âge de rétention calculés pour 15 ladite page. 10. Le procédé selon la revendication 9 dans lequel la valeur sélectionnée est un temps de rétention restant. 20 11. Le procédé selon la revendication 9 dans lequel la valeur sélectionnée est un nombre d'erreur de rétention maximum toléré. 12. Le procédé selon la revendication 9 dans lequel la valeur 25 sélectionnée est un âge de rétention minimum toléré. 13. Le procédé selon la revendication 9 dans lequel la table de valeurs précalculées contient des valeurs binaires 24 représentatives de résultats de la comparaison de temps de rétention restant avec ladite valeur prédéfinie, ou de résultats de la comparaison de nombre d'erreurs de rétention avec le nombre d'erreurs de rétention maximum toléré, ou de résultats de la 5 comparaison d'âge de rétention avec l'âge de rétention minimum toléré. 14. Le procédé selon l'une quelconque des revendications 1 à 13 dans lequel l'étape de calculer l'âge de rétention de ladite au 10 moins une page mémoire consiste à lire une étiquette de temps associée à ladite page et à faire la différence entre l'état d'un compteur ayant fourni des étiquettes de temps aux pages mémoire et l'étiquette de temps lue. 15 15. Le procédé selon l'une quelconque des revendications 1 à 14 dans lequel l'étape de calculer le nombre d'erreurs de rétention et le nombre d'erreurs de non-rétention comprend au moins des étapes consistant à détecter les erreurs dans ladite page, corriger les erreurs selon la capacité d'un code correcteur 20 d'erreur et à déterminer les erreurs de non-rétention en comparant les valeurs lues et les valeurs corrigées. 16. Un dispositif pour contrôler le rafraichissement de données dans des mémoires non-volatiles reprogrammables, lesdites mémoires 25 comprenant une pluralité de pages mémoire pour stocker des données, le dispositif comprenant : - un circuit apte à calculer le nombre d'erreurs de rétention et d'erreurs de non-rétention dans au moins une page mémoire; 25 - un circuit apte à calculer l'âge de rétention de ladite au moins une page mémoire ; - un circuit apte à estimer le temps de rétention restant pour ladite page en fonction des paramètres précédemment 5 calculés ; et - un circuit apte à déterminer si la page doit être rafraichie ou non en fonction de la valeur estimée du temps de rétention restant. 10 17. Le dispositif selon la revendication 16 comprenant de plus un circuit apte à rafraichir ladite page. 18. Le dispositif selon la revendication 16 ou 17 comprenant des moyens pour mettre en oeuvre le procédé selon l'une quelconque 15 des revendications 2 à 15. 19. Un système de stockage de données comprenant au moins une mémoire non-volatile reprogrammable ayant une pluralité de pages mémoire pour stocker des données, et au moins un 20 dispositif pour contrôler le rafraichissement de données dans ladite au moins une mémoire non-volatile reprogrammable, ledit au moins un dispositif comprenant des moyens pour mettre en oeuvre les étapes du procédé selon l'une quelconque des revendications 1 à 15. 25 20. Le système stockage de données selon la revendication 16 dans lequel ledit au moins un dispositif comprenant des moyens pour mettre en oeuvre les étapes du procédé selon l'une quelconque des revendications 1 à 15 est intégré à un contrôleur apte à 26 gérer les opérations de lecture et écriture de la pluralité des pages. 21. Programme d'ordinateur comportant des instructions pour 5 l'exécution du procédé pour contrôler le rafraichissement de données dans des mémoires non-volatiles reprogrammables selon l'une quelconque des revendications 1 à 15, lorsque le programme est exécuté par un processeur. 10 22. Support d'enregistrement lisible par un processeur sur lequel est enregistré un programme comportant des instructions pour l'exécution du procédé pour contrôler le rafraichissement de données dans des mémoires non-volatiles reprogrammables selon l'une quelconque des revendications 1 à 15, lorsque le 15 programme est exécuté par le processeur. 20