FR 3025928 A1 20160318 FR 1558316 A 20150908 SYSTÈME DE CODAGE POUR MÉMOIRE FLASH VERTICALE 3D Contexte de l'invention [0001] Les systèmes de stockage en mémoire non volatile sont un type de mémoire couramment utilisé dans les systèmes informatiques. Une mémoire non volatile telle que les disques électroniques et les disques durs offrent des avantages particuliers comme par exemple la possibilité de stocker des données avec des vitesses d'accès et des débits de données élevés. Cependant, un problème associé à une mémoire non volatile (NVM) est le phénomène de dépiégeage qui conduit à des variations de la tension de seuil dans des cellules programmées et à des erreurs. En particulier, le dépiégeage rapide provoqué par des électrons piégés dans des couches de piégeage de charges de cellules de mémoire sortant par effet tunnel après la programmation provoque des erreurs en mémoire. Ce phénomène et les erreurs associées sont particulièrement gênants dans une mémoire flash verticale tridimensionnelle. Les procédés classiques visant à remédier au dépiégeage s'intéressent en partie à l'ingénierie de la structure des cellules. Cependant, ces techniques classiques ne compensent généralement pas de façon suffisante ce phénomène, ce qui conduit à une augmentation des erreurs. Résumé de l'invention [0002] Des techniques de codage de données devant être écrites dans un sous-système de stockage en mémoire non volatile sont décrites. Selon un aspect, la présente invention concerne a procédé de codage de données devant être écrites dans une mémoire consistant à : écrire des premières données dans la mémoire ; lire les premières données depuis la mémoire ; analyser les premières données lues, dans lequel l'analyse consiste à déterminer si les données lues comportent une erreur ; coder des deuxièmes données sur la base de l'analyse des premières données, dans lequel les deuxièmes données sont codées afin d'être écrites à une position adjacente à l'erreur lorsqu'il est déterminé que les données lues comportent l'erreur ; et écrire les deuxièmes données eldées dans la mémoire à ladite position. [0003] Dans certains modes de réalisation de la présente invention, la mémoire est un système de stockage en mémoire non volatile. 3025928 [0004] Conformément à d'autres aspects de ce mode de réalisation, le système de stockage en mémoire non volatile est un disque électronique. [0005] Conformément à des aspects supplémentaires de ce mode de réalisation, le disque 5 électronique est une mémoire flash tridimensionnelle. [0006] Conformément à d'autres aspects de ce mode de réalisation, la mémoire flash tridimensionnelle comprend une pluralité de lignes de mots ayant des cellules à un seul niveau. [0007] Conformément à des aspects supplémentaires de ce mode de réalisation, la lecture consiste à lire les premières données depuis la mémoire sur la base d'un seuil prédéterminé. 10 [0008] Conformément à des aspects supplémentaires de ce mode de réalisation, le seuil prédéterminé est un seuil de niveau de tension de lecture. [0009] Conformément à des aspects supplémentaires de ce mode de réalisation, l'analyse consiste à comparer les premières données lues depuis la mémoire sur la base du seuil prédéterminé à une copie des premières données qui est différente des premières données 15 stockées dans la mémoire. [0010] Conformément à des aspects supplémentaires de ce mode de réalisation, l'analyse consiste à identifier une position d'erreur d'une cellule de mémoire comportant l'erreur sur la base de la comparaison, et dans lequel la position à laquelle les deuxièmes données doivent être écrites est adjacente à la position d'erreur de la cellule de mémoire. 20 [0011] Conformément à des aspects supplémentaires de ce mode de réalisation, la position à laquelle les deuxièmes données doivent être écrites se situe dans une ligne de mots différente. [0012] Conformément à d'autres aspects de ce mode de réalisation, la lecture consiste à lire les premières données depuis la mémoire sur la base d'une pluralité de seuils prédéterminés. [0013] Conformément -à d'autres aspects de ce mode de réalisation, l'analyse consiste à 25 comparer les premières données lues depuis la mémoire sur la base d'un premier de la pluralité - 2 - 3025928 de seuils prédéterminés aux premières données lues depuis la mémoire sur la base d'un deuxième de la pluralité de seuils prédéterminés qui est différent du premier seuil prédéterminé. [0014] Conformément à des aspects supplémentaires de ce mode de réalisation, l'analyse consiste à identifier une position d'erreur d'une cellule de mémoire comportant l'erreur sur la base 5 de la comparaison. [0015] Conformément à des aspects supplémentaires de ce mode de réalisation, la mémoire flash tridimensionnelle comprend une pluralité de lignes de mots ayant des cellules à niveaux multiples. [0016] Conformément à des aspects supplémentaires de ce mode de réalisation, la position à 10 laquelle les deuxièmes données doivent être écrites se situe dans l'une d'une page supérieure d'une première ligne de mots adjacente différente d'une ligne de mots contenant les premières données et d'une page inférieure d'une deuxième ligne de mots adjacente différente de la ligne de mots contenant les premières données. [0017] Conformément à d'autres aspects de ce mode de réalisation, le codage est effectué par 15 un contrôleur de mémoire flash. [0018] Conformément à des aspects supplémentaires de ce mode de réalisation, l'erreur est provoquée par un dépiégeage. [0019] Conformément à des aspects supplémentaires de ce mode de réalisation, les deuxièmes données sont écrites dans la mémoire à ladite position pour provoquer une interférence 20 intercellulaire avec les premières données. [0020] Un autre aspect de la présente invention concerne un produit de programme informatique constitué d'une série d'instructions exécutables sur un ordinateur, le produit de programme informatique effectuant un processus de codage de données devant être écrites dans une mémoire ; le programme d'ordinateur mettant en oeuvre les étapes consistant à : écrire des 25 premières données dans la mémoire ; lire les premières données depuis la mémoire ; analyser les premières données lues, dans lequel l'analyse consiste à déterminer si les données lues comportent - 3 - 3025928 une erreur ; coder des deuxièmes données sur la base de l'analyse des premières données, dans lequel les deuxièmes données sont codées afin d'être écrites à une position adjacente à l'erreur lorsqu'il est déterminé que les données lues comportent l'erreur ; et écrire les deuxièmes données codées dans la mémoire à ladite position. [0021] Dans certains modes de réalisation, les techniques peuvent être mises en oeuvre sous la forme d'un produit de programme informatique constitué d'une série d'instructions exécutables sur un ordinateur, le produit de programme informatique effectuant un processus destiné à commander la puissance sur une interface d'Interconnexion de Composants Périphériques Express (PCIe) ; le programme d'ordinateur mettant en oeuvre les étapes consistant à : écrire des premières données 10 dans la mémoire ; lire les premières données depuis la mémoire ; analyser les premières données lues, dans lequel l'analyse consiste à déterminer si les données lues comportent une erreur ; coder des deuxièmes données sur la base de l'analyse des premières données, dans lequel les deuxièmes données sont codées afin qu'elles soient écrites à une position adjacente à l'erreur lorsqu'il est déterminé que les données lues comportent l'erreur ; et écrire les deuxièmes données codées dans 15 la mémoire à ladite position. [0022] Dans certains modes de réalisation, ces techniques peuvent être mises en oeuvre sous la forme d'un système de codage de données devant être écrites dans une mémoire, le système comprenant : un module d'écriture qui écrit des premières données dans la mémoire ; un module de lecture qui lit les premières données depuis la mémoire ; un module d'analyse qui analyse-les 20 premières données lues, dans lequel l'analyse consiste à déterminer si les données lues comportent une erreur lorsqu'il est déterminé que les données lues comportent l'erreur ; un module de codage qui code des deuxièmes données sur la base de l'analyse des premières données, dans lequel les deuxièmes données sont codées afin d'être écrites à une position adjacente à l'erreur ; et un module d'écriture de données codées qui écrit les deuxièmes données codées dans la mémoire à ladite 25 position. [0023] La présente invention est décrite ci-après de manière plus détaillée en référence à des exemples de modes de réalisation de celle-ci qui sont illustrés sur les dessins annexés. Bien que la présente invention soit décrite ci-après en référence à des exemples de modes de réalisation, il est à noter que la présente invention n'est pas limitée à ceux-ci. L'homme du métier ayant accès aux - 4 - 3025928 directives présentées ici pourra identifier des formes de réalisation, des modifications, et des modes de réalisation supplémentaires, ainsi que d'autres domaines d'utilisation, qui entrent dans le cadre de la présente invention tel qu'il est décrit ici, et en rapport avec lesquels la présente invention peut s'avérer particulièrement utile. 5 Brève description des dessins [0024] Afin de faciliter une meilleure compréhension de la présente invention, on se référera à présent aux dessins annexés, dans lesquels des éléments identiques sont désignés par des références numériques identiques. Ces dessins ne doivent pas être considérés comme limitant la présente invention et sont présentés à seul titre d'exemple. 10 [0025] La figure 1 représente un schéma fonctionnel illustrant une architecture informatique conformément à un mode de réalisation de la présente invention. [0026] La figure 2 représente un schéma fonctionnel illustrant un système informatique conformément à un mode de réalisation de la présente invention. [0027] La figure 3 représente un exemple de schéma fonctionnel illustrant un système de 15 stockage non volatil conformément à un mode de réalisation de la présente invention. [0028] La figure 4 représente un schéma fonctionnel illustrant un module de commande de codage conformément à un mode de réalisation de la présente invention. [0029] La figure 5 représente un organigramme illustrant un procédé de codage de données pour des systèmes de stockage non volatils conformément à un mode de réalisation de la présente 20 invention. [0030] Les figures 6A-6B représentent des cellules de mémoire conformément à un mode de réalisation de la présente invention. [0031] Les figures 7A et 7B représentent des distributions de tension de cellules de mémoire conformément à un mode de réalisation de la présente invention. - 5 - 3025928 10032] Les figures 8A-C représentent des exemples de variations de distributions de tension de seuil au cours du temps provoquées par l'écriture de données dans des cellules de mémoire conformément à un mode de réalisation de la présente invention. [0033] Les figures 9A et 9B représentent un autre exemple de distributions de tension de seuil 5 de cellules de mémoire conformément à un mode de réalisation de la présente invention. [0034] Les figures 10A et 10B représentent un exemple de distributions de tension de seuil de cellules de mémoire conformément à un mode de réalisation de la présente invention. [0035] Les figures 11A et 11B représentent un exemple de distributions de tension de seuil de cellules de mémoire conformément à un mode de réalisation de la présente invention. 10 [0036] Les figures 12A et 12B représentent un exemple de distributions de tension de seuil de cellules de mémoire conformément à un mode de réalisation de la présente invention. [0037] Les figures 13A et 13B représentent un exemple de distributions de tension de seuil de cellules de mémoire conformément à un mode de réalisation de la présente invention. [0038] La figure 14 représente un exemple d'un concept d'entrée/sortie d'une cellule de 15 mémoire conformément à un mode de réalisation de la présente invention. [0039] La figure 15 représente un autre exemple d'une interférence intercellulaire conformément à un mode de réalisation de la présente invention. [0040] La figure 16 représente des cellules de mémoire conformément à un mode de réalisation de la présente invention. 20 [0041] La figure 17 représente un exemple de distributions de tension de seuil de cellules de mémoire conformément à un mode de réalisation de la présente invention. [0042] La figure 18 représente un exemple de distributions de tension de seuil de cellules de mémoire conformément à un mode de réalisation de la présente invention. - 6- 3025928 [0043] La figure 19 représente un exemple de distributions de tension de seuil de cellules de mémoire conformément à un mode de réalisation de la présente invention. [0044] La figure, 20 représente un exemple de distributions de tension de seuil de cellules de mémoire conformément à un mode de réalisation de la présente invention. [0045] La figure 21 représente un exemple de distributions de tension de seuil de cellules de mémoire conformément à un mode de réalisation de la présente invention. [0046] La figure 22 représente un exemple de distributions de tension de seuil de cellules de mémoire conformément à un mode de réalisation de la présente invention. Description 10 [0047] La présente invention concerne de manière générale le codage de données devant être écrites dans une mémoire non volatile. Selon un aspect de la présente invention, le codage de données peut prendre en compte les phénomènes connus sous le nom de dépiégeage et d'interférence intercellulaire (ICI, Inter-Cell Interference). Un type de dépiégeage est le dépiégeage rapide provoqué par des électrons piégés dans des couches de piégeage de charges de 15 cellules de mémoire sortant par effet tunnel après la programmation. Une interférence intercellulaire (ICI) est un couplage par capacité parasite entre des cellules de mémoire adjacentes ayant un effet sur les tensions de seuil. Dans certains aspects de la présente invention, les cellules de mémoire subissant un dépiégeage peuvent être identifiées et les données suivantes peuvent être écrites dans la mémoire de telle manière qu'une interférence intercellulaire (ICI) soit 20 intentionnellement provoquée entre les cellules de mémoire subissant un dépiégeage et les cellules de mémoire stockant les nouvelles données. En conséquence, les erreurs provoquées par un dépiégeage peuvent être réduites. [0048] La figure 1 représente un schéma fonctionnel illustrant une architecture informatique 100 conformément à un mode de réalisation de la présente invention. L'architecture informatique 25 100 peut comporter des éléments supplémentaires qui ne sont pas représentés. L'architecture informatique 100 peut contenir des systèmes informatiques clients 110, 1,20 et 130, ainsi que des serveurs 150 et 160. Les systèmes informatiques clients 110, 120 et 130, ainsi que les serveurs 150 - 7 - 3025928 et 160 peuvent mettre en oeuvre le système informatique 200 représenté sur la figure 2. Chacun des clients 110-130 et des serveurs 150-160 peut être relié par voie de communion à un réseau 140. Le serveur 150 peut être connecté à une pluralité de dispositifs de stockage 152 à 154. Les clients 110-130 peuvent également être connectés à une pluralité de dispositifs de stockage (non 5 représentés). Le serveur 160 peut être connecté à une pluralité de dispositifs de stockage 162 à 164. Bien que l'on n'ait illustré que deux dispositifs de stockage reliés aux serveurs 150 et 160, des dispositifs de stockage supplémentaires peuvent être prévus. Dans certains cas, les dispositifs de stockage 152, 154, 162, et 164 peuvent être des systèmes de stockage en mémoire non volatile. A titre d'exemple, les dispositifs de stockage 152, 154, 162, et 164 peuvent être une mémoire à 10 semi-conducteur (par exemple un mémoire flash, une flash NAND, etc.), une mémoire optique, ou une mémoire magnétique. 10049] La figure 2 représente un schéma fonctionnel illustrant un système informatique 200 conformément à un mode de réalisation de la présente invention. Le système informatique 200 peut contenir un bus 210 connectant des sous-systèmes du système informatique 200, parmi 15 lesquels un processeur central 214, une mémoire système 216 (par exemple, une RAM (Random Access Memory, Mémoire Vive), une ROM (Read Only Memory, Mémoire Morte), une RAM flash, etc.), un contrôleur d'entrée/sortie (I/O) 218, et une interface de réseau 220. L'interface de réseau 200 peut relier par voie de communication le système informatique 200 à un réseau 222 (par exemple, un réseau local, un réseau étendu, l'Internet, etc.). Le bus 210 peut également connecter 20 une interface de stockage 230 dans la mémoire 232, une interface de mémoire non volatile 234 dans une mémoire non volatile 236, et un adaptateur de bus hôte (HBA, Host Bus Adapter), à un bus ATA série (SATA) 240. Le bus SATA 240 peut connecter le système informatique 200 à des systèmes de stockage supplémentaires. Le système informatique 200 peut contenir des dispositifs ou des sous-systèmes supplémentaires non illustrés. 25 100501 La figure 3 représente un schéma fonctionnel illustrant un système de stockage en mémoire non volatile 300 conformément à un mode de réalisation de la présente invention, Le système de stockage en mémoire non volatile 300 peut comporter un système hôte 310, un contrôleur de mémoire 320, et des systèmes de stockage en mémoire non volatile 332-336. Le système de stockage en mémoire non volatile 300 peut être mis en oeuvre sur l'un quelconque - 8 - 3025928 des clients 110-130 et des serveurs 150 et 160. A titre d'exemple, l'un quelconque des clients 110-130 et des serveurs 150 et 160 peut être le système hôte 320 ayant au moins une CPU (Unité Centrale) 312 mettant en oeuvre des logiciels d'application 314. Dans certains cas, le système hôte 310 peut exécuter des logiciels d'application 314 sur au moins une CPU 312 afin d'exécuter des 5 opérations sur les systèmes de stockage en mémoire non volatile 332-336 par l'intermédiaire du contrôleur de mémoire 320. [0051] Les logiciels d'application 310 peuvent être des logiciels applicables quelconques destinés à exécuter des opérations (des opérations de lecture, d'écriture, d'effacement, de commande, etc.) sur le système de stockage en mémoire non volatile 300. A titre d'exemple, les 10 logiciels d'application 310 peuvent lire ou écrire des données stockées sur l'un quelconque des systèmes de stockage en mémoire non volatile (NVM) 332-336. Les logiciels d'application 310 peuvent mettre en oeuvre ces opérations sur les systèmes de stockage NVM 332-336 par l'intermédiaire du contrôleur de mémoire 320. [0052] Le contrôleur de mémoire 320 représenté sur la figure 3 peut être un contrôleur de 15 mémoire destiné à mettre en oeuvre des opérations sur les systèmes de stockage NVM raccordés 332-336. En particulier, le contrôleur de mémoire 320 peut fournir des processeurs (par exemple, la CPU 312) mettant en oeuvre les logiciels d'application 314 accédant aux systèmes de stockage NVM 332-336. Dans certains cas, le contrôleur de mémoire 320 peut être mis en oeuvre sur chacun des systèmes de stockage NVM 332-336 ou en tant que partie 20 d'un système informatique distinct (par exemple, le serveur 150). Dans d'autres cas, un contrôleur de mémoire unique peut être prévu pour commander les systèmes de stockage NVM 332-336. Le contrôleur 320 peut fournir des tampons ou des files d'attente afin de stocker temporairement des opérations devant être mises en oeuvre sur les systèmes de stockage NVM 332336. Le contrôleur 320 peut également coder des données devant être écrites dans les systèmes de 25 stockage NVM 332-336. [0053] La figure 4 représente un module de commande de codage 400 conformément à un mode de réalisation de la présente invention. Comme illustré, le module de commande de codage 400 peut contenir un ou plusieurs composants, parmi lesquels un module de détection de défauts 410, t/n module codeur 420, et un module de commande 430. - 9 - 3025928 [0054] Le module de détection de défauts 410 peut détecter des défauts au sein d'un système de stockage NVM. A titre d'exemple, le module de détection de défauts 410 peut détecter des défauts au sein d'un système de stockage NVM tel que les systèmes de stockage NVM 332-336. Dans certains modes de réalisation, le module de détection de défauts 410 peut détecter des défauts 5 dans un système de stockage NVM en lisant des données depuis le système de stockage NVM après une écriture de données dans le système de stockage NVM. Dans certains cas, les données peuvent être relues depuis la NVM immédiatement après l'écriture. Ces informations de défauts peuvent ensuite être fournies au module codeur 420 afin de compenser les éventuels défauts ou erreurs lors de l'écriture de nouvelles données dans le système de stockage NVM. 10 [0055] Dans certains modes de réalisation, le module de détection 410 peut déterminer des défauts provoqués par un dépiégeage dans le système de stockage NVM. Un dépiégeage est provoqué par des électrons piégés dans des couches de piégeage de charges sortant par effet tunnel après la programmation de la cellule de mémoire. Le dépiégeage a pour résultat que des charges sont perdues et que la tension de seuil des cellules de mémoire correspondantes dégrade la 15 distribution de tension de seuil. Cela est décrit et représenté plus en détail ci-après. Un dépiégeage se produit de manière générale immédiatement après qu'une opération d'écriture a été effectuée et arrive à saturation en moins d'environ une seconde. Afin de déterminer des défauts provoqués par un dépiégeage, le module de détection de défauts 410 peut lire des données depuis la NVM après l'écriture des données en utilisant un seuil de tension prédéterminé (VT) et comparer les données 20 lues aux informations ayant été précédemment écrites. En variante, le module 410 peut lire les données sur la base de seuils de tension multiples et comparer les résultats. Sur la base de cette comparaison, on peut identifier les cellules de mémoire subissant un dépiégeage et les emplacements qui leur correspondent (par exemple, une ligne de mots, une ligne de bits et une ligne de sélection de chaîne). 25 [0056] Le module codeur 420 peut coder des données devant être écrites dans un système de stockage NVM sur la base d'un algorithme prédéterminé. Dans certains cas, le module codeur 420 peut recevoir des informations de défauts en provenance du module de détection de défauts 410 et intégrer ces informations lors du codage des données devant être écrites dans le système de stockage NVM. A tire d'exemple, le module codeur 420 peut coder et mapper les emplacements - 10 - 3025928 de cellules des données devant être écrites dans la NVM afin de prendre en compte les cellules de mémoire subissant un dépiégeage. Dans certains modes de réalisation, le module codeur 420 peut également prendre en compte une interférence intercellulaire lors du codage des données devant être écrites. A titre d'exemple, le module codeur 420 peut coder les données devant être écrites de 5 manière à ce qu'elles soient intentionnellement stockées à un emplacement de la mémoire proche de la cellule de mémoire subissant un dépiégeage afin de provoquer intentionnellement une interférence intercellulaire. Il résulte du codage et de l'écriture des données à l'emplacement proche de la cellule de mémoire subissant un dépiégeage qu'une charge peut être injectée dans la cellule de mémoire subissant un dépiégeage conduisant à une augmentation de sa tension de seuil provoquée 10 par une interférence intercellulaire. Le module codeur 420 peut fournir les données codées au module de commande 430 pour l'écriture ultérieure de données codées dans la mémoire NVM de telle manière que lorsque les données sont écrites dans la mémoire, les erreurs dues au dépiégeage puissent être réduites. [0057] Le module de commande 430 peut amener des données à être écrites dans et lues 15 depuis un système de stockage NVM tout en effectuant des opérations supplémentaires de tâche de fond. Dans certains modes de réalisation, le module de commande 430 peut recevoir des données codées en provenance du module codeur 420 et amener les données à être écrites dans un système de stockage NVM (par exemple les systèmes de stockage NVM 332-336). Le module de commande 430 peut également amener les données à être lues depuis un système de stockage 20 NVM (par exemple les systèmes de stockage NVM 332-336). A titre d'exemple, le module de commande 430 peut lire des données depuis la NVM après l'écriture de données et fournir ces données lues au module de détection de défauts 410 à des fins de détection de défauts. [0058] La figure 5 représente un procédé 500 de codage de données conformément à un mode de réalisation de la présente invention. Dans certains modes de réalisation, le procédé 500 peut 25 être mis en oeuvre à un niveau matériel, comme le contrôleur 320. Au bloc 510, le procédé 500 peut commencer. [0059] Au bloc 512, des données peuvent être écrites dans la mémoire. Dans certains modes de réalisation, le module de commande 430 peut amener les données à être écrites dans la mémoire. Les données écrites dans la mémoire au bloc 512 peuvent être des données d'utilisateurs -11- 3025928 ou une séquence de données prédéterminée. Dans certains cas, la mémoire peut être un système de stockage NVM tel qu'une mémoire flash NAND. Un exemple d'écriture de données dans la mémoire est décrit ci-après en référence à la figure 7. Après que les données ont été écrites au bloc 512, l'ensemble du processus peut passer au bloc 514. 5 [0060f Au bloc 514, les données écrites au bloc 512 peuvent être lues depuis la mémoire. Dans certains modes de réalisation, le module de commande 430 peut amener les données précédemment écrites au bloc 512 à être lues depuis la mémoire (par exemple une mémoire flash). Dans certains cas, le module de commande 430 peut lire les données depuis la mémoire de multiples fois sur la base de valeurs de seuil différentes (VT). Les données lues depuis la mémoire 10 peuvent ensuite être fournies au module de détection de défauts 410 pour analyse. Après que les données ont été lues depuis la mémoire au bloc 514, l'ensemble du processus peut passer au bloc 516. [0061] Au bloc 516, les données lues depuis la mémoire au bloc 514 peuvent être analysées afin de déterminer si des erreurs sont présentes dans les données et également si des défauts 15 correspondants sont présents dans des cellules de mémoire stockant les données. Dans certains modes de réalisation, le module de détection de défauts 410 peut analyser les données lues afin d'identifier des cellules de mémoire subissant un dépiégeage. A titre d'exemple, le module de détection de défauts 410 peut stocker les données originales écrites au bloc 512 et comparer les données relues depuis la mémoire au bloc 514 afin d'identifier des cellules de mémoire 20 défectueuses. Les emplacements de cellules de mémoire subissant un dépiégeage peuvent également être déterminés sur la base de la comparaison. Dans un autre exemple, le module de détection de défauts 410 peut utiliser les données lues depuis la mémoire sur la base de seuils de tension différents afin d'identifier des erreurs et des cellules de mémoire subissant un dépiégeage. Un exemple de cela est décrit ci-après en référence à la figure 8. Après que les données ont été 25 analysées au bloc 516, l'ensemble du processus peut passer au bloc 518. 10062] Au bloc 518, de nouvelles données devant être écrites dans la mémoire peuvent être codées. Dans certains modes de réalisation, les données peuvent être codées par le module codeur 420. Les données devant être écrites peuvent être codées en utilisant les informations de défauts déterminées au bloc 516. En particulier, le module codeur 420 peut déterminer les emplacements - 12 - 3025928 de cellules de mémoire (par exemple une ligne de mots, une ligne de bits, et une ligne de sélection de chaîne) et utiliser ces informations lors de l'écriture de nouvelles données. A titre d'exemple, des données devant être écrites peuvent être codées de telle manière que l'effet de dépiégeage dans une cellule de mémoire sur la i-ème ligne de mots (WL, Word Line) puisse être commandé par une 5 interférence intercellulaire intentionnelle (ICI) couplage par capacité parasite entre des cellules adjacentes-due à la (i+1)-ème ligne de mots. En conséquence, l'ICI intentionnelle peut compenser une diminution de la valeur de seuil d'une cellule de mémoire dans la i-ème ligne de mots étant donné que l'ICI intentionnelle peut augmenter la tension de seuil dans une cellule occasionnant l'interférence. Des exemples de codage de données sont décrits en détail ci-après. 10 Après que les nouvelles données ont été codées au bloc 518, l'ensemble du processus peut passer au bloc 520. [0063] Au bloc 520, les données codées peuvent être écrites dans la mémoire. Dans certains modes de réalisation, les données peuvent être écrites dans la mémoire (par exemple une mémoire flash) par le module de commande 430. Après que les données ont été écrites au bloc 520, 15 l'ensemble du processus peut passer au bloc 522. [0064] Au bloc 522, le processus peut se terminer. Dans certains modes de réalisation, le processus peut revenir à l'étape 510 et peut être répété périodiquement ou en continu. [0065] Les figures 6A-6B représentent des cellules de mémoire conformément à un mode de réalisation de la présente invention. Les cellules de mémoire représentées sur les figures 6A-6B 20 peuvent correspondre à la mémoire stockant les données décrites ci-dessus en référence à la figure 5. En particulier, les figures 6A-6B représentent des cellules de mémoire situées dans un segment d'une architecture de réseau de mémoires flash verticales 3D conformément à un mode de réalisation de la présente invention. [0066] La figure 6A représente un réseau de mémoires flash verticales 3D 610 ayant de 25 multiples plans de lignes de mots, comprenant les lignes de mots : W1(,+1) 612, WL(,) 614, et WL(,_ 1) 616, et de multiples lignes de bits connectant les lignes de mots : BLo_i) 618, 1340620, et BL04-/) 622. Les cellules de mémoire sont également agencées en groupes de lignes de sélection de chaînes (SSL, String Selection Line) : SSL(k_i) 624, SSL(k) 626, et SSL(k+]) 628. Des lignes de mots - 13 - 3025928 et des lignes de 'bits supplémentaires peuvent être présentes bien qu'elles ne soient pas illustrées. La figure 6A illustre en outre un cas d'interférence intercellulaire 630 entre une cellule de mémoire contenue dans la ligne de mots 612 et la ligne de mots 614. La figure 6B illustre une section transversale 650 d'un plan de lignes de mots ayant de multiples lignes de mots. A titre d'exemple, 5 la figure 6B peut par exemple correspondre à une section transversale du réseau de mémoires flash verticales 3D 610, comprenant la W4+1) 612. Le plan 650 comporte de multiples lignes de mots 652, 654, et 656 ayant chacune de multiples cellules de mémoire (par exemple, 658). Dans certains modes de réalisation, les cellules de mémoire (par exemple, 658) peuvent avoir une couche de nitrure à l'intérieur d'un empilement d'oxyde-nitrure-oxyde (ONO) amené à croître sous 10 la forme d'une couche de piégeage de charges le long de la circonférence du canal vertical mince de polysilicium et entouré de grilles métalliques le long du plan WL. [0067] La tension de seuil d'une cellule de mémoire peut correspondre à la valeur logique (par exemple 0 ou 1) stockée dans une cellule de mémoire. Dans un exemple, V(i,j,k) peut correspondre à la tension de seuil de la cellule de mémoire (i, j, k). La cellule de mémoire (i,j,k) 15 peut correspondre à la cellule de mémoire du réseau de mémoires flash verticales 3D 610 représenté sur la figure 6A, située à la i-ème ligne de mots, à la j-ème BL, et au k-ème groupe de lignes de sélection de chaînes (SSL). Une interférence intercellulaire (ICI) peut se produire par rapport à des cellules de mémoire adjacentes du fait d'un couplage par capacité parasite entre des cellules adjacentes. Le décalage de la tension de seuil AmV(i,j,k) de la cellule (i, j, k) dû à 20 l'interférence intercellulaire (ICI) peut être calculé sur la base de la formule suivante : AloV(if,k) = yWL-à-WL (AV(i-li,k)+ AV(i+1 j,k) + yBL-à-BL (AV(i,j-1,k) + AV(if+1,k) (1) + 7SSL-à-SSL AV(ij,k-1) + AV(i,j,k+1) AV(i±lj±1,k+1) représente les décalages de la tension de seuil de cellules adjacentes après que la 25 cellule (if,k) a fait l'objet d'une écriture. yWL-à-WL correspond au rapport de couplage entre un plan WL et un plan WL adjacent. yBL-à-BL correspond au rapport de couplage etre une ligne de bits (BL) et une BL adjacente. En outre, ySSL-à-SSL correspond au rapport de couplage entre un groupe SSL et le groupe SSL qui lui est adjacent. -14 3025928 [0068] L'interférence intercellulaire (ICI) entre des plans WL adjacents dans une mémoire flash verticale 3D est réduite par comparaison à la mémoire flash plane 2D classique étant donné que la couche de piégeage de charges contenue dans la mémoire flash verticale 3D est beaucoup plus mince que la couche de grille flottante contenue dans la mémoire flash 2D. Cependant, 5 l'interférence intercellulaire (ICI) entre des plans WL adjacents augmente lorsque la distance physique entre des plans WL se réduit lorsque la densité de cellules est plus élevée. En conséquence, en posant y = yWL-à-WL et yBL-à-BL = ySSL-à-SSL = 0, le modèle d'interférence intercellulaire (ICI) de la relation (1) peut être simplifié en : AicIV(if,k) = y(AV(i- 1 j,k) + AV(i+1 I ,k)). (2) 10 Ce modèle d'interférence intercellulaire (ICI) entre des cellules de mémoire adjacentes dans une mémoire flash verticale 3D peut être exploité lors du codage de nouvelles données devant être écrites dans la mémoire afin de réduire les erreurs provoquées par un dépiégeage. [0069] Les figures 7A et 7B représentent des distributions de tension de cellules de mémoire conformément à un mode de réalisation de la présente invention. Les distributions de tension des 15 cellules de mémoire représentées sur les figures 7A et 7B peuvent correspondre à l'écriture de données au bloc 512 de la figure 5. En particulier, la figure 7A représente une cellule à un seul niveau unique (SLC, Single-Level Cell) permettant de stocker B bits par cellule, où B = 1 et des distributions correspondantes de la tension de seuil. L'axe x correspond à la tension de seuil (VT) des cellules de mémoire et l'axe y correspond au nombre de cellules de mémoire ayant cette 20 tension de seuil. Initialement, les cellules de mémoire peuvent être effacées ou déprogrammées de telle manière que leur distribution de tension de seuil se situe dans un état le plus bas So 710. Lors de l'écriture de données dans les cellules de mémoire, les tensions de seuil des cellules sont augmentées conformément à l'une d'une pluralité de méthodes utilisées pour les opérations d'écriture (par exemple, une méthode de programmation impulsionnelle à pas incrémental (ISPP, 25 Incremental Step Pulse Programming)) de telle manière que les cellules de mémoire passent à un état programmé 712. Dans cet état programmé 712, les cellules de mémoire ont une distribution de tension plus élevée. - 15 - 3025928 [0070] La figure 7B représente un exemple de cellule à niveaux multiples (MLC, Multi-Level Cell) permettant de stocker B bits par cellule, où B = 2. Dans d'autres cas, la mémoire à cellules à niveaux multiples (MLC) stocke B bits par cellule, où B > 2. La figure 7B représente les cellules de mémoire de la mémoire à cellules à niveaux multiples (MLC) initialement dans un état effacé de telle manière que leur tension de seuil soit à l'état le plus bas So 714. Pendant l'écriture de données dans les cellules de mémoire, les tensions de seuil des cellules de mémoire sont augmentées de manière à ce que les cellules soient dans un premier état programmé 716, un deuxième état programmé 718, et un troisième état programmé 720. Ces différents états programmés peuvent correspondre à différentes valeurs logiques (par exemple, 00, 01, 10, 11). 10 [0071] Les figures 8A-C représentent des exemples de variations de distributions de tension de seuil au cours du temps provoquées par l'écriture de données dans des cellules de mémoire conformément à un mode de réalisation de la présente invention. Les distributions de tension des cellules de mémoire représentées sur les figures 8A-C peuvent correspondre à l'écriture de données au bloc 512, à lecture des données écrites au bloc 514, et à l'analyse des données lues au bloc 516 15 de la figure 5. En mesurant la distribution des tensions de seuil des cellules de mémoire programmées après la programmation et en comparant les résultats, on peut identifier les cellules de mémoire subissant un dépiégeage. [0072] Comme illustré sur la figure 8A, une cellule de mémoire contenue dans la ligne de mots i peut être initialisée dans un premier état So 810 avant l'écriture de données et programmée à un 20 deuxième état Si 812 après l'écriture de données. Dans ce cas, le premier état So peut correspondre à un "1" binaire alors que le deuxième état peut correspondre à un "0" binaire. Cependant, dans d'autres méthodes, le premier état So peut correspondre à un "0" binaire alors que le deuxième état peut correspondre à un "1" binaire. La figure 8A illustre en outre la programmation des cellules de mémoire avant qu'un dépiégeage se produise de manière à ce que le deuxième état Si 812 dépasse 25 la tension de seuil de niveau de lecture Ti et la tension de seuil de niveau de vérification y. La tension de seuil de niveau de lecture ri peut correspondre au niveau de tension utilisé lors de 'la lecture des données depuis la cellule de mémoire bien que la tension de seuil de niveau de vérification y puisse être utilisée pendant la programmation des cellules de mémoire afin de les - 16 - 3025928 faire passer dans le deuxième état S1 812. Les valeurs de tension spécifiques du niveau de lecture ri et du niveau de vérification y peuvent différer en fonction du concept de mémoire particulier. [0073] La figure 8B illustre un cas de la distribution de tension de seuil de cellules de mémoire contenues dans la ligne de mots i après le dépiégeage, notamment dû au dépiégeage. rapiçie. 5 Comme illustré sur la figure 8B, la distribution des niveaux de tension de seuil 814 dans les cellules de mémoire sur la ligne de mots i après la programmation peut se dégrader de telle sorte que le nombre de cellules de mémoire ayant la tension appropriée diminue en raison du dépiégeage rapide. Toutes les cellules de mémoire ne subissent pas le même degré de dépiégeage et le degré de dépiégeage peut varier au cours du temps. Afin de détecter les cellules de mémoire qui 10 subissent l'apparition d'un dépiégeage rapide, les données écrites peuvent être lues après avoir laissé s'écouler un temps prédéterminé depuis l'écriture afin de permettre l'achèvement d'un éventuel dépiégeage. [0074] La figure 8C illustre un cas de lecture des données en utilisant la tension de seuil de 15 niveau de lecture ri et de lecture séparée des données en utilisant une tension de seuil de niveau d'identification Ç. Sur la base d'une comparaison des deux lectures, on peut identifier les cellules de mémoire se trouvant sur la ligne de mots i subissant un dépiégeage rapide 816. A titre d'exemple, si la tension de seuil d'une cellule se situe entre et Ç, cette cellule peut être identifiée comme subissant un dépiégeage rapide et le module codeur 410 peut obtenir l'emplacement de 20 cette cellule. Dans certains cas, le niveau de tension d'identification Ç peut correspondre à la tension de seuil de niveau de vérification y. Comme noté ci-dessus, le degré de dépiégeage pour chaque cellule de mémoire peut être différent et varier au cours du temps. En conséquence, le niveau de tension d'identification Ç peut être modifié par prise en compte de la fréquence à laquelle le dépiégeage est détecté. A tire d'exemple, le niveau de tension d'identification Ç peut être modifié 25 lors de la détection d'un nombre de cellules de mémoire prédéterminé subissant un dépiégeage rapide. [0075] Les figures 9A et 9B représentent un autre exemple de distributions de tension de seuil de cellules de mémoire conformément à un mode de réalisation de la présente invention. Les distributions de tension des cellules de mémoire représentées sur les figures 9A et 9B peuvent - 17 - 3025928 correspondre aux cellules de mémoire se trouvant dans un état initialisé ou effacé avant d'écrire les données au bloc 512 de la figure 5. La figure 9A illustre une première ligne de mots i 910 comprenant des cellules de mémoire C(,,1.1) 912, Co, j) 914, et C(,, j+i) 916. La première ligne de mots i 910 peut correspondre à la ligne de mots décrite ci-dessus et représentée sur la figure 6A. 5 La figure 9A illustre en outre une distribution de tension de seuil 918 des cellules de mémoire contenues dans la première ligne de mots i 910. La figure 9B illustre une deuxième ligne de mots i-1 950 comprenant des cellules de mémoire C(,_i, j_i) 952, C(t_i, j) 954, et C(,_i, ji.i) 956 se trouvant dans un premier état. Dans ce premier état, les cellules de mémoire de la ligne de mots i-1 ont une distribution de tension de seuil 958. 10 [0076] Les figures 10A et 10B représentent un exemple de distributions de tension de seuil de cellules de mémoire conformément à un mode de réalisation de la présente invention. En particulier, les figures 10A et 10B représentent un exemple de distributions de tension de seuil correspondant à l'écriture effectuée dans la ligne de mots i-1 950 représentée sur la figure 9B. Cela peut correspondre à l'écriture des données au bloc 512 de la figure 5. La figure 10A représente une 15 première ligne de mots i 1010 comprenant des cellules de mémoire Co, j_1) 1012, C(Z, j) 1014, et Co, j+1) 1016. La figure 10A illustre en outre une distribution de tension de seuil 1018 des cellules de mémoire contenues dans la première ligne de mots i 1010. Cette distribution de tension peut correspondre à la distribution de tension 918 représentée sur la figure 9A étant donné que la ligne de mots i 1010 se trouve dans le même premier état. 20 [0077] La figure 10B illustre un exemple d'écriture de données dans une deuxième ligne de mots i-1 1050. La figure 10B représente la deuxième ligne de mots i-1 1050 comprenant des cellules de mémoire C(;../, j_i) 1052, C(,_i, j) 1054, et C(,_], j+1) 1056. La ligne de mots i-1 1050 de la figure 10B peut correspondre à la ligne de mots i-1 950 représentée sur la figure 9B. Comme illustré sur la figure 10B, la ligne de mots i-1 passe d'une première distribution de tension de seuil 25 1058 à une deuxième distribution de tension de seuil 1060 du fait de l'injection de charges dans les cellules de mémoire C(,_i, j_1) 1052, 44, j) 1054, et C(,_i, j+1) 1056. La figure 10B illustre la distribution de tension 1060 immédiatement après l'écriture des données et avant que le dépiégeage rapide se produise. - 18 - 3025928 [0078] Les figures 11A et 11B représentent un exemple de distributions de tension de seuil de cellules de mémoire conformément à un mode de réalisation de la présente invention. En particulier, les figures 11A et 11B représentent un exemple de distributions de tension de seuil immédiatement après l'écriture effectuée dans la ligne de mots i-1 1050 représentée sur la 5 figure 10B. Cela peut correspondre à l'écriture des données au bloc 512 de la figure 5. La figure 11A représente une première ligne de mots i 1110 comprenant des cellules de mémoire C(,, j_ 1) 1112, C(,, j) 1114, et C(,, j+1) 1116. La figure 11A illustre en outre une distribution de tension de seuil 1118 des cellules de mémoire contenues dans la première ligne de mots i 1110. Cette distribution de tension peut correspondre à la distribution de tension 918 représentée sur la 10 figure 9A et à la distribution de tension 1018 représentée sur la figure 10A. [0079] La figure 11B illustre un exemple du dépiégeage rapide se produisant sur une deuxième ligne de mots i-1 1150. La figure 10B représente la deuxième ligne de mots i-1 1150 comprenant des cellules de mémoire C(,_1, j_1) 1152, C(,_i, J)1154, et C(,_/, j+i) 1156. La ligne de mots i-1 1150 de la figure 10B peut correspondre à la ligne de mots i-/ 950 représentée sur la figure 9B et à la ligne 15 de mots i-1 1050 représentée sur la figure 10B. Comme illustré sur la figure 11B, la distribution de tension 1160 des cellules de mémoire se trouvant sur la ligne de mots i-1 1150 est décalée du fait du dépiégeage rapide. Le dépiégeage rapide est provoqué par des électrons sortant par effet tunnel des cellules de mémoire de telle manière que la distribution de tension des cellules de mémoire soit modifiée. 20 [0080] Les figures 12A et 12B représentent un exemple de distributions de tension de seuil de cellules de mémoire conformément à un mode de réalisation de la présente invention. En particulier, les figures 12A et 12B représentent un exemple de distributions de tension de seuil pendant la lecture de la ligne de mots i-1 1250. La ligne de mots i-1 1250 peut correspondre à la ligne de mots i-/ 1150 représentée sur la figure 11B. La lecture de la ligne de mots i-1 1250 peut 25 également correspondre à la lecture de données au bloc 514 et à l'analyse des données au bloc 516 de la figure 5. La figure 12A représente une première ligne de mots i 1210 comprenant des cellules de mémoire C(i, pi) 1212, C(,, j) 1214, et C(,,i+i) 1216. La figure 12A illustre en outre une distribution de tension de seuil 1218 des cellules de mémoire contenues dans la première ligne de - 19 - 3025928 mots i 1210. Cette distribution de tension peut correspondre à la distribution de tension 1118 représentée sur la figure 11A. [0081] La figure 12B illustre un exemple de lecture de données précédemment écrites dans les cellules de mémoire 4_1, j_1) 1252, 44, j) 1254, et C(;_1, j+1) 1256 sur la ligne de mots i-/ 1250 afin 5 de déterminer si un dépiégeage rapide s'est produit. Dans certains cas, les données provenant de la ligne de mots i-1 1250 peuvent être lues en utilisant une tension de seuil 1214. Cette lecture de données peut ensuite être comparée à une copie stockée des données afin d'identifier d'éventuelles erreurs. Dans ce cas, il peut être déterminé que la cellule 4_1, j) 1254 subit un dépiégeage rapide étant donné que la distribution de tension à l'emplacement de cette cellule s'est abaissée en dessous 10 de la tension de seuil 1214. A titre d'exemple, le contrôleur 320 peut stocker une copie des données et comparer celle-ci aux données lues. Dans un autre cas, les données provenant de la ligne de mots i-1 1250 peuvent être lues en utilisant une tension de seuil de lecture (non illustrée) et une autre tension de seuil 1214 correspondant à une tension de vérification. Sur la base d'une comparaison des deux lectures en utilisant les différentes tensions de seuil, il peut être déterminé 15 que la cellule j) 1254 subit un dépiégeage étant donné que sa distribution de tension se situe en dessous de la tension de seuil 1214 mais au-dessus de la tension de seuil de lecture (non illustrée). [0082] Les figures 13A et 13B représentent un exemple de distributions de tension de seuil de cellules de mémoire conformément à un mode de réalisation de la présente invention. En particulier, les figures 13A et 13B représentent un exemple de distributions de tension de seuil 20 pendant l'écriture effectuée dans la ligne de mots i 1310. En particulier, les figures 13A et 13B représentent un exemple de codage et d'écriture de données correspondant aux blocs 518 et 520 de la figure 5. La figure 13A illustre la ligne de mots i 1310 comprenant des cellules de mémoire C(,, j-1) 1312, C(,, j) 1314, et C(i, j+i) 1316. La ligne de mots i 1310 correspond à ligne de mots i 1210 de la figure 12A. La figure 13B représente la ligne de mots i-1 1350 comprenant des cellules C(,_], j_1) 25 1352, C(,_/, f)1354, et C(,_1, j+1) 1356. La ligne de mots i-1 1350 correspond à ligne de mots i-/ 1250 de la figure 12B. [0083] Dans ce cas, la cellule C(i4, j) 1354 subit un dépiégeage rapide. En conséquence, des données peuvent être codées (par exemple, mappées) dans la cellule de mémoire 4, j) 1314 de la ligne de mots i 1310 qui est adjacente à la cellule j) 1354 contenue dans la ligne de mots i-1 -20- 3025928 1350 afin de provoquer un ICI intentionnel. La figure 13B illustre une écriture effectuée dans la ligne de mots i 1310, notamment la cellule de mémoire C(,, j) 1314, de telle manière que la distribution de tension de seuil puisse passer d'un premier état 1318 à un deuxième état 1320. Il en résulte qu'une charge peut être injectée dans la cellule C(,,i, j) du fait de l'ICI intentionnelle de 5 manière à ce que la distribution de tension puisse passer d'une distribution dégradée à une distribution 1362 qui correspond plus exactement à l'état de programmation souhaité. [0084] La figure 14 représente un exemple d'un concept d'entrée/sortie d'une cellule de mémoire conformément à un mode de réalisation de la présente invention. Habituellement, une cellule de mémoire binaire peut être considérée comme étant défectueuse si sa valeur de cellule est 10 figée à une valeur particulière (0 ou 1) quelle que soit l'entrée de canal. Cela est illustré en 1410 sur la figure 14 qui représente une entrée à 0 et 1 fournissant une sortie à 1. Sur la base de ce concept, la cellule C(1, f) adjacente à la cellule C(,_i, j) subissant un dépiégeage peut être considérée comme étant figée conformément au système de codage de la présente invention. A titre d'exemple, si la méthode de codage exige que les tensions dépassant le seuil correspondent à "0", 15 alors la cellule C(11) peut être considérée comme étant figée à "0". En conséquence, lors du codage de nouvelles données dans la mémoire, C(,, j) peut être codée sous la forme d'un "0" de telle manière que lorsque les données sont écrites, une tension soit injectée dans la cellule et que l'ICI fasse croître la tension de seuil de la cellule (i-1,j) subissant un dépiégeage. [0085] La figure 15 représente un autre exemple d'une interférence intercellulaire 20 conformément à un mode de réalisation de la présente invention. Dans cet exemple, la ligure 13 illustre la ligne de mots 1+1 1510 comprenant des cellules de mémoire C(,+/, .1_1) 1512, co+,,,) 1514, et C(,+/, j+i) 1516. La figure 15 comprend en outre une ligne de mots i 1550 comprenant des cellules de mémoire C(,, j_i) 1552, C(,, j) 1554, et C(i, j+i) 156. Dans ce cas, la cellule Cm 1552 présente sur la ligne de mots i 1550 a été identifiée comme subissant un dépiégeage rapide par 25 lecture de la ligne de mots, comme décrit ci-dessus. Sur la base de l'identification de la cellule Co j) 1512 subissant un dépiégeage, des données peuvent être codées et écrites dans C(,+4) 1515 de telle manière que la tension de seuil de la cellule g, j)puisse augmenter du fait de l'ICI intentionnel. [0086] La figure 16 représente des cellules de mémoire conformément à un mode de réalisation de la présente invention. En particulier, la figure 16 représente une pluralité de lignes -21- 3025928 de mots d'une mémoire à cellules à niveaux multiples (MLC). La cellule de mémoire à niveaux multiples est capable de stocker de multiples bits (par exemple, deux) par cellule. Une mémoire MLC peut faire l'objet d'une écriture par pages inférieures et supérieures dans une architecture entièrement à base de lignes de bits (ALB, All-Bit-Line) de telle manière que toutes les lignes de 5 bits d'une ligne de mots soient programmées simultanément. Cette méthode est illustrée sur la figure 16 qui représente un exemple d'écriture en mémoire dans l'ordre suivant : 1) page 0 dans la page inférieure de la ligne de mots 0 ; 2) page 1 dans la page inférieure de la ligne de mots 1 ; 3) page 2 dans la page supérieure de la ligne de mots 1 ; 4) page 3 dans la page inférieure de la ligne de mots 2 ; 5) page 4 dans la page supérieure de la ligne de mots 1, etc. Conformément à des 10 modes de réalisation de la présente invention, l'ICI intentionnelle peut être mise en oeuvre conformément à cette méthode lorsque des pages se trouvant dans des lignes de mots adjacentes sont écrites. [0087] La figure 17 représente un exemple de distributions de tension de seuil de cellules de mémoire conformément à un mode de réalisation de la présente invention. En particulier, la 15 figure 17 illustre des distributions de tension de seuil de cellules de mémoire sur la base de données contenues dans une mémoire MLC conformément à la méthode décrite ci-dessus. Comme illustré sur la figure 17, une ligne de mots ayant une page inférieure (page basse) et une page supérieure (page haute) peut initialement se trouver dans un premier état 1710 dans lequel sa distribution de tension 1712 est dans un état effacé. La ligne de mots peut passer à un deuxième 20 état 1720 dans lequel la page inférieure est programmée et fournit une distribution de tension 1722 correspondant à une valeur logique 10. Après l'écriture de la page inférieure, la ligne de mots peut passer à un troisième état 1730 dans lequel la page supérieure (page haute) est programmée et fournit une distribution de tension 1732 correspondant à une valeur logique de 1001 dans la page haute et de 1100 dans la page basse. 25 [0088] La figure 18 représente un exemple de distributions de tension de seuil de cellules de mémoire conformément à un mode de réalisation de la présente invention. En particulier, la figure 18 illustre les possibilités de mise en oeuvre d'une ICI intentionnelle afin de corriger des cellules dépiégées sur la page basse (i) de la ligne de mots. La figure 18 illustre de multiples lignes de mots : WLO 1810, WL1 1820, WL2 1830, et WL3 1840, chaque ligne de mots ayant une page -22- 3025928 inférieure (page basse) et une page supérieure (page haute). Dans ce cas, des données ont été écrites dans les deux pages de WLO 1810, la page inférieure de WL1 1820, et la page inférieure (i) de WL2 1830. En relisant les données de la page inférieure (i) de WL2, il peut être déterminé que des cellules présentes sur la page inférieure (i) subissent un dépiégeage. Cela peut correspondre à 5 l'étape de lecture des données et à l'analyse des données aux blocs 514 et 516 de la figure 5. En particulier, la relecture des données depuis la page inférieure (i) de WL2 1830 peut indiquer qu'une partie de la distribution de tension 1812 se situe en dessous de la tension de seuil 1850. Lors de l'écriture des données suivantes dans la page basse sur WL3 1840 et la page haute sur WL1 1820, une ICI intentionnelle peut être introduite afin de compenser le dépiégeage. 10 [0089] La figure 19 représente un exemple de distributions de tension de seuil de cellules de mémoire conformément à un mode de réalisation de la présente invention. La figure 19 représente des lignes de mots : WLO 1910, WL1 1920, WL2 1930, et WL3 1940 correspondant aux lignes de mots de la figure 18. Comme décrit ci-dessus en référence à la figure 18, il a été déterminé que la page inférieure (i) de WL2 1820 subissait un dépiégeage. La figure 19 représente par conséquent 15 une première possibilité pour l'ICI intentionnelle par programmation de la page supérieure (i+1) sur WL1 1920 afin de compenser le dépiégeage de la page inférieure (i) de WL2 1930. Cependant, afin d'éviter de provoquer des erreurs indésirables, la distribution de tension (i-2) 1950 peut être prise en compte. A titre d'exemple, la distribution de tension de la page inférieure (i-2) de WL1 1920 peut être prise en compte lors de l'écriture effectuée dans la page supérieure (1+1) sur WL1 20 1920 de telle manière que si (i-2) a une valeur de "1", alors une valeur de cellule de "0" peut être programmée alors que si (i-2) a une valeur de "0", alors une valeur de cellule de "1" peut être programmée. En conséquence, l'écriture de la page supérieure (i+1) sur WL1 peut augmenter la tension de la page inférieure (i) sur WL2 1920, cela conduisant à une distribution de tension 1960. [0090] La figure 20 représente un exemple de distributions de tension de seuil de cellules de 25 mémoire conformément à un mode de réalisation de la présente invention. La figure 20 représente des lignes de mots : WLO 2010, WL1 2020, WL2 2030, et WL3 2040 correspondant aux lignes de mots des figures 18 et 19. Dans ce cas, la figure 20 représente une deuxième possibilité d'effectuer une ICI intentionnelle par programmation de la page inférieure (i+2) sur WL3 afin de compenser le dépiégeage de la page inférieure (i) de WL2. Des données devant être écrites peuvent être codées - 23 - 3025928 de telle manière que la page inférieure (1+2) sur WL3 soit programmée à une distribution de tension plus élevée (par exemple, "0"). En conséquence, la distribution de tension de seuil 2050 de la page inférieure (i) de WL2 peut être augmentée. [0091] La figure 21 représente un exemple de distributions de tension de seuil de cellules de 5 mémoire conformément à un mode de réalisation de la présente invention. La figure 21 représente des lignes de mots : WLO 2110, WL1 2120, WL2 2130, et WL3 2140 correspondant aux lignes de mots des figures 18-20. Dans ce cas, la figure 21 présente un décalage si une distribution de tension des cellules de mémoire se trouvant sur la page supérieure (1+3) de WL2 2130 résulte de la survenue d'un dépiégeage rapide. En conséquence, la page supérieure (i+3) contient des erreurs. 10 [0092] La figure 22 représente un exemple de distributions de tension de seuil de cellules de mémoire conformément à un mode de réalisation de la présente invention. La figure 22 représente des lignes de mots : WLO 2210, WL1 2220, WL2 2230, et WL3 2240 correspondant aux lignes de mots des figures 18-21. La figure 22 représente la mise en oeuvre de l'ICI intentionnelle dans l'écriture de données dans la page supérieure (i+5) de WL3 afin de compenser le dépiégeage se 15 produisant dans la page supérieure (1+3) de WL2, comme décrit ci-dessus en référence à la figure 21. Des données devant être écrites dans une page vide (i+5) de WL3 peuvent être codées en tenant compte des valeurs écrites dans la page inférieure (i+2) de WL3 de telle manière que si la page inférieure (1+2) a une valeur de "1", une valeur de "0" soit codée ou que, si la page inférieure (i+2) a une valeur de "0", une valeur de "1" soit codée. En conséquence, les tensions de seuil de 20 la page supérieure (1+3) de WL2 peuvent être augmentées en raison de l'ICI intentionnellement codé dans la page supérieure (i+5) de WL3. [0093] D'autres modes de réalisation entrent dans le cadre et le concept de l'invention. A titre d'exemple, la fonctionnalité décrite ci-dessus peut être mise en oeuvre au moyen d'un logiciel, d'un matériel, d'un microprogramme, d'un câblage en dur, ou de, combinaisons de 25 n'importe lesquels de ceux-ci. Un ou plusieurs processeurs d'ordinateurs fonctionnant conformément à des instructions peuvent mettre en oeuvre les fonctions associées à un codage de données pour des systèmes de stockage NVM conformément à la présente invention telle qu'elle est décrite ci-dessus. Si cela est le cas, il entre dans le cadre de la présente invention de pouvoir stocker de telles instructions sur un ou plusieurs supports de stockage non transitoires lisibles par - 24 - 3025928 un processeur (par exemple, un disque magnétique ou un autre support de stockage). En outre, des modules mettant en oeuvre certaines fonctions peuvent également être physiquement situés à diverses positions, par exemple en étant répartis de telle manière que des parties de certaines fonctions soient mises en oeuvre à différents emplacements physiques. 5 100941 La présente invention ne doit pas être considérée comme étant limitée dans sa portée par les modes de réalisation spécifiques décrits ici. En effet, divers autres modes de réalisation et variantes de la présente invention, en plus de ceux décrits ici, apparaîtront clairement à l'homme du métier à la lecture de la description présentée ci-dessus et des dessins annexés. Par conséquent, ces autres modes de réalisation et modifications doivent être considérés comme 10 entrant dans le cadre de la présente invention. Par ailleurs, bien que la présente invention ait été décrite ici dans le contexte d'une forme de réalisation particulière dans un environnement particulier pour une application particulière, l'homme du métier notera que son utilité n'est pas limitée à ceux-ci et que la présente invention peut être mise en oeuvre avantageusement dans un nombre quelconque d'environnements pour un nombre quelconque d'applications. En 15 conséquence, les revendications présentées ci-après doivent être considérées comme couvrant la totalité de l'étendue et du concept de la présente invention telle qu'elle a été décrite ici. - 25 - REVENDICATIONS1. Procédé de codage de données afin de les écrire dans une mémoire consistant à : écrire des premières données dans la mémoire ; lire les premières donnes depuis la mémoire ; analyser les premières données lues, l'analyse consistant à déterminer si les données lues comportent une erreur ; coder des deuxièmes données sur la base de l'analyse des premières données, les deuxièmes données étant codées afin d'être écrites à une position adjacente à l'erreur lorsqu'il est déterminé que les données lues comportent l'erreur ; et écrire les deuxièmes données codées dans la mémoire à la position. 2. Procédé selon la revendication 1, dans lequel la mémoire est un système de stockage en mémoire non volatile. 3. Procédé selon la revendication 2, dans lequel le système de stockage en mémoire non volatile est un disque électronique. 4. Procédé selon la revendication 3, dans lequel le disque électronique est une mémoire flash tridimensionnelle. 5. Procédé selon la revendication 4, dans lequel la mémoire flash tridimensionnelle comprend une pluralité de lignes de mots ayant des cellules à un seul niveau. 6. Procédé selon la revendication 1, dans lequel la lecture consiste à lire les premières données depuis la mémoire sur la base d'un seuil prédéterminé. 7. Procédé selon la revendication 6, dans lequel le seuil prédéterminé est un seuil de niveau de tension de lecture. 8. Procédé selon la revendication 7, dans lequel l'analyse consiste à comparer les premières -26- 3025928 données lues depuis la mémoire sur la base du seuil prédéterminé à une copie des premières données qui est différente des premières données stockées dans la mémoire. 9. Procédé selon la revendication 8, dans lequel l'analyse consiste à identifier une position 5 d'erreur d'une cellule de mémoire comportant l'erreur sur la base de la comparaison, et dans lequel la position à laquelle les deuxièmes données doivent être écrites est adjacente à la position d'erreur de la cellule de mémoire. 10. Procédé selon la revendication 9, dans lequel la position à laquelle les deuxièmes données 10 doivent être écrites se situe dans une ligne de mots différente. 11. Procédé selon la revendication 1, dans lequel la lecture consiste à lire les premières données depuis la mémoire sur la base d'une pluralité de seuils prédéterminés. 15 12. Procédé selon la revendication 11, dans lequel l'analyse consiste à comparer les premières données lues depuis la mémoire sur la base d'un premier de la pluralité de seuils prédéterminés aux premières données lues depuis la mémoire sur la base d'un deuxième de la pluralité de seuils prédéterminés qui est différent du premier seuil prédéterminé. 20 13. Procédé selon la revendication 12, dans lequel l'analyse consiste à identifier une position d'erreur d'une cellule de mémoire comportant l'erreur sur la base de la comparaison. 14. Procédé selon la revendication 4, dans lequel la mémoire flash tridimensionnelle comprend une pluralité de lignes de mots ayant des cellules à niveaux multiples. 25 15. Procédé selon la revendication 14, dans lequel la position à laquelle les deuxièmes données doivent être écrites se situe dans l'une d'une page supérieure d'une première ligne de mots adjacente différente d'une ligne de mots contenant les premières données et d'une page inférieure d'une deuxième ligne de mots adjacente différente de la ligne de mots contenant les 30 premières données. -27- 3025928 16. Procédé selon la revendication 1, dans lequel le codage est effectué par un contrôleur de mémoire flash. 17. Procédé selon la revendication 1, dans lequel l'erreur est provoquée par un dépiégeage. 5 18. Procédé selon la revendication 1, dans lequel les deuxièmes données sont écrites dans la mémoire à la position pour provoquer une interférence intercellulaire avec les premières données. 10 19. Produit de programme informatique constitué d'une série d'instructions exécutables sur un ordinateur, le produit de programme informatique effectuant un processus de codage de données afin de les écrire dans une mémoire ; le programme d'ordinateur mettant en oeuvre les étapes consistant à : écrire des premières données dans la mémoire ; 15 lire les premières données depuis la mémoire ; analyser les premières données lues, l'analyse consistant à déterminer si les données lues comportent une erreur ; coder des deuxièmes données sur la base de l'analyse des premières données, les deuxièmes données étant codées afin d'être écrites à une position adjacente à l'erreur lorsqu'il est 20 déterminé que les données lues comportent l'erreur ; et écrire les deuxièmes données codées dans la mémoire à la position. 20. Système de codage de données afin de les écrire dans une mémoire, le système comprenant : 25 un module d'écriture qui écrit des premières données dans la mémoire ; un module de lecture qui lit les premières données depuis la mémoire ; un module d'analyse qui analyse les premières données lues, dans lequel l'analyse consiste à déterminer si les données lues comportent une erreur lorsqu'il est déterminé que les données lues comportent l'erreur ; 30 un module de codage qui code des deuxièmes données sur la base de l'analyse des premières données, dans lequel les deuxièmes données sont codées afin d'être écrites à une - 28 - 3025928 position adjacente à l'erreur ; et un module d'écriture de données codées qui écrit les deuxièmes données codées dans la mémoire à la position. - 29 -