Brevet FR2858101A1 — publié le 20050128

i La présente invention concerne un système de mémoire flash et plus précisément, un procédé d'écriture et de lecture de données et de codes de parité dans un système de 10 mémoire flash. En général, un dispositif de mémoire flash est un type de mémoire morte effaçable et programmable électriquement ("EEPROM") qui ne nécessite pas de régénération. Le dispositif de mémoire flash peut être classé comme étant de type NON-OU ou de type NON-ET. Bien qu'un dispositif de mémoire flash de type NON-OU accepte une petite quantité de données à grande vitesse, un dispositif de mémoire flash de type NON-ET accepte une grande quantité 20 de données. La programmation et l'effacement d'une mémoire flash de type NON-ET normale fait intervenir la commande de la tension de seuil d'une cellule mémoire par injection et émission d'électrons dans et à partir d'une grille 25 flottante. Cette mémoire flash de type NON-ET comprend un registre, qui est généralement appelé "tampon de page", permettant d'écrire une grande quantité de données en peu de temps. Des données qui ont été fournies en entrée de l'extérieur sont écrites dans une matrice de cellules mémoire par l'intermédiaire du tampon de page, et les données qui ont été lues depuis la matrice de cellules mémoire sont fournies en sortie vers l'extérieur par 35 l'intermédiaire du tampon de page. Par conséquent, les données sont généralement écrites et lues vers et en provenance de la mémoire flash par unités dont la taille est égale à celle du tampon de page. Par ailleurs, dans un système comportant un dispositif de mémoire flash du type NON-ET, les données 5 sont écrites en association avec un code de parité pour les données afin de vérifier et/ou de corriger les erreurs sur les données. Une unité de commande génère un code de parité pour une certaine quantité de données et écrit les données en 10 association avec le code de parité dans le dispositif de mémoire flash. Après cela, l'unité de commande lit le code de parité depuis le dispositif de mémoire flash et vérifie si oui ou non les données contiennent des erreurs. Du fait de la récente augmentation de la taille du 15 tampon de page des mémoires flash, l'unité de traitement des codes de parité a également augmenté en taille. Normalement, un code de parité est généré pour des données dont la taille est égale à la taille du tampon de page. Plus précisément, l'unité de traitement de code de 20 parité correspond à des données dont la taille est égale à la taille du tampon de page. Par conséquent, du fait de l'augmentation de la taille du tampon de page, les circuits destinés à générer des codes de parité deviennent plus complexes, ou bien le temps de traitement global augmente. 25 La présente invention fournit un système de mémoire flash qui augmente l'efficacité de l'écriture et de la lecture de données et de codes de parité dans et depuis un dispositif de mémoire flash pour réduire le temps global de traitement des données, et un procédé d'écriture de données 30 qui lui est destiné. Conformément à un aspect de la présente invention, celle-ci fournit un système de mémoire flash comprenant un dispositif de mémoire flash et une unité de commande. Le dispositif de mémoire flash comporte une matrice de 35 cellules mémoire et un tampon de page pour écrire des données fournies en entrée de l'extérieur dans la matrice de cellules mémoire. L'unité de commande divise les données en deux ou plusieurs groupes de données dont chacun a une taille inférieure à la taille du tampon de page, et transmet au dispositif de mémoire flash en série chaque 5 groupe de données et un code de parité pour le groupe de données. L'unité de commande comprend une partie de commande de mémoire et un circuit de Correction d'Erreurs/Générateur de Code de Correction d'Erreurs ("ECC"). La partie de commande de mémoire transmet au dispositif de mémoire flash une commande prédéterminée, les données, une adresse pour les données, et un signal de commande, et le circuit ECC génère le code de parité. Conformément à un autre aspect de l'invention, celle15 ci fournit un système de mémoire flash comprenant un dispositif de mémoire flash et une unité de commande. Le dispositif de mémoire flash comporte une matrice de cellules mémoire et un tampon de page pour écrire et lire des données dans et depuis la matrice de cellules mémoire. 20 L'unité de commande transmet en série au dispositif de mémoire flash deux groupes de codes de parité de données consécutives ou plus, dont chacun comporte une certaine quantité de données et un code de parité pour les données. Dans le cas présent, chaque groupe de codes de parité de 25 données a une taille inférieure à la taille du tampon de page. Selon encore un autre aspect de la présente invention, celle-ci fournit un procédé d'écriture de données dans un système de mémoire flash comportant un 30 dispositif de mémoire flash. Le procédé consiste à (a) transmettre au dispositif de mémoire flash une commande prédéterminée et un signal d'adresse; (b) transmettre des données au dispositif de mémoire flash; et (c) générer un code de parité pour les données et transmettre au 35 dispositif de mémoire flash le code de parité. Les étapes (b) et (c) sont répétées ici deux fois ou plus. Lors des étapes (b) et (c), les données et le code de parité correspondant sont écrits en série dans un tampon de page du dispositif de mémoire flash. Ces aspects et d'autres encore de l'invention seront 5 expliqués plus en détail, à titre d'exemple, avec référence aux dessins annexés, dans lesquels: la figure 1 représente un schéma fonctionnel d'un système de mémoire flash de l'invention; la figure 2 représente un schéma fonctionnel détaillé 10 d'une matrice de cellules mémoire et d'un tampon de page d'un dispositif de mémoire flash représenté sur la figure 1; la figure 3 illustre un procédé d'écriture de données dans le système de mémoire flash de l'invention; et les figures 4A et 4B illustrent des procédés d'écriture de données dans un système de mémoire flash conformément à des exemples comparatifs de l'invention. L'invention va maintenant être décrite de façon plus détaillée en référence aux dessins annexés, dans lesquels 20 des exemples de modes de réalisation de l'invention sont illustrés. Des références numériques identiques sont utilisées pour désigner les mêmes éléments dans tous les dessins. Se référant à la figure 1, un système de mémoire 25 flash 100 comprend une unité de commande 110 et un dispositif de mémoire flash 120. L'unité de commande 110 comprend un processeur 112, une partie de commande de mémoire 114, et un circuit de Correction d'Erreurs/générateur de Code de Correction 30 d'Erreurs ("ECC") 118. Le processeur 112 commande le fonctionnement de l'unité de commande 110, et la partie de commande de mémoire 114 interface l'unité de commande 110 avec le dispositif de mémoire flash 120. Le circuit ECC 118 génère des codes de parité pour 35 vérifier et/ou corriger les erreurs de données devant être écrites dans le dispositif de mémoire flash 120. Le circuit ECC 118 est réalisé de façon matérielle. Comme illustré sur la figure 1, l'unité de commande 110 peut en outre comprendre une mémoire vive statique (SRAM) 116 pour écrire des données. Le dispositif de mémoire flash 120 comprend une matrice de cellules mémoire 122 et un tampon de page 124. Bien que cela ne soit pas représenté en détail sur la figure 1, la matrice de cellules mémoire 122 comprend une pluralité de lignes de mots, une pluralité de lignes de 10 bits, et une pluralité de cellules mémoire qui sont respectivement agencées aux intersections entre les lignes de mots et les lignes de bits. Les cellules mémoire de la matrice de cellules mémoire 122 sont connectées au tampon de page 124 par 15 l'intermédiaire des lignes de bits. Des données qui ont été fournies en entrée de l'extérieur sont écrites dans la matrice de cellules mémoire 122 par l'intermédiaire du tampon de page 124, et des données qui ont été lues depuis la matrice de cellules mémoire 122 sont fournies en sortie 20 vers l'extérieur par l'intermédiaire du tampon de page 124. La figure 2 représente un schéma fonctionnel détaillé de la matrice de cellules mémoire 122 et du tampon de page 124 du dispositif de mémoire flash 120. Sur la figure 2, la référence numérique 131 désigne une page qui se réfère à 25 une pluralité de cellules mémoire connectées à une même ligne de mots. Par conséquent, la matrice de cellules mémoire 122 comprend une pluralité de pages 131. Le tampon de page 124 est constitué d'un champ de données et d'un champ de 30 réserve. Dans un dispositif de mémoire flash typique, le champ de données et le champ de réserve sont respectivement des espaces permettant l'écriture de données et de codes de parité. Chaque page de la matrice de cellules mémoire 122 est également constituée d'un champ de données et d'un 35 champ de parité. L'unité de commande 110 est connectée au dispositif de mémoire flash 120 par l'intermédiaire d'un bus d'entrée/sortie ("I/O") IO et d'un bus de commande CON. Le bus d'entrée/sortie IO est constitué d'une pluralité de 5 lignes de signaux, par exemple de 8 ou 16 lignes de signaux. Des commandes CMD, des adresses ADDR, et des données DATA sont transmises par l'intermédiaire du bus d'entrée/sortie IO. Des signaux de commande sont transmis 10 par l'intermédiaire du bus de commande CON pour fournir une information indiquant si un signal qui est transmis par l'intermédiaire du bus d'entrée/sortie IO est une commande CMD, une adresse ADDR, ou une donnée DATA. La figure 3 illustre un procédé 300 d'écriture de 15 données dans le système de mémoire flash représenté conformément à l'invention. La figure 3 représente un processus d'écriture de données et de codes de parité dans le dispositif de mémoire flash 120. Se référant à la figure 3, une première commande 20 CMD1, une adresse ADDR, des données DATA1, DATAn et PARITYl-PARITYn, et une seconde commande CMD2 sont transmises en série au dispositif de mémoire flash 120. La première commande CMD1 peut être une commande de chargement de données. L'adresse ADDR désigne une adresse d'une 25 matrice de cellules mémoire à laquelle des données seront fournies en entrée. Les données sont une pluralité de groupes de données DATAl-DATAn ainsi que de codes de parité PARITYl-PARITYn pour les groupes respectifs de données DATAl-DATAn. Plus 30 précisément, dans le système de mémoire flash 100 de l'invention, l'unité de commande 110 transmet au dispositif de mémoire flash 120 une partie (par exemple un groupe) de données DATAl- DATAn qui a une taille telle qu'elle peut être traitée par le circuit ECC 118. Après cela, l'unité de 35 commande 110 transmet au dispositif de mémoire flash 120 une partie des codes de parité PARITY1-PARITYn pour la partie (par exemple le groupe) de données DATA1-DATAn. En d'autres termes, on notera que le transfert de toutes les données correspondant à la taille du champ de 5 données du tampon de page 124 est suivi du transfert des codes de parité pour toutes les données, mais que toutes les données sont divisées en deux ou plusieurs groupes plus petits et que le transfert de chaque groupe de données est suivi du transfert du code de parité correspondant au 10 groupe, de telle façon que des groupes respectifs de données et de codes de parité pour les groupes respectifs de données soient transmis de façon alternée au dispositif de mémoire flash 120. Par conséquent, un premier groupe de données DATA1, 15 un premier code de parité PARITY1 pour le premier groupe de données DATA1, un second groupe de données DATA2, un second code de parité PARITY2 pour le second groupe de données DATA2, ..., un n-ème groupe de données DATAn, et un n-ème code de parité PARITYn sont générés en série par l'unité de 20 commande 110 et fournis en entrée au dispositif de mémoire flash 120. Les premier à n-ème codes de parité PARITY1-PARITYn correspondent respectivement aux premier à n-ème groupes de données DATA1-DATAn. Le tampon de page 124 accepte en série 25 les données transmises et les codes de parité transmis quels que soient le champ de données et le champ de réserve. Les premier à n-ème groupes de données DATA1DATAn peuvent avoir la même taille. Si l'on suppose que le champ de données du tampon de 30 page 124 a une taille de N octets (N est ici un entier naturel supérieur à 1), chaque groupe de données peut avoir une taille de N octets divisée par le nombre de groupes. Le nombre de groupes est ici un entier naturel supérieur à 2. Par exemple, si l'on suppose que le champ de données 35 du tampon de page 124 a une taille de 2 ko et que le champ de réserve a une taille de 64 octets (c'est-à-dire que le tampon de page 124 a une taille totale de (2K+ 64) octets) et qu'une unité de traitement de codes de parité est de 512 octets, les données et les codes de parité sont écrits dans le tampon de page 124 dans l'ordre d'une première donnée de 5 512 octets, d'un premier code de parité de 16 octets, d'une seconde donnée de 512 octets, d'un second code de parité de 16 octets, d'une troisième donnée de 512 octets, d'un troisième code de parité de 16 octets, d'une quatrième donnée de 512 octets et d'un quatrième code de parité de 16 10 octets. Une seconde commande CMD2 est ensuite transmise au dispositif de mémoire flash 120. La lecture des données est effectuée de la même manière que l'écriture des données. Dans l'exemple cidessus, dans lequel l'unité de traitement de code de parité 15 est de 512 octets, lorsque des données sont lues depuis le dispositif de mémoire flash 120, la lecture de la première donnée de 512 octets DATAl est directement suivie de la lecture du premier code de parité correspondant PARITY1. Par conséquent, pendant la lecture de la seconde donnée de 20 512 octets DATA2, il est possible de vérifier les erreurs de la première donnée DATA1 en utilisant le premier code de parité PARITY1. Par conséquent, si l'on vérifie et trouve que la première donnée DATAl contient des erreurs, l'opération de 25 lecture présente est interrompue de sorte que les données soient de nouveau lues afin de traiter rapidement les erreurs. Comme décrit ci-dessus, lorsque le tampon de page 124 a une taille supérieure à celle de l'unité de traitement de 30 codes de parité, un groupe de données correspondant à l'unité de traitement de codes de parité est écrit dans le tampon de page 124, et le code de parité correspondant généré par le circuit ECC 118 est ensuite écrit dans le tampon de page 124. Après cela, le groupe suivant de 35 données correspondant à l'unité de traitement de codes de parité et le code de parité correspondant sont écrits en série dans le tampon de page 124. Si l'on répète cette opération d'écriture, il n'est pas nécessaire d'accumuler tous les codes de parité dans le tampon de page 124. Pendant la lecture de données, un groupe de données 5 correspondant à l'unité de traitement de codes de parité et le code de parité correspondant sont lus en série depuis le tampon de page 124, ce qui permet de réduire le temps de vérification des erreurs, et ce qui facilite le processus de vérification des erreurs. L'effet de la présente 10 invention apparaît plus clairement par comparaison à l'exemple comparatif suivant. Les figures 4A et 4B illustrent respectivement des procédés 400 et 450 d'écriture de données dans un système de mémoire flash conforme aux exemples comparatifs de la 15 présente invention. Se référant à la figure 4A, après qu'une unité de commande 110 ait transmis une première commande CMD1 et une adresse ADDR1 à un dispositif de mémoire flash 120, des données consécutives DATA1-DATAn sont écrites en série dans 20 le tampon de page 124. Après cela, des codes de parité consécutifs PARITY1-PARITYn sont transmis en série et enfin, une seconde commande CMD2 est transmise au dispositif de mémoire flash 120. Plus précisément, après que l'unité de commande 110 a 25 transmis la totalité des données DATA1-DATAn correspondant à la taille du champ de données au dispositif de mémoire flash 120 de façon que les données DATA1-DATAn soient écrites dans le champ de données, la totalité des codes de parité PARITY1-PARITYn sont transmis et écrits dans un 30 champ de réserve. Se référant à la figure 4B, une unité de commande 110 transmet des données consécutives DATA1-DATAn en utilisant une première commande CMD1, une adresse ADDR1, et une seconde commande CMD2 de façon que les données DATA1-DATAn 35 soient écrites en série dans une page d'une cellule mémoire 122 par l'intermédiaire d'un tampon de page 124. Après cela, l'unité de commande 110 transmet des codes de parité consécutifs PARITY1-PARITYn correspondant aux données DATA1-DATAn en utilisant la première commande CMD1, une seconde adresse ADDR2, et de nouveau la seconde commande 5 CMD2, de façon que les codes de parité PARITY1-PARITYn soient écrits dans une autre page de la cellule mémoire 122 par l'intermédiaire du tampon de page 124. Dans l'exemple comparatif des procédés représentés sur les figures 4A et 4B, si le tampon de page 124 a une 10 taille supérieure à une unité de traitement de codes de parité, pour écrire des codes de parité dans le champ de réserve ou une autre page de la cellule mémoire 122, un code de parité généré pour chaque unité de traitement de code de parité doit être stocké dans un dispositif de mémoire supplémentaire de l'unité de commande 110 puis être transmis au dispositif de mémoire flash 120. Cela peut augmenter la charge de traitement des données. En outre, pendant la lecture de données, la lecture d'une partie des données correspondant à la taille d'une 20 page est suivie de la lecture de codes de parité pour cette partie des données, ou les données et les codes de parité peuvent ne sont pas lus en série. Par conséquent, le temps mis pour contrôler les erreurs augmente. Conformément à la présente invention, un système de 25 mémoire flash entrelace l'écriture de données et l'écriture de codes de parité pour les données indépendamment d'un champ de données et d'un champ de réserve d'un tampon de page, ce qui permet de réduire le temps global d'écriture. Par ailleurs, chaque code de parité est généré pour une 30 quantité relativement faible de données, ce qui permet de réduire notablement la charge imposée au circuit ECC. Bien que la présente invention ait été illustrée et décrite plus particulièrement en référence à des exemples de modes de réalisation de celle-ci, les personnes 35 normalement compétentes dans la technique concernée noteront que diverses modifications de la forme et des il détails peuvent être envisagées sans qu'elles s'écartent du cadre de l'invention tel qu'il est défini dans les revendications annexées. REVENDICATIONS 1. Système de mémoire flash (100) caractérisé en ce qu'il comprend: un dispositif de mémoire flash (120) qui comporte une 5 matrice de cellules mémoire (122) et un tampon de page (124) pour écrire des données fournies en entrée de l'extérieur dans la matrice de cellules mémoire (122) ; et une unité de commande (110) qui divise les données en deux groupes de données ou davantage dont chacun a une 10 taille inférieure à la taille du tampon de page (124), et transmet en série au dispositif de mémoire flash (120) chaque groupe de données et un code de parité pour le groupe de données. 2. Système (100) selon la revendication 1, 15 caractérisé en ce que l'unité de commande (110) comprend: une partie de commande de mémoire (114) qui transmet une commande prédéterminée, les données, une adresse pour les données, et un signal de commande au dispositif de mémoire flash (120) ; et un circuit ECC (118) pour générer le code de parité. 3. Système (100) selon la revendication 1, caractérisé en ce que le tampon de page (124) comprend: un champ de données à N octets; et un champ de réserve à M octets, dans lequel N et M sont chacun un nombre entier supérieur à 1. 4. Système (100) selon la revendication 3, caractérisé en ce que chaque groupe de données et le code de parité pour le groupe de données sont écrits en série 30 dans le tampon de page (124), quels que soient le champ de données et le champ de réserve. 5. Système de mémoire flash (100) caractérisé en ce qu'il comprend: un dispositif de mémoire flash (120) qui comporte une 35 matrice de cellules mémoire (122) et un tampon de page (124) pour écrire et lire des données dans et depuis la matrice de cellules mémoire (122) ; et une unité de commande (110) qui transmet en série au dispositif de mémoire flash (120) deux groupes de codes de 5 parité de données consécutifs ou plus dont chacun contient une certaine quantité de données, et un code de parité pour les données, dans lequel chaque groupe de codes de parité de données a une taille inférieure à la taille du tampon de 10 page (124). 6. Système (100) selon la revendication 5, caractérisé en ce que l'unité de commande (110) comprend: une partie de commande de mémoire (118) qui transmet une commande prédéterminée, les données, une adresse pour 15 les données, et un signal de commande au dispositif de mémoire flash (120) ; et un circuit ECC (118) pour générer le code de parité. 7. Procédé d'écriture de données dans un système de mémoire flash (100) caractérisé en ce qu'il comprend un 20 dispositif de mémoire flash (120), le procédé étant caractérisé en ce qu'il consiste à : (a) transmettre une commande prédéterminée et un signal d'adresse au dispositif de mémoire flash (120) ; (b) transmettre des données au dispositif de mémoire 25 flash (120) ; et (c) générer un code de parité pour les données et transmettre le code de parité au dispositif de mémoire flash (120), dans lequel les étapes (b) et (c) sont répétées deux 30 fois ou plus. 8. Procédé selon la revendication 7, caractérisé en ce que, lors des étapes (b) et (c), les données et le code de parité correspondants sont écrits en série dans un tampon de page (124) du dispositif de mémoire flash (120). 35 9. Mémoire (100) selon la revendication 8, caractérisée en ce que les données et le code de parité correspondant ont une taille inférieure à la taille du tampon de page (124). 10. Mémoire flash (100) caractérisée en ce qu'elle comprend: une matrice de cellules mémoire (122) ; un tampon de page (124) en communication de signal avec la matrice de cellules mémoire (122) ; et une unité de commande (110) en communication de signal avec le tampon de page (124) pour transférer des 10 données sous la forme d'une pluralité de groupes avec des codes de parité correspondants, la taille combinée de la pluralité de groupes et des codes de parité correspondants n'étant pas supérieure à la taille du tampon de page (124). 11. Mémoire flash (100) selon la revendication 10, 15 l'unité de commande (110) étant caractérisée en ce qu'elle comprend: une partie de commande de mémoire (114) pour transmettre chacune d'une commande, de données, et d'une adresse pour les données au tampon de page (124) ; et une partie génératrice de code de correction d'erreurs ("ECC") (118) pour générer un code de parité correspondant pour chaque groupe de la pluralité de groupes de données. 12. Mémoire flash (100) selon la revendication 11, 25 dans laquelle la partie de commande de mémoire (114) est disposée de façon à transmettre un signal de commande à au moins l'une de la matrice de cellules mémoire (122) et du tampon de page (124). 13. Mémoire flash (100) selon la revendication 10, 30 caractérisée en ce que le tampon de page (124) comprend: un champ de données d'une taille de N octets; et un champ de réserve d'une taille de M octets, où N et M sont chacun des entiers naturels, et N+M n'est pas supérieur à la taille du tampon de page (124). 14. Mémoire flash (100) selon la revendication 13, caractérisé en ce que chaque groupe de données et le code de parité qui lui correspond sont écrits en série dans le tampon de page (124). 15. Mémoire flash (100) selon la revendication 10, caractérisée en ce que: l'unité de commande (110) et le tampon de page (124) sont conçus pour écrire et lire des données dans la matrice de cellules mémoire (122) ; et la pluralité de groupes est agencée sous la forme d'une pluralité de groupes consécutifs (données, parité, 10 code) dont chacun contient une quantité variable de données et un code de parité correspondant pour ces données. 16. Mémoire flash (100) selon la revendication 10, pour au moins l'une d'une lecture et d'une écriture de données, la mémoire flash (100) étant en outre caractérisée 15 en ce qu'elle comprend: un moyen de commande pour transmettre une commande à au moins l'un du tampon de page (124) et de la matrice de cellules mémoire (122) ; un moyen d'adressage pour transmettre une pluralité 20 d'adresses pour les données à au moins l'un du tampon de page (124) et de la matrice de cellules mémoire (122) ; et un moyen de correction d'erreurs (118) pour générer une pluralité de codes de parité pour les données. 17. Mémoire flash (100) selon la revendication 16, 25 comprenant en outre un moyen de transfert de données pour écrire une pluralité d'unités de données et une pluralité correspondante de codes de parité dans le tampon de page (124). 18. Mémoire flash (100) selon la revendication 17, 30 caractérisée en ce que le moyen de transfert de données est destiné à écrire en série une pluralité d'unités de données et une pluralité correspondante de codes de parité dans le tampon de page (124). 19. Mémoire flash (100) selon la revendication 18, 35 caractérisée en ce que la taille combinée de la pluralité d'unités de données et de la pluralité correspondante de codes de parité n'est pas supérieure à une taille maximum du tampon de page. 20. Mémoire flash (100) selon la revendication 10, le tampon de page (124) étant caractérisé en ce qu'il comprend: un premier champ pour recevoir consécutivement des groupes alternés de données et de codes de parité ; et un second champ pour recevoir une suite des groupes alternés consécutifs de données et de codes de parité.