Brevet FR2901035A1 — publié le 20071116

PROCEDE ET DISPOSITIF DE GESTION D'UNE TABLE DE CORRESPONDANCE D'ACCES A UNE MEMOIRE La présente invention concerne la gestion d'une mémoire, et en particulier, d'une mémoire non volatile du type Flash à portes NAND. La figure 1 représente l'organisation d'une mémoire du type Flash. Sur la figure 1, la mémoire MEM est divisée en plusieurs blocs BO, B1, B2 ..., Bn. Chaque bloc est lui-même divisé en pages PGO, PG1, PG2, ..., PGm. Chaque page comprend une zone de donnée DT permettant de stocker des données, et une zone de contrôle CTL permettant de stocker des codes de correction d'erreur et des données d'état du bloc. La mémoire MEM est effaçable par bloc, et programmable et lisible par page. La figure 2 représente le contenu de chaque page PGk et en particulier de la zone de contrôle CTL. La zone de contrôle CTL mémorise un code de correction d'erreur ECC permettant de corriger des erreurs dans les données mémorisées dans la zone de données DT, un indicateur d'état libre ou utilisé du bloc UB, un indicateur d'état bon ou défaillant du bloc BB, un indicateur d'état valide ou invalide du bloc VD, et une adresse logique LAD du bloc lorsque ce dernier est à l'état utilisé. Les indicateurs UB, BB et VD et l'adresse logique LAD sont répétés dans chaque page du bloc. La figure 3 illustre un mode d'accès à la mémoire MEM. Pour accéder à un bloc Bj d'une zone Zi de la mémoire MEM, une unité de traitement CPU utilise une table de correspondance (look-up table) LUT fournissant une adresse physique PAD de bloc en fonction d'une adresse logique LAD. L'adresse logique LAD qui est fournie par l'unité de traitement CPU permet d'adresser une ligne de la table LUT. Chaque ligne de la table LUT comporte un champ d'adresse mémorisant l'adresse physique PAD d'un bloc correspondant à une adresse logique. Pour ne pas pénaliser les temps d'accès à la mémoire MEM, la table LUT est mémorisée dans une mémoire rapide qui est généralement volatile (par exemple de type RAM). Elle doit donc être reconstruite à chaque mise sous tension. A cet effet, le microprocesseur pP exécute une procédure d'initialisation permettant de constituer la table, ce programme comportant classiquement les étapes suivantes. Dans une première phase, le microprocesseur lit successivement les données de contrôle CTL des blocs Bj de la zone mémoire Zi. Si d'après l'indicateur BB, le bloc est défaillant, son adresse physique PAD et ses indicateurs d'état sont mémorisés à la fin de la table LUT, en commençant par la dernière ligne de la table. Si d'après les indicateurs UB, VD et BB, le bloc est bon, valide et utilisé, son adresse physique PAD et ses indicateurs d'état sont mémorisés dans la table LUT à l'adresse logique LAD lue dans les données de contrôle CTL du bloc. Dans une seconde phase, les lignes de la table laissées libres entre les lignes de la table utilisées pour les blocs occupés sont utilisées pour référencer les blocs libres de la zone Zi. A cet effet, la mémoire MEM doit être lue une seconde fois pour rechercher les blocs libres, ce qui est coûteux en terme de temps de traitement. Pour accélérer la procédure d'initialisation, il est envisageable de mémoriser durant la première phase les adresses physiques des blocs libres. A cet effet, une seconde table provisoire de la taille de la table LUT doit être prévue. Bien que plus rapide, cette solution est plus coûteuse en terme de taille de mémoire rapide nécessaire. Ainsi, un objectif de la présente invention est d'optimiser la constitution de la table de correspondance entre les adresses physiques et les adresses logiques des blocs de la mémoire, tant en ce qui concerne la durée du traitement, qu'en ce qui concerne l'espace mémoire nécessaire pour le traitement. Une idée de l'invention est d'effectuer une seule lecture de la mémoire pour mémoriser les adresses physiques à la fois des blocs utilisés et des blocs libres. A cet effet, chaque ligne de la table de correspondance dont l'adresse correspond à l'adresse physique d'un bloc libre est marquée pour mémoriser les adresses physiques des blocs non utilisés de la mémoire. Les adresses physiques des blocs non utilisés sont ensuite déterminées par les adresses des lignes marquées. Plus particulièrement, l'invention prévoit un procédé de constitution d'une table de correspondance entre des adresses logiques et des adresses physiques de blocs d'une mémoire, la mémoire mémorisant pour chaque bloc un état du bloc, et pour chaque bloc utilisé l'adresse logique du bloc, le procédé comprenant des étapes consistant à lire dans la mémoire l'état de chaque bloc, et mémoriser l'adresse physique de chaque bloc à l'état utilisé dans un champ d'adresse d'une ligne de la table, sélectionnée à partir de l'adresse logique du bloc lue dans la mémoire. Selon l'invention, le procédé comprend des étapes consistant à : ù mémoriser l'adresse physique de chaque bloc à l'état libre dans la mémoire, en marquant une ligne de la table, sélectionnée à partir de l'adresse physique du bloc dans la mémoire, et ù pour chaque bloc à l'état libre, mémoriser une adresse correspondant à chaque ligne marquée de la table, dans un champ d'adresse libre de la table. Selon un mode de réalisation de l'invention, une 5 ligne de la table est marquée en changeant l'état d'un champ libre de la ligne. Selon un mode de réalisation de l'invention, le procédé comprend une étape d'initialisation de la table consistant à changer l'état du champ libre de toutes les 10 lignes de la table, et une étape d'initialisation du champ libre de lignes de la table sélectionnées à partir des adresses physiques des blocs dans un état défaillant ou utilisé. Selon un mode de réalisation de l'invention, le 15 procédé comprend des étapes consistant à : ù chercher les lignes marquées de la table, et ù pour chaque ligne marquée, chercher une ligne de la table dont le champ d'adresse est libre, inscrire une adresse correspondant à la ligne marquée dans le champ 20 d'adresse libre de la ligne trouvée, et retirer le marquage de la ligne marquée. Selon un mode de réalisation de l'invention, chaque ligne de la table comprend un champ d'état pour mémoriser l'état d'un bloc dont l'adresse physique dans la mémoire 25 est fourni par le champ d'adresse de la ligne. Selon un mode de réalisation de l'invention, l'adresse physique de chaque bloc à l'état défaillant est mémorisée en fin de la table. Selon un mode de réalisation de l'invention, la 30 mémoire comprend plusieurs zones mémoire, chaque zone mémoire étant associée à une table de correspondance entre les adresses logiques et les adresses physiques de blocs appartenant à la zone mémoire. Selon un mode de réalisation de l'invention, la table de correspondance d'une zone mémoire est constituée à l'initialisation d'un système comprenant la mémoire. Selon un mode de réalisation de l'invention, la table de correspondance d'une zone mémoire est constituée lors d'un accès à la zone mémoire. L'invention concerne également un système comprenant une unité de traitement et une mémoire comportant des blocs mémoire susceptibles d'être défaillants, la mémoire mémorisant pour chaque bloc un état du bloc, et pour chaque bloc utilisé l'adresse logique du bloc, l'unité centrale accédant à la mémoire à l'aide d'une table de correspondance entre les adresses logiques et des adresses physiques des blocs dans la mémoire, l'unité centrale comprenant des moyens pour lire dans la mémoire l'état de chaque bloc, et des moyens pour mémoriser l'adresse physique de chaque bloc utilisé dans un champ d'adresse d'une ligne de la table, sélectionnée à partir de l'adresse logique du bloc lue dans la mémoire. Selon l'invention, l'unité de traitement comprend : ù des moyens pour mémoriser l'adresse physique de chaque bloc à l'état libre dans la mémoire, en marquant une ligne de la table, sélectionnée à partir de l'adresse 25 physique du bloc dans la mémoire, et ù des moyens pour mémoriser pour chaque bloc à l'état libre, une adresse correspondant à chaque ligne marquée de la table, dans un champ d'adresse libre de la table. Selon un mode de réalisation de l'invention, chaque 30 ligne de la table comprend un champ libre utilisé pour marquer les lignes de la table correspondant aux adresses physiques des blocs à l'état libre. Selon un mode de réalisation de l'invention, l'unité centrale comprend des moyens pour marquer toutes 35 les lignes de la table en changeant l'état du champ libre de toutes les lignes de la table, et des moyens pour initialiser le champ libre de lignes de la table sélectionnées à partir des adresses physiques de blocs dans un état défaillant ou utilisé. Selon un mode de réalisation de l'invention, l'unité centrale comprend des moyens pour : ù chercher les lignes marquées de la table, et ù pour chaque ligne marquée, chercher une ligne de la table dont le champ d'adresse est libre, inscrire une adresse correspondant à la ligne marquée dans le champ d'adresse libre de la ligne trouvée, et retirer le marquage de la ligne marquée. Selon un mode de réalisation de l'invention, chaque ligne de la table comprend un champ d'état pour mémoriser l'état d'un bloc dont l'adresse physique dans la mémoire est fourni par le champ d'adresse de la ligne. Selon un mode de réalisation de l'invention, l'adresse physique de chaque bloc à l'état défaillant est mémorisée en fin de la table. Selon un mode de réalisation de l'invention, la mémoire comprend plusieurs zones mémoire, chaque zone mémoire étant associée à une table de correspondance entre les adresses logiques et les adresses physiques des blocs appartenant à la zone mémoire. Selon un mode de réalisation de l'invention, la table de correspondance d'une zone mémoire est constituée à l'initialisation du système. Selon un mode de réalisation de l'invention, la table de correspondance d'une zone mémoire est constituée 30 lors d'un accès à la zone mémoire. Selon un mode de réalisation de l'invention, la mémoire est une mémoire de type flash à porte NAND. Selon un mode de réalisation de l'invention, le système comprend une mémoire rapide mémorisant la table 35 de correspondance. Selon un mode de réalisation de l'invention, l'unité de traitement et la mémoire sont intégrées dans un microcontrôleur. Ces objets, caractéristiques et avantages ainsi que d'autres de la présente invention seront exposés plus en détail dans la description suivante d'un mode de réalisation de l'invention, faite à titre non limitatif en relation avec les figures jointes parmi lesquelles : - la figure 1 déjà décrite représente sous la forme de blocs l'organisation d'une mémoire à laquelle s'applique la présente invention, - la figure 2 déjà décrite représente la structure d'une page de la mémoire, - la figure 3 déjà décrite illustre sous la forme de blocs un mode d'accès à la mémoire, - la figure 4 représente sous la forme de blocs un système mettant en œuvre le procédé selon l'invention, - la figure 5 représente sous la forme de blocs l'organisation d'une mémoire à laquelle s'applique la présente invention, - la figure 6 représente la structure d'une table de correspondance, - la figure 7 représente la structure d'une ligne d'une 25 table de correspondance utilisée selon l'invention pour accéder à la mémoire, - la figure 8 est un organigramme illustrant les étapes du procédé selon l'invention, - la figure 9 représente un exemple de contenu d'une zone 30 de la mémoire pour illustrer le procédé selon l'invention, - les figures 10a à lOc représentent le contenu de la table de correspondance à différentes étapes du procédé selon l'invention, - la figure 11 est un organigramme illustrant un autre mode de réalisation du procédé selon l'invention, La figure 4 représente un système pC mettant en œuvre le procédé selon l'invention. Le système pC comprend une unité centrale de traitement CPU, une ou plusieurs mémoires non volatiles MEM, PMEM et une ou plusieurs mémoires rapides RMEM. Les mémoires non volatiles comprennent par exemple une mémoire programme PMEM et une mémoire de masse MEM. L'unité centrale CPU, les mémoires non volatiles PMEM et la mémoire rapide RMEM sont interconnectées par un bus de donnée et d'adresse ADB. La mémoire MEM est connectée à l'unité centrale. L'unité centrale est pilotée par un programme mémorisé dans la mémoire programme PMEM et éventuellement dans la mémoire de masse MEM. L'ensemble du système peut être intégré dans un microcontrôleur. La mémoire MEM est par exemple de type Flash à porte NAND. La mémoire programme est par exemple de type ROM. La mémoire rapide RMEM est par exemple de type RAM. Le système pC constitue par exemple une clé USB intégrant une mémoire de masse, ou plus généralement un système intégrant une mémoire Flash. La figure 5 représente l'organisation de la mémoire MEM. Sur la figure 5, la mémoire MEM est divisée en plusieurs blocs BO, B1, B2 ..., Bn (Bj, j étant un nombre entier variant de 0 à n). Chaque bloc est lui-même divisé en pages PGO, PG1, PG2, ..., PGm (PGk, k étant un nombre entier variant de 0 à m). Chaque page comprend une zone de donnée DT permettant de stocker des données, et une zone de contrôle CTL permettant de stocker des codes de correction d'erreur et des données d'état du bloc. La mémoire MEM est effaçable par bloc Bj, et programmable et lisible par page PGk. La figure 6 représente l'organisation d'une table 35 de correspondance LUT qui est généralement employée pour une mémoire Flash à porte NAND telle que représentée sur la figure 5. La table LUT comprend une zone AB située au début de la table, rassemblant les adresses physiques et les informations d'état des blocs utilisés de la zone mémoire, et une zone BBT située à la fin de la table, rassemblant les adresses physiques et les informations d'état des blocs défaillants de la zone mémoire. La taille de la table de correspondance LUT est avantageusement réduite en divisant la mémoire MEM en zones Zl, Z2, Z3, ..., Zl (Zi, i étant un nombre entier variant de 0 à p) dans lesquelles sont répartis les blocs Bj de la mémoire (figures 4 et 5). Chaque zone Zi dispose de sa propre table de correspondance LUT dont le nombre de lignes correspond au nombre de blocs Bj dans la zone Zi. La figure 7 représente le contenu d'une ligne L d'une table de correspondance LUT selon l'invention, utilisée pour accéder à une mémoire telle que celle représentée sur la figure 5. Chaque ligne L de la table LUT est adressée par l'unité centrale CPU (figure 4) par une adresse et comporte un champ d'adresse AD mémorisant l'adresse physique PAD d'un bloc Bj de la mémoire MEM (figure 5). Chaque ligne de la table LUT comprend également des champs d'état STB mémorisant les indicateurs d'état du bloc situé à l'adresse physique donnée par le champ adresse AD. Les indicateurs d'état mémorisés dans les champs STB correspondent aux indicateurs d'état UB, VD, BB mémorisés dans la zone de contrôle CTL du bloc Bj (figure 5). Ainsi, le champ STB comprend un indicateur d'état libre ou utilisé du bloc UB, un indicateur d'état bon ou erroné du bloc BB, et un état valide ou invalide du bloc VD. Selon l'invention, chaque ligne L de la table LUT mémorise également un indicateur de bloc libre PF prévu dans une zone libre de la ligne. L'indicateur PF permet d'indiquer si le bloc Bj dont l'adresse physique correspond à l'adresse de la ligne dans la table LUT est libre ou non. La figure 8 représente les différentes étapes du procédé selon l'invention exécutées par l'unité CPU. Le procédé selon l'invention permet de constituer une table de correspondance LUT entre des adresses logiques LAD et des adresses physiques PAD de blocs Bj d'une zone mémoire Zi de la mémoire MEM. Le procédé selon l'invention comprend une première phase d'initialisation de la table LUT comprenant une étape SO au cours de laquelle toutes les lignes de la table sont initialisées à 0 sauf le champ PF de chaque ligne qui est mis à 1. Le procédé selon l'invention comprend une seconde phase de lecture de l'état des blocs Bj dans la zone mémoire Zi. La second phase comprend des étapes S1 à S9. L'étape Si consiste à initialiser des pointeurs. Ainsi au cours de cette étape, un pointeur de blocs erronés BPtr est initialisé à l'adresse de la fin de la table LUT. Un pointeur Ptr est initialisé à 0 (à l'adresse de début de la table LUT), et un pointeur LAD est initialisé à l'adresse physique du premier bloc BO de la zone Zi. A l'étape suivante S2, la zone de contrôle CTL du bloc Bj situé à l'adresse PAD est lue. A l'étape suivante S3, l'indicateur d'état libre ou utilisé UB, l'indicateur d'état bon ou erroné BB, et l'indicateur d'état valide ou invalide VD de la zone CTL lue sont testés. Si d'après les indicateurs d'état, le bloc Bj est erroné, des étapes S4 et S5 sont exécutées. Dans les autres cas, (bloc libre), le traitement se poursuit à l'étape S8. Si le bloc est utilisé, l'étape S6 est exécutée. A l'étape S4, la ligne située à l'adresse de la table LUT indiquée par le pointeur BPtr est adressée. Le champ adresse AD de la ligne adressée reçoit l'adresse physique du bloc Bj. L'indicateur d'état BB du champ STB de la ligne adressée est mis à 1. A l'étape S5, le pointeur BPtr est décrémenté de 1. Ainsi, les blocs erronés sont référencés à la fin de la table LUT en remontant vers le début de la table. A l'étape S6 (cas où le bloc à l'adresse PAD est utilisé), la ligne située à l'adresse logique mémorisée dans le champ LAD du bloc Bj situé à l'adresse PAD est adressée. Le champ adresse AD de la ligne adressée reçoit la valeur du pointeur Ptr, et le champ UB est mis à 1. L'étape S7 est exécutée à la suite de l'étape S5 ou S6. A l'étape S7, la ligne de la table LUT située à l'adresse Ptr est adressée. Le champ PF de la ligne adressée de la table LUT est mis à O. A l'étape suivante S8, les pointeurs PAD et Ptr sont incrémentés de 1. A l'étape suivante S9, si le pointeur PAD n'a pas atteint la fin de la zone mémoire Zi (ou si le pointeur Ptr a atteint la fin de la table LUT), les étapes S2 à S9 sont à nouveau exécutées. Durant la phase de lecture de l'état des blocs dans la mémoire MEN, la table LUT a été accédée en utilisant comme adresse à la fois l'adresse logique des blocs pour les blocs utilisés, et l'adresse physique des blocs pour repérer l'adresse physique des blocs à l'état libres. Une ligne de la table peut donc fournir à la fois des informations relatives à un bloc utilisé (adresse physique et état), et des informations (adresse physique) relatives à un bloc libre. Si la fin de la zone mémoire Zi est atteinte, une troisième phase de traitement des blocs libres est exécutée. La troisième phase comprend des étapes S10 à S18. La première étape S10 initialise à 0 des pointeurs Ptr et FPtr. A l'étape suivante S11, la ligne de la table LUT située à l'adresse Ptr est adressée. Si le champ UB de la ligne adressée est à 1 (bloc non utilisé), des étapes S12 à S17 sont exécutées, sinon seule l'étape S17 est exécutée. A l'étape S12, la ligne de la table LUT située à l'adresse FPtr est adressée. Si le champ PF de la ligne adressé est à 1 (indiquant la présence d'un bloc libre à l'adresse FPtr), les étapes S13 à S16 sont exécutées, sinon seule l'étape S15' est exécutée. A l'étape S13, la ligne de la table LUT située à l'adresse Ptr est adressée. La valeur du pointeur FPtr est inscrite dans le champ adresse AD de la ligne adressée. A l'étape S14 suivante, la ligne de la table LUT située à l'adresse FPtr est adressée. Le champ PF de la ligne adressée est mis à 1. A l'étape S15 suivante, le pointeur FPtr est incrémenté de 1. A l'étape S15', le pointeur FPtr est également incrémenté de 1. A l'étape S16, si le pointeur FPtr n'a pas atteint la fin de la table LUT, les étapes S12 à S16 sont à nouveau exécutées, sinon l'étape S17 suivante est exécutée. L'étape S17 est également exécutée à la suite de l'étape S15'. A l'étape S17, le pointeur Ptr est incrémenté de 1. A l'étape S18 suivante, si le pointeur Ptr n'a pas atteint la fin de la table LUT, les étapes sil à S18 sont à nouveau exécutées. Les figures 8 et 9a à 9c illustrent sur un exemple 25 de contenu de la zone Zi le fonctionnement du procédé selon l'invention. La figure 9 représente un exemple de contenu d'une zone Zi de la mémoire MEM. La zone Zi comprend un bloc BO erroné à l'adresse physique 0, deux blocs libres B1, B2 30 aux adresses physiques 1 et 2, et à l'adresse physique 3, un bloc utilisé B3 associé à une adresse logique 2. Les figures 10a à lOc représentent le contenu de la table LUT à l'issue de chacune des première phase (étape SO), seconde phase (étapes S1 à S9), et troisième phase 35 (étapes S10 à S18). Sur la figure 10a, la table LUT est initialisée dans un état dans lequel toutes les lignes de la table sont à o sauf le champ PF de chaque ligne qui est à 1. Sur la figure 10b, le premier bloc erroné BO est référencé à la dernière ligne de la table LUT : le champ AD de la dernière ligne de la table mémorise l'adresse du bloc BO, soit O. La dernière ligne mémorise également les informations d'état du bloc BO : le champ BB est à 1 et les champs UB et VD sont à 0. Le champ PF de la ligne de la table à l'adresse 0 correspondant à l'adresse physique du bloc BO a été mis à 0 pour indiquer que le bloc à l'adresse physique 0 n'est pas libre. Les adresses physiques 1, 2 des blocs libres B1, B2 sont mémorisées dans la table LUT par les champs PF à 1 aux lignes de la table adressées par l'adresse physique, à savoir les lignes 1 et 2 de la table. Le bloc B3 est référencé à la ligne de la table adressée par l'adresse logique mémorisée pour le bloc B3, à savoir l'adresse 2. La ligne de la table à l'adresse 2 mémorise également les informations d'état du bloc B3 : les champs UB et VD de la ligne 2 de la table sont à 1 et le champ BB est à 0. Le champ PF de la ligne de la table à l'adresse 3 correspondant à l'adresse physique du bloc B3 a été mis à 0. Les valeurs des champs UB, VD et AD de la ligne à l'adresse 3 de la table LUT à la fin de la seconde phase dépendent de l'existence d'un bloc utilisé associé à l'adresse logique 3. A l'issue de la seconde phase, les lignes 0 et 1 de la table LUT sont donc libres : elles ne référencent 30 aucun bloc Bj de la mémoire MEM. La figure 10c représente la table LUT à la fin de la troisième phase. Les adresses des lignes de la table LUT (dans l'état de la figure 10b) dont les champs PF sont à 1 donnent les adresses physiques des blocs Bj 35 libres. Les blocs B1, B2 aux adresses physiques 1 et 2 sont donc libres dans la zone mémoire Zi. Ces blocs sont référencés dans la table aux deux premières lignes libres de la table LUT : le champ adresse AD de la ligne 0 contient l'adresse physique 1, et le champ adresse de la ligne 1 contient l'adresse physique 2. Dans chacune des lignes 0 et 1, les champs UB et BB sont à 0 (bloc libre et bon), et le champ VD est à 0 (bloc valide). Par ailleurs, tous les champs PF de la table sont à O. Les valeurs des champs UB, VD et AD de la ligne 3 de la table LUT à la fin de la troisième phase dépendent de l'existence d'un bloc utilisé associé à l'adresse logique 3. La figure 11 représente un autre mode de réalisation des première et seconde phases du procédé selon l'invention. La troisième phase est identique à celle illustrée sur la figure 8. Sur la figure 11, le procédé selon l'invention ne comporte pas de phase d'initialisation de la table LUT (étape SO) si celle-ci est entièrement à o à la mise sous tension du système. La seconde phase comprend les mêmes étapes S1 et S3 que la seconde phase illustrée sur la figure 8. Si le bloc est erroné, les étapes S4 et S5 décrites précédemment sont exécutées. Si le bloc est utilisé, l'étape S6 précédemment décrite est exécutée. Si le bloc est libre, l'étape S7' est exécutée. L'étape S7' consiste à adresser la table à l'aide du pointeur Ptr correspondant à l'adresse physique de lecture de la mémoire et à mettre à 1 le champ PF de la ligne adressée de la table. L'étape S7 est supprimée. Les étapes S8 et S9 sont donc exécutées à la suite des étapes S5, S6 et S7'. Pour exécuter une commande de lecture d'une page PGk à une adresse de la mémoire MEM, l'unité centrale CPU exécute tout d'abord une procédure d'adressage. La procédure d'adressage consiste à déterminer le numéro de la zone Zi dans laquelle se trouve la page à lire, en fonction d'une adresse appartenant à l'espace adressable par l'unité de traitement CPU. Ainsi, au cours de la procédure d'adressage, une adresse de l'espace adressable par l'unité CPU est décomposable en un numéro de zone Zi, une adresse logique LAD de bloc Bj dans la zone, et un numéro de page PGk. Ensuite, l'unité CPU détermine si une table de correspondance LUT a été constituée pour la zone Zi à accéder. Si la table n'est pas encore constituée, l'unité CPU met en oeuvre le procédé selon l'invention par exemple en exécutant la procédure décrite en référence à la figure 8 et/ou 11. Une fois que la table LUT est constituée pour la zone Zi, l'unité CPU recherche dans la table LUT l'état du bloc Bj à lire, en adressant la table à l'aide de l'adresse logique LAD du bloc. Si le bloc est à l'état libre ou utilisé et invalide, l'unité CPU retourne en réponse à la commande de lecture une page vide (par exemple égale à OXFF). Si la ligne adressée dans la table LUT correspond à un bloc utilisé et valide, l'unité CPU lit l'adresse physique PAD du bloc dans le champ AD de la ligne adressée dans la table LUT. A partir du numéro de zone Zi, de l'adresse physique PAD du bloc et du numéro de page à lire, l'unité CPU détermine les paramètres d'accès à la page dans la mémoire MEM. L'unité CPU accède ensuite à la page PGk dans la mémoire, ainsi qu'au code de correction d'erreur ECC (figure 2), et vérifie que le contenu de la page lue est correct ou corrigible à l'aide du code ECC. Si le contenu de la page lue est correct ou corrigible, le contenu de la page est fourni par l'unité CPU en réponse à la commande de lecture. Dans le cas contraire, l'unité CPU répond à la commande de lecture en fournissant un message d'erreur. Pour traiter une commande d'écriture d'un bloc à une adresse de la mémoire MEM, l'unité centrale CPU exécute une procédure d'adressage pour déterminer un numéro de zone mémoire Zi dans laquelle se trouve le bloc à écrire et l'adresse logique LAD du bloc dans la zone mémoire. Comme précédemment, si la table LUT de la zone Zi n'est pas encore constituée, l'unité CPU constitue la table, et sélectionne une ligne de la table LUT à l'aide de l'adresse logique du bloc à écrire. L'unité CPU détermine ensuite l'état du bloc à accéder à l'aide des champs UB et VD de la ligne sélectionnée. Si le bloc à accéder est libre, le bloc à écrire est écrit directement à l'adresse physique PAD du bloc mémorisée dans le champ AD de la ligne sélectionnée de la table LUT. Si le bloc est utilisé, l'unité CPU cherche dans la table LUT une ligne correspondant à bloc libre (champ UB à 0) et mémorise l'adresse physique figurant dans la ligne trouvée. Cette adresse physique de bloc libre sera utilisée par la suite pour effectuer l'opération d'écriture du bloc à écrire dans la mémoire MEM. L'unité CPU transfère ensuite le contenu de la ligne adressée à la ligne trouvée en mettant le champ VD à invalide. La ligne trouvée, ainsi marquée invalide, référence alors un bloc qui doit être effacé avant d'être à nouveau à l'état libre. L'unité CPU inscrit dans le champ AD de la ligne adressée l'adresse physique du bloc libre, qu'elle a lue dans la ligne trouvée.Puis elle met à jour le champ UB de la ligne adressée pour indiquer que le bloc est utilisé. L'unité CPU commande ensuite l'écriture du bloc dans la mémoire MEM à l'adresse physique du bloc libre. Les lignes marquées invalides dans la table LUT sont modifiées ultérieurement pour référencer un bloc libre après effacement du bloc dans la mémoire MEM à l'adresse physique contenue dans le champ AD. L'effacement des blocs marqués invalides dans la table LUT peut être effectué par l'unité CPU par exemple en tâche de fond. La division de la mémoire en zones Zi, et donc la prévision de plusieurs tables LUT à raison d'une table par zone, permet de réduire le temps d'accès à la mémoire à la mise sous tension du système. En effet, il n'est pas nécessaire d'avoir constitué une table de correspondance pour toute la mémoire MEM pour qu'une commande d'écriture ou de lecture puisse être exécutée. Il apparaîtra clairement à l'homme de l'art que la présente invention. est susceptible de diverses variantes de réalisation et d'applications. En particulier, il n'est pas nécessaire que la table de correspondance LUT présente un champ libre pour marquer les lignes de la table correspondant aux adresses physiques des blocs libres de la mémoire. Ce marquage peut en effet être effectué dans un mot binaire distinct de la table, comportant un bit par ligne de la table. Bien que moins optimale que la solution décrite précédemment, cette solution est très peu pénalisante en terme d'espace mémoire occupé, car la taille du mot binaire est considérablement plus faible que celle de la table LUT. Il n'est pas non plus indispensable de mémoriser les adresses physiques des blocs défaillants, ni de mémoriser ces adresses physiques à la fin de la table de correspondance. En effet, l'état de chaque bloc est mémorisé dans la mémoire MEM. Il est donc envisageable de repérer les blocs défaillants en lisant les indicateurs d'état mémorisés dans la mémoire. Par ailleurs, les adresses physiques des blocs défaillants peuvent être mémorisées dans une autre table. L'état libre ou utilisé des blocs n'est pas non plus nécessairement mémorisé dans la table de correspondance. Il peut être mémorisé dans une autre table adressée par l'adresse logique ou physique du bloc. Par ailleurs, l'invention ne s'applique pas uniquement aux mémoires Flash à porte NAND. Elle s'applique plus généralement à toute mémoire sujette à des défaillances de cellules mémoire et donc nécessitant une gestion de blocs défaillants, ou une mémoire dans laquelle la taille minimale d'une zone de lecture est inférieure à la taille minimale d'une zone d'écriture ou de programmation. REVENDICATIONS 1. Procédé de constitution d'une table de correspondance (LUT) entre des adresses logiques (LAD) et des adresses physiques (PAD) de blocs (Bj) d'une mémoire (MEM), la mémoire mémorisant pour chaque bloc un état du bloc (UB, BB), et pour chaque bloc utilisé l'adresse logique du bloc, le procédé comprenant des étapes consistant à lire dans la mémoire l'état de chaque bloc, et mémoriser l'adresse physique de chaque bloc à l'état utilisé dans un champ d'adresse (AD) d'une ligne (L) de la table, sélectionnée à partir de l'adresse logique du bloc lue dans la mémoire, caractérisé en ce qu'il comprend des étapes consistant à : ù mémoriser l'adresse physique (PAD) de chaque bloc (Bj) à l'état libre dans la mémoire (MEM), en marquant une ligne (L) de la table (LUT), sélectionnée à partir de l'adresse physique du bloc dans la mémoire, et ù pour chaque bloc à l'état libre, mémoriser une adresse correspondant à chaque ligne marquée de la table, dans un champ d'adresse (AD) libre de la table. 2. Procédé selon la revendication 1, dans lequel une ligne (L) de la table (LUT) est marquée en changeant l'état d'un champ libre (PF) de la ligne. 3. Procédé selon la revendication 2, comprenant une étape d'initialisation de la table (LUT) consistant à changer l'état du champ libre (PF) de toutes les lignes (L) de la table, et une étape d'initialisation du champ libre de lignes de la table sélectionnées à partir des adresses physiques (PAD) des blocs (Bj) dans un état défaillant ou utilisé. 19 4. Procédé selon l'une des revendications 1 à 3, comprenant des étapes consistant à : chercher les lignes (L) marquées de la table (LUT), et pour chaque ligne marquée, chercher une ligne de la table dont le champ d'adresse (AD) est libre, inscrire une adresse correspondant à la ligne marquée dans le champ d'adresse libre de la ligne trouvée, et retirer le marquage de la ligne marquée. 5. Procédé selon l'une des revendications 1 à 4, dans lequel chaque ligne (L) de la table (LUT) comprend un champ d'état (UB, VD, BB) pour mémoriser l'état d'un bloc (Bj) dont l'adresse physique (PAD) dans la mémoire (MEM) est fourni par le champ d'adresse (AD) de la ligne. 6. Procédé selon l'une des revendications 1 à 5, dans lequel l'adresse physique (PAD) de chaque bloc (Bj) à l'état défaillant est mémorisée en fin de la table. 7. Procédé selon l'une des revendications 1 à 6, dans lequel la mémoire (MEM) comprend plusieurs zones mémoire (Zi), chaque zone mémoire étant associée à une table de correspondance (LUT) entre les adresses logiques (LAD) et les adresses physiques (PAD) de blocs appartenant à la zone mémoire. 8. Procédé selon la revendication 7, dans lequel la table de correspondance (LUT) d'une zone mémoire (Zi) est constituée à l'initialisation d'un système (pC) comprenant la mémoire (MEM). 9. Procédé selon l'une des revendications 7 et 8, dans lequel La table de correspondance (LUT) d'une zone mémoire (Zi) est constituée lors d'un accès à la zone 35 mémoire. 10. Système (pC) comprenant une unité de traitement (CPU) et une mémoire (MEM) comportant des blocs mémoire (Bj) susceptibles d'être défaillants, la mémoire mémorisant pour chaque bloc un état du bloc (UB, BB), et pour chaque bloc utilisé l'adresse logique (LAD) du bloc, l'unité centrale accédant à la mémoire à l'aide d'une table de correspondance (LUT) entre les adresses logiques et des adresses physiques (PAD) des blocs dans la mémoire, l'unité centrale comprenant des moyens pour lire dans la mémoire l'état de chaque bloc, et des moyens pour mémoriser l'adresse physique de chaque bloc utilisé dans un champ d'adresse (AD) d'une ligne (L) de la table, sélectionnée à partir de l'adresse logique du bloc lue dans la mémoire, caractérisé en ce que l'unité de traitement (CPU) comprend : ù des moyens pour mémoriser l'adresse physique (PAD) de chaque bloc (Bj) à l'état libre dans la mémoire (MEM), en marquant une ligne (L) de la table (LUT), sélectionnée à partir de l'adresse physique du bloc dans la mémoire, et ù des moyens pour mémoriser pour chaque bloc à l'état libre, une adresse correspondant à chaque ligne marquée de la table, dans un champ d'adresse (AD) libre de la table. 11. Système selon la revendication 10, dans lequel chaque ligne (L) de la table (LUT) comprend un champ libre (PF) utilisé pour marquer les lignes de la table correspondant aux adresses physiques (PAD) des blocs (Bj) à l'état libre. 12. Système selon la revendication 11, dans lequel 35 l'unité centrale (CPU) comprend des moyens pour marquer toutes les lignes (L) de la table (LUT) en changeant l'état du champ libre (PF) de toutes les lignes de la table, et des moyens pour initialiser le champ libre de lignes de la table sélectionnées à partir des adresses physiques (PAD) de blocs (Bj) dans un état défaillant ou utilisé. 13. Système selon l'une des revendications 10 à 12, dans lequel l'unité centrale (CPU) comprend des moyens 10 pour : chercher les lignes (L) marquées de la table (LUT), et pour chaque ligne marquée, chercher une ligne de la table dont le champ d'adresse (AD) est libre, inscrire une adresse correspondant à la ligne marquée dans le 15 champ d'adresse libre de la ligne trouvée, et retirer le marquage de la ligne marquée. 14. Système selon l'une des revendications 10 à 13, dans lequel chaque ligne (L) de la table (LUT) comprend 20 un champ d'état (UB, VD, BB) pour mémoriser l'état d'un bloc (Bj) dont l'adresse physique (PAD) dans la mémoire (MEM) est fourni par le champ d'adresse (AD) de la ligne. 15. Système selon l'une des revendications 10 à 14, 25 dans lequel l'adresse physique (PAD) de chaque bloc (Bj) à l'état défaillant est mémorisée en fin de la table (LUT). 16. Système selon l'une des revendications 10 à 15, 30 dans lequel la mémoire (MEM) comprend plusieurs zones mémoire (Zi), chaque zone mémoire étant associée à une table de correspondance (LUT) entre les adresses logiques (LAD) et les adresses physiques (PAD) des blocs (Bj) appartenant à la zone mémoire. 35 17. Système selon la revendication 16, dans lequel la table de correspondance (LUT) d'une zone mémoire (Zi) est constituée à l'initialisation du système. 18. Système selon l'une des revendications 16 et 17, dans lequel la table de correspondance (LUT) d'une zone mémoire (Zi) est constituée lors d'un accès à la zone mémoire. 19. Système selon l'une des revendications 10 à 18, dans lequel la mémoire (MEM) est une mémoire de type flash à porte NAND. 20. Système selon l'une des revendications 10 à 19, 15 comprenant une mémoire rapide (RMEM) mémorisant la table de correspondance 'LUT). 21. Système selon l'une des revendications 10 à 20, dans lequel l'unité de traitement (CPU) et la mémoire 20 (MEM) sont intégrées dans un microcontrôleur (pC).