Brevet FR2844613A1 — publié le 20040319

Domaine technique de l'invention La présente invention concerne généralement le stockage et la récupération de données. Plus particulièrement, la présente invention concerne les systèmes et les procédés pour écrire des données sur des cartes de mémoire et lire les données à partir des 15 cartes de mémoire en utilisant un schéma de transfert de données parallèle rapide. Contexte de l'invention Les développeurs ont fabriqués différents types de 20 dispositifs de mémoire à l'état solide pour stocker des données numériques. Ces dispositifs à mémoire peuvent être mis sous boîtier dans ce qui est connu sous le nom de cartes de mémoire, dont la popularité a augmenté ces dernières années. Les cartes de mémoire sont utilisées 25 dans toute une variété d'applications, telles que les appareils photo numériques, et les caméscopes, les lecteurs de musique, les assistants numériques personnels (PDA), les ordinateurs personnels, etc. Ces cartes mémoires sont typiquement très petites en taille 30 et ont des spécifications physiques ou facteurs de forme spécifiques. Les cartes de mémoire typiques ont une capacité de stockage de données comprise entre environ 2 mégabits (MB) et environ 1 gigabit (GB). Bien que de nombreuses cartes de mémoire proposent 35 de grands volumes de mémoire, la vitesse de transfert des données pour stocker de grands fichiers dans la mémoire et récupérer les fichiers de la mémoire est parfois plutôt lente. Par exemple, si un photographe utilise un appareil photo numérique qui peut prendre 5 5 photos par seconde et si chaque image comprend environ 5 MB de données, la carte de mémoire doit être capable de stocker des données à une vitesse d'au moins 25 MB par seconde. Les cartes de mémoire existantes ne sont pas capables de telles vitesses de transfert. Dans un 10 autre exemple, on suppose que le photographe stocke environ 100 images en mémoire et chaque image représente environ 5 MB. Bien que les images peuvent être stockées sur une carte de mémoire de 512 MB, avec une vitesse de transfert de données lente; cela peut 15 prendre jusqu'à 20 minutes pour télécharger les images dans un ordinateur. Une solution à la vitesse lente de transfert de données a été de donner aux dispositifs hôtes (tels que les appareils photos numériques) de grandes quantités 20 de mémoire statique (SRAM) et de mémoire vive dynamique (DRAM). La SRAM et la DRAM sont des mémoires volatiles et peuvent servir de tampons de données pour les dispositifs de mémoire non volatile. Ces tampons de données stockent temporairement les données lorsqu'elles sont en cours d'écriture dans les dispositifs de mémoire ou lues à partir des dispositifs de mémoire de sorte que les données ne sont pas perdues. Cependant, à cause de la vitesse lente de transfert de données dans les dispositifs de mémoire non volatile, 30 les données peuvent être sauvegardées dans les tampons de données, empêchant l'utilisateur de stocker des informations supplémentaires jusqu'à ce que les données soient éventuellement dans la mémoire non volatile. Un autre problème avec cette solution réside dans le fait 35 que la SRAM ou la DRAM sont relativement chères et ont tendance à faire monter le cot des dispositifs hôtes. Il existe donc un besoin dans l'industrie pour proposer une vitesse de transfert de données plus rapide, à plus haute performance, et un cot inférieur en variante par 5 rapport à la solution de SRAM et DRAM et pour aborder les insuffisances et les imperfections mentionnées cidessus. Résumé de l'invention La présente description comprend un système de stockage de données pour transférer rapidement les données entre un dispositif hôte et la mémoire. Un mode de réalisation du système de stockage de données comprend un contrôleur de mémoire, qui gère les données 15 à l'intérieur d'un composant de mémoire. Le contrôleur de mémoire comprend un contrôleur de données ayant des sorties parallèles, un tampon de données raccordé au contrôleur de données, et un gestionnaire de données. Le gestionnaire de données peut comprendre en outre un 20 moteur de compression/décompression et des sorties de commande et de données raccordées à la mémoire. Un autre mode de réalisation du système de stockage de données comprend une carte de mémoire qui est fixée de façon amovible à un hôte. La carte de mémoire comprend une pluralité de banques de mémoire et un contrôleur de mémoire raccordé aux banques de mémoire. Le contrôleur de mémoire comprend un contrôleur d'ATA ou DMA, un tampon de données et un gestionnaire de données doté d'un moteur de 30 compression/décompression qui compresse et décompresse les données. Le gestionnaire de données comprend une interface de dispositif de stockage ayant une pluralité de sorties raccordée à la pluralité de banques de mémoire. Brève description des dessins De nombreux aspects de l'invention peuvent être mieux compris en référence aux dessins suivants. Les 5 mêmes numéros de référence désignent les parties correspondantes sur toutes les vues différentes. D'autres objets, caractéristiques et avantages de la présente invention ressortiront plus clairement à la lecture de la description suivante des modes de 10 réalisation de l'invention faite en référence aux figures, dans lesquelles: La figure 1 est un schéma de principe d'une vue globale générale d'un mode de réalisation d'un système de stockage de données. La figure 2 est un schéma de principe qui représente un mode de réalisation exemplaire du système de stockage de données de la figure 1. La figure 3 est un schéma de principe qui représente les détails d'un mode de réalisation du 20 contrôleur de mémoire et de la mémoire qui sont représentés sur les figures 1 et 2. La figure 4 est un schéma de principe qui illustre les détails d'un mode de réalisation du gestionnaire de données qui est représenté sur la figure 3. La figure 5 est un schéma de principe d'un mode de réalisation exemplaire du moteur de compression/décompression représenté sur la figure 4. La figure 6 est un schéma de principe d'un premier mode de réalisation de l'interface du dispositif de 30 stockage représenté sur la figure 4. La figure 7 est un schéma de principe d'un second mode de réalisation de l'interface du dispositif de stockage représenté sur la figure 4. La figure 8 est un organigramme qui représente un mode de réalisation d'un procédé pour concevoir un contrôleur de mémoire selon les spécifications désirées. La figure 9 est un organigramme qui représente les 5 étapes d'un procédé de compression dans une commande d'écriture de données exemplaire. La figure 10 est un organigramme qui représente les étapes d'un procédé de décompression dans une commande de lecture de données exemplaire. Description détaillée de l'invention La présente description décrit des systèmes et des procédés pour résoudre les imperfections de l'art antérieur. Ces systèmes et procédés améliorent les 15 cartes de mémoire existantes en augmentant la vitesse de transfert de données pour proposer des temps de stockage et de récupération de données plus rapides, tout en se conformant en même temps, au facteur de forme des cartes de mémoire utilisées communément, 20 telles que CompactFlashTM ou similaire. Un contrôleur de mémoire, décrit ici, se situe de préférence dans la carte de mémoire et comprend des circuits de contrôle de données pour transférer rapidement des données entre un hôte et la mémoire. Non seulement les circuits de 25 contrôle de données peuvent être configurés pour transférer des données à une vitesse rapide, mais également les circuits de contrôle de données peuvent être configurés pour compresser des données en temps réel, ce qui améliore la capacité de stockage des 30 moyens. Les circuits de contrôle de données peuvent être considérés comme un aspect distinct des circuits de compression. Par conséquent, les circuits de contrôle de données peuvent être mis en application indépendamment et incorporés dans le contrôleur de mémoire avec ou sans les circuits de compression, et vice versa. On représente une vue d'ensemble d'un mode de réalisation d'un système de stockage de données 100, 5 sur la figure 1. Cette figure illustre un hôte 102 raccordé à un contrôleur de mémoire 104, qui est également raccordé à la mémoire 106. L'hôte 102 peut être n'importe quel type de dispositif d'utilisateur qui lit des données provenant de la mémoire 106 et/ou 10 écrit des données dans la mémoire 106. Par exemple, l'hôte 102 peut être un système de traitement dans un appareil photo numérique, qui dans un mode d'écriture de données, est capable de capturer une image sous la forme numérique et écrire les données numériques 15 représentatives de l'image capturée dans la mémoire 106. Dans un mode de lecture de données, le système de traitement de l'appareil photo numérique peut alors récupérer des données de la mémoire 106 pour télécharger les données dans un ordinateur ou pour 20 afficher les images sur un écran à cristaux liquides (LCD), par exemple. En variante, l'hôte 102 peut être un système de traitement d'un lecteur audio qui lit les données musicales provenant de la mémoire 106 et diffuse la musique de manière audible sur une paire 25 d'enceintes. Le système de traitement du lecteur audio peut comprend des capacités d'écriture de données de sorte que la musique peut être enregistrée dans la mémoire 106. L'hôte 102 peut facultativement être configuré comme n'importe quel autre système bien connu 30 qui utilise la mémoire 106, tel qu'un système de traitement d'un assistant numérique personnel (PDA), un système de traitement d'un caméscope numérique, etc. Le contrôleur de mémoire 104 est raccordé électriquement entre l'hôte 102 et la mémoire 106. Le 35 contrôleur de mémoire 104 gère le transfert de données de l'hôte 102 vers la mémoire 106 pendant une commande d'écriture de données et le transfert de données de la mémoire 106 vers l'hôte 102 pendant une commande de lecture de données. Dans un mode de réalisation préféré, 5 le contrôleur de mémoire 104 et la mémoire 106 sont groupés ensemble sur un type de carte de mémoire qui comprend la fonction de contrôleur et la capacité de stockage. Cependant, selon un mode de réalisation en variante, le contrôleur de mémoire 104 peut être situé 10 à l'intérieur de l'hôte 102. Dans ce mode de réalisation en variante, lorsque le contrôleur de mémoire 104 compresse des données en utilisant un algorithme particulier, et stocke les données compressées sur un composant de mémoire séparé, les 15 données ne peuvent être relues que par le même hôte 102 ou par un hôte qui a un contrôleur de mémoire qui comprend les mêmes algorithmes de compression et de décompression. La figure 2 est un mode de réalisation du système 20 de stockage de données 100 dans lequel le contrôleur de mémoire 104 et la mémoire 106 sont contenus sur une carte de mémoire 200. La carte de mémoire 200 peut avoir n'importe quelle taille, forme, configuration de broche de raccordement, et capacité de stockage. Par 25 exemple, la carte de mémoire 200 peut être formée en ayant le même facteur de forme et les mêmes spécifications que les cartes de mémoire bien connues utilisées sur le marché aujourd'hui, telles que CompactFlashTM ou similaire. La carte de mémoire 200 30 peut être rétrocompatible avec ces dispositifs de mémoire ou les autres qui existent de nos jours et peut être compatible avec ceux qui seront développés à l'avenir. La mémoire 106 est représentée sur la figure 2 35 comme une pluralité de banques de mémoire 202, mais peut être configurée comme une seule banque de mémoire 202. Le nombre de banques de mémoire 202 peut dépendre de la capacité des banques de mémoire particulières 202 à transférer les données ainsi que de la vitesse de 5 transfert de données des circuits d'interface de stockage à l'intérieur du contrôleur de mémoire 104. Le nombre peut en outre dépendre de la vitesse de transfert de données souhaitée, telle qu'elle est décrite de manière plus détaillée ci-dessous. Les 10 données sont de préférence transférées entre le contrôleur de mémoire 104 et les banques de mémoire 202 en blocs ou en secteurs. Chaque bloc ou secteur de données peut avoir une taille de bloc prédéterminée, telle que 512 bits, par exemple pour se conformer 15 quelque soit la taille du bloc avec laquelle l'hôte 102 a accès aux données. Les banques de mémoire 202 comprennent des composants de mémoire qui sont capables d'un transfert à haute performance des blocs de données à des vitesses de transfert de données rapides, tels 20 que, par exemple la mémoire vive magnétique (MRAM) ou le stockage en résolution atomique (ARS). Illustré en outre sur la figure 2, on trouve des lignes d'interface 204 entre l'hôte 102 et le contrôleur de mémoire 104. Les lignes d'interface 204 25 peuvent comprendre des bornes, des broches, des pastilles, des conducteurs de connexion etc. qui raccordent électriquement les bornes de l'hôte 102 avec les bornes compatibles de la carte de mémoire 200. Une carte de mémoire typique contient des bornes 30 spécifiques qui sont uniques au système particulier et qui sont couplées uniquement avec un hôte qui a une configuration compatible. Malgré les différences au niveau de l'emplacement et de la nomenclature des bornes et des lignes des différents systèmes hôte/carte, 35 les lignes d'interface 204 d'un système typique comprennent une pluralité de lignes de données Dl, D2,'', DN, une pluralité de lignes de contrôle, CNTL1, CNTL2, '', CNTLN, au moins une ligne électrique (Vdd) et au moins une ligne de terre (GND). Les lignes de 5 contrôle peuvent comprendre au moins une ligne d'horloge et au moins une ligne de commande. La figure 3 est un schéma de principe qui représente les détails d'un mode de réalisation du contrôleur de mémoire 104 et de la mémoire 106. Les 10 lignes d'interface 204 sont introduites dans le contrôleur de mémoire 104 de sorte que les lignes de données Dl, D2, '', DN sont raccordées à un contrôleur de données 300, les lignes de contrôle CNTL1, CNTL2, '', CNTLN sont raccordées à des circuits de logique de 15 commande de mémoire 306, et les lignes Vdd et GND sont raccordées à tous les blocs de circuit pour fournir une source d'énergie au contrôleur de mémoire 104. Le contrôleur de données 300 combiné avec les circuits de logique de commande de mémoire 306 se conforme de 20 préférence à la spécification IDE/ATA qui supporte le fonctionnement de la DMA, dans laquelle les données sont transférées entre l'hôte 102 et la mémoire 106 sans passer par une unité centrale (CPU). En outre, les dispositifs IDE/ATA sont capables de vitesses de 25 transfert de données jusqu'à 66 MB par seconde. Par exemple, le contrôleur de données 300 et la logique de commande de mémoire 306, en se conformant à la spécification IDE/ATA, sont capables de transférer des données à 66 MB par seconde. Etant donné que de 30 nouvelles vitesses de transfert de données plus rapides deviennent possibles, les composants du contrôleur de mémoire 104 peuvent être modifiés pour proposer des vitesses de transfert de données supérieures à 66 MB par seconde. La conception du contrôleur de mémoire 104 35 qui utilise une vitesse de transfert supérieure à 66 MB par seconde est décrite de manière plus détaillée cidessous. Le contrôleur de données 300 comprend en outre des circuits qui sont capables de maintenir un format de 5 données parallèle de sorte que les données peuvent être transférées vers un tampon de données 302 le long des lignes parallèles. Le tampon de données 302 est un tampon à grande vitesse qui est capable de maintenir, si nécessaire, la vitesse de transfert de données 10 rapide, par exemple jusqu'au moins à 66 MB par seconde. Le tampon de données 302 reçoit des données du contrôleur de données 300 à une vitesse de transfert de données élevée à laquelle le contrôleur de données 300 est capable de transférer les données. Le tampon de 15 données 302 maintient temporairement les données et transfère les données le long de lignes parallèles vers un gestionnaire de données 304 à la vitesse à laquelle le gestionnaire de données 304 est capable de recevoir les données. Lorsque les vitesses de transfert de 20 données du contrôleur de données 300 et du gestionnaire de données 304 sont différentes, le tampon de données 302 stocke temporairement les données sauvegardées qui sont en train d'être transférées vers le composant plus lent. La vitesse à laquelle le tampon de données 302 transfère les données vers le gestionnaire de données 304 dépend du nombre de banques de mémoire 202 et des capacités de vitesse de transfert de données des banques de mémoire 202. Par exemple, lorsque les 30 banques de données sont configurées en utilisant des dispositifs de stockage ARS, la vitesse de transfert entre le tampon de données 302 et le gestionnaire de données 304 peut être jusqu'à environ M x N MB par seconde, o M représente les performances de la vitesse 35 de transfert d'un dispositif de mémoire individuelle 1l ARS et N est le nombre de banques de mémoire ARS 202 en fonction. Lorsque les banques de mémoire 202 sont configurées en utilisant des dispositifs de stockage MRAM, la vitesse de transfert entre le tampon de 5 données 302 et le gestionnaire de données 304 peut être jusqu'à environ M x N MB par seconde, o M représente les performances de vitesse de transfert d'un dispositif de mémoire MRAM et N est le nombre de banques de mémoire MRAM en fonction. Par conséquent, 10 selon la valeur de M, un certain nombre de dispositifs de mémoire N est nécessaire pour maintenir la vitesse de transfert de données à 66 MB par seconde. Si chaque dispositif ARS est capable de transférer des données à 12 MB/s (M = 12), ou si chaque dispositif MRAM est 15 capable de transférer des données à 20 MB/s (M = 20), au moins six banques de mémoire ARS ou au moins quatre banques de mémoire MRAM peuvent être utilisées pour maintenir la vitesse de 66 MB/s. En variante, une combinaison de n'importe quel nombre de dispositifs de 20 mémoire ARS et MRAM peut être utilisée ensemble si nécessaire. Le gestionnaire de données 304 garde les données groupées en blocs ayant une taille de bloc qui est adressable par le contrôleur de données 300. Le 25 gestionnaire de données 304 sépare les blocs de données sur un certain nombre de canaux correspondant au nombre de banques de mémoire 202 en fonction. Les blocs sur chaque canal sont ensuite écrits sensiblement simultanément dans les banques de mémoire respectives 30 202, selon la vitesse de transfert requise. Le gestionnaire 304 et la mémoire 106 peuvent contenir n'importe quel nombre de canaux et de banques de mémoire 202, respectivement. Le gestionnaire de données 304 peut écrire les blocs de données dans toutes les 35 banques de mémoire simultanément pour augmenter ainsi la vitesse de transfert de données. Par conséquent, plus il y a de canaux et de banques de mémoire 202, plus la vitesse de transfert de données entre le gestionnaire de données 304 et la mémoire 106 est 5 rapide. Si l'on ne désire pas une vitesse de transfert de données rapide pour une raison particulière, les blocs de données peuvent être écrits un par un dans les banques de mémoire 202, utilisant ainsi moins d'énergie instantanée. On peut utiliser d'autres schémas 10 d'économie d'énergie dans lesquels une partie du nombre total des banques de données est écrite selon un temps donné. Le système de stockage de données 100 peut être configuré pour recevoir une quantité souhaitée de 15 capacité de stockage et pour transférer des données à une vitesse de transfert de données désirée. Le nombre de banques de mémoire, représenté par N sur la figure 3, peut dépendre de la vitesse de transfert de données qui est souhaitée. Le gestionnaire de données 304 transmet 20 les données séparées aux banques de mémoire respectives 202 pendant une procédure d'écriture. Pendant une procédure de lecture, le gestionnaire de données 304 récupère les données des différentes banques de mémoire 202 et reconstitue les données. Les fonctions de 25 séparation et de combinaison du gestionnaire de données 304 peuvent être configurées dans le gestionnaire de données 304 comme un algorithme prédéfini que le gestionnaire de données 304 utilise pour garder la trace de l'emplacement de certaines parties de données 30 dans chacune des différentes banques de mémoire 202. Les données sont stockées dans les banques de données 202 avec les informations de contrôle qui concernent l'algorithme prédéfini pour maintenir les informations de position et d'adresse des données dans les 35 différentes banques de mémoire 202. Le contrôleur de mémoire 104 de la figure 3 comprend en outre les circuits de logique de commande de mémoire 306 qui proposent la fonction de contrôle pour le contrôleur de mémoire 104. Les circuits de 5 logique de commande de mémoire 306 reçoivent les commandes de l'hôte 102 le long des lignes de contrôle CNTL1, CNTL2, '', CNTLN. L'hôte 102 peut envoyer des données de commande supplémentaires sur les lignes de données Dl, D2, '', DN vers le contrôleur de données 10 300. En réponse aux commandes le long des lignes de contrôle CNTL1, CNTL2, '', CNTLN, les circuits de logique de commande de mémoire 306 fournissent des signaux aux circuits appropriés pour réaliser la commande requise. Si une erreur se produit à la 15 réception de la commande provenant de l'hôte 102, les circuits de logique de commande de mémoire 306 renvoient un code d'erreur vers l'hôte 102 sur les lignes de contrôle pour informer l'hôte 102 de l'erreur. Si les lignes de contrôles comprennent une horloge CLK, 20 la ligne CLK fournit le signal d'horloge système aux circuits de logique de commande de mémoire 306 pour synchroniser le contrôleur de mémoire 104 avec l'hôte 102. Les circuits de la logique de commande de mémoire 306 fournissent les signaux au contrôleur de données 25 300, le tampon de données 302, et le gestionnaire de données 304 pour faire valoir le contrôle. La figure 4 est un schéma de principe d'un mode de réalisation exemplaire du gestionnaire de données 304. Les données transférées au gestionnaire de données 304 30 rencontrent un moteur de compression/décompression 400, qui comprend des circuits pour compresser des données pendant une commande d'écriture de données. Le moteur de compression/décompression 400 peut être ajouté comme une fonction facultative dans le gestionnaire de 35 données 304. La capacité du contrôleur de mémoire 104 à fournir une vitesse de transfert de données rapide ne compte pas uniquement sur le fonctionnement du moteur de compression/décompression 400. De même, le moteur de compression/décompression 400 ne compte pas uniquement 5 sur le fonctionnement des circuits de transfert de données rapides pour effectuer les procédures de compression/décompression. Pendant une commande de lecture de données, le moteur de compression/décompression 400 utilise des 10 circuits de décompression pour décompresser toutes données qui ont été compressées en utilisant un algorithme connu au niveau des circuits de décompression. La vitesse de transfert de données rapide des circuits de transfert de données rapides 15 peut être améliorée par le moteur de compression/décompression 400, en permettant aux moyens plus lents d'accepter des données à la même vitesse élevée. Etant donné que le moteur de compression/décompression 400 envoie moins d'informations à la mémoire 106 pour le stockage, les données compressées peuvent être stockées plus rapidement que les données qui ne sont pas compressées. Un autre avantage à ajouter la fonction de compression au contrôleur de mémoire 104 réside dans le fait qu'il 25 faut moins d'espace de stockage dans la mémoire, permettant à l'utilisateur de stocker plus de données. En compressant les données pendant l'écriture des données dans la mémoire 106, les données prennent moins d'espace de stockage dans la mémoire 106. Par 30 conséquent, la capacité de stockage de la mémoire 106 peut être augmentée de manière efficace grâce à cette compression de données. On propose une description détaillée d'un mode de réalisation exemplaire du moteur de compression/décompression 400 ci-dessous par rapport 35 à la figure 5. Les données compressées sont transférées entre le moteur de compression/décompression 400 et un tampon 402, qui est capable de traiter les données à la vitesse de transfert rapide. Pendant une commande 5 d'écriture, le tampon 402 envoie des données à une interface de dispositif de stockage 404, qui comprend des circuits qui sont capables d'organiser les données compressées pour le stockage rapide. L'interface du dispositif de stockage 404 peut comprendre un 10 séquenceur pour répartir les données sérielles parmi une pluralité de chemins qui conduisent à la pluralité de banques de mémoire 202. De préférence, l'interface du dispositif de stockage 404 comprend des tampons supplémentaires pour maintenir temporairement les 15 données compressées lorsqu'elles sont en train d'être transférées vers les banques de mémoire 202. L'interface du dispositif de stockage 404 comprend en outre les circuits de code de correction d'erreur (ECC) pour ajouter la parité aux données compressées qui au 20 moment o elles sont relues à partir de la mémoire 106, permettent de détecter et de corriger les erreurs. Les modes de réalisation de l'interface du dispositif de stockage 404 sont représentés sur les figures 6 et 7 et décrits de manière plus détaillée ci-dessous. L'ordre 25 entre le moteur de compression/décompression 400 et l'interface du dispositif de stockage 404 peut être inversé. Dans ce cas, la compression des données est la dernière fonction réalisée avant de stocker les données dans les banques de mémoire 202 et la décompression des 30 données est la première fonction réalisée lorsque les données sont lues à partir des banques de mémoire 202. La figure 5 illustre un mode de réalisation du moteur de compression/décompression 400. Dans un mode d'écriture de données, les données entrantes au niveau 35 du moteur de compression/décompression 400 avancent vers un circuit de contrôle d'entrée de données 500, un circuit de compression 502, et un circuit de détection de compression 504. Le circuit de compression 502 compresse les données entrantes et envoie les données 5 compressées vers le circuit de contrôle d'entrée de données 500 et vers le circuit de détection de compression 504. Le circuit de détection de compression 504, ayant reçu les données entrantes et les données compressées par le circuit de compression 502, compare 10 les deux et détermine si les données entrantes ont déjà été compressées, préalablement à la compression par le circuit de compression 502. Le circuit de détection de compression 504 peut effectuer cette détermination en fonction du fait qu'au moment o le circuit de 15 compression 502 compresse les données qui ont déjà été compressées, alors l'algorithme utilisé par le circuit de compression 502 pour compresser des données peut vraiment développer les données. Par conséquent, si les données ne peuvent pas subir une autre compression ou 20 si les données sont développées parle circuit de compression 502 au lieu d'être compressées, alors le circuit de détection de compression 504 détermine que les données ont déjà été compressées. Le circuit de détection de compression 504 envoie 25 un signal au circuit de contrôle d'entrée de données 500 pour signaler au circuit de contrôle d'entrée de données 500 de choisir soit entre les données entrantes ou les données compressées provenant du circuit de compression 502. Le circuit de détection de compression 30 504 peut envoyer un signal supplémentaire vers le circuit de compression 502 pour informer le circuit de compression 502 que l'algorithme de compression utilisé n'est pas efficace. Par conséquent, lorsque le circuit de compression 502 est averti de l'inefficacité de 35 l'algorithme, il peut être commuté vers un algorithme différent. Le circuit de détection de compression 504 informe le circuit de contrôle d'entrée de données 500 si les données entrantes ont déjà été compressées ou pas. Si les données entrantes ont déjà été compressées, 5 alors le circuit de contrôle d'entrée de données 500 ignore les données provenant du circuit de compression 502 et sélectionne les données entrantes déjà compressées. Si les données entrantes n'ont pas été compressées au préalable, le circuit de contrôle 10 d'entrée de données 500 ignore les données entrantes et sélectionne les données compressées provenant du circuit de compression 502. Le circuit de contrôle d'entrée de données 500 transfère les données sélectionnées conjointement avec un symbole d'indication de compression qui peut indiquer si les données transférées sont les données compressées provenant du circuit de compression 502 ou les données entrantes compressées au préalable. Le symbole d'indication de compression peut comprendre de manière 20 supplémentaire des informations concernant le type d'algorithme que le circuit de compression 502 a utilisé pour compresser les données entrantes. Lorsque les données sont lues à partir de la mémoire 106, les données sont introduites dans la 25 partie de décompression du moteur de compression/décompression 400. De telles données non décompressées vont vers un circuit de contrôle de sortie de données 506, un circuit de décompression 508 et un circuit de détection de symbole de compression 30 510. Le circuit de détection de symbole de compression 510 détecte le symbole d'indication de compression pour déterminer si les données stockées ont été compressées par le circuit de détection de compression 504 ou pas, et si oui, l'algorithme qui a été utilisé. Lorsque le 35 circuit de détection de symbole de compression 510 détermine la façon dont les données stockées ont été compressées, le circuit de détection de symbole de compression 510 envoie un signal au circuit de décompression 508 pour informer le circuit de 5 décompression 508 sur la façon de décompresser les données stockées. Le circuit de détection de symbole de compression 510 informe en outre le circuit de contrôle de sortie de données 506 si les données stockées ont été compressées par un algorithme de compression connu 10 dans le circuit de compression 502 ou pas. En réponse, le circuit de contrôle de sortie de données 506 sélectionne soit les données non décompressées soit les données décompressées par le circuit de décompression 508. Le circuit de contrôle de sortie de données 506 15 transfère les données sélectionnées vers la sortie du moteur de compression/décompression 400. Les figures 6 et 7 illustrent deux modes de réalisation exemplaires de l'interface du dispositif de stockage 404, qui sert d'interface entre le moteur de 20 compression/décompression 400 du contrôleur de mémoire 104 et les banques de mémoire 202. Dans une commande d'écriture, l'interface du dispositif de stockage 404 transfère des blocs de données vers les banques de mémoire 202, et dans une commande de lecture, 25 l'interface du dispositif de stockage 404 récupère les blocs de données des banques de mémoire 202. Dans le mode de réalisation de la figure 6, l'interface du dispositif de stockage 404 transfère des données sérielles du tampon 402 vers un circuit ECC à grande 30 vitesse 600. Le circuit ECC 600 est raccordé à un séquenceur à grande vitesse 602, qui envoie des données séparées dans des blocs sur un certain nombre de sauts le long des chemins vers un nombre correspondant de tampons 604. Pendant une commande d'écriture de données, 35 le circuit ECC 600 reçoit des données du tampon 402 et ajoute des bits de parité aux données. Lors de la lecture des données provenant des banques de mémoire 202, le circuit ECC 600 détecte des données pour les erreurs, et corrige toute erreur corrigible dans les 5 données et retire ensuite les bits de parité et renvoie les données corrigées vers le tampon 402. Pendant la commande d'écriture de données, le séquenceur à grande vitesse 602 sépare les données sérielles du circuit ECC 600 en blocs le long des 10 multiples chemins parallèles. Le nombre de chemin peut être de quatre, par exemple, ou n'importe quel nombre de sorte que la vitesse de transfert de chaque tampon 604 multipliée par le nombre de tampons est suffisante pour maintenir le transfert des données à une vitesse 15 qui va à la même allure que le contrôleur de données 300, par exemple 66 MB par seconde. Les tampons 604 stockent temporairement les blocs de données sur les chemins séparés par le séquenceur 602 et transfèrent les blocs de données dans les banques de mémoire 20 correspondantes 202. Il faut noter qu'au moment o le système de stockage de données 100 ne nécessite pas de vitesse de transfert de données rapide, tous les tampons sauf un 604 peuvent être au ralenti. Dans ce cas, la vitesse de transfert est réduite à environ 12 25 MB par seconde. Cependant, on peut réaliser une économie d'énergie grâce à l'utilisation d'un seul tampon 604 à la fois. La figure 7 illustre un mode de réalisation en variante de l'interface du dispositif de stockage 404, 30 dans lequel, pendant une commande d'écriture de données, un tampon segmenté à grande vitesse 700 reçoit des données sérielles et transfère les données vers un séquenceur à grande vitesse 702 qui divise les données en blocs séparés ou secteurs sur un certain nombre de 35 chemins séparés. Chaque bloc de données est introduit dans un circuit ECC respectif 704, qui ajoute la parité aux données. Les blocs de données, avec la parité ajoutée, sont stockés dans les banques de mémoire 202. Pendant une commande de lecture de données, les 5 circuits ECC 704 récupèrent les blocs de données des différentes banques de mémoire 202, détectent toutes erreurs existantes, corrigent les erreurs, retirent les bits de parité, et envoient les blocs de données au séquenceur 702, qui rassemble les blocs et retransmet 10 de manière sérielle les données vers le tampon segmenté 700. Les composants du système de stockage de données peuvent être mis en application dans le matériel, le logiciel, le micrologiciel, ou une combinaison de 15 ceux-ci. Dans les modes de réalisation décrits, les circuits de logique de commande de l'hôte 318 et les circuits de logique de commande de mémoire 306 peuvent être mis en application dans le logiciel ou le micrologiciel qui est stocké dans une mémoire et qui 20 est exécuté par un système d'exécution d'instruction approprié. Si les processeurs sont mis en application dans le matériel, comme dans un mode de réalisation en variante, les processeurs peuvent être mis en application avec une ou une combinaison des 25 technologies suivantes qui sont toutes bien connues dans l'art: un circuit de logique discret ayant des portes logiques pour mettre en application des fonctions logiques en fonction des signaux de données, un ASIC ayant des portes logiques appropriées en 30 combinaison, un réseau prédiffusé de portes programmable (PGA), un champ de réseau prédiffusé de porte programmable (FPGA), etc. Le système de stockage de données 100 décrit de manière détaillée ci-dessus par rapport aux figures 1-7 35 peut être conçu selon le procédé décrit ci-dessous par rapport aux figures 8, 9 et 10 qui illustrent des modes de réalisation exemplaires des commandes d'écriture de données et des commandes de lecture de données en utilisant le moteur de compression/décompression 400, 5 qui est décrit ci-dessus et représenté de manière détaillée sur la figure 5. La figure 8 représente un mode de réalisation d'un procédé pour concevoir le contrôleur de mémoire 104 selon les spécifications de conception souhaitées. Le 10 bloc 800 représente une première étape consistant à proposer un contrôleur de données IDE/ATA. Comme mentionné ci-dessus, le contrôleur de données IDE/ATA 300 peut être un contrôleur ATA 66 ou un contrôleur Ultra DMA capable de vitesses de transfert de données 15 jusqu'à 66 MB par seconde. D'autres contrôleurs de données qui seront disponibles à l'avenir, pourront atteindre des vitesses supérieures à 66 MB par seconde. Ces contrôleurs de données peuvent également être proposés par l'étape représentée dans le bloc 800. 20 Etant donné que les contrôleurs de données développés récemment augmentent les vitesses de transfert de données, l'étape de prévision 800 peut utiliser de tels contrôleurs de données. Sur la base du contrôleur de données IDE/ATA prévu 25 dans le bloc 800, un concepteur peut sélectionner des spécifications de stockage désirées, telles que la capacité de stockage et la vitesse de transfert de données, comme indiqué dans le bloc 800. La détermination de la vitesse de transfert de données est 30 typiquement limitée par le contrôleur de données prévu et n'est seulement aussi rapide que le contrôleur de données. Cependant, on peut sélectionner une vitesse plus lente que les capacités du contrôleur de données. Sur la base des spécifications désirées sélectionnées 35 dans le bloc 802, le concepteur détermine le nombre et le type de banques de mémoire nécessaires pour atteindre les spécifications désirées (bloc 804). Par exemple, si l'on utilise les banques de mémoire ARS ayant des vitesses de transfert de données jusqu'à 12 5 MB par seconde, on peut obtenir une vitesse de transfert de données de 12 MB/s multipliée par le nombre de banques de mémoire ARS utilisées. A titre d'exemple, avec 5 banques de mémoire ARS, on peut maintenir une vitesse de transfert de données jusqu'à 10 60 MB par seconde. Les banques de mémoire MRAM peuvent même permettre des vitesses supérieures, c'est-à-dire jusqu'à 20 MB par seconde multiplié par le nombre de banques de mémoire MRAM. Par exemple avec 5 banques de mémoire MRAM, on peut maintenir une vitesse de 15 transfert de données jusqu'à 100 MB par seconde. Une autre considération à l'étape indiquée par le bloc 804 réside dans le fait que des banques de mémoire ARS ont une capacité de stockage supérieure aux banques de mémoire MRAM. Selon la vitesse de transfert de données 20 souhaitée ainsi que de la capacité de stockage, on peut sélectionner des banques de mémoire ARS, MRAM ou une combinaison des deux types de banques de mémoire. Dans le bloc 806, on décrit l'étape suivante. Une fois que le nombre et le type des banques de mémoire 25 ont été déterminés, le concepteur prévoit ensuite le contrôleur de mémoire avec le nombre et le type souhaités de banques de mémoire dans une configuration parallèle. L'étape de prévision du bloc 806 est basée sur le contrôleur de mémoire utilisé, et plus 30 spécifiquement, sur la vitesse de transfert de données du contrôleur de mémoire. En outre, l'étape de prévision est basée également sur les spécifications désirées et le nombre et le type des banques de mémoire requises pour satisfaire les spécifications désirées. La figure 9 illustre un procédé d'écriture de données utilisant le moteur de compression/décompression 400, dans lequel les données sont compressées avant d'être stockées. Lorsque le 5 contrôleur de mémoire 104 est configuré avec le moteur de compression/décompression 400, on peut réaliser les étapes de la figure 9. Dans le bloc 900, le circuit de compression 502 compresse les données qui entrent dans le moteur de compression/décompression 400. Ensuite, le 10 circuit de détection de compression 504 compare les données entrantes avec les données compressées produites à partir du circuit de compression 502, comme indiqué dans le bloc 902. Le circuit de détection de compression 504 utilise cette comparaison pour 15 déterminer si les données entrantes ont été compressées avant la compression par le circuit de compression 502 ou pas. Le bloc de décision 904 indique l'étape consistant à déterminer si les données entrantes ont déjà été compressées ou pas, si oui, le déroulement 20 continue à l'étape 906. A cette étape, le circuit de détection de compression 504 signale au circuit de contrôle d'entrée de données 500 de sélectionner les données entrantes et pas les données compressées. Le circuit de contrôle d'entrée de données 500 sélectionne 25 les données entrantes et ajoute en outre une indication de compression qui indique que les données courantes qui sont stockées dans la mémoire 106 " ne sont pas compressées ", comme indiqué dans le bloc 908. Si le circuit de détection de compression 504 30 détermine dans le bloc de décision 904 que les données entrantes n'ont pas été déjà compressées avant la compression des données par le circuit de compression 502, alors le déroulement du procédé se poursuit à l'étape 910. A cette étape, le circuit de détection de 35 compression 504 signale au circuit de contrôle d'entrée de données 500 que les données entrantes n'ont pas été déjà compressées et que les données récemment compressées doivent être sélectionnées. Le circuit de contrôle d'entrée des données 500 sélectionne les 5 données compressées du circuit de compression 502 et ajoute un indicateur de compression (bloc 912) qui signale les présentes données écrites dans la mémoire 106 comme étant des données " compressées ". Après les étapes de sélection des blocs 906 et 910 et les étapes 10 d'ajout d'indication de sélection des blocs 908 et 912, le déroulement se poursuit vers le bloc 914 o les données sélectionnées et l'indicateur de compression correspondant sont stockés dans la mémoire 106. La figure 10 illustre un mode de réalisation d'un 15 procédé réalisé par le moteur de compression/décompression 400 pendant une procédure de lecture de données. Lorsque le système de stockage de données 100 comprend un moteur de compression/décompression 400, on peut alors suivre ces 20 étapes. Lorsque le système de stockage de données 100 ne comprend pas de compression et de décompression, on peut alors sauter ces étapes. Le mode de réalisation représenté sur la figure 9 comprend une étape dans laquelle le circuit de 25 décompression 508 décompresse les données stockées de la mémoire 106, comme indiqué dans le bloc 1000. Dans le bloc 1002, le circuit de détection de symbole de compression 510 détecte l'indicateur de compression qui accompagne les données stockées. Dans le bloc de 30 décision 1004, le circuit de détection de symbole de compression 510 détermine également si l'indicateur de compression est l'indicateur " compressé " ou pas. Si oui, le déroulement se poursuit au bloc 1006, o le circuit de détection de symbole de compression 510 35 signale au circuit de contrôle de sortie des données 506 que les données décompressées à partir du circuit de décompression 508 doivent être sélectionnées. En réponse, le circuit de contrôle de sortie des données 506 sélectionne les données compressées. Les étapes 5 1004 et 1006 peuvent comprendre en outre les étapes consistant à détecter le type d'algorithme de compression utilisé pendant la compression des données et à insister au niveau du circuit de décompression 508 pour décompresser les données selon le type 10 d'algorithme de compression utilisé. Si le bloc de décision 1004 détermine qu'un indicateur " non compressé " existe, alors le déroulement se poursuit à l'étape 1008 o le circuit de détection de symbole de compression 510 signale au 15 circuit de contrôle de sortie des données 506 de sélectionner les données non décompressées directement à partir de la mémoire 106 par opposition aux données décompressées à partir du circuit de décompression 508. A ce moment là, le circuit de contrôle de sortie des 20 données 506, ayant sélectionné l'ensemble approprié de données, retire l'indicateur de compression qui a été ajouté pendant la compression, comme indiqué dans le bloc 1010, et les données sont transférées vers l'hôte 102 (bloc 1012). Les organigrammes des figures 8 - 10 représentent l'architecture, la fonction et le fonctionnement des mises en oeuvre possibles des conceptions du contrôleur de mémoire, du logiciel d'écriture de données, et de lecture de données. A cet égard, chaque bloc représente 30 un module, un segment ou une partie de code, qui comprend une ou plusieurs instructions exécutables pour mettre en oeuvre la(les) fonction(s) logique(s) spécifiée(s). Il faut également noter que dans certaines mises en oeuvre en variante, les fonctions 35 notées dans les blocs peuvent ne pas se produire dans l'ordre noté sur les figures 8 - 10. Par exemple, les deux blocs 1004 et 1006 représentés en succession sur la figure 10 peuvent, en fait, être exécutés sensiblement simultanément ou les blocs peuvent parfois 5 être exécutés dans l'ordre inverse, selon la fonction impliquée, comme on l'expliquera ci-dessous. Les procédés d'écriture et de lecture de données qui peuvent être configurés comme un programme qui comprend une liste ordonnée des instructions 10 exécutables pour mettre en oeuvre les fonctions logiques, peuvent être mis en application dans n'importe quel support lisible par ordinateur destiné à être utilisé par un système, appareil ou dispositif d'exécution d'instruction, tel qu'un système à base d'informatique, 15 un système commandé par processeur, ou un autre système qui peut extraire les instructions du système, appareil ou dispositif d'exécution d'instruction et exécuter les instructions. Dans le contexte de ce document, un " support lisible par ordinateur" peut être n'importe 20 quel support qui peut contenir, stocker, communiquer, propager ou transporter le programme destiné à être utilisé par le système, appareil ou dispositif d'exécution d'instruction. Le support lisible par ordinateur peut être par exemple un moyen de 25 propagation ou un système, appareil ou dispositif à semi-conducteurs, infrarouge, électromagnétique, optique, magnétique, électronique. Des exemples plus spécifiques de support lisible par ordinateur comprennent une connexion électrique ayant un ou 30 plusieurs fils, une mémoire vive (RAM), une mémoire en lecture seule (ROM), une mémoire morte reprogrammable (EPROM ou mémoire Flash), et des fibres optiques. Il faut noter que le support lisible par ordinateur peut même être du papier, ou un autre support approprié sur 35 lequel le programme est imprimé, étant donné que le programme peut être capturé électroniquement, par exemple, par balayage optique du papier ou d'un autre support, ensuite compilé, interprété ou traité autrement d'une manière appropriée si nécessaire, et 5 ensuite stocké dans une mémoire informatique. De plus, la portée de la présente invention comprend la mise en application des modes de réalisation de la présente description dans la logique mise en application dans les supports configurés en matériel ou en logiciel. Il faut attirer l'attention sur le fait que les modes de réalisation de la présente invention décrits ci-dessus ne sont que des exemples des mises en oeuvre possibles, précisés pour une bonne compréhension des principes de l'invention. De nombreuses variations et 15 modifications peuvent être apportées aux modes de réalisation de l'invention décrits ci- dessous sans s'éloigner des principes de l'invention. Toutes ces modifications et variations sont prévues pour être comprises dans la portée de cette description et 20 protégées par les revendications suivantes. REVENDICATIONS 1. Contrôleur de mémoire (104) pour gérer des données dans un composant de mémoire (200), le contrôleur de mémoire (104) comprenant: un contrôleur de données (300) ayant des sorties parallèles; un tampon de données (302) ayant des entrées parallèles et des sorties parallèles, les entrées parallèles étant raccordées aux sorties parallèles du contrôleur de données (300); et un gestionnaire de données (304) raccordé aux sorties parallèles du tampon de données (302), le gestionnaire de données (304) ayant un moteur de compression/décompression (400), une pluralité de sorties de données raccordées à la mémoire (106), et une pluralité de sorties de contrôle raccordées à la mémoire (106). 2. Contrôleur de mémoire (104) selon la revendication 1, comprenant en outre des circuits de logique (306) raccordés au contrôleur de données (300), 20 le tampon de données (302), et le gestionnaire de données (304). 3. Contrôleur de mémoire (104) selon la revendication 1, dans lequel la mémoire (106) comprend une pluralité de banques de mémoire (202), les banques 25 de mémoire (202) étant prises à partir d'un groupe qui se compose de dispositifs de stockage en résolution atomique (ARS) et de dispositifs de mémoire vive magnétique (MRAM), chaque banque de mémoire (202) étant raccordée à l'une de la pluralité des sorties de 30 données et à l'une de la pluralité des sorties de contrôle provenant du gestionnaire de données (304). 4. Contrôleur de mémoire (104) selon la revendication 1, dans lequel le moteur de compression/décompression (400) comprend: un circuit de compression (502) qui compresse les données entrantes; un détecteur de compression (504) qui détecte si les données entrantes sont déjà sous forme compressée ou pas; un circuit de contrôle d'entrée des données (500) 10 qui sélectionne entre les données entrantes et les données compressées, selon que les données entrantes sont déjà sous forme compressée ou pas, et ajoute un symbole de compression aux données sélectionnées pour identifier les données soit en tant que compressées, 15 soit en tant que non compressées; un circuit de décompression (508) qui décompresse les données récupérées de la mémoire (106); un détecteur de décompression (510) qui détecte le symbole de compression ajouté aux données récupérées de 20 la mémoire (106); et un circuit de contrôle de sortie des données (506) qui sélectionne entre les données récupérées de la mémoire (106) et les données décompressées en fonction du symbole de compression détecté par le détecteur de 25 décompression (510). 5. Système (100) pour stocker des données, le système comprenant: un hôte (102); et un composant de mémoire (200) en communication 30 électrique avec l'hôte (102), le composant de mémoire (200) comprenant: au moins une banque de mémoire (202); et un contrôleur de mémoire (104) selon l'une des revendications 1 à 4, le contrôleur de mémoire (104) étant raccordé à la au moins une banque de mémoire (202). 6. Système (100) selon la revendication 5, dans lequel le contrôleur de données (300) comprend l'un 5 parmi un contrôleur à norme ATA et un contrôleur d'accès direct à la mémoire (DMA). 7. Système (100) selon la revendication 5, dans lequel le gestionnaire de données (304) comprend en outre une interface de dispositif de stockage (404) qui 10 transfère des données compressées entre le moteur de compression/décompression (400) et la au moins une banque de mémoire (202) , l'interface du dispositif de stockage (404) comprenant au moins un circuit à code de correction d'erreur (ECC) (600, 704), un séquenceur 15 (602, 702) pour séparer les données en blocs, et au moins un tampon (604, 700). 8. Procédé pour transférer des données entre un hôte (102) et la mémoire (106), le procédé comprenant les étapes consistant à: proposer un contrôleur de données (300) ayant une première vitesse de transfert de données; proposer un gestionnaire de données (304) qui transfère les données à la mémoire (106) à une seconde vitesse de transfert de données; recevoir, par un tampon de données (302), les données à la première vitesse de transfert de données depuis le contrôleur de données (300) et transmettre les données au gestionnaire de données (304) à la seconde vitesse de transfert de données; et compresser les données transmises par le gestionnaire de données (304) à la mémoire (106). 9. Procédé selon la revendication 8, comprenant en outre les étapes consistant à: déterminer si les données ont été préalablement 35 compressées; compresser les données qui n'ont pas été préalablement compressées; séparer les données compressées dans une pluralité de blocs le long d'une pluralité de sauts parallèles et transférer les blocs à la mémoire (106) le long d'une pluralité de sauts parallèles. 10. Procédé selon l'une des revendications 8 ou 9, comprenant en outre les étapes consistant à: sélectionner (802) la capacité de stockage souhaitée et les spécifications de la vitesse de transfert de données; déterminer (804) un nombre et un type de banques de mémoire pour satisfaire les spécifications 15 souhaitées; et proposer (806) le nombre et le type de banques de mémoire souhaités dans une configuration parallèle basée sur le contrôleur de données et les spécifications souhaitées. 11. Carte de mémoire (200) ayant un facteur de forme avec une configuration de type CompactFlashT, la carte de mémoire (200) comprenant: une pluralité de banques de mémoire (202); et un contrôleur de mémoire (104) selon l'une des 25 revendications 1 à 4, le contrôleur de mémoire (104) étant raccordé à la pluralité de banques de mémoire (202).