Brevet FR2828567A1 — publié le 20030214

sortie du circuit de correction (6). SYSTEME DE STOCKAGE A MEMOIRE FLASH A BASE DE FENETRES ET PROCEDES DE GESTION ET D'ACCES POUR UN TEL SYSTEME L'invention concerne le domaine des dispositifs de stockage massif et plus particulièrement un système de stockage à mémoire flash à base de fenêtres et un procédé d'accès pour un tel système. Le système à mémoire flash est typiquement composé de deux composants principaux: une unité de mémoire flash et un contrôleur d'accès; dans lequel l'unité de mémoirè flash est utilisée pour un stockage de données, tandis que le contrôleur d'accès est utilisé pour contrôler l'opération d'accès depuis 1'unité de traitement central (CPU, "Central Processing Unit") à la mémoire flash et pour gérer l'espace de stockage des données de la mémoire flash. Le contrôleur d'accès est typiquement composé d'un microprocesseur, une unité de mémoire morte (ROM, "Read-Only Memory"), une unité de mémoire vive statique (SRAM, "Static Random Access Memory"), une interface de mémoire flash et une interface CPU; dans lequel l'unité ROM est utilisoe pour stocker le code de programme s'exécutant sur le microprocesseur; I'unité SRAM est utilisée pour stocker des informations relatives à des fenêtres et sert également de tampon de données entre la mémoire flash et le CPU; I'interface CPU est utilisée pour permettre au contrôleur d'accès de communiquer avec le CPU; et l'interface de mémoire flash est utilisoe pour autoriser l'accès aux donnces stockées dans la mémoire flash. L'espace de stockage de donnces de la mémoire flash est fractionné en une pluralité de blocs, et la plupart des blocs sont classés en un certain nombre de sous-groupes appelés "fenêtres". Nous utilisons certains blocs spécifiques pour enregistrer les informations relatives à chaque fenêtre (ci après désignées par "informations de fenêtre"). Dans le but de rébuire le coût SRAM, une pratique courante est de stocker toute l'information de fenêtre dans la mémoire flash et seulement une partie de l'information de fenêtre qui est essentielle aux opérations de fenêtre est chargée dans la SRAM. Lorsqu'on souhaite effectuer des opérations de lecture/écriture sur une certaine fenêtre, il est requis de charger en premier l'information de fenêtre associée à cette fenêtre dans la SRAM. En cas de coupure soudaine de puissance cependant, certaines informations de fenêtre récemment mises à jour stockées à ce moment dans la SRAM seraient perdues, et donc la mémoire flash stocke encore l'ancienne version de l'information de fenêtre. En conséquence, lors de l'opération suivante de la même fenêtre lorsque la puissance a été rétablie, la version plus ancienne de l'information de fenêtre sera chargée dans la SRAM, impliquant l'utilisation d'une information de fenêtre incorrecte. De plus, lorsqu'une opération de lecture/écriture doit être effectuée sur un certain secteur de la fenêtre active, cela impliquerait de nombreuses phases d'opérations. Si l'on doit accéder à deux secteurs, le procédé utilisé actuellement va exécuter l'opération de lecture/écriture sur le premier secteur jusqu'à ce que toutes les phases soient accomplies et ensuite procéder à l'opération de lecture/écriture sur le secteur suivant. Ce procédé d'accès séquentiel est sans aucun doute d'une faible efficacité. Une solution classique à ce problème est d'utiliser deux rangées de mémoires flash ou plus pour effectuer une opération entrelacée de lecture/écriture pour aider à augmenter la vitesse d'accès. Un inconvénient de cette solution cependant, est qu'elle est limitée en fonctionnalités et présenterait le désavantage d'une consommation de puissance excessivement grande. Un but de l'invention est donc de fournir un système de stockage à mémoire flash à base de fenêtres et une gestion et un procédé d'accès pour un tel système qui peuvent fournir un moyen plus fiable de charger des informations de fenêtre et peuvent aider à améliorer les performances d'accès par des opérations conduites en parallèle sur les capacités de lecture/écriture d'un certain nombre de secteurs. Le système de stockage à mémoire flash à base de fenêtres selon l'invention inclut une région à base de fenêtres et une région redondante réservée, dans lequel la région à base de fenêtres est utilisée pour stocker un certain nombre de fenêtres, chaque fenêtre étant associée à un certain nombre de blocs physiques. La région redondante réservée inclut une zone de lien dynamique, une zone d'information de fenêtre, une zone d'information de lien dynamique, et une zone d'information de démarrage; dans lequel la zone de lien dynamique inclut une pluralité de blocs d'allocation dynamique, chacun pouvant être alloué à n'importe quelle fenêtre. La zone d'information de fenêtre inclutne pluralité de blocs d'information de fenêtre, qui sont utilisés pour - stocker un jeu d'informations de fenêtre spécifique qui est dédié à une certaine fenêtre. La zone d'information de lien dynamique est utilisée pour enregistrer le statut de l'allocation des blocs d'allocation dynamique aux fenêtres. s En outre, I'invention propose un procédé de gestion pour un système de stockage à mémoire flash à base de fenêtres. Le système de stockage à mémoire flash à base de fenêtres inclut une unité de mémoire flash ayant une pluralité de blocs d'informations de fenêtre, chacun étant utilisé pour stocker une pluralité de jeux d'informations de fenêtre, chaque jeu d'informations de fenêtre étant associé à une fenêtre. Selon ce procédé de gestion, au démarrage du système de stockage à mémoire flash à base de fenêtres, la première étape est de sélectionner un sous-groupe de blocs d'informations de fenêtre; et de sélectionner, à partir des blocs d'informations de fenêtre sélectionnés, un jeu d'informations de fenêtre, et de charger le jeu d'informations de fenêtre sélectionné dans une unité SRAM. Ensuite, le jeu d'informations de fenêtre associé à une fenêtre sélectionnce par un utilisateur est placé dans une zone de variables de fenêtres actives de la SRAM; et lorsqu'une autre fenêtre devient la fenêtre active, de déplacer le jeu d'informations de fenêtre courant stocké dans la zone de variables de fenêtres actives vers une fenêtre réservée dans la SRAM. Au cas o une fenêtre sélectionnée par un utilisateur n'est pas associée à des jeux d'informations de fenêtre stockés dans la SRAM, I'un des jeux d'informations de fenêtre est sélectionné et une sauvegarde en est copiée dans la mémoire flash, et la copie de sauvegarde de le jeu d'informations de fenêtre est remplacée par un des jeux d'informations de fenêtre stocké dans le bloc d'informations de fenêtre correspondant à la fenêtre sélectionnée pour l'utilisateur pour établir la fenêtre sélectionnée pour l'utilisateur en tant que fenêtre active. Dans un mode de réalisation préféré de l'invention, le fait de vérifier si le jeu d'informations de fenêtre chargé dans la mémoire flash est correct est basé sur l'indicateur de blocs d'écriture et l'indicateur de blocs de secours. De plus, I'étape antérieure de vérification du contenu de le jeu d'informations de fenêtre est basé sur le critère: (1) vérifier qu'un code de correction d'erreurs dans l'information de fenêtre est correct; (2) vérifier qu'un code somme de vérification dans l'information de fenêtre est correct; (3) vérifier que le bloc de secours est un bloc effacé; (4) vérifier que le contenu d'un certain nombre de blocs logiques, un compteur de cycles, et le secteur accédé en dernier dans le bloc d'écriture sont compatibles avec le contenu de I'indicateur du bloc d'écriture; et (5) vérifier que le contenu d'un drapeau de verrouillage de phase dans le bloc d'écriture n'est pas égal à la valeur utilisée pour indiquer le premier secteur vide dans le bloc d'informations de fenêtre. Si le contenu du jeu d'informations de fenêtre est incorrect, un mode de réalisation préféré de l'invention effectue l'étape d'observation des jeux d'informations de fenêtre précédents stockés dans les blocs d'informations de fenêtre pour le dernier ensemble utilisable d'informations de fenêtre; dans lequel le jeu d'informations de fenêtre utilisable est le jeu d'informations de fenêtre qui contient le code de correction d'erreurs modifiable et le code somme de vérification correct dans les informations de fenêtre. Un autre mode de réalisation préféré de l'invention effectue l'étape de recherche de tous les blocs appartenant à la fenêtre dans la mémoire flash pour reconstruire le jeu d'informations de fenêtre. En outre, I'invention propose un procédé d'accès pour un système de stockage à mémoire flash à base de fenêtres incluant une unité de mémoire flash ayant une région à base de fenêtres et une région redondante réservée et incluant une pluralité de zones tampons. Dans la zone d'informations de fenêtre de la région redondante réservée, chaque jeu d'informations de fenêtre est associé à une fenêtre spécifique ayant un certain nombre de blocs physiques. Dans ce procédé d'accès selon l'invention, la première étape est de charger le jeu d'informations de fenêtre d'une fenêtre sélectionnée par un utilisateur dans une SRAM; et de trouver un secteur demandé par un composant faisant des requêtes d'accès aux données, et ensuite de charger le secteur demandé depuis la mémoire flash dans une des zones tampons. Ensuite, le secteur demandé chargé à ce moment dans une des zones tampons est transféré au composant faisant des requêtes d'accès aux données. Les deux étapes antérieures de transfert de tous les secteurs demandés au composant faisant des requêtes d'accès aux données sont effectuses en parallèle. c 2828567 - En outre, I'invention propose un autre procédé d'accès pour un système de stockage à mémoire flash à base de fenêtres incluant une unité de mémoire flash ayant une région à base de fenêtres et une région redondante réservée et incluant une pluralité de zones tampons. Dans la zone d'informations de fenêtre de la région redondante, chaque jeu d'informations de fenêtre est associé à une fenêtre spécifique ayant un certain nombre de blocs physiques. Dans ce procédé d'accès selon l'invention, la première étape consiste à transférer un secteur d'écriture qui doit être écrit dans la mémoire flash à l'une des zones tampons, et à calculer l'adresse du secteur d'écriture dans la mémoire flash. Ensuite, on vérifie si l'opération de lecture précédente de la mémoire flash est correcte; et on délivre un signal qui permet d'écrire dans la mémoire flash et on transfère ensuite le secteur d'écriture à la mémoire flash. Les deux étapes antérieures de transfert de tous les secteurs demandés au composant faisant des requêtes d'accès aux données sont effectuées en 1 5 parallèle. En conclusion, I'invention est caractérisée par l'utilisation de la région redondante réservée pour stocker des informations de fenêtre relatives à chaque fenêtre ainsi que par l'utilisation d'un procédé de construction rapide, d'un procédé de construction normal, d'un procédé de construction par recherche bloc à bloc pour aider la construction d'une information de fenêtre demandée pour initier rapidement un système de stockage à mémoire flash à base de fenêtres. De plus, I'invention utilise aussi des opérations conduites en parallèle pour améliorer les performances des opérations de lecture/écriture. L'invention peut être comprise de façon plus approfondie à la lecture de la description détaillée suivante des modes de réalisation préférés, en référence aux dessins qui l'accompagnent, dans lesquels: - FIG.1 est un diagramme schématique montrant la structure de données de la mémoire flash dans le système de stockage à mémoire flash à base de fenêtres selon l'invention; - FIG. 2 est un diagramme schématique montrant un mode de réalisation préféré de la structure de données de la zone redondante dans un bloc de données ou un bloc d'écriture; t 2828567 - -FIG. 3 est un diagramme schématique montrant un mode de réalisation prétéré de la structure de données de l'indicateur de bloc d'écriture ou de l'indicateur de bloc de secours; - FIG. 4 est un organigramme montrant un mode de réalisation préféré de la procédure effectuée par chaque module dans le système de stockage à mémoire flash à base de fenêtres de l'invention durant les opérations de lecture/écriture; - FIG. 5 est un diagramme schématique montrant un mode de réalisation préféré de l'architecture de la fenétre active et de la fenêtre réservée dans la SRAM; - FIG. 6 est un organigramme montrant un mode de réalisation préféré de la procédure effectuée par l'invention lors du chargement des inforrnations de fenétre dans la SRAM; - FIG. 7 est un organigramme montrant un mode de réalisation préféré de la procédure effectuée par le module de lecture/écriture de fenétre lors d'une opération d'écriture; - FIG. 8 est un diagramme schématique montrant un procédé classique pour lire les données à partir de secteurs; - FIG. 9 est un organigramme montrant un mode de réalisation préféré de la procédure effectuée par l'invention pour lire des données à partir d'un certain nombre de secteurs via des opérations conduites en parallèle; - FIG. 10 est un organigramme montrant un mode de réalisation préféré de la procédure effectuée par l'invention pour lire des donnces via des opérations conduites en parallèle; - FIG. 11 est un organigramme montrant un mode de réalisation préféré de la procédure effectuée par l'invention pour écrire des données de la mémoire flash via des opérations conduites en parallèle; et - FIG. 12 est un organigramme montrant un mode de réalisation préféré de la pro c édure effectuée p ar l' invention p our écrire d es donnces vi a des op érati ons conduites en parallèle. FIG. 1 est un diagramme schématique montrant la structure de données de l'espace de stockage de données de l'unité de mémoire flash dans un système de stockage à mémoire flash à base de fenêtres selon l'invention. Comme indiqué, I'espace de stockage des données de la mémoire flash est fractionné en un certain nombre de blocs et ces blocs sont agencés en deux groupes incluant une région à base de fene'tres 120 et une région redondante réservée 121. - La région à base de fenêtres 120 inclut un certain nombre de zones de fenêtre, qui sont numérotées de #O à #15, et chacune de celles-ci est fractionnée en 512 blocs à l'exception de la dernière zone de fenêtres #15 qui peut ne pas inclure exactement 512 blocs. La région redondante réservée 121 S est fractionnée en quatre zones: une zone de lien dynamique 101, une zone d'information de fenêtre 102, une zone d'information de lien dynamique 103 et une zone d'information de démarrage 104. La zone de lien dynamique 101 inclut un certain nombre de blocs qui sont alloués pour une utilisation par chaque fenêtre. Dans la zone d'informations de fenêtre 102, deux blocs sont alloués pour chaque fenêtre pour enregistrer ces informations de fenêtre. La zone d'information de lien dynamique 103 est utilisoe pour enregistrer le statut de l'allocation des blocs de la zone de lien dynamique 101. La zone d'information de démarrage 104 est utilisée pour enregistrer les emplacements de la zone de lien dynamique 101, la zone d'information de fenêtre 102, et la zone d'information de lien dynamique 103 ainsi que le nombre total de secteurs logiques dans le système de stockage à mémoire flash à base de fenêtres, etc. Comme illustré sur FIG.1, le format physique 105 représente le schéma d'accès utilisé par le contrôleur d'accès pour accéder à la mémoire flash; et le format logique 106 représente le schéma d'accès utilisé par le CPU pour accéder au système de stockage à mémoire flash à base de fenêtres; L'espace de stockage des données de la mémoire flash est fractionné en un total de 8192 blocs physiques, chaque bloc physique étant composé de 32 secteurs. Dans le format physique 105, ces blocs physiques 107 sont numérotés de 1 à 8 191, et leurs blocs relatifs 108 sont groupés par 512 blocs dans une pluralité de sous-groupes. A l'exception de la fenêtre #15, les blocs associés à chaque fenêtre sont numérotés de O à 511, et les blocs relatifs de la région redondante réservée 121 sont numérotés de 512 à 703. Le format logique 106 inclut un certain nombre de blocs logiques 110 (qui sont numérotés de O à 7999) ou un certain nombre de blocs logiques relatifs 109 (qui sont groupés par 512 blocs en une pluralité de sous-groupes). A l'exception de la fenêtre #15, les blocs logiques associés à chaque fenêtre sont numérotés de 0 à 511. Puisque chaque bloc logique est composé de 32 secteurs logiques, les secteurs logiques 112 sont numérotés de 0 à 255 999. Les secteurs logiques relatifs 111 sont groupés par 16 384 secteurs en une pluralité de sousgroupes. A l'exception de la fenêtre #15, les blocs logiques associés à chaque fenêtre sont numérotés de 0 à 16 383. On peut voir sur FIG. 1 que le procédé d'adressage logique du CPU serait incapable d'accéder à la région redondante S réservée 121. Chaque fenêtre inclut trois types de blocs: des blocs de données, des blocs d'écriture et des blocs de secours. Lorsqu'on souhaite effectuer une opération d'écriture sur le bloc de donnces précédent, I'opération d'écriture sera d'abord dirigée vers le bloc d'écriture; et si le bloc d'écriture est plein et si une autre opération d'écriture est prévue, alors le bloc d'écriture remplacera le précédent bloc de données, et le bloc de donnces précédent sera effacé pour devenir un bloc de secours qui peut ensuite être utilisé pour servir comme un bloc d'écriture pour une autre opération d'écriture. Comme illustré sur FIG. 1, la fenêtre 0 inclut un total de 512 blocs de données dans la fenêtre #0 100 ainsi qu'un bloc d'écriture et un bloc de secours alloué à la zone de lien dynamique 101. L'information de fenêtre de chaque fenêtre inclut une table de cartographie (ou de correspondance) "bloc de-donnces-vers-bloc-logique", l'indicateur de bloc d'écriture, et l'indicateur de bloc de secours. Dans le cas o une fenêtre ayant 512 blocs de données, un bloc d'écriture et un bloc de secours, cela nécessite l'utilisation de deux secteurs pour enregistrer toutes les informations de fenêtre de cette fenêtre. Ces deux secteurs sont utilisés pour enregistrer les relations de correspondance entre les 512 blocs de donnces et les blocs logiques dans leur zone de données utilisateur, et sont en outre utilisés pour enregistrer les indicateurs de blocs d'écriture et les indicateurs de blocs de secours dans leur zone redondante. FIG. 2 est un diagramme schématique montrant un mode de réalisation préféré de la structure de donnces de la zone redondante en blocs de données ou blocs d'écriture. Comme illustré, le numéro de bloc logique relatif 201 est utilisé pour en reg istrer le nu méro de bloc logique relatif qu i est mis en correspondance avec ce bloc. Le numéro de fenêtre 202 est utilisé pour indiquer la fenêtre qui est associée à ce bloc. Le compteur de cycles 203 est utilisé pour indiquer si les données correspondent à une version ancienne ou à une version nouvellement mise à jour; et il fonctionne de manière à ce que, pendant chaque opération d'écriture, le contenu du compteur de cycles du bloc d'écriture soit réglé pour être égal au compteur de cycles du bloc de données augmenté de 1. Le drapeau de verrouillage de phase 204 est utilisé pour enregistrer l'emplacement du secteur qui est utilisé pour sauvegarder l'information de fenêtre de la fenêtre active à ce moment, et dont la valeur peut être utilisée pour indiquer si l'action de sauvegarde précédente de l'information de fenêtre a été réalisée avec succès. Le code de vérification 205 est utilisé pour enregistrer le code de vérification des données antérieures. Le drapeau d'erreur de données 206 est utilisé pour indiquer si les données stockées dans la zone de données utilisateur dans le secteur sont correctes ou non. Le code de correction d'erreurs 208 est utilisé pour stocker le code de correction d'erreurs pour la zone de données utilisateur dans le secteur. FIG. 3 est un diagramme schématique montrant un mode de rénlisation préféré de la structure de données de l'indicateur de bloc d'écriture ou l'indicateur de bloc de secours. Comme illustré, le numéro de bloc relatif 301 est utilisé pour enregistrer le numéro de bloc logique relatif qui est mis en correspondance avec ce bloc. Le numéro de secteur logique relatif 302 est utilisé pour indiquer si le bloc est un bloc de secours (lorsque sa valeur hexadécimale est OxFFFF) ou pour indiquer la localisation du secteur qui est le dernier écrit dans le bloc d'écriture. Le numéro de fenêtre 303 est utilisé pour indiquer la fenêtre qui est associée à ce bloc. Le. compteur de cycles de bloc d'écriture 304 est utilisé pour enregistrer la valeur courante du compteur de cycles du bloc d'écriture. Le code de vérification 305 est utilisé pour stocker le code de vérification excluant le drapeau d'erreur de bloc et le code de correction d'erreurs. Le compteur de cycles d'information de fenêtre 306 peut être utilisé pour indiquer quel bloc d'information de fenêtre contient les donnces les plus récentes. Le drapeau d'erreur de bloc 307 est utilisé pour indiquer si le bloc est invalide. Le code de correction d'erreurs 308 est utilisé pour stocker le code de correction d'erreurs pour la zone de données utilisateur dans le secteur. -Les opérations d'accès à la mémoire flash sont effectuées par trois modules: le module de construction de fenêtre, le module de lecture/écriture de fenêtre, et le module d'accès à la mémoire flash. Le moduie de construction de fenêtre est responsable du chargement des informations de fenêtre de la fenêtre sélectionnée pour l'utilisateur dans la SRAM. Le module de lecture/écriture de fenêtre est utilisé pour déterminer à quel bloc de la mémoire flash on doit accéder en réponse à la requête du CPU. Le module d'accès à la mémoire flash est capable de réaliser des opérations directes de lecture, écriture, effacement, et vérification de statut sur la mémoire flash en réponse aux requêtes d'autres moduies. Ceci peut aider à simplifier la complexité opérationnelle des autres modules. Par exemple, I'organigramme de FIG. 4 montre un mode de réalisation préféré de la procédure effectuée par chaque module dans le système de stockage à mémoire flash à base de fenêtres de l'invention pendant des opérations de lecture/écriture. Comme illustré, la première étape 401 doit exécuter le module de construction de fenêtres; la seconde étape 402 doit exécuter le module de lecture/écriture de fenêtres; et la troisième étape 403 doit vérifier si on a accédé à tous les secteurs demandés; si NON, la procédure renvoie à l'étape 401; et si OUI, la procédure est terminée. Lors de cette procédure, I'appel du module d'accès à la mémoire flash est inclus dans la première sous-étape de l'étape 401 et la troisième sous-étape de l'étape 402. Dans l'exécution du module de construction de fenêtre, le souci principal est de gérer de façon effective toutes les fenêtres stockées dans la SRAM. Pour rébuire le temps de commutation entre différentes fenêtres dans la mémoire flash et la SRAM, il faut charger au moins deux jeux d'information de fenêtre associés à deux fenêtres en cours de commutation. Bien que le chargement d'un plus grand nombre de jeux d'information de fenêtre réduirait le temps de commutation, cela augmenterait de façon indésirable le coût en SRAM. Dans un mode de réalisation préféré de l'invention, on charge trois jeux 3 0 d' information de fenêtre, incluant de préférence le jeu d'information de fenêtre associé à la fenêtre #0 puisque la fenêtre #0 est fonctionnellement liée au fonctionnement du système de fichiers DOS, L'information de fenêtre chargée depuis la mémoire flash vers la SRAM inclut l'lndicateur de Bloc d'Ecriture et l'lndicateur de Bloc de Secours (ci-après désignés par " variables de fenêtre "). Il y a des accès fréquents à ces variables de fenêtre au cours du fonctionnement du système de stockage à mémoire flash à base de fenêtres; en conséquence, pour réduire la complexité du programme informatique et augmenter l'efficacité opérationnelle du code de ce programme, il est de pratique courante d'allouer ces variables de fenêtre à des emplacements fixes. Par exemple, comme montré sur la figure 5, les adresses SRAM 400-459 sont définies en tant que zone de variables de fenêtres réservées 501 pour l'allocation des variables de fenêtre 503 de la fenêtre réservoe #0, des variables de fenêtre 504 de la fenêtre réservée #1, et des variables de fenêtre 505 de la fenêtre réservée #2. Lorsqu'on souhaite commuter vers la fenêtre #O en tant que fenêtre active, étant donné que la fenêtre #O est actuellement une fenêtre réservée, il faut déplacer les variables de fenêtre de 20 octets depuis les adresses 400-419 vers les adresses 20-39, qui sont les emplacements de la zone de variables de fenêtres actives 502 o les variables de fenêtre 1 à 20 sont allouces. Cette action fait que la fenêtre #O devient la fenêtre active. Ensuite, si on souhaite commuter vers la fenêtre #2 en tant que fenêtre active, il faut d'abord ramener les variables de fenêtre de la fenêtre #0 (qui sont actuellement stockées dans la zone de variables de fenêtres actives 502) à leurs emplacements d'origine, puis déplacer les variables de fenêtre de la fenêtre réservoe #2 vers la zone de variables de fenêtres actives 502, ce qui fait que la fenêtre #2 devient la fenêtre active. Dans la programmation, la commutation entre les fenêtres nécessite seulement de déplacer les variables de fenêtre 1-20, de sorte que cela peut aider à réduire la complexité du code requis par le programme et donc à augmenter l'efficacité globale du fonctionnement du système à fenêtres. Quand la fenêtre sélectionnée par l'utilisateur n'est pas une fenêtre réservoe, il faut d'abord ramener la fenêtre active vers la zone de fenêtres réservées, puis choisir une fenêtre réservée et faire une copie de sauvegarde de celle-ci en mémoire flash, et finalement changer les variables de fenêtre de la fenêtre sélectionnée par l'utilisateur dans Ia zone de variables de fenêtres actives 502. Apparemment, cette méthode de sauvegarde de garantirait pas que la-prochaine utilisation de l'information de fenêtre dans la mémoire flash serait normale. Il y a donc un besoin pour une solution permettant de charger l'information de fenêtre correcte en SRAM au cours de la prochaine utilisation de l'information de fenêtre dans la mémoire flash. L'invention procure trois façons de résoudre le problème précité: (A) Méthode de Construction Rapide; (B) Méthode de Construction Normale; et (C) Méthode de Construction à Recherche Bloc-par-Bloc. (A) Méthode de Construction Rapide. Cette méthode est capable de juger rapidement si le jeu d'information de fenêtre courant stocké dans la mémoire flash est correct sur la base des critères suivants: (1) le code de correction d'erreur dans le secteur d'information de fenêtre est correct; (2) le code de vérification dans le secteur d'information de fenêtre est correct; (3) le bloc de secoursindiqué par l'lndicateur de Bloc de Secours est un bloc qui a été précédemment effacé; (4) le bloc d'écriture indiqué par l'lndicateur de Bloc d'Ecriture contient un numéro de bloc logique, un compteur de cycles, et de I'information sur le dernier secteur écrit, qui sont cohérents avec les données enregistrées dans l'lndicateur de Bloc d'Ecriture; (5) le bloc d'écriture indiqué par l'lndicateur de Bloc d'Ecriture contient une valeur de drapeau de verrouillage de phase qui n'est pas égale à l'adresse du premier secteur vierge dans le bloc d' information de fenêtre relatif à la fenêtre. En pratique, comme la plupart de l'information de fenêtre est normale, il est faisable de charger directement le jeu d'information de fenêtre associé dans la SRAM et d'utiliser cette Méthode de Construction Rapide pour vérifier si le contenu du jeu d'information de fenêtre chargé est normal. S'il n'est pas normal, on peut utiliser l'une des deux autres méthodes pour charger correctement le jeu d'informations de fenêtres dans la SRAM. (B) - Méthode de Construction Normale. Si la Méthode de Construction Rapide qui précède n'est pas applicable, on peut utiliser à la place la Méthode de Construction Normale, et qui examine tous les jeux d'information de fenêtre précédemment chargés pour trouver le dernier jeu d'information de fenêtre utilisable. Puisque la table de correspondance bloc-de-données vers-bloc-logique dans le jeu d'information de fenêtre contient l'information sur les emplacements de tous les blocs de données associés de la fenêtre, et puisque l'lndicateur de Bloc d'Ecriture et l'lndicateur de Bloc de Secours contiennent l'information sur les emplacements de tous les blocs d'écriture et de secours associés de la fenêtre, tous les blocs associés de cette fenêtre peuvent être trouvés pour aider à la construction d'un jeu d'information de fenêtre correct pour la fenêtre et au chargement de ce jeu d' information de fenêtre dans la SRAM. Le jeu d'information de fenêtre utilisable mentionné précédemment devrait remplir les critères suivants: (1) les données contenues dans la table de correspondance bloc-de-données-vers-bloc-logique du jeu d'information de fenêtre devraient ne contenir aucun code de correction d'erreur non corrigible; et, (2) le code de vérification contenu dans 1'1ndicateur de Bloc d' Ecriture et l' lnd icateur de Bloc de Secours du jeu d'information de fenêtre est correct. (C) Méthode de Construction à Recherche Bloc-par-Bloc. Une méthode alternative à la Méthode de Construction Rapide est la Méthode de Construction à Recherche Bloc-par-Bloc, qui parcourt tous les blocs probables pour récupérer les blocs appartenant à la fenêtre et construire ainsi un nouveau jeu d'information de fenêtre. Comme les blocs d'une fenêtre sont interchangeables avec les blocs d'une autre fenêtre, le processus de recherche peut n'être exécuté que dans la zone de numéro de fenêtre et tous les blocs qui ont été alloués dynamiquement. Si un bloc de secours est situé dans la zone de lien dynamique, il est difficile de distinguer à quel fenêtre ce bloc de secours appartient. En conséquence, il suffit de trouver tous les blocs de donnces et les blocs d'écriture qui sont associés à cette fenêtre, puis de réallouer un nouveau bloc de secours. Ceci permet la construction d'un jeu normal d'information de fenêtre qui est ensuite chargé dans la SRAM. La figure 6 est un organigramme montrant un mode de réalisation préféré des étapes de procédure détaillées effectuées à l'étape 401, en exécution du module de construction de fenêtre représenté sur la figure 4 pour charger de l'information de fenêtre en SRAM. Dans cette procédure, la première étape 601 est de vérifier si la fenêtre sélectionnée par l'utilisateur est la fenêtre active courante; si OUI, on dirige l'opération de fenêtre vers la fenêtre active courante; tandis que si c'est NON, la procédure passe à la prochaine étape 602 dans laquelle la fenêtre active courante est ramenée à l'emplacement de fenêtre réservée. La procédure passe alors à l'étape 603, dans laquelle on vérifie si la fenêtre sélectionnée par l'utilisateur est l'une des fenêtres réservées; si OUI, la procédure passe à l'étape 609 dans laquelle on bascule la fenêtre sélectionnée par l'utiilsateur en tant que fenêtre active; tandis que si c'est NON, la procédure passe à l'étape 604 dans laquelle on sélectionne l'une des fenêtres réservées et on en copie une sauvegarde dans la mémoire flash. La procédure passe alors à l'étape 605 dans laquelle on - utilise la Méthode de Construction Rapide pour charger le jeu d'information de fenêtre de la fenêtre sélectionnée par l'utilisateur dans la SRAM. Si le chargement est un succès, la procédure saute à la fin; tandis que si c'est un échec, la procédure passe à la prochaine étape 606 dans laquelle on utilise à la place la Méthode de Construction Normale. Si l'utilisation de la Méthode de Construction Normale est un succès, la procébure saute à la fin; tandis que si c'est un échec, la procédure passe à la prochaine étape 607 dans laquelle on utilise la méthode de Construction à Recherche Bloc-par-Bloc pour construire l'information de fenêtre requise et en copier une sauvegarde dans la mémoire flash. A l'étape finale 609, on charge l'information de fenêtre dans la zone de fenêtres actives de la SRAM pour provoquer le basculement de la fenêtre sélectionnée par l'utilisateur en tant que fenêtre active. La figure 7 est un organigramme montrant un mode de réalisation préféré des étapes de procédure détaillées effectuées à l'étape 402 montré sur la figure 4 en exécution du module de lecture/écriture de fenêtre. La première étape 701 consiste à déterminer si l'opération d'écriture concerne le bloc d'écriture d'origine; si OUI, la procédure passe à l'étape 702; tandis que si c'est NON, la procébure passe à l'étape 705. A l'étape 702, on détermine s'il se produit une opération d'écrasement; si OUI, la procédure passe à l'étape 703; tandis que si c'est NON, la procédure passe à l'étape 707. A l'étape 707, on vérifie si il faut effectuer une opération de pré-écriture. A l'étape 703, on nettoie le bloc d'écriture d'origine; puis la procédure passe à l'étape 704 dans laquelle on alloue le bloc de secours au bloc d'écriture d'origine, et la procédure revient ensuite à l'étape 701. A l'étape 701, si le résultat est NON, la procédure passe à l'étape 705 dans laqueile on nettoie le bloc d'écriture d'origine; puis la procédure passe à l'étape 706 dans laquelle on alloue la bloc de secours au bloc d'écriture auquel on est en train d'accéder; et la procédure passe ensuite à l'étape 707 dans laquelle on vérifie si il faut effectuer une opération de pré-écriture; si NON, la procédure passe à l'étape 709; tandis que si c'est OUI, la procédure passe à l'étape 708 dans laquelle on effectue une opération de pré-écriture; puis la procédure passe à l'étape 709. A l'étape 709, on effectue une opération d'écriture pour écrire des données dans les blocs d'écriture. Cette opération d'écriture se poursuit jusqu'à ce que le bloc d'écriture courant soit plein ou que les données à écrire soient terminées. La procédure passe alors à l'étape 710 dans laquelle on vérifie si toutes les don nées de la fenétre sélection née pa r l' utilisateu r ont été écrites; si c'est NON, la procédure revient à l'étape 701; sinon, la procédure est terminée. Le nettoyage du bloc d'écriture d'origine réalisé aux étapes 703 et 705 incorpore les sous étapes ci-dessous. (1) remplissage de chaque secteur vide dans le bloc d'écriture à l'aide des donnces dans le bloc de donnces; (2) changement du bloc d'écriture en bloc de données (c'est-à-dire mise à jour du contenu de la table cartographique "bloc de données vers bloc logique" dans l'information de fenêtre); et (3) effacement du bloc de données d'origine pour le transformer en un bloc de secours. L'opération de pré-écriture effectuée lors de l'étape 77 est utilisoe pour amener les données de secteur dans les blocs de données qui ne seront pas écrits par l'unité centrale de traitement (CPU) dans les blocs d'écriture. L'étape 402 montrée en figure 4 pour exécuter écriture de fenêtre / module S d'écriture comporte une opération de lecture relativement simple, qui détermine d'abord si les données requises sont stockées dans les blocs d'écriture; si OUI, une opération de lecture est effectuée sur le bloc d'écriture pour lire les données désirces; si c'est NON, cela indique que les données requises sont stockées dans les blocs de données. Une opération en parallèle pipelinée est utilisée pour effectuer l'opération de lecture / écriture de façon à augmenter la vitesse d'accès. La réalisation de cette opération en parallèle doit remplir les conditions de système suivantes: (1) au moins deux tampons indépendants en configuration matériel, I'un des tampons étant utilisé pour la communication avec l'unité centrale et I'autre étant capable d'effectuer une opération d'accès à la mémoire flash en même temps; et (2) au moins deux secteurs consécutifs dans la fenêtre sélectionnée par l'utilisateur, qui sont accédés par l'unité centrale. L'opération de l'unité centrale dans la lecture de données provenant d'un secteur de la mémoire flash comporte trois phases. Dans la première phase, le micro processeur calcule o est logée l'adresse du secteur dans la mémoire flash stockant les données requises par l'unité centraie. Dans la seconde phase, le micro processeur émet une requête de lecture vers la mémoire flash, puis attend jusqu'à ce que la mémoire flash soit prête et enfin prélève les donnces requises dans la mémoire flash et les place dans le tampon; au cours de cette phase, une correction d'erreur est effectuée pour réaliser toute correction nocessaire des données. Dans la troisième phase, un signal "prêt" est émis vers l'unité centrale pour lui indiquer que le tampon est prêt à transférer des données, ce qui permet à l'unité centrale de prélever les données requises dans le secteur du tampon. Si l'accomplissement de la première phase de fonctionnement nécessite 25 micro secondes, I'accomplissement de La seconde phase nécessite 25 millisecondes et l'accomplissement de la troisième phase 100 millisecondes. Ainsi l'opération de lecture de chaque secteur exige un total de 190 millisecondes. Comme le montre la figure 8, il faut 190 millisecondes pour accomplir l'opération de lecture 801 du premier secteur. L'accomplissement de l'opération ultérieure de lecture 802 sur le second secteur demande également 190 millisecondes. Si en conséquence il y a en tout n secteurs à lire, I'accomplissement de l'opération de lecture complète sur les n secteurs exige * n millisecondes. La figure 9 est- un schéma montrant un mode avantageux de réalisation du processus réalisé par l'invention dans la lecture de données à partir de plusieurs secteurs par un fonctionnement parallèle en pipeline. L'accomplissement de l'opération de lecture 901 sur le premier secteur exige trois étapes et 190 millisecondes. Dans la réalisation avantageuse, la phase 1 est pour trouver un secteur requis par un composant de requête d'accès aux données et la phase 2 est pour charger le secteur requis à partir de la mémoire flash dans l'une des zones tampons. La phase 3 est pour transférer le secteur requis, chargé dans la zone tampon, vers le composant qui requiert un accès de donnces. Lorsque l'opération de lecture 901 passe à la seconde phase, la première phase 903 de l'opération de lecture sur le second secteur démarre; et une fois que l'opération de lecture 901 passe à la troisième phase 904, la seconde phase 905 et la troisième phase 906 de l'opération de lecture sur le second secteur démarrent l'une après l'autre. En conséquence, I'opération de lecture complète 907 sur le second secteur ne prend que 100 millisecondes (c'est-à-dire la durée complète de la troisième phase). De plus, lorsque l'opération de lecture 907 sur le second secteur passe à la troisième phase 908, la seconde phase 909 de l'opération de lecture sur le secteur 3 et la première phase 910 de l'opération de lecture sur le secteur 4 démarrent l'une après l'autre. En conséquence l'opération de lecture complète sur le secteur 3 ne prend que 100 millisecondes. On peut en conclure que, pour n secteurs, I'accomplissement de l'opération de lecture complète sur les n secteurs prend 190+1 00*(n-1)ms. La figure 10 est un schéma montrant un mode avantageux de réalisation du processus réalisée par l'invention pour effectuer l'opération de lecture par fonctionnement en parallèle en pipeline. La première étape 1001 consiste à - 2828567 réaliser la première phase pour calculer l'adresse du secteur à accéder; au cours de l'étape suivante 1002, on démarre la seconde étape, mais on effectue uniquement la première moitié du processus; i'étape suivante 1003 consiste à calculer l'adresse du secteur suivant à accéder. Au cours de l'étape suivante S 1004, on effectue la seconde moitié du processus de la seconde phase de façon à compléter la seconde phase de fonctionnement. Au cours de l'étape suivante 1005, I'unité centrale est vérifiée pour voir si elle a reçu toutes les données provenant du secteur précédent dans le tampon (si le secteur courant est le premier secteur, cette étape est sautée) et notification est donnée à I'unité centrale (CPU) de recevoir les données provenant de ce secteur dans le tampon. Lors de l'étape suivante 1006, on vérifie s'il y a encore des données à lire. Si OUI, le processus revient à l'étape 1002; si NON, le processus passe à i'étape 1007 et l'unité centrale continue à recevoir des données des tampons jusqu'à ce que toutes les données soient reçues. Le processus se termine 1 5 alors. Le fonctionnement de l'unité centrale dans l'écriture des données provenant d'un secteur dans le système de stockage à mémoire flash comporte également trois phases. Dans la première phase, le micro processeur envoie une requête de transfert de données à l'unité centrale, ce qui provoque le transfert de données au tampon par l'unité centrale. Dans la seconde phase, le micro processeur calcule l'adresse du secteur o les données doivent être écrites. Dans la troisième phase, I'opération de lecture précédente est vérifiée pour voir si toutes les données sont correctement écrites et alors une requête d'écriture est émise pour écrire les données dans la mémoire flash. La figure l l est un schéma montrant un autre mode de réalisation du processus réalisé par l'invention pour écrire des données en mémoire flash par un fonctionnement en parallèle de type pipeline; I'opération de lecture est divisée en trois phases. La phase 1 consiste à transférer un secteur d'écriture qui doit être écrit en mémoire flash vers une des zones tampon. La phase 2 consiste à calculer l'adresse du secteur d'écriture dans la mémoire flash. La phase 3 consiste à vérifier si l'opération décriture précédente en mémoire flash est correcte et à transférer le secteur d'écr'iture dans la zone tampon vers la mémoire flash. De plus, dans ce mode de réalisation, I'opération d'écriture de la phase 1 pour le secteur 1 ( 1101) passe à la phase 2 du secteur 1 (1102) avant la fin de la phase 1 (1101) et la phase 2 (1102) se termine avant la fin de la phase 1 (1101). Lors de l'écriture en phase 1 du secteur 2 (1103), la phase 3 du secteur 1 (1104) et la phase 2 du secteur 2 (1105) démarrent l'une après I'autre. La phase 2 du secteur 2 (1105) se termine la première et la phase 3 du secteur 1 (1104) et la phase 1 du secteur 2 (1103) se terminent l'une après l'autre. Toutes les autres phase pour finir l'opération de lecture démarrent et s'arrêtent l'une après l'autre de la même façon. Finalement, la phase 3 pour le dernier secteur (1109) démarre et se termine individueliement. La figure 12 est un schéma d'un autre mode avantageux de réalisation du processus de l'invention pour écrire des données par un fonctionnement en parallèle de type pipeline. Elle montre les sous étapes détaillées de l'étape 709 du schéma de la figure 7. Au début du schéma de la figure 7, les donnces dans le premier secteur sont transférées au tampon. Dans le schéma de la figure 12, la première étape 1201 consiste à calculer l'adresse du secteur à accéder dans la mémoire flash. L'étape suivante consiste à attendre jusqu'à ce que l'unité centrale ait rempli un tampon; puis on détermine s'il reste des données qui n'ont pas été transférées au tampon; si OUI, I'unité centrale continue à transférer les données du secteur suivant au tampon. Lors de l'étape suivante 1203, on détermine si l'opération de lecture précédente a été correctement exécutée (si le secteur courant est le premier secteur, cette étape est sautée); puis un signal d!entrée séquentiel et un signal d'adresse sont envoyés pour provoquer le transfert des données dans le tampon vers ia mémoire flash. L'étape suivante 1204 consiste à calculer l'adresse du secteur suivant à accéder en mémoire flash, en succession du secteur précédent. L'étape suivante 1205 consiste à attendre jusqu'à la fin du transfert de données du tampon vers la mémoire flash, puis un signal d'autorisation d'écriture est émis vers la mémoire flash. Lors de l'étape suivante 1206, on détermine si le bloc d'écriture est plein; si OUI le processus saute à l'étape 1208; si NON, le processus passe à l'étape suivante 1207. Lors de 'étape 1207, on vérifie si toutes les données ont été transférées; si NON, le processus revient à l'étape 1202; si OUI le processus passe à l'étap'e 1208. Lors de l'étape 1208, on - vérifie que l'opération d'écriture précédente a été correctement exécutée et le processus se termine. Au cours du fonctionnement en parallèle de type pipeline, les étapes suivantes sont exécutées si l'opération de lecture ne s'exécute pas correctement: (1) arrêt du fonctionnement en parallèle de type pipeline (2) recherche d'un bloc de secours utilisable; (3) transfert des secteurs utiles du bloc défectueuxvers le bloc de secours; (4) mise en place du drapeau d'erreur de bloc sur le bloc défectueux et remplacement du bloc défectueux par le bloc de secours obtenu lors de I'étape (2); et (5) reprise du fonctionnement en parallèle du type pipeline En conclusion l'invention a les avantages suivants. Elle utilise trois méthodes, à savoir la méthode de construction rapide, la méthode de construction normale et la méthode de construction à recherche bloc par bloc pour charger I'information de fenêtres dans la mémoire vive statique puis elle utlise un fonctionnement en parallèle de type pipeline pour améliorer les opérations de lecture / écriture de telle façon que l'opération d'accès au secteur suivant commence alors que l'opération d'accès au secteur courant n'est effectuée qu'à demi. L'invention a été décrite en utilisant des exemples. Mais la portée de l'invention ne se limite pas aux modes de réalisation décrits et couvre toutes les variantes et modifications dans le cadre des équivalences. REVENDICATIONS 1. Procédé de gestion de système de stockage à mémoire flash à base de fenétres ayant une unité de mémoire flash ayant une zone d'information de fenétre fractionnée en plusieurs blocs d'informations de fenétre, chacun utilisé pour stocker plusieurs jeux d'informations de fenêtres dont chacun est associé à une fenétre, caractérisé en ce que 1. au démarrage du système de stockage à mémoire flash à base de fenétre, on sélectionne un sous groupe de blocs d'information de fenétre; et à partir des blocs sélectionnés d'information de fenétre, on sélectionne un jeu d'informations de fenêtre et on charge le jeu d'informations de fenêtre sélectionné dans une mémoire vive statique (SRAM); 2. on place une partie du jeu d'informations de fenêtre, associée à une fenétre sélectionnée par l'utilisateur, dans une zone variable de mémoire active de la mémoire vive statique; 3. Iorsque la fenêtre sélectionnée par l'utilisateur n'est pas la fenêtre active, on déplace la partie du jeu d'informations de fenêtre stockée dans la zone variable de la fenêtre active vers une zone variable de fenêtre réservée dans la mémoire vive statique; et 4. dans le cas ou la fenétre sélectionnée pa m I'utilisateur n'est pas associée à des jeux d'informations de fenétres stockés dans la mémoire vive statique, on sélectionne un des jeux d'informations de fenêtres ci-dessus et on en copie une sauvegarde dans la mémoire flash, et on remplace la copie de sauvegarde du jeu d'informations de fenétre par un jeu sélectionné parmi les jeux d'informations de fenétres stockés dans le bloc d'informations de fenétre correspondant a la fenétre sélectionnée par l'utilisateur pour établir la fenétre sélectionnée par l'utilisateur en tant que fenétre active 2. Procédé de gestion suivant la revendication 1, dans lequel les jeux d'informations de fenétre chargés dans la mémoire vive statique comportent un jeu d'informations de fenétre correspondant à une fenétre # 0 3. Prcédé de gestion suivant la revendication 1, dans lequel chaque jeu d'information de fenêtre comprend: - une table de cartographie " bloc de données vers bloc logique ", qui stocke les relations cartographiques entre plusieurs blocs de données physiques et plusieurs blocs de données logiques; - un indicateur de bloc d'écriture dont le contenu est utilisé pour indiquer l'état du bloc d'écriture qui est à ce moment utilisé par la fenêtre.associée au jeu d'informations de fenêtre; et - un indicateur de bloc de secours dont le contenu est utilisé pour indiquer l'état d'un bloc de secours utilisé à ce moment par la fenêtre associée au jeu d'informations de fenêtre. 4. Procédé de traitement suivant la revendication 3, dans lequel le chargement des jeux d'informations de fenêtre dans la mémoire vive statique comporte les sous étapes suivantes: - une fois les jeux d'informations de fenêtre chargés, on détermine si le jeu d'informations de fenêtre correspondant est correct, à partir du contenu de l'indicateur de bloc d'écriture et de l'indicateur du bloc de rechange; et - si le jeu d'informations de fenêtre est incorrect, on corrige le contenu du jeu d'informations de fenêtre à partir des données stockées dans la mémoire flash et on charge alors l'information de fenêtre corrigée dans la mémoire vive statique. 5. Procédé de gestion suivant la revendication 4, dans lequel la détermination si le jeu d'information de fenêtre est correct comporte les sous-étapes suivantes: - on vérifie qu'un code de correction d'erreurs dans l'information de fenêtre est correct; - on vérifie qu'un code somme de vérification de l'information de fenêtre est correct; - on vérifie que le bloc de secours est un bloc effacé; - on vérifie que le contenu d'un numéro de bloc logique, d'un compteur de cycles et d'un secteur accédé en dernier sont compatibles avec le contenu de l'indicateur de bloc d'écriture; et J::!;- - on verifie que le contenu d'un fanion de blocage cleph une valeur utilisée pour indiquer le premier secteur ve f1 d'informations defenêtre. 6. Procédé de gestion suivant la revendication 4, dans lequel l'étape de correction du contenu du jeu d'informations de fenêtre fondé sur ies donnée;s stockées dans la mémoire flash comporte la sous étape suivante:: on fait une recherche dans tous les blocs appartenant à la fenêtre pour: reconstituer le jeu d'informations de fenêtre à partir du dernier jeu d'informations de fenêtre utiilsable, dans lequel le jeu d'informations de: fenêtre utilisable est le jeu d'informations de fenêtre qui contient un code de correction d'erreurs permettant la correction de la table cartographique bloc de do n née vers bloc log ique et contient u n code somme de vérification correct dans l'indicateur de bloc d'écriture et l'indicateur de bloc de secours. 7. Procédé de gestion suivant la revendication 4, dans lequel l'étape de correction du contenu du jeu d'informations de fenêtre fondée sur les données stockées dans la mémoire flash comporte la sous-étape consistant à trouver tous les blocs appartenant à la fenêtre dans la mémoire flash et à reconstituer