Brevet FR2846460A1 — publié le 20040430

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émoire 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 10 depuis l'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 15 de mémoire flash et une interface CPU; dans lequel l'unité ROM est utilisée pour stocker le code de programme s'exécutant sur le microprocesseur; l'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; l'interface CPU est utilisée pour permettre au contrôleur d'accès de communiquer avec le 20 CPU; et l'interface de mémoire flash est utilisée pour autoriser l'accès aux données stockées dans la mémoire flash. L'espace de stockage de données 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 25 spécifiques pour enregistrer les informations relatives à chaque fenêtre (ciaprès désignées par "informations de fenêtre"). Dans le but de réduire le cot 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 5 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é 10 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 15 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 à 20 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 30 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 inclut i-ne 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. En outre, l'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 10 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 15 d'informations de fenêtre sélectionné dans une unité SRAM. Ensuite, le jeu d'informations de fenêtre associé à une fenêtre sélectionnée 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 20 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, l'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 25 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 30 basé sur l'indicateur de blocs d'écriture et l'indicateur de blocs de secours. De plus, l'é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 5 l'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 10 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, l'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 20 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 25 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 30 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 effectuées en parallèle. En outre, l'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 5 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 10 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 15 parallèle. En conclusion, l'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 20 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, l'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 25 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; - -FIG. 3 est un diagramme schématique montrant un mode de réalisation préfé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 5 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 10 procédure effectuée par l'invention lors du chargement des informations 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 données via des opérations conduites en parallèle; - FIG. 1 1 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 25 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 procédure effectuée par l'invention pour écrire des données via des opérations conduites en parallèle. FIG. 1 est un diagramme schématique montrant la structure de 30 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é, l'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 fenêtres 120 et une région redondante 35 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 #0 à #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 5 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 10 alloués pour chaque fenêtre pour enregistrer ces informations de fenêtre. La zone d'information de lien dynamique 103 est utilisée 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 15 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 20 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 25 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 0 à 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 0 à 7999) ou un certain nombre de blocs logiques relatifs 109 (qui sont 30 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 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 données précédent, l'opération d'écriture sera d'abord dirigée vers le bloc d'écriture; et si le bloc d'écriture est plein et si 10 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 données 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 15 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) "blocde-données-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 20 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 données et les blocs logiques dans leur zone de données utilisateur, et sont en outre utilisés pour enregistrer les 25 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 données 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 enregistrer le numéro de bloc logique relatif qui 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 5 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é 10 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éalisation 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. 20 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 25 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 données les plus récentes. Le drapeau 30 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 module de construction de fenêtre est responsable du chargement des informations de fenêtre de la 5 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 10 aux requêtes d'autres modules. Ceci peut aider à simplifier la complexité opérationnelle des autres modules. Par exemple, l'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 15 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, l'appel du module d'accès à 20 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éduire le temps de commutation entre différentes fenêtres dans 25 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 cot en SRAM. Dans un mode de réalisation préféré de l'invention, on charge trois jeux 30 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, il - L'information de fenêtre chargée depuis la mémoire flash vers la SRAM inclut l'indicateur de Bloc d'Ecriture et l'indicateur 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 à 5 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 10 fenêtres réservées 501 pour l'allocation des variables de fenêtre 503 de la fenêtre réservée #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 #0 en tant que fenêtre active, étant donné que la fenêtre #0 est actuellement une fenêtre réservée, il 15 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 allouées. Cette action fait que la fenêtre #0 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 20 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éservée #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 25 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éservée, il faut d'abord ramener la fenêtre active vers la zone de fenêtres 30 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 la 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 10 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 secours indiqué par l'indicateur de Bloc de Secours est un bloc qui a étéprécédemment effacé; (4) le bloc d'écriture indiqué par l'indicateur de Bloc d'Ecriture contient un numéro de bloc logique, un compteur de cycles, et de 20 l'information sur le dernier secteur écrit, qui sont cohérents avec les données enregistrées dans l'indicateur de Bloc d'Ecriture; (5) le bloc d'écriture indiqué par l'indicateur 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 25 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 30 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 5 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'indicateur de Bloc d'Ecriture et l'indicateur de Bloc de Secours contiennent l'information sur les emplacements 10 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 15 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 noncorrigible; et, (2) le code de vérification contenu dans l'indicateur de Bloc d'Ecriture et l'indicateur 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 25 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 30 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 données 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 5 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 10 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 15 bascule la fenêtre sélectionnée par l'utilisateur 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 20 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édure saute à la fin; tandis que si 25 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 30 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édure 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; 5 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 laquelle 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 15 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 20 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 données de la fenêtre sélectionnée par l'utilisateur 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 données dans le bloc de données; (2) changement du bloc d'écriture en bloc de données (c'est-à-dire mise à 30 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 utilisée pour amener les données de secteur d.ans 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 5 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ésirées; 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, l'un des tampons étant utilisé pour la communication avec l'unité centrale et 15 l'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 20 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é centrale. 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 25 données 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 nécessaire 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 30 données requises dans le secteur du tampon. Si l'accomplissement de la première phase de fonctionnement nécessite 25 micro secondes, l'accomplissement de [a 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 5 190 millisecondes. Si en conséquence il y a en tout n secteurs à lire, l'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 10 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 15 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 données. 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 20 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, l'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 25 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, l'accomplissement de l'opération de lecture complète sur les n secteurs prend 30 190+100*(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 à 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; l'étape suivante 1003 consiste à calculer l'adresse du secteur suivant à accéder. Au cours de l'étape suivante 5 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, l'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 à 10 l'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 à l'é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 15 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 20 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, l'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 11 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; l'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 30 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, l'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 5 l'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 individuellement. 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 données dans le premier secteur sont transférées au tampon. Dans le schéma de la figure 12, 15 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, l'unité centrale continue à transférer les données du secteur suivant au tampon. Lors de l'étape suivante 20 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 la mémoire flash. L'étape suivante 1204 consiste à calculer l'adresse du secteur suivant à 25 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 30 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'étape 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éfectueux vers 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 10 l'é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 15 l'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 lecture d'une mémoire flash par un composant faisant des requêtes d'accès aux données, dans lequel la mémoire flash comprend une 5 pluralité de secteurs de stockage, et dans lequel une opération de lecture d'un secteur parmi les secteurs de stockage nécessite une pluralité de phases prises en charge par un contrôleur d'accès, ce procédé de lecture comportant les phases consistant à: - effectuer une première opération de lecture pour lire un secteur courant parmi les secteurs de stockage; et commencer à effectuer une seconde opération de lecture d'un secteur suivant parmi les secteurs de stockage, cette seconde opération de lecture débutant avant que soit achevée la première opération de lecture, de manière à diminuer le temps nécessaire aux opérations de lecture et à accroître 15 la performance globale du système. 2. Procédé de lecture selon la revendication 1, comprenant en outre une phase consistant à commencer à effectuer une troisième opération de lecture d'un autre secteur suivant avant que la première et la deuxième opérations de 20 lecture ne soient achevées. 3. Procédé de lecture selon la revendication 1, dans lequel les phases comprennent une première phase consistant à trouver un secteur parmi les secteurs de stockage à lire, une deuxième phase consistant à transmettre une 25 information à lire depuis la mémoire flash vers le contrôleur d'accès, et une troisième phase consistant à transmettre une information à lire du contrôleur d'accès vers le composant faisant des requêtes d'accès. 4. Procédé de lecture selon la revendication 1, comprenant en outre la 30 répétition des phases précédentes tant qu'il reste un secteur à lire. 5. Procédé de lecture selon la revendication 3, dans lequel la seconde phase de la première opération de lecture chevauche la première phase de la seconde opération de lecture. 6. Procédé de lecture selon la revendication 3, dans lequel la troisième phase de la première opération de lecture chevauche la deuxième phase de la seconde opération de lecture. 7. Procédé de lecture selon la revendication 3, comprenant en outre une 10 phase consistant à commencer à effectuer une première phase d'une troisième opération de lecture pour trouver un secteur supplémentaire à lire parmi les secteurs de stockage avant que la première et la deuxième opérations de lecture ne soient achevées. 8. Procédé de lecture selon la revendication 7, dans lequel la troisième phase de la première opération de lecture, la deuxième phase de la deuxième opération de lecture, et la première phase de la troisième opération de lecture, se chevauchent. 9. Procédé d'écriture sur une mémoire flash à partir d'un composant faisant des requêtes d'accès aux données, dans lequel la mémoire flash comprend une pluralité de secteurs de stockage, et dans lequel une opération d'écriture d'un secteur parmi les secteurs de stockage nécessite une pluralité de phases prises en charge par un contrôleur d'accès, ce procédé d'écriture comportant les 25 phases consistant à: - effectuer une première opération d'écriture pour écrire un secteur courant parmi les secteurs de stockage; et - commencer à effectuer une seconde opération d'écriture d'un secteur suivant parmi les secteurs de stockage, cette seconde opération 30 d'écriture débutant avant que soit achevée la première opération d'écriture, de manière à diminuer le temps nécessaire aux opérations d'écriture et à accroître la performance globale du système. 10. Procédé d'écriture selon la revendication 9, comprenant en outre une phase consistant à commencer à effectuer une troisième opération d'écriture d'un autre secteur suivant avant que la deuxième opération d'écriture ne soit achevée. 11. Procédé d'écriture selon la revendication 9, dans lequel les phases comprennent une première phase consistant à transmettre une information à écrire vers le contrôleur d'accès vers le composant faisant des requêtes d'accès, une deuxième phase consistant à trouver un secteur parmi les 10 secteurs de stockage à écrire, et une troisième phase consistant à transmettre une information à écrire depuis le contrôleur d'accès vers la mémoire flash. 12. Procédé d'écriture selon la revendication 9, comprenant en outre la répétition des phases précédentes tant qu'il reste un secteur à écrire. 15 13. Procédé d'écriture selon la revendication 11, dans lequel la troisième phase de la première opération d'écriture chevauche la première phase de la seconde opération d'écriture. 14. Procédé d'écriture selon la revendication 11, dans lequel la première phase et la deuxième phase d'une même opération d'écriture se chevauchent. 15. Procédé d'écriture selon la revendication 11, dans lequel la troisième phase de la première opération d'écriture, la première phase de la deuxième 25 opération d'écriture, et la deuxième phase de la deuxième opération d'écriture, se chevauchent.