FR3051575A1 - Gestion de l'effacement dans une memoire flash - Google Patents

Gestion de l'effacement dans une memoire flash Download PDF

Info

Publication number
FR3051575A1
FR3051575A1 FR1654492A FR1654492A FR3051575A1 FR 3051575 A1 FR3051575 A1 FR 3051575A1 FR 1654492 A FR1654492 A FR 1654492A FR 1654492 A FR1654492 A FR 1654492A FR 3051575 A1 FR3051575 A1 FR 3051575A1
Authority
FR
France
Prior art keywords
page
block
data
pages
memory
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.)
Withdrawn
Application number
FR1654492A
Other languages
English (en)
Inventor
Michel Dawirs
Jean-Louis Modave
Michael Peeters
Guillaume Docquier
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Proton World International NV
Original Assignee
Proton World International NV
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Proton World International NV filed Critical Proton World International NV
Priority to FR1654492A priority Critical patent/FR3051575A1/fr
Publication of FR3051575A1 publication Critical patent/FR3051575A1/fr
Withdrawn legal-status Critical Current

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/0223User address space allocation, e.g. contiguous or non contiguous base addressing
    • G06F12/023Free address space management
    • G06F12/0238Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory
    • G06F12/0246Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory in block erasable memory, e.g. flash memory
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/72Details relating to flash memory management
    • G06F2212/7204Capacity control, e.g. partitioning, end-of-life degradation
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/72Details relating to flash memory management
    • G06F2212/7205Cleaning, compaction, garbage collection, erase control
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/72Details relating to flash memory management
    • G06F2212/7207Details relating to flash memory management management of metadata or control data

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
  • Techniques For Improving Reliability Of Storages (AREA)

Abstract

L'invention concerne un procédé de gestion d'une mémoire flash, dans lequel : la mémoire est organisée en pages (P1) ; et chaque page contient un mot de métadonnées (PMD1(6)) destiné à stoker un nombre d'effacements de la page.

Description

GESTION DE L'EFFACEMENT DANS UNE MEMDIEE FLASH
Domaine
La présente description concerne de façon générale les circuits électroniques et, plus particulièrement, les circuits exploitant une mémoire flash. La présente description vise plus particulièrement la gestion d'une mémoire flash.
Exposé de l'art antérieur
Les mémoires flash sont de plus en plus utilisées dans des microcontrôleurs pour stocker de façon non volatile des informations.
Le stockage de données dans une mémoire flash présente diverses contraintes temporelles liées à la granularité des opérations réalisées, l'écriture s'effectuant par mot (par exemple, par mot de quatre octets) tandis que l'effacement s'effectue par page de plusieurs mots (quelques dizaines à quelques centaines de mots).
Dans certaines applications, on souhaite s'assurer que les transactions réalisées et stockées respectent un critère d'atomicité. L'atomicité d'une transaction correspond à s'assurer que des données stockées en mémoire présentent bien un état exploitable et intègre. Cela revient à s'assurer que des données en mémoire non volatile présentent soit l'état avant la transaction soit l'état après la transaction concernée mais qu'elles ne présentent pas un état intermédiaire.
La gestion de l'atomicité des transactions est particulièrement utilisée dans des applications où une interruption de l'alimentation du circuit ou l'apparition d'une perturbation accidentelle ou volontaire peut engendrer le stockage de données dans un état les rendant soit inexploitables par la suite soit vulnérables du point de \me de la confidentialité ou de leur intégrité. Par exemple, dans le domaine des cartes à microcircuit, on souhaite s'assurer qu'en cas d'arrachement (tearing) volontaire ou accidentel d'une carte du lecteur dans laquelle elle se trouve, les informations contenues dans une mémoire flash de la carte soient fiables. Dans un circuit intégrant un module de sécurité, l'équivalent de l'arrachement correspond à une coupure de l'alimentation du circuit. Résumé
Il existe un besoin d'améliorer la gestion du stockage d'informations dans une mémoire flash, en particulier pour préserver le caractère atomique de certaines transactions impliquant une mise à jour de données dans la mémoire flash.
Un mode de réalisation pallie tout ou partie des inconvénients des techniques connues de gestion d'une mémoire flash.
Un mode de réalisation d'un premier aspect facilite la gestion d'atomicité des transactions dans une mémoire flash.
Un mode de réalisation d'un deuxième aspect équilibre l'effacement des pages d'une mémoire flash.
Ainsi, un mode de réalisation du premier aspect prévoit un procédé de gestion d'une mémoire flash, dans lequel : les données à stocker sont organisées en blocs logiques ; la mémoire est divisée en pages / chaque page est divisée en trames, chaque trame pouvant contenir au moins un bloc de données et au moins deux mots de métadonnées de trame / chaque page comporte au moins un mot de métadonnées de page qui contient, lorsqu'une page est écrite, une valeur d'un compteur de nombre de pages écrites / une écriture d'un bloc logique dans la mémoire s'accompagne d'une programmation d'un premier mot de métadonnées de trame avec un identifiant de ce bloc logique ; et la page dans laquelle procéder à l'écriture est choisie comme étant celle dont le premier mot de métadonnées contient la valeur maximum du compteur de pages écrites parmi toutes les pages.
Selon un mode de réalisation, les trames sont écrites séquentiellement dans une page.
Selon un mode de réalisation, le premier mot de métadonnées de trame contient également une valeur représentative d'un code de contrôle d'erreur calculé au moins à partir du bloc de données de la trame.
Selon un mode de réalisation, lors de l'écriture d'une trame, un deuxième mot de métadonnées de trame est écrit en premier avec une valeur, indépendante du contenu de la donnée à écrire et qui est toujours la même pour une trame donnée.
Selon un mode de réalisation, ledit deuxième mot de métadonnées a une valeur fixe pour toutes les trames de la mémoire.
Selon un mode de réalisation, ledit premier mot de métadonnées de page est écrit avant écriture d'une première trame dans la page.
Selon un mode de réalisation, une lecture d'un bloc de données logique comporte les étapes de : rechercher la dernière trame écrite dont l'identifiant de bloc correspond à celui du bloc logique ; vérifier que l'écriture des données dans cette dernière trame respecte un code de contrôle d'erreur et, si ce n'est pas le cas, rechercher la précédente trame écrite dont l'identifiant de bloc correspond à celui du bloc de données logique jusqu'à avoir parcouru toutes les pages.
Selon un mode de réalisation, un circuit de gestion de la mémoire effectue, à chaque démarrage, une vérification d'atomicité de la dernière trame écrite.
Selon un mode de réalisation, en cas de défaut d'atomicité, toutes les trames valides de la page courante sont transférées dans une page disponible et la page courante est effacée.
Selon un mode de réalisation, ladite page disponible est une page dédiée.
Un mode de réalisation de ce premier aspect prévoit également une mémoire flash, programmée conformément au procédé ci-dessus.
Un mode de réalisation de ce premier aspect prévoit également un circuit électronique comportant une mémoire flash.
Un mode de réalisation du deuxième aspect prévoit un procédé de gestion d'une mémoire flash, dans lequel : la mémoire est organisée en pages ; et chaque page contient un mot de métadonnées destiné à stoker un nombre d'effacements de la page.
Selon un mode de réalisation, la sélection d'une page à effacer pour libérer de l'espace s'effectue en fonction du nombre d'effacements subis par les différentes pages afin d'uniformiser le nombre d'effacement subis par chaque page.
Selon un mode de réalisation : les données à stocker sont organisées en blocs logiques ; la mémoire est divisée en pages ; chaque page est divisée en trames, chaque trame pouvant contenir au moins un bloc de données et au moins deux mots de métadonnées de trame ; chaque page comporte au moins un mot de métadonnées de page qui contient, lorsqu'une page est écrite, une valeur d'un compteur de nombre de pages écrites ; une écriture d'un bloc logique dans la mémoire s'accompagne d'une programmation d'un premier mot de métadonnées de trame avec un identifiant de ce bloc logique / et la page dans laquelle procéder à l'écriture est choisie comme étant celle dont le premier mot de métadonnées contient la valeur maximum du compteur de pages écrites parmi toutes les pages.
Un mode de réalisation de ce deuxième aspect prévoit également une mémoire flash, programmée conformément au procédé ci-dessus.
Un mode de réalisation de ce deuxième aspect prévoit également un circuit électronique comportant une mémoire flash telle que ci-dessus.
Brève description des dessins
Ces caractéristiques et avantages, ainsi que d'autres, seront exposés en détail dans la description suivante de modes de réalisation particuliers faite à titre non limitatif en relation avec les figures jointes parmi lesquelles : la figure 1 représente, de façon très schématique et sous forme de blocs, un mode de réalisation d'un circuit électronique du type auquel d'appliquent, à titre d'exemple, les modes de réalisation qui vont être décrits ; la figure 2 illustre un mode de réalisation d'une organisation logique de données à stocker dans une mémoire flash ; la figure 3 illustre un mode de réalisation d'une organisation physique de données dans une mémoire flash ; la figure 4 illustre, de façon très schématique, un mode de réalisation d'une structure de trame de la mémoire de la figure 3 / la figure 5 est un schéma-blocs illustrant un mode de réalisation d'une écriture d'une donnée dans la mémoire / la figure 6 est un schéma-blocs illustrant un mode de réalisation d'une préparation d'une page suivante pour écriture quand une page courante est pleine / la figure 7 est un schéma-blocs illustrant un mode de réalisation d'une lecture d'une donnée dans la mémoire ; la figure 8 est un schéma-blocs illustrant un mode de réalisation d'une récupération d'atomicité au niveau d'une page ; et la figure 9 est un schéma-blocs illustrant un mode de réalisation d'une sélection d'une page à effacer selon le deuxième aspect.
Description détaillée
De mêmes éléments ont été désignés par de mêmes références aux différentes figures.
Par souci de clarté, seuls les étapes et éléments utiles à la compréhension des modes de réalisation qui vont être décrits ont été représentés et seront détaillés. En particulier, le fonctionnement électrique d'une mémoire flash lors des étapes d'écriture, de lecture et d'effacement n'a pas été détaillé, les modes de réalisation décrits étant compatibles avec les technologies usuelles des mémoires flash. De plus, les applications utilisant une gestion d'atomicité n'ont pas non plus été détaillées, les modes de réalisation décrits étant, là encore, compatibles avec les applications usuelles.
La figure 1 représente, de façon très schématique et sous forme de blocs, un mode de réalisation d'un circuit électronique 1 du type auquel d'appliquent, à titre d'exemple, les modes de réalisation qui vont être décrits.
Le circuit 1 comporte : une unité de traitement 11 (PU), par exemple une machine d'états, un microprocesseur, un circuit logique programmable, etc. ; une ou plusieurs zones 12 (RAM) de stockage volatil, par exemple de type mémoire RAM ou registres, pour stocker temporairement des informations (instructions, adresses, données) pendant les traitements / une ou plusieurs zones de stockage non volatil, dont au moins une mémoire 2 de type flash (FLASH) pour stocker des informations de façon durable et en particulier quand le circuit n'est pas alimenté ; un ou plusieurs bus 14 de données, d'adresses et/ou de commandes entre les différents éléments internes au circuit 1 ; et une interface d'entrée-sortie 15 (I/O) de communication, par exemple de type bus série, avec l'extérieur du circuit 1.
Le cas échéant, le circuit 1 intègre également un circuit 16 de communication sans contact (CLF - ContactLess Front-end) , de type communication en champ proche (Near Field Communication - NFC).
Par ailleurs, le circuit 1 peut intégrer d'autres fonctions, symbolisées par un bloc 17 (FCT), selon l'application, par exemple, un crypto-processeur, d'autres interfaces, d'autres mémoires, etc.
La gestion de 1 ' atomicité des transactions dans un circuit équipé d'une mémoire flash est particulière car la mémoire flash de présente pas la même granularité de traitement selon le type d'opération. En particulier, l'écriture s'effectue par mot (d'un octet ou de quelques octets) tandis que l'effacement s'effectue par page. La taille d'un mot correspond généralement à la taille d'un registre recevant les données en série pour les transférer en parallèle au plan mémoire pour écriture. Une page est définie comme la taille minimale susceptible d'être adressée simultanément pour effacement. Typiquement, une page représente, dans une mémoire flash, 64, 128, 256, 512 ou 1024 octets.
Une mémoire flash se programme, à partir d'un état initial, désigné arbitrairement 1, vers des états 0 (états non conducteurs des cellules). Cela signifie que les cellules de la mémoire doivent être initialisées à un état haut (effacement) et que, pour stocker une donnée (écriture), on intervient (programmation à 0) ou pas (état du bit à 1) sur les états des bits par mot de données.
Afin de garantir l'atomicité des transactions, le stockage en mémoire flash d'une donnée ne doit être considéré comme valide qu'une fois que la transaction est terminée et que les données sont dites stables. En pratique, les procédés de gestion d'atomicité activent un indicateur de traitement d'une donnée lorsque celle-ci est extraite de la mémoire non volatile, puis organisent le stockage de la donnée mise à jour, une fois le traitement terminé, l'indicateur de traitement changeant alors d'état. L'atomicité peut concerner une quantité plus ou moins importante de données selon la nature de la transaction.
Le caractère atomique des transactions est particulièrement important dans le cas de transactions de type bancaire (paiement par exemple) où il est nécessaire de s'assurer que 1'information stockée dans la mémoire flash, par exemple le solde d'un porte-monnaie électronique ou d'une autorisation d'achat, ou l'identifiant validant une transaction, est stocké de façon fiable. Généralement pour garantir l'atomicité d'une transaction, on utilise des espaces de stockage temporaire (Buffer) d'atomicité qui sont mis à jour avec les informations initiales, puis finales, pour transfert dans la mémoire non volatile principale.
Toutefois, dans le cas d'une mémoire flash, une difficulté réside dans la procédure d'effacement en raison de sa granularité par page qui est relativement longue par rapport à l'opération d'écriture par mot. En particulier, il existe un besoin d'indiquer qu'une page effacée est stable, c'est-à-dire qu'elle a pu être effacée intégralement. Autrement, on introduit une faiblesse dans la sécurité des données. Par ailleurs, en cas de besoin d'effacement d'une page avec transfert de données dans une nouvelle page, ce transfert peut rendre instable des données stables présentes dans la page à effacer. Cela se produit plus particulièrement avec des pages de grande taille (par exemple de l'ordre d'une centaine de mots voire plus) car elles sont plus susceptibles de contenir des données anciennes considérées comme stables et qu'il faut transférer dans une nouvelle page.
Dans les applications sans contact, les transactions doivent être effectuées très rapidement en raison du caractère fugace de la communication qui est lié à la durée pendant laquelle le circuit 1 peut communiquer avec un terminal. Or, la gestion de l'atomicité des transactions en utilisant des tampons en mémoire flash prend du temps, en raison des opérations d'effacement qui sont nécessaires pour autoriser une programmation.
Selon les modes de réalisation qui vont être décrits, on prévoit d'organiser de façon particulière le stockage des données dans la mémoire.
La figure 2 illustre un mode de réalisation d'une organisation logique de données à stocker dans une mémoire flash. En d'autres termes, cette figure illustre la façon dont sont gérées les données par l'unité de traitement 11 et les différentes entités du circuit 1 de la figure 1 pour stockage dans la mémoire flash. On fait référence par la suite a un circuit de gestion de la mémoire chargé d'organiser son adressage, l'écriture, la lecture et l'effacement ainsi que la conversion d'adresses logiques en adresses physiques. Ce circuit ou unité de gestion, est un circuit programmé selon la mise en oeuvre du procédé décrit et est le cas échéant l'unité de traitement.
Selon ce mode de réalisation, l'ensemble des données représentant la capacité de stockage de la mémoire flash est vu comme un seul réseau 2V de données en blocs Bl, B2, etc. et chaque bloc Bi contient un même nombre de mots W. Dans l'exemple représenté en figure 2, on suppose que chaque bloc de donnée Bi contient quatre mots Wl, W2, W3 et W4. La taille d'un mot correspond à la granularité d'écriture dans la mémoire flash, soit en pratique de un à quelques octets (par exemple quatre). Toutefois, il s'agit d'un exemple arbitraire et tout autre nombre d'un ou plusieurs octets peut constituer un mot et tout autre nombre d'un ou plusieurs mots peut constituer un bloc. Ainsi, le découpage logique de la mémoire flash n'est pas effectué par page mais par bloc B dont la taille est indépendante de la taille des pages.
Une donnée A à stocker dans la mémoire 2 comporte un nombre d'octets arbitraire, indépendant de la taille d'un bloc. D'un point de vue logique, c'est-à-dire pour l'unité de traitement 11, une donnée est définie par une longueur L(A) , c'est-à-dire un nombre d'octets et sa position dans le réseau 2V de blocs Bi par un offset 0(A), c'est-à-dire un décalage par rapport au début du réseau 2V.
La figure 3 illustre un mode de réalisation d'une organisation physique de données dans une mémoire flash.
La transition entre l'organisation logique (figure 2) et l'organisation physique du stockage des données est transparente pour l'unité de traitement 11 et les autres circuits accédant à la mémoire. L'unité de gestion de la mémoire 2 convertit des adresses virtuelles fournies par les différentes entités en des adresses physiques. Par ailleurs, pour gérer l'atomicité, l'unité de gestion génère des métadonnées qui sont stockées également dans la mémoire 2.
Afin de respecter la contrainte d'effacement, la mémoire est physiquement organisée en pages P, représentant la granularité d'effacement. La mémoire est donc divisée en r pages P de tailles identiques. Chaque page comporte un même nombre de mots, constituant la granularité d'écriture (et de lecture). Les pages sont, de préférence, divisées en deux catégories.
Une première catégorie comporte des pages PI divisées en n trames Fj comportant chacune plusieurs mots de données (ensemble DBj ) et un même nombre de mots FMDj de métadonnées de trame (de un à quelques-uns, par exemple deux). Par exemple, toutes les trames comportent un même nombre de mots de données. Chaque page PI comporte en outre un nombre m (quelques-uns à quelques dizaines) de mots de métadonnées de page PMDl(k) indépendant des trames. Le nombre de mots de données de chaque trame correspond, de préférence, à un multiple entier (au moins 1) du nombre de mots de données de chaque bloc DB de l'organisation virtuelle de la mémoire. Ainsi, une trame Fj contient un bloc de donnée DBj et des métadonnées de trame EMDj . En figure 3, on a illustré, pour chaque trame, le bloc DBj suivi des métadonnées FMDj. Toutefois, de préférence et comme on le verra par la suite, une partie des métadonnées est écrite au début de la trame Fj.
Une deuxième catégorie de pages, en nombre nettement plus réduit que le nombre de pages PI de la première catégorie, ne contient que des mots de métadonnées de mémoire MMDh.
De préférence, la deuxième catégorie ne comporte qu'une page Pr et la première catégorie comporte donc r-1 pages PI.
En variante, on ne prévoit que des pages de la première catégorie.
Selon un mode de réalisation particulier, une page contient 1024 octets. On prévoit, r-1 pages PI de la première catégorie contenant chacune 25 trames de 10 mots chacune et 6 mots de métadonnées PMDl de page. Chaque trame Fj contient un bloc DBj, de huit mots W de données, et deux mots de métadonnées de trame FMDj. Selon ce mode de réalisation particulier, chaque trame peut donc contenir deux blocs logiques Bi. Par ailleurs, on prévoit une seule page Pr de mots MMDh de métadonnées de mémoire.
Il s'agit d'un exemple particulier et d'autres granularités peuvent être prévues pourvu que tous les mots aient la même taille, représentant la granularité d'écriture dans la mémoire. En particulier, on peut prévoir des blocs logiques Bi de taille (nombre de mots) variable qui sont alors susceptibles d'être répartis dans plusieurs blocs DBj dans plusieurs trames.
Les métadonnées de trame FMDj contiennent au moins un mot FCONST (de préférence un seul mot FMDj (1) ) de valeur fixe, identique quelle que soit la valeur des données contenues dans le bloc DBj et au moins un mot (de préférence un seul mot FMDj (2) ) contenant le ou les numéros (identifiant (s) i) du ou des blocs virtuels Bi écrits dans le bloc réel DBj. Le mot EMDj(2) contient également un indicateur FW d'état (fin d'écriture) du bloc DBj et un code de contrôle d'erreur de type CRC, signature ou autre. Les métadonnées de trames servent à l'atomicité de trame, c'est-à-dire indiquent si le bloc DBj contenu dans la trame est stable ou non.
La figure 4 illustre, de façon très schématique, un mode de réalisation d'une structure 4 de trame Fj en supposant deux mots de métadonnées EMDj.
Selon ce mode de réalisation, on écrit en premier le mot de métadonnées EMDj(1) de valeur fixe FCONST, puis les mots de la donnée A et enfin le mot de métadonnées FMDj (2) . Le code CRC contenu dans le mot EMDj (2) est, de préférence, un CRC du mot EMDj (1) et du bloc DBj. Grâce à l'utilisation d'une valeur fixe pour le mot EMDj(1) , on sera en mesure de s'assurer qu'il n'y a pas eu d'arrachement ou d'attaque au début de l'écriture de la trame, par exemple une tentative de modification du contenu du bloc DBj lors d'une attaque. La valeur est fixe, c'est-à-dire est la même pour une trame donnée, mais peut varier d'une trame à une autre. De préférence, par facilité, la valeur est la même pour toutes les trames de la mémoire.
Selon le premier aspect, les métadonnées de page PMDl contiennent un mot PMDl(l) indicateur que la page a commencé à être écrite et qu'elle n'est plus vierge, de préférence mais optionnellement un mot PMDl(2) indicateur que la page est pleine, un mot PMDl(3) indicateur que la page suivante est effacée (donc vierge), un mot PMDl (4) indicateur du fait que la page est obsolète, c'est-à-dire qu'aucune des trames ne contient un bloc encore utile (en d'autres ternes, que tous les blocs de cette page ont déjà été modifiés dans d'autres pages ultérieurement) et un mot PMDl(5) contenant un numéro d'ordre de la page, c'est-à-dire la valeur d'un compteur PWN de nombre de pages écrites. Les métadonnées de page selon ce premier aspect servent à indiquer le basculement d'une page à une autre et à permettre une récupération d'atomicité au démarrage ou réinitialisation du circuit. Les mots ne sont pas nécessairement physiquement dans cet ordre dans la page.
Selon le deuxième aspect de la description, les métadonnées de page contiennent en outre, ou à la place du mot PMDl (3) indicateur que la page a été effacée, un mot PMD(6) indicateur du nombre d'effacements qu'a subie la page.
Le seul lien entre les tailles logiques et l'organisation physique de la mémoire est que tous les mots ont la même taille. On rappelle que, lorsqu'un mot est vierge (effacé), tous ses bits sont dans un premier état (désigné haut ou 1) . La programmation d'un mot pour y stocker une valeur consiste à sélectionner les bits des octets du mot qui doivent changer d'état et être écrits (basculer vers l'état bas ou 0). La programmation d'un drapeau ou indicateur consiste à programmer le bit ou les bits de l'octet à l'état correspondant à l'état bas. On rappelle également qu'une fois écrit ou programmé à l'état 0, le contenu du mot ne peut pas être modifié sauf à effacer la page entière et à la reprogrammer. L'écriture des données dans la mémoire s'effectue bloc par bloc au fur et à mesure qu'ils sont reçus et successivement dans chaque page. Ainsi, en cas d'écritures successives d'un même bloc logique (par exemple, la valeur d'un compteur), ce même bloc de données Bi peut se retrouver écrit plusieurs fois dans la mémoire avec différentes valeurs au fur et à mesure des écritures. Cela participe à la résolution du problème d'atomicité dans la mesure où, à partir du moment où une donnée A aura été écrite une fois avec une première valeur, on pourra toujours, lors des écritures ultérieures, revenir à la valeur précédente représentant l'état stable en cas de problème d'écriture de la valeur courante.
Par contre, coté mémoire logique 2V, une même donnée A est toujours "stockée" dans le même bloc Bi (ou les mêmes blocs). Ainsi, l'identifiant i (l'adresse) du bloc Bi dans la mémoire logique permet de retrouver le ou les blocs physique DBj de la mémoire 2 contenant la donnée A (contenant les valeurs successives de la donnée A) .
Pour simplifier, on expose par la suite le fonctionnement en supposant arbitrairement que la donnée A que l'on considère occupe un et un seul bloc Bi et que les blocs DBj ont la taille d'un bloc Bi. Toutefois, tout ce qui est décrit s ' applique plus généralement au cas pratique où une donnée A peut occuper plusieurs blocs ou une partie de bloc et à des tailles différentes des blocs Bi et DBj.
La figure 5 est un schéma-blocs illustrant un mode de réalisation d'une écriture d'une donnée A dans la mémoire 2. A partir de la longueur L(A) et de l'offset 0 (A) de la donnée A dans le réseau virtuel 2V (figure 2), le circuit de gestion de la mémoire détermine (bloc 51, i = f (L (A) , 0 (A) ) ) l'identifiant i du bloc DBi contenant cette donnée.
Puis, on sélectionne (bloc 52, SELECT 1(MAX(PWN))) la page PI ayant le nombre de pages écrites PWN le plus élevé en parcourant (en lisant) les mots correspondants PMD1(5) des métadonnées de page.
Puis, on identifie (bloc 53, SELECT j), la première trame Fj disponible séquentiellement dans la page PI. Cette sélection s'effectue, par exemple, en parcourant les trames successivement jusqu'à la première dont le mot EMDj(1) destiné à la valeur fixe FCONST n'est pas programmé. En variante, on lit le deuxième mot EMDj (2) de métadonnées et on sélectionne la première trame dont l'indicateur EW de fin d'écriture FMDj est à l'état 1 ou dont l'identifiant de bloc i n'est pas programmé. On suppose dans cet exemple qu'une nouvelle page est ouverte à la fin de l'écriture de la dernière trame d'une page. Par conséquent on trouve forcément une trame disponible à l'étape 53.
En variante, si aucune trame n'est libre, cela signifie que la page est pleine. On exécute alors une sous-routine d'ouverture d'une nouvelle page. Cette sous-routine sera exposée plus loin en relation avec la figure 6.
Une fois que la trame Fj est sélectionnée, on commence par écrire (bloc 54, FCONST -> EMDj (1) ) , dans la trame Fj, le premier mot FMDj (1) de métadonnées fixe (il s'agit en fait du premier mot écrit logiquement. Physiquement, les mots peuvent être dans un ordre différent dans la trame) . On écrit ensuite (bloc 55, A -> DBj) la donnée A dans le bloc DBj, puis on écrit (bloc 56, (i, FW, CRC) -> EMDj(2)) le deuxième mot EMDj(2) de métadonnées avec l'identifiant i, l'indicateur FW de fin d'écriture et le CRC des premiers mots (BMDj (1) et DBj ) de la trame.
On vérifie alors si la page est pleine, c'est-à-dire s'il existe une trame Fj disponible pour la prochaine écriture (bloc 57, EXIST NEXT j ?). Dans l'affirmative (sortie Y du bloc 57), l'écriture est terminée (bloc 58, END). Dans le cas où une donnée A peut représenter plusieurs blocs DBi, on revient à l'étape 53 pour écrire dans la trame suivante. Dans un cas plus général ou les trames sont de taille variable et où l'espace disponible en fin de page n'est pas suffisant pour stocker la trame qui suit, soit on laisse un espace vide, soit on coupe la trame en deux et on stocke une partie sur la page courante et une partie dans la page suivante.
Dans la négative (sortie N du bloc 57), c'est-à-dire s'il n'y a plus de trame disponible, on prépare une page suivante pour la prochaine écriture (bloc 6, NEXT 1). Pour simplifier, on considère le cas où l'on prépare la page suivante (index 1 incrémenté d'une unité) mais on peut plus généralement prévoir de lier plusieurs pages ensemble afin d'accélérer la vitesse d'écriture de plusieurs blocs sans effacement intermédiaire. Dans ce cas, on prévoit de sauter une ou plusieurs pages quand une page est pleine.
La figure 6 est un schéma-blocs illustrant un mode de réalisation d'une préparation d'une page suivante pour écriture quand une page courante est pleine.
On commence (bloc 61, 1 -> PMD1(2)) par fermer la page courante, c'est-à-dire par programmer son mot de métadonnées PMD1(2) de fin de page ou de page pleine. Puis (bloc 62, SELECT NEXT 1), on sélectionne la prochaine page PI disponible, c'est-à-dire obsolète. La valeur du nombre de pages écrites, incrémentée de 1, est alors programmée (bloc 63, PWN+1 -> PMDl (5) ) dans le mot correspondant PMDl(5) de métadonnées de page et on programme également (bloc 64, 1 -> PMDl(l)) l'indicateur d'ouverture de page.
Avec un tel processus d'écriture dans la mémoire 2, on est en mesure, en lecture, de retrouver la dernière transaction atomique pour chaque donnée.
La figure 7 illustre, sous forme de schéma-blocs, un mode de réalisation d'une lecture d'une donnée A dans la mémoire 2. A partir de la longueur L(A) et de l'offset 0(A) de la donnée A dans le réseau virtuel 2V, le circuit de gestion de la mémoire détermine (bloc 71, i = f(L (A), 0(A) )) l'identifiant i du bloc Bi contenant cette donnée. La lecture dans la mémoire s'effectue en parcourant les trames Fj à partir de la dernière trame écrite de la dernière page écrite en recherchant dans quel bloc DBj se trouve le bloc Bi, par son identifiant i. En pratique, on parcourt (bloc 72, SEARCH i in FMDj (2) ) , en remontant la mémoire 2 depuis la page possédant le nombre de pages écrites PWN le plus élevé dans son mot de métadonnées PMD1(5) et, par page, depuis la dernière trame écrite de la page. On s'arrête à la première occurrence de l'identifiant i dans un deuxième mot FMDj(2) de métadonnées de trame.
Une fois la trame trouvée, on vérifie alors (bloc 73, FW OK ?) l'indicateur d'état FW qui indique si l'écriture de la trame s'est teminée sans arrachement indiquant, en principe, si les données sont stables ou non.
Si l'indicateur d'état n'est pas valide (sortie N du bloc 73), on remonte alors les trames (bloc 72) jusqu'à celle contenant la version précédente du bloc de données DBj.
Si l'indicateur d'état est valide (sortie Y du bloc 73), on vérifie (bloc 74, CRC OK ?) le code d'erreur en recalculant un CRC sur les données présentes dans le premier mot de métadonnées FMDj(1) et dans le bloc de données (DB(j)).
Si le code calculé est identique au code stocké (sortie Y du bloc 74) , le bloc de données DBj est valide et la lecture fournit (bloc 75, RETURN A=DBj) la valeur du bloc DBj comme étant la donnée A, donc comme contenu du bloc virtuel Bi.
Si le code CRC n'est pas confirmé (sortie N du bloc 74), cela signifie que les données ne sont pas fiables. On remonte alors la mémoire (bloc 72) afin de trouver la précédente écriture de la donnée, ce qui revient à rechercher la dernière transaction atomique.
En variante, lorsque l'on identifie une trame dont le CRC est erroné (sortie N du bloc 74), on commence par écrire dans le deuxième mot de métadonnées FiynDj (2) , un indicateur que la trame est polluée. Cela gagne un peu de temps lors de la prochaine lecture de la donnée A car cela évite de recalculer le CRC avant de remonter à 1'occurrence précédente.
La figure 8 est un schéma-blocs illustrant un mode de réalisation d'une récupération d'atomicité au niveau d'une page.
En pratique, ce processus est effectué au démarrage ou lors d'une réinitialisation du circuit, ce qui revient à vérifier l'atomicité après chaque arrachement ou extinction accidentelle ou volontaire.
On commence par sélectionner (bloc 81, SELECT 1 (MAX (PWN) ) ) la page ayant la valeur maximale du compteur de nombre de pages écrites. Puis, on sélectionne (bloc 82, SELECT j) la dernière trame écrite dans cette page. On lit alors le deuxième mot de métadonnées EMDj (2) et on vérifie (bloc 83, FW OK ?) que l'indicateur d'écriture FW est correct (est programmé). Dans l'affirmative (sortie Y du bloc 83), il n'y pas de problème d'atomicité et la coupure ou réinitialisation s'est effectuée alors que les processus d'écriture dans la mémoire flash étaient terminés. On passe alors au fonctionnement nomal, c'est-à-dire que le processus de vérification d'atomicité est teminé (END). En variante, pour s'assurer qu'il n'y a pas eu d'arrachement en fin d'écriture et pour garantir la stabilité du mot EMDj (2) , on reprogramme la même valeur dans le mot EMDj (2).
Dans la négative (sortie N du bloc 83) , cela signifie un arrachement (coupure d'alimentation ou réinitialisation) pendant une écriture dans la mémoire flash. Selon un mode de réalisation préféré, on utilise alors la page Pr pour transférer (bloc 84, TRANSFERT DBj(PI) -> DBj'(Pr)) toutes les trames valides de la page PI vers la page Pr. Puis, on efface la page PI (bloc 85, ERASE PI). Les différentes étapes de la copie, vers la page Pr et ensuite de la recopie depuis la page Pr, sont validées par des mots de métadonnées dans la page Pr pour s'assurer, qu'en cas d'arrachement durant la procédure de récupération, on continue bien la procédure entamée et qu'on ne recommence pas au début de la procédure d'arrachement au risque de perdre définitivement les données encore valables dans la page PI.
Selon un mode de réalisation, la page Pr est une page dédiée de la mémoire. On effectue alors un transfert inverse (bloc 86, TRANSFERT DBj'(Pr) -> DBj (PI)) des données stockées temporairement dans la page Pr vers la page PI effacée. Les métadonnées de page sont alors également réécrites. Enfin, on efface la page Pr (bloc 87, ERASE Pr) pour qu'elle soit prête pour une prochaine utilisation.
Selon un autre mode de réalisation, la page Pr est n'importe quelle page disponible. Dans ce cas, il n'est pas nécessaire de transférer les données vers la page PI après effacement.
De préférence, le traitement de la figure 8 comporte également une étape de vérification de l'atomicité des métadonnées de page. Pour cela, on vérifie, lors d'un redémarrage et sur la dernière page écrite, un code correcteur d'erreur stocké dans un des mots de métadonnées de page PMDl(k).
De préférence, avant l'étape 84, on écrit les mots de métadonnées PMDl(2) de toutes les pages qui ont été écrites après la trame Fj sélectionnée au bloc 82, comme indiquant une page pleine. Ainsi, ces pages ne peuvent pas être utilisées sans être effacées.
Selon la variante où l'on utilise que des pages de la première catégorie, on peut se passer de recopier les trames fiables vers une nouvelle page suite à la détection d'une trame erronée. En effet, la trame problématique ne sera de toute façon pas considérée en lecture et on lira la donnée fiable précédente.
Toutefois, cela réduit la capacité de la mémoire en termes de nombre d'arrachement qu'elle peut supporter dans la mesure où l'on conserve des trames perdues.
Le nombre de pages disponibles (effacées) est au minimum deux afin de permettre un effacement d'une page. Lorsqu'il n'y a plus de page disponible (autre que les deux minimum) , on sélectionne une des pages écrites, de préférence la page dont le nombre de trames écrites est minimum. On parcourt alors cette page à effacer en vérifiant ses trames et celles d'entre-elles qui contiennent les derniers états fiables de blocs Bi. Tous ces blocs sont transférés (écrits) de la manière décrite en relation avec la figure 4 vers une des pages disponibles. Ainsi, au maximum n blocs sont transférés (en pratique, il y a aux moins certaines trames qui contiennent des données obsolètes de sorte que ce transfert se traduit par des trames disponibles dans cette page). Une fois le transfert terminé, la page d'origine est effacée. Une fois l'effacement effectué, on programme l'indicateur de page effacée (PMD1(4)).
En variante, on fixe un nombre minimum de pages supérieur, par exemple trois ou quatre, de façon à disposer de plus de trames disponibles afin de stocker un plus grand nombre de transactions sans requérir un effacement.
Selon le deuxième aspect de la présente description, à chaque effacement d'une page de la mémoire flash 2, on incrémente un compteur de nombre d'effacements de la page concernée.
La figure 9 est un schéma-blocs illustrant un mode de réalisation d'une sélection d'une page à effacer selon ce deuxième aspect.
Pour effectuer l'effacement d'une page PI (ERASE Pl) , on commence, comme indiqué ci-dessus par transférer (bloc 91, TRANSFERT DBj(Pl) -> DBj'(Pl')) tous les blocs de données DBj de la page Pl dont le contenu représente la dernière valeur stable d'une donnée vers un bloc DBj'(Pl') d'une des pages mémoire disponibles. On stocke (bloc 92, TEMP NPE) le compteur NPE de nombre d'effacements de page dans un mot de métadonnées de la page précédente, puis on efface la page PI (bloc 93, ERASE PI) . Une fois l'effacement effectué, on programme (bloc 94, NPE+1 -> PMD1(6)) le mot de métadonnées PMD1(6) à la valeur du nombre d'effacements incrémenté de un.
Selon ce mode de réalisation, la sélection de la page à effacer ne correspond pas nécessairement à la page ayant la valeur minimale du nombre de pages écrites mais à celle ayant la valeur minimale de pages écrites parmi les pages ayant subies un moindre nombre d'effacements. L'application de ce mode de réalisation permet d'optimiser la durée de vie de la mémoire flash en optimisant l'homogénéité du nombre d'effacements parmi le nombre de pages. En effet, s'il n'y avait pas de processus de récupération d'atomicité, la page ayant la valeur maximale du nombre de pages écrite serait parmi celles ayant été effacées un moins grand nombre de fois. Toutefois, dans la mesure où l'application du processus de récupération d'atomicité au niveau d'une page se traduit par un transfert, avec la même valeur de nombre de pages écrites vers une page disponible, cela ne correspond pas forcément, notamment en cas de nombreuses mises en oeuvre de la récupération d'atomicité.
On notera que, si ce deuxième aspect peut être combiné au premier, il peut également être mis en oeuvre plus généralement dans tout procédé de gestion d'une mémoire flash.
Un autre avantage est qu'en cas de mise en oeuvre du processus de récupération d'atomicité au niveau d'une page tel que décrit en relation avec la figure 9, il y a un risque que l'erreur soit au niveau du nombre de pages écrites, auquel cas cette page risque, sans la mise en oeuvre du compteur de nombre d'effacements, de ne jamais être effacée.
Un avantage des modes de réalisation qui ont été décrits est qu'ils améliorent la gestion d'une mémoire flash pour le traitement d'opérations devant respecter un critère d'atomicité.
Un autre avantage est qu'ils permettent aisément de remonter à la dernière valeur atomique d'une donnée.
Divers modes de réalisation ont été décrits. Diverses variantes et modifications apparaîtront à l'homme de l'art. Par ailleurs, la mise en oeuvre pratique des modes de réalisation qui ont été décrits est à la portée de l'homme du métier à partir des indications fonctionnelles données ci-dessus et en utilisant des circuits en eux-mêmes usuels. Notamment, l'organisation de l'adressage de la mémoire et la génération des signaux adaptés à sa commande et à cet adressage fait appel à des techniques en elles-mêmes usuelles.

Claims (5)

  1. REVENDICATIONS
    1. Procédé de gestion d'une mémoire flash (2), dans lequel : la mémoire est organisée en pages (PI) ; et chaque page contient un mot de métadonnées (PMD1(6)) destiné a stoker un nombre d'effacements de la page.
  2. 2. Procédé selon la revendication 1, dans lequel la sélection d'une page (PI) à effacer pour libérer de l'espace s'effectue en fonction du nombre d'effacements subis par les différentes pages afin d'unifomiser le nombre d'effacement subis par chaque page.
  3. 3. Procédé selon la revendication 1 ou 2, dans lequel : les données (A) à stocker sont organisées en blocs logiques (Bi) ; la mémoire est divisée en pages (PI) ; chaque page est divisée en trames (Fj), chaque trame pouvant contenir au moins un bloc (DBj) de données et au moins deux mots de métadonnées de trame (FMDj) ; chaque page comporte au moins un mot de métadonnées de page (PMD) qui contient, lorsqu'une page est écrite, une valeur d'un compteur (PWN) de nombre de pages écrites ; une écriture d'un bloc logique dans la mémoire s'accompagne d'une programmation d'un premier mot de métadonnées de trame (FMDj(2) ) avec un identifiant (i) de ce bloc logique ; et la page dans laquelle procéder à l'écriture est choisie comme étant celle dont le premier mot de métadonnées contient la valeur maximum du compteur de pages écrites parmi toutes les pages.
  4. 4. Mémoire flash (2), programmée conformément au procédé selon l'une quelconque des revendications 1 à 3.
  5. 5. Circuit électronique (1) comportant une mémoire flash (2) conforme à la revendication 4.
FR1654492A 2016-05-20 2016-05-20 Gestion de l'effacement dans une memoire flash Withdrawn FR3051575A1 (fr)

Priority Applications (1)

Application Number Priority Date Filing Date Title
FR1654492A FR3051575A1 (fr) 2016-05-20 2016-05-20 Gestion de l'effacement dans une memoire flash

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
FR1654492A FR3051575A1 (fr) 2016-05-20 2016-05-20 Gestion de l'effacement dans une memoire flash

Publications (1)

Publication Number Publication Date
FR3051575A1 true FR3051575A1 (fr) 2017-11-24

Family

ID=57184539

Family Applications (1)

Application Number Title Priority Date Filing Date
FR1654492A Withdrawn FR3051575A1 (fr) 2016-05-20 2016-05-20 Gestion de l'effacement dans une memoire flash

Country Status (1)

Country Link
FR (1) FR3051575A1 (fr)

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5457658A (en) * 1993-02-24 1995-10-10 International Business Machines Corporation Nonvolatile memory with cluster-erase flash capability and solid state file apparatus using the same
US6513095B1 (en) * 1999-05-31 2003-01-28 Sharp Kabushiki Kaisha File system with assured integrity incorporating semiconductor memory device

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5457658A (en) * 1993-02-24 1995-10-10 International Business Machines Corporation Nonvolatile memory with cluster-erase flash capability and solid state file apparatus using the same
US6513095B1 (en) * 1999-05-31 2003-01-28 Sharp Kabushiki Kaisha File system with assured integrity incorporating semiconductor memory device

Similar Documents

Publication Publication Date Title
EP0546048B1 (fr) Procede et dispositif de mise a jour d'informations dans une memoire et leur utilisation dans les cartes a memoire
EP3293637A1 (fr) Gestion d'index dans une mémoire flash
EP1988548B1 (fr) Mémoire non volatile à écriture rapide
EP2786317B1 (fr) Ecriture de données dans une mémoire non volatile de carte à puce
EP2940690B1 (fr) Compteur bidirectionnel en mémoire flash
EP3246820A1 (fr) Gestion du stockage dans une mémoire flash
EP0769742B1 (fr) Composant électronique à mémoire non volatile effaçable électriquement
EP3246819B1 (fr) Compteur en mémoire flash
FR3051575A1 (fr) Gestion de l'effacement dans une memoire flash
FR2689662A1 (fr) Procédé de protection d'une carte à puce contre la perte d'information.
EP3188024B1 (fr) Stockage dans une mémoire flash
WO2007090857A1 (fr) Procede de mise a jour securisee de memoire non volatile
EP3522020A1 (fr) Gestion d'une mémoire non volatile
EP3188032B1 (fr) Stockage de données dans une mémoire flash
FR2830667A1 (fr) Procede de determination d'une zone stable dans une memoire et dispositif de gestion d'une memoire associe
FR3067831A1 (fr) Gestion d'atomicite dans une memoire eeprom
EP2339587A1 (fr) Sécurisation de l'effacement d'une memoire de type flashprom
EP0938095A1 (fr) Mémoire programmable non-volatile et procédé de programmation d'une telle mémoire
FR2799046A1 (fr) Procede pour l'ecriture aleatoire de secteurs d'une taille inferieure a celle d'un bloc d'effacement dans une memoire effacable par bloc pour laquelle toute ecriture d'une donnee necessite l'effacement du bloc qui contient ladite donnee
EP2339586A1 (fr) Procédé de gestion de données tournantes
WO2007077242A1 (fr) Procede de gestion de donnees destinees a etre ecrites et lues dans une memoire
FR2915829A1 (fr) Memoire non volatile a ecriture rapide

Legal Events

Date Code Title Description
PLSC Publication of the preliminary search report

Effective date: 20171124

ST Notification of lapse

Effective date: 20180131