FR 3026512 A1 20160401 FR 1559103 A 20150928 DEDUPLICATION HORS LIGNE POUR DISPOSITIFS DE STOCKAGE A SEMI-CONDUCTEURS CONTEXTE [0001] La présente invention concerne des dispositifs de stockage flash et, plus particulièrement, des processus de déduplication hors ligne pour des dispositifs de stockage flash. [0002] Les dispositifs de stockage à semi-conducteurs (SSD) peuvent utiliser la mémoire flash comme support de stockage non volatile. Un processus de déduplication ou de dédoublonnage permet une utilisation plus efficace de l'espace. Dans un processus de déduplication, des entrées de données en double sont supprimées. Plutôt que de stocker de multiples copies des mêmes données à de multiples adresses physiques sur le dispositif de stockage, une seule copie des données est stockée à une adresse physique, et des renvois à cette copie remplacent les autres copies. La déduplication peut être effectuée en ligne, lorsqu'une commande d'écriture est reçue à partir d'un hôte. Avant d'écrire les données, les données sont comparées à des données déjà stockées sur le dispositif de stockage. Si une correspondance est trouvée, un renvoi à cette correspondance est utilisé, plutôt que d'écrire les données à une nouvelle adresse physique. Cependant, ce dédoublonnage en ligne peut ajouter une latence aux opérations d'écriture. RÉSUMÉ [0003] Selon des aspects de la technologie en question, un procédé de gestion d'un système de stockage flash est fourni. Le procédé comprend lire une pluralité d'unités de données flash à partir d'une mémoire flash dans un tampon, dans lequel chacune de la pluralité d'unités de données flash comprend une ou plusieurs unités de données hôtes, et déterminer un identificateur pour chacune des unités de données hôtes lues dans le tampon. Le procédé comprend sélectionner un ensemble d'identificateurs uniques parmi les identificateurs déterminés sur la base d'un nombre d'unités de données hôtes qui partagent les identificateurs uniques respectifs. 'Pour chaque identificateur unique de l'ensemble d'identificateurs uniques, le procédé comprend désigner une première unité de données hôte partageant l'identificateur unique en tant qu'unité de données maîtresse, dans lequel une adresse logique de la première unité de données hôte est - 1 - mappée avec une première adresse physique dans la mémoire flash dans une table de consultation, remapper, dans la table de consultation, les adresses logiques respectives d'une ou plusieurs secondes unités de données hôtes partageant l'identificateur unique à partir de secondes adresses physiques respectives dans la mémoire flash avec la première adresse physique dans la 5 mémoire flash, et invalider des données stockées aux secondes adresses physiques respectives dans la mémoire flash. [0004] Selon d'autres aspects -de la technologie en question, un système de stokage flash est fourni. Le système de stockage flash comprend une pluralité de dispositifs de mémoire flash, une mémoire comprenant un tampon, et un contrôleur. Le contrôleur est configuré pour lire une 10 pluralité d'unités de données flash à partir de la pluralité de dispositifs de mémoire flash dans le tampon, dans lequel chacune de la pluralité d'unités de données flash comprend une ou plusieurs unités de données hôtes, déterminer un identificateur pour chacune des unités de données hôtes lues dans le tampon, et sélectionner un ensemble d'identificateurs uniques à partir des identificateurs déterminés sur la base d'un nombre d'unités de données hôtes qui partagent les 15 identificateurs uniques respectifs. Pour chaque identificateur unique de l'ensemble d'identificateurs uniques, le contrôleur est configuré pour désigner une première unité de données hôte partageant l'identificateur unique en tant qu'unité de données maîtresse, dans lequel une adresse logique de la première unité de données hôte est mappée avec une première adresse physique dans le dispositif de mémoire flash dans une table de consultation, remapper, dans la 20 table de consultation, les adresses logiques respectives d'une ou plusieurs secondes unités de données hôtes partageant l'identificateur unique à partir de secondes adresses physiques respectives dans le dispositif de mémoire flash avec la première adresse physique dans le dispositif de mémoire flash, et invalider les données stockées aux secondes adresses physiques respectives dans le dispositif de mémoire flash. 25 [0005] Selon d'autres aspects de la technologie en question, un support non transitoire lisible par une machine comprend des instructions stockées sur celui-ci, qui, lorsqu'elles sont exécutées par une machine, amènent la machine à exécuter des opérations. Les opérations comprennent lire une pluralité d'unités de données flash à partir d'une mémoire flash dans un tampon, chacune de la pluralité d'unités de données -flash comprenant une ou plusieurs unités de données hôtes, déterminer un identificateur pour chacune des unités de données hôtes lues dans le tampon, et sélectionner un ensemble d'identificateurs uniques à partir des identificateurs déterminés sur la base d'un nombre d'unités de données hôtes qui partagent les identificateurs uniques respectifs. Pour chaque identificateur unique de l'ensemble d'identificateurs uniques, les opérations comprennent désigner une première unité de données hôte partageant l'identificateur unique en tant qu'unité de données maîtresse, dans lequel une adresse logique de la première unité de données hôte est mappée avec une première adresse physique dans la mémoire flash mémoire dans une table de consultation, remapper, dans la table de consultation, les adresses logiques respectives d'une ou plusieurs secondes unités de données hôtes partageant l'identificateur unique à partir de secondes adresses physiques respectives dans la mémoire flash avec la première 10 adresse physique dans la mémoire flash, et invalider les données stockées aux secondes adresses physiques respectives dans la mémoire flash. [0006] Il est entendu que d'autres configurations de la technologie en question apparaîtront facilement à l'homme de l'art d'après la description détaillée suivante, dans laquelle différentes configurations de la technologie en question sont représentées et décrites à titre d'illustration. 15 Comme on le comprendra, la technique en question est capable d'autres configurations et de configurations différentes et ses divers détails peuvent être modifiés à divers autres égards, le tout sans sortir du cadre de la technologie en question. En conséquence, les dessins et la description détaillée doivent être considérés comme de nature illustrative et non pas restrictive. BRÈVE DESCRIPTION DES DESSINS 20 [0007] La figure 1 est un schéma fonctionnel illustrant des composants d'un système de stockage flash selon des aspects de la technologie en question. [0008] La figure 2 est un schéma fonctionnel illustrant des dispositifs de mémoire flash selon des aspects de la technologie en question. [0009] La figure 3 est un organigramme illustrant un procédé de gestion d'un système de 25 stockage flash selon des aspects de la technologie en question. [0010] La figure 4A est un schéma d'un noeud d'une structure de données selon des aspects de la technologie en question. - 3 - [0011] La figure 4B est un schéma d'une structure de données comprenant des noeuds de la figure 4A selon des aspects de la technologie en question. [0012] La figure 5A est un schéma d'une table de consultation selon des aspects de la technologie en question. [0013] La figure 5B est un schéma d'une table de retour-arrière selon des aspects de la technologie en question. [0014] La figure 6A est un organigramme illustrant un procédé pour mettre à jour des entrées de déduplication selon des aspects de la technologie en question. [0015] La figure 6B est un organigramme illustrant un autre procédé pour mettre à jour des entrées de déduplication selon des aspects de la technologie en question. [0016] La figure 7A est un schéma d'une table de consultation modifiée selon des aspects de la technologie en question. [0017] La figure 7B est un schéma d'une table de retour-arrière modifiée selon des aspects de la technologie en question. [0018] La figure 7C est un schéma d'une autre table de consultation modifiée selon des aspects de la technologie en question. [0019] La figure 7D est un schéma d'une autre table de retour-arrière modifiée selon des aspects de la technologie en question. DESCRIPTION DÉTAILLÉE [0020] La description détaillée présentée ci-dessous est conçue comme une description des diverses configurations de la technologie en question et ne vise pas à représenter les seules configurations dans lesquelles la technologie en question peut être mise en oeuvre. Les dessins annexés sont intégrés ici et constituent une partie de la description détaillée. La description détaillée comprend des détails spécifiques en vue de fournir une compréhension approfondie de la technologie en question. Cependant, la technologie en question peut être mise en oeuvre sans - 4 - ces détails spécifiques. Dans certains cas, des structures et des composants sont présentés sous forme de schéma fonctionnel afin d'éviter d'obscurcir les concepts de la technologie en question. [0021] Un SSD peut comprendre un ou plusieurs dispositifs de mémoire flash, dont chacun comprend un réseau de cellules de mémoire flash. Les cellules de mémoire flash peuvent être 5 organisées en blocs physiques, chaque bloc physique comprenant un certain nombre de pages. Les données sont écrites dans la mémoire flash dans des unités d'écriture de pages, où chaque page a la capacité de stocker un nombre prédéterminé d'unités de données hôtes ou de secteurs. Des fichiers de données hôtes peuvent être écrits de façon séquentielle dans la mémoire flash, à l'emplacement disponible suivant. Cependant, les données sont effacées de la mémoire flash 10 dans des unités d'effacement de blocs physiques. Le SSD peut effectuer des opérations de maintenance, ce qui peut aider à gérer le stockage/l'utilisation des données et la durée de vie des dispositifs de mémoire flash. [0022] Dans un processus de déduplication ou de dédoublonnage, l'espace de stockage est utilisé plus efficacement en éliminant les unités de données en double. Lors du dédoublonnage 15 en ligne, lorsqu'une commande d'écriture est reçue à partir de l'hôte, l'unité de données hôte à écrire est comparée aux unités de données hôtes stockées dans le dispositif de stockage. Si une correspondance est trouvée, l'adresse logique cible de la commande d'écriture est mappée avec l'adresse physique de l'unité de données hôte correspondante. Si une correspondance est introuvable, l'unité de données hôte est écrite à une adresse physique disponible, et l'adresse 20 logique cible est mappée avec l'adresse physique écrite. Toutefois, le processps de dédoublonnage peut ajouter un retard dans l'achèvement de la commande d'écriture. L'application de la déduplication lors d'opérations de maintenance (déduplication hors ligne), telles que la récupération de place (GC), peut éviter la latence d'écriture pendant les commandes d'écriture de l'hôte. 25 [0023] La figure 1 est un schéma fonctionnel illustrant des composants d'un système de stockage flash 110 selon des aspects de la technologie en question. Comme le montre la figure 1, le système de stockage flash 110 comprend une interface 115, un contrôleur 120, des dispositifs de mémoire flash 130, et une mémoire 125. L'interface 115 facilite la communication des données, des commandes et/ou des signaux de commande entre le système de stockage flash 110 - 5 - et un hôte 150. Le contrôleur 120 commande le fonctionnement du système de stockage flash 110 pour stocker et récupérer des données dans les dispositifs de mémoire flash 130 conformément aux instructions reçues de l'hôte 150. Le contrôleur 120 peut comprendre un processeur 122. La mémoire 125, qui peut être une mémoire vive (RAM), fournit un espace de stockage temporaire, qui peut comprendre un tampon 127, pour que le contrôleur 120 traite des commandes et transfère des données entre l'hôte 150 et les dispositifs de mémoire flash 130. Le fonctionnement de chacun de ces composants est décrit plus en détail ci-dessous. [0024] L'interface 115 fournit des connexions physiques et électriques entre l'hôte 150 et le système de stockage flash 110. L'interface 115 est configurée pour faciliter la communication des données, des commandes et/ou des signaux de commande entre l'hôte 150 et le système de stockage flash 110 par l'intermédiaire des connexions physiques et électriques. La connexion et les communications avec l'interface 115 peuvent être basées sur une interface standard telle que Universal Serial Bus (USB), Small Computer System Interface (SCSI), Serial Advanced Technology Attachment (SATA), etc. En variante, la connexion et/ou les communications peuvent être basées sur une interface propriétaire. L'homme du métier reconnaîtra que la technologie en question ne se limite pas à un type d'interface particulier. {0025] Le contrôleur 120 gère le flux de données entre l'hôte 150 et les dispositifs de mémoire flash 130. Le contrôleur 120 est configuré pour recevoir des commandes et des données à partir de l'hôte 150 par l'intermédiaire de l'interface 115. Par exemple, le contrôleur 120 peut recevoir des données et une commande d'écriture à partir de l'hôte 150 pour écrire les données dans les dispositifs de mémoire flash 130. Le contrôleur 120 est en outre configuré pour envoyer des données à l'hôte 150 par l'intermédiaire de l'interface 115. Par exemple, le contrôleur 120 peut lire des données dans les dispositifs de mémoire flash 130 et envoyer les données à l'hôte 150 en réponse à une commande de lecture. Le contrôleur 120 est en outre configuré pour gérer les données stockées dans les dispositifs de mémoire flash 130 et la mémoire 125 sur la base d'algorithmes de commande internes ou d'autres types de commandes qui peuvent être reçus de l'hôte 150. Par exemple, le contrôleur 120 est configuré pour effectuer une GC et d'autres opérations de maintenance. L'homme de l'art sera familier avec d'autres opérations classiques effectuées par un contrôleur dans un dispositif de stockage flash, qui ne seront pas décrites en détail ici. - 6 - [0026] Le contrôleur 120 peut être mis en oeuvre avec un processeur à usage général, un micro-contrôleur, un processeur de signal numérique (DSP), un circuit intégré à application spécifique (ASIC), un réseau prédiffusé programmable par l'utilisateur (FPGA) ou un autre dispositif logique programmable, un dispositif logique à grille ou à transistor discret, des 5 composants matériels discrets, ou toute combinaison de ceux-ci conçue et configurée pour exécuter les opérations et les fonctions décrites ici. Dans certaines mises en oeuvre, le contrôleur 120 peut comprendre le processeur 122, qui peut être un processeur spécialisé pour une opération spécifique, telle que le calcul d'un algorithme de hachage sécurisé (SHA). Le contrôleur 120 peut exécuter les opérations et les fonctions décrites ici en exécutant une ou plusieurs séquences 10 d'instructions stockées sur un support lisible par une machine/un ordinateur. Le support lisible par une machine ou un ordinateur peut être les dispositifs de mémoire flash 130, la mémoire 125, ou d'autres types de supports à partir desquels le contrôleur 120 peut lire des instructions ou du code. Par exemple, le système de stockage flash 110 peut inclure une mémoire morte (ROM), comme une EPROM ou une EEPROM, codée avec un micrologiciel/logiciel comprenant une ou 15 plusieurs séquences d'instructions lues et exécutées par le contrôleur 120 pendant le fonctionnement du système de stockage flash 110. [0027] Les dispositifs de mémoire flash 130 peuvent être chacun une seule puce de mémoire flash ou peuvent représenter des groupes de multiples puces de mémoire flash. Les dispositifs de mémoire flash 130 peuvent être organisés entre de multiples canaux à travers lesquels les 20 données sont lues et écrites dans les dispositifs de mémoire flash 130 par le contrôleur 120, ou être couplés à un seul canal. Les dispositifs de mémoire flash 130 peuvent être mis en oeuvre en utilisant la mémoire flash NON-ET. [0028] Les dispositifs de mémoire flash 130 comprennent de multiples cellules de mémoire divisées en blocs de stockage. Ces blocs de stockage peuvent être appelés blocs de données ou 25 blocs de mémoire et sont adressables par le contrôleur 120 en utilisant une adresse de bloc physique. Chacun des blocs de stockage est en outre divisé en de multiples segments de données ou pages adressables par le contrôleur 120 en utilisant une adresse de page physique ou décalé par rapport à une adresse de bloc physique du bloc de stockage contenant la page référencée. Les pages peuvent stocker des secteurs ou d'autres unités de données hôtes. Les blocs de stockage 30 représentent les unités de données qui sont effacées dans les dispositifs de mémoire flash 130 en - 7 - une seule opération d'effacement. Les pages physiques représentent les unités de données qui sont lues ou écrites dans les dispositifs de mémoire flash 130 en une seule opération de lecture ou d'écriture. [0029] La figure 2 montre un schéma fonctionnel de dispositifs de mémoire flash 230A à D, qui peuvent correspondre aux dispositifs de mémoire flash 130. Les dispositifs de mémoire flash 230A à D comprennent les blocs de stockage 240A à D, respectivement et les blocs 241A à D, respectivement. Le bloc 240A est divisé en les pages 245A1 à A4. Le bloc 240B est divisé en les pages 245B1 à B4. Le bloc 240C est divisé en les pages 245C1 à C4. Le bloc 240D est divisé en les pages 245D1 à D4. Bien que non représenté sur la figure 2, les blocs 241A à D peuvent être divisés en pages. Les pages, telles que les pages 245A1, 245B1, 245C1 et 245D1, dans l'ensemble des dispositifs de mémoire flash 230A à D ayant des adresses physiques correspondantes, sont appelées super page ou strie 250. Les blocs, tels que des blocs 240A à D, dans l'ensemble des dispositifs de mémoire flash 230A à D sont appelés super bloc ou bande 251. Chacun des dispositifs de mémoire flash 230A à D peut être sur un canal distinct, permettant des opérations de lecture/d'écriture en parallèle dans l'ensemble des canaux. L'homme de l'art pourra reconnaître d'autres termes classiquement utilisés pour appeler ces unités de données dans un dispositif de stockage flash. [0030] La technologie en question n'est pas limitée à une capacité particulière du dispositif de mémoire flash. Par exemple, des blocs de stockage peuvent comprendre chacun 32, 64, 128 ou 512 pages. En outre, les pages peuvent comprendre chacune 512 octets, 2 Ko, 4 Ko ou 32 Ko. Les secteurs peuvent comprendre chacun 4 Ko, ou d'autres tailles de telle sorte que les secteurs peuvent être de la même taille qu'une page, ou il peut y avoir de multiples secteurs par page. [0031] Revenant à la figure 1, la mémoire 125 représente une mémoire couplée au contrôleur 120 et utilisée par celui-ci le pendant le fonctionnement du système de stockage flash 110. Le contrôleur 120 peut mettre en mémoire tampon des commandes et/ou des données dans la mémoire 125. Par exemple, le contrôleur 120 peut mettre des données en mémoire tampon dans le tampon 127. Le tampon 127 peut inclure des tampons de transfert et/ou d'autres tampons utilisés par le contrôleur 120. Le contrôleur 120 peut également utiliser la mémoire 125 pour stocker des tables de mappage d'adresses ou des tables de consultation utilisées pour convertir des - 8 - adresses de données logiques utilisées par l'hôte 150 en adresses virtuelles et/ou physiques correspondant à des parties des dispositifs de mémoire flash 130. D'autres types de tables, de données, d'indicateurs d'état, etc., utilisés pour gérer les dispositifs de stockage flash peuvent également être stockés dans la mémoire 125 par le contrôleur 120. La mémoire 125 peut être mise en oeuvre en utilisant une mémoire vive dynamique (DRAM), une mémoire vive statique (SRAM) ou d'autres types de mémoire vive volatile et non volatile, comprenant de nombreux types de mémoires telles que les DRAM et SRAM, connues de l'homme de l'art sans sortir du cadre de la technologie en question. [0032] L'hôte 150 peut être un dispositif informatique, tel qu'un ordinateur/serveur, un smartphone ou tout autre appareil électronique qui lit et écrit des données dans le système de stockage flash 110. L'hôte 150 peut avoir un système d'exploitation ou d'autres logiciels qui transmettent des commandes de lecture et d'écriture au système de stockage flash 110. Le système de stockage flash 110 peut être intégré à l'hôte 150 ou peut être externe à l'hôte 150. Le système de stockage flash 110 peut être relié sans fil à l'hôte 150, ou peut être relié physiquement à l'hôte 150. [0033] Le contrôleur 120 est configuré pour effectuer des opérations de maintenance sur les dispositifs de mémoire flash 130. Par exemple, le contrôleur 120 peut déterminer qu'une GC doit être effectuée. Par exemple, le contrôleur 120 peut déterminer qu'un nombre de blocs disponibles peut être inférieur à un seuil. Le contrôleur 120 peut garder une trace des cycles de programmation/d'effacement (P/E) de chaque bloc, à des fins de répartition de l'usure. [0034] Une fois qu'une GC est déclenchée, le bloc 240A, par exemple, peut être sélectionné en fonction de la quantité d'unités de données invalides contenues dans le bloc 240A, d'un nombre d'erreurs associé au bloc 240A, ou d'autres paramètres tels que les cycles PIE. Par exemple, même si le bloc 240B peut être sélectionné pour une GC - ayant une quantité importante de données invalides - le bloc 240A peut être sélectionné à la place sur la base des cycles PIE respectifs des blocs 240A et 240B. [0035] Une fois que le bloc 240A est sélectionné pour la GC, les données valides du bloc 240A sont copiées dans un bloc vide, tel que le bloc 240D, et le bloc 240A est effacé. Toutefois, le contrôleur 120 peut être configuré pour effectuer une déduplication avant de copier les données - 9 - valides du bloc 240A dans le bloc 240D. La figure 3 représente un organigramme 300 de déduplication hors ligne, selon des aspects de la technologie en question. [0036] Avec un bloc, tel que le bloc 240A, sélectionné pour une opération de maintenance, telle qu'une GC, le processus de déduplication peut commencer en lisant une page du bloc sélectionné, telle que la page 245A1. A l'étape 310, une pluralité d'unités de données flash sont lues à partir de la mémoire flash dans un tampon, chacune de la pluralité d'unités de données flash comprenant une ou plusieurs unités de données hôtes. Par exemple, les données de la page 245A1 peuvent être lues dans le tampon 127. Pour améliorer les performances de déduplication, plus de données peuvent être lues dans le tampon, étant donné que l'analyse de plus de données augmente la probabilité de trouver des données en double. Par conséquent, les pages restantes de la bande associée à la page de lecture, par exemple la bande 251, peuvent également être lues dans le tampon. Etant donné que les autres pages de la bande sont sur différents canaux, les pages peuvent être lues en parallèle, de telle sorte que la lecture de la totalité de la bande peut ne pas ajouter de surcharge importante de lecture. Dans certaines mises en oeuvre, l'opération de maintenance peut sélectionner un certain nombre d'unités de données flash, comme la moitié d'une bande ou d'une strie, si bien que tous les dispositifs de mémoire flash peuvent ne pas être analysés. [0037] A l'étape 320, un identificateur pour chacune des unités de données hôte lues dans le tampon est déterminé. Par exemple, un algorithme de hachage, tel qu'un SHA, peut être appliqué à chaque unité de données hôte pour créer des condensés respectifs. Bien qu'un SHA soit discuté ici, d'autres types d'identificateurs peuvent être utilisés à la place d'un SHA. Les identificateurs sont déterminés de telle sorte que les mêmes données créent le même identificateur, afin d'identifier les entrées de données en double. Les identificateurs peuvent être déterminés par le contrôleur 120. Dans certaines mises en oeuvre, un petit processeur matériel, tel que le processeur 122, peut être utilisé pour calculer le SHA. Le processeur 122 peut être configuré spécifiquement pour calculer le SHA afin d'augmenter les performances et permettre au contrôleur 120 d'effectuer d'autres opérations en parallèle. [0038] A l'étape 330, un ensemble d'identificateurs uniques est sélectionné parmi les identificateurs déterminés sur la base d'un nombre d'unités de données hôtes qui partagent les - 10 - identificateurs uniques respectifs. La sélection peut être basée sur l'analyse d'une structure de données, par exemple un arbre de type B, contenant les identificateurs déterminés à l'étape 320. Par exemple, le contrôleur 120 peut construire un arbre de type B dans la mémoire 125 lorsque chaque identificateur est déterminé à l'étape 320. La figure 4A illustre un schéma fonctionnel d'un noeud 410 utilisé dans un arbre de type B 400 sur la figure 4B. Chaque noeud 410 comportre une clé 420. Chaque clé 420 stocke un condensé 425, un compte 430, et des adresses 440. Le condensé 425 contient un identificateur unique. Le comte 430 contient le nombre d'unités de données hôtes correspondant à l'identificateur du condensé 425. Lorsque chaque -unité de données hôte est examinée, le compte 430 est augmenté si le condensé de l'unité de données hôte correspond au condensé 425, et l'adresse logique de l'unité de données hôte est ajoutée aux adresses 440. Les adresses 440 contiennent une liste d'adresses logiques ayant les données correspondant à l'identificateur du condensé 425. Le compte 430 correspond au nombre d'adresses dans les adresses 440. Les adresses 440 peuvent être mises en oeuvre en tant que liste chaînée, tableau, ou une autre structure de données pour stocker de multiples éléments. [0039] La figure 4B montre l'arbre de type B 400 contenant les noeuds 410A, 410B, 410C, et 410D. Le noeud 410A contient les clés 420A et 420B. Le noeud 410B contient les clés 420C et 420D. Le noeud 410C contient les clés 420E et 420F. Le noeud 410D contient les clés 420G et 420H. Chacune des clés 420A, 420B, 420C, 420D, 420E, 420F, 420G et 420H contient un condensé 425, un comte 430, et des adresses 440 respectifs, qui ne sont pas représentés sur la figure 4B. Etant donné qu'un condensé est généré pour chaque unité de données hôte examinée à l'étape 320, le contrôleur recherche un condensé correspondant dans l'arbre de type B. Si un condensé correspondant est trouvé dans une clé, le compte correspondant est augmenté, et l'adresse logique de l'unité de données hôte est ajoutée aux adresses correspondantes. Si un condensé correspondant est introuvable, une nouvelle clé est créée. [0040] La nouvelle clé est ajoutée à l'arbre de type B sur la base de la valeur du condensé. Les condensés peuvent être comparés, par exemple, par valeur alphanumérique, de telle sorte qu'un premier condensé peut être considéré comme supérieur, inférieur, ou égal à un second condensé. À partir du noeud racine (noeud 410A sur la figure 4B) en tant que noeud courant, le nouveau condensé est comparé aux condensés des clés pour le noeud courant. Si le nouveau condensé est inférieur aux condensés des clés du noeud courant, l'examen se poursuit sur le noeud enfant (noeud 0B sur la figure 4B) ayant des condensés inférieurs aux condensés du noeud courant. Si le nouveau condensé se situe entre les condensés du noeud courant, l'examen se poursuit sur le noeud enfant (noeud 410C sur le figure 4B) ayant des condensés entre les condensés appropriés du noeud courant. Si le nouveau condensé est supérieur aux condensés du noeud courant, l'examen se 5 poursuit sur le noeud enfant (noeud 410D sur la figure 4B) ayant des condensés supérieurs aux condensés du noeud courant. Une fois qu'un noeud sans enfants est atteint, le nouveau condensé est ajouté en tant que nouvelle clé, avec le nouveau condensé, un nouveau compte de 1, et l'adresse logique de l'unité de données hôte. En fonction de l'ordre de l'arbre de type B, la nouvelle clé peut amener le noeud à dépasser un nombre maximum de clés, de telle sorte qu'un 10 nouveau noeud peut être créé. [0041] Une fois que les identificateurs de toutes les unités de données hôtes sont entrés dans l'arbre de type B, l'arbre de type B peut être achevé. L'ensemble d'identificateurs uniques peut être sélectionné sur la base des valeurs de compte stockées avec chaque clé. Par exemple, les identificateurs correspondant aux comptes les plus grands peuvent être sélectionnés. Un nombre 15 seuil d'identificateurs, tel que 16, peut être sélectionné, ou un pourcentage seuil du nombre total d'unités de données hôtes examinées, par exemple 15 %, peut être utilisé pour sélectionner les identificateurs ayant des comptes qui au total atteignent le pourcentage seuil sans dépasser le pourcentage seuil. [0042] En variante, seuls les identificateurs ayant des comptes supérieurs à un compte seuil 20 inférieur peuvent être sélectionnés, pour empêcher la sélection d'identificateurs ayant un compte trop petit pour un avantage de déduplication. Par exemple, les 16 plus grands comptes peuvent inclure un compte de deux, qui peut ne pas fournir une déduplication importante. Les identificateurs ayant des comptes supérieurs à un compte seuil supérieur peuvent également être exclus. Bien que la déduplication d'un grand compte puisse offrir une efficacité de stockage 25 accrue, la gestion des données peut devenir lourde. Si le compte est suffisamment grand, de multiples commandes de lecture peuvent nécessiter une lecture à partir de la même adresse physique dans une courte période de temps, ce qui peut créer un goulot d'étranglement et entraîner un retard de lecture. Par exemple, si chaque unité de données hôte contient les mêmes données, alors toutes les commandes de lecture exigeront l'accès à une même adresse physique. - 12 - [0043] Pour chaque identificateur unique dans l'ensemble d'identificateurs uniques, les étapes 340, 350, et 360 sont effectuées. A l'étape 340, une première unité de données hôte partageant l'identificateur unique est désignée en tant qu'unité de données maîtresse, dans laquelle une adresse logique de la première unité de données hôte est mappée avec une première adresse physique dans la mémoire flash dans une table de consultation. La figure 5A montre une table de consultation 500, stockant des adresses de blocs logiques (LBA) 510 mappées avec des adresses de blocs physiques (PBA) 520. La PBA de l'unité de données maîtresse stocke une copie (ou copie maîtresse) de l'unité de données hôte. En outre, une table de retour-arrière, telle qu'une table de retour-arrière 550 ayant les PBA 560 et les LBA 570 représentées sur la figure 5B, est mise à jour afin de maintenir les mappages inverses de la PBA vers les LBA. La table de retour-arrière 550 peut être mise en oeuvre avec des listes chaînées ou des tableaux pour stocker les multiples LBA par PBA. [0044] A l'étape 350, l'adresse logique respective d'une ou plusieurs secondes unités de données hôtes partageant l'identificateur unique est remappée à partir de secondes adresses 15 physiques respectives dans la mémoire flash avec la première adresse physique dans la mémoire flash. Dans la figure 5A, la LBA 12 correspond à l'unité de données maîtresse, et a les mêmes données que les LBA 98 et 105. La LBA 98 est mappée avec la PBA 16, et la LBA 105 est également mappée avec la PBA 16. Dans certaines mises en oeuvre, les entrées dédupliquées 12, 98 et 105 peuvent être marquées par un drapeau de déduplication. Dans certaines mises en 20 oeuvre, l'entrée de l'unité de données maîtresse peut être marquée en tant qu'unité de données maîtresse. La table de retour-arrière est également mise à jour. Dans la figure 5B, la PBA 16 est mappée avec les LBA 12, 98 et 105. La table de retour-arrière montre quelles LBA sont mappées avec une PBA donnée, ce qui peut être utilisé lorsque, plus tard, on met à jour les données stockées dans une PBA. 25 [0045] A l'étape 360, les données stockées aux secondes adresses physiques respectives dans la mémoire flash sont invalidées. Etant donné que les LBA pour les entrées dédupliquées pointent vers la PBA de l'unité de données maîtresse, les PBA qui étaient pointées auparavant peuvent être libérées par la suite. L'opération de maintenance, telle que l'opération de GC dans laquelle l'unité de données flash a été sélectionnée au départ, peut se poursuivre. Etant donné que 30 les PBA dédupliquées sont maintenant marquées comme invalides, il peut y avoir moins de - 13 - données valides à copier pour l'opération de GC qu'il n'y en avait avant la déduplication. En d'autres termes, plus d'unités de données hôtes invalides peuvent être revendiquées pour la GC. [0046] En outre, l'arbre de type B peut être supprimé de la mémoire une fois que la déduplication est terminée. Etant donné que l'opération de déduplication n'est pas en ligne, l'arbre de type B n'a pas besoin d'être maintenu pour de nouvelles commandes d'écriture, et la mémoire peut être libérée pour d'autres opérations. Si une bande dédupliquée est sélectionnée ultérieurement pour la déduplication, l'arbre de type B peut être recréé sur la base de table de retour-arrière et/ou des entrées marquées de déduplication dans la table de consultation. [0047] Lorsque les données dans le système de stockage flash sont modifiées, comme pour être mises à jour ou effacées, les LBA dédupliquées peuvent nécessiter une mise à jour. Les figures 6A et 6B illustrent des procédés de mise à jour d'entrées de déduplication d'une unité de données hôte cible devant être modifiée. Par exemple, l'hôte peut émettre une commande d'écriture pour mettre à jour des données pour la LBA de l'unité de données hôte cible. En variante, l'hôte peut émettre une commande d'effacement pour effacer des données pour la LBA de l'unité de données hôte cible. Si l'entrée de la table de consultation pour l'unité de données hôte cible comprend un drapeau de déduplication, le processus de mise à jour de déduplication peut être déclenché. En variante, la PBA de l'unité de données hôte cible peut être trouvée dans la table de retour-arrière pour déclencher le processus de mise à jour de déduplication. [0048] La figure 6A illustre un organigramme 600 de suppression/écrasement d'une entrée de déduplication. Par exemple, l'hôte peut émettre une commande d'effacement ou d'écrasement d'une LBA. A l'étape 610, un mappage d'une adresse logique d'une unité de données hôte cible est supprimé d'une table de consultation pour l'unité de données hôte cible à modifier, l'adresse logique de l'unité de données hôte cible ayant été mappée avec l'adresse physique du unité de données maîtresse. Par exemple, la figure 7A montre une table de consultation 700 ayant les LBA 702 mappées avec les PBA 704, comme dans la table de consultation 500 de la figure 5A. L'unité de données hôte cible peut correspondre à la LBA 105. La LBA 105 n'est plus mappée avec la PBA 16 (par rapport à la figure 5A). La LBA 105 peut ne plus être mappée avec une PBA, ou peut être remappée avec une autre PBA (non représentée sur la figure 7A). Si la LBA - 14 - 5 n'est plus mappée avec une PBA maîtresse (par exemple, n'est plus une entrée de déduplication), le drapeau de déduplication pour la LBA 105 peut être supprimé. [0049] A l'étape 620, un mappage inverse de l'adresse physique de l'unité de données maîtresse avec l'adresse logique des données hôtes cibles est retiré de la table de retour-arrière. Lorsque l'unité de données hôte cible n'est pas une unité de données maitresse, la PBA correspondante n'est pas affectée, et les entrées respectives dans la table de consultation et la table de retour-arrière sont mises à jour. Par exemple, la figure 7B montre une table de retour-arrière 710 ayant les PBA 712 mappées avec les LBA 714, comme dans la table de retour-arrière 550 de la figure 5B. La PBA 16 n'est plus mappée avec la LBA 105 (par rapport à la figure 5B). Dans certaines mises en oeuvre, une entrée de déduplication peut être effacée en utilisant le procédé de la figure 6A, lorsque la PBA maîtresse n'a pas besoin d'être effacée. Par exemple, si la LBA 12 devait être supprimée, les autres LBA, telles que la LBA 98, conserverait toujours la PBA 16 comme PBA maîtresse. En mettant à jour les tables de consultation et de retour-arrière sans changer la PBA maîtresse, aucune donnée n'est copiée ni déplacée. [0050] La figure 6B illustre un organigramme 602 de suppression/écrasement d'une entrée de déduplication maîtresse. Une opération de GC ou une autre opération de maintenance pourraient éventuellement nécessiter d'effacer une PBA maîtresse, comme l'effacement d'un bloc correspondant à la PBA maîtresse après avoir copié les données de la PBA maîtresse à une nouvelle PBA. Contrairement au procédé représenté sur la figure 6A, la PBA maîtresse sera modifiée. A l'étape 612, les données d'une adresse physique d'une unité de données hôte cible sont copiées à une nouvelle adresse physique, dans laquelle l'unité de données hôte cible doit être modifiée et l'unité de données hôte cible est désignée en tant que l'unité de données maîtresse. Lorsque l'unité de données hôte cible est l'unité de données maîtresse, les données à la PBA correspondante doivent être copiées à une nouvelle PBA afin de s'assurer que d'autres unités de données hôtes de déduplication partageant les données peuvent toujours référencer les données. La figure 7C montre une table de consultation 720 ayant les LBA 722 mappées avec les PBA 724, comme dans la table de consultation 500 de la figure 5A. La figure 7D montre une table de retour-arrière 730 ayant les PBA 732 mappées avec les LBA 734, comme dans la table de retour-arrière 550 de la figure 5B. La PBA maîtresse peut être 32, et la nouvelle adresse physique peut être 40. - 15 - [0051] A l'étape 622, une unité de données hôte de la nouvelle adresse physique est désignée en tant que l'unité de données maîtresse. Par exemple, la PBA 40 peut être désignée en tant que la nouvelle unité de données maîtresse. [0052] A l'étape 632, les adresses logiques respectives des secondes unités de données hôtes sont remappées avec la nouvelle adresse physique dans la table de consultation. Par exemple, dans la figure 7C, les LBA 12, 98 et 105 sont maintenant mappées avec la PBA 40 (par rapport à la figure 5A). [0053] A l'étape 642, les mappages inverses de l'adresse physique de l'unité de données hôte cible sont mis à jour, dans la table de retour-arrière, avec les mappages inverses de la nouvelle 10 adresse physique. Dans la table de retour-arrière, l'ancienne PBA maîtresse est mise à jour avec la nouvelle PBA maîtresse. Par exemple, sur la figure 7D, la PBA 16 est maintenant remplacée par la PBA 40 (par rapport à la figure 5B). [0054] A l'étape 652, les données stockées à l'adresse physique de l'unité de données hôte cible sont invalidées. L'ancienne PBA maîtresse est marquée comme étant invalide pour terminer la 15 modification. La PBA invalidée peut ensuite être effacée et libérée dans une opération de GC. Dans certaines mises en oeuvre, les procédés des organigrammes 600 et 602 peuvent être combinés afin de modifier une unité de données spécifique. Par exemple, si une LBA et une PBA particulières dédupliquées devaient être modifiées, les processus des organigrammes 600 et 602 pourraient être utilisés pour mettre à jour les tables de consultation et de retour-arrière. 20 [0055] La déduplication pour le système de stockage flash peut être activée par un utilisateur, par exemple, par le biais d'une interface utilisateur accessible par l'hôte. L'interface utilisateur peut être mise en oeuvre sous la forme d'une application ou sous la forme d'une page Web accessible par le biais d'un navigateur sur l'hôte. L'utilisateur peut également sélectionner certaines options ou certains paramètres pour la déduplication du système de stockage flash. Par 25 exemple, un pourcentage de la capacité de déduplication peut être sélectionné de telle sorte qu'un pourcentage de seuil de l'espace total disponible du système de stockage flash peut être dédupliqué. Une fois que le pourcentage de seuil a été dédupliqué, le système de stockage flash ne peut plus dédupliquer de données, à moins que le pourcentage tombe en dessous du pourcentage de seuil. En outre, certains modèles de déduplication peuvent être stockés - 16 - normalement sans déduplication. Par exemple, l'utilisateur peut désigner des modèles de données spécifiques qui ne seront pas sélectionnés pour la déduplication. Ces modèles peuvent inclure des modèles communs (comme tous les zéros), qui peuvent créer des latences de lecture ou des charges de gestion importantes. La déduplication peut être désactivée par l'utilisateur, ce qui peut nécessiter le formatage du système de stockage flash. [0056] La déduplication peut être une priorisée pour les bandes froides de données. Le système de stockage flash peut garder une trace de bandes de données chaudes, par exemple sur la base de la fréquence de changement de données des LBA. L'exécution d'une déduplication sur des données froides minimise la tenue des comptes, telle que la mise à jour la table de 10 consultation et de la table de retour-arrière. Etant donné que les données froides peuvent être mises à jour moins souvent, les unités de données maîtresses peuvent être mises à jour moins souvent, ce qui peut réduire l'amplification d'écriture. Par exemple, lorsque la GC sélectionne une bande, la déduplication peut ne pas être effectuée si la bande est considérée comme chaude. [0057] La déduplication peut augmenter l'amplification de lecture, étant donné que des lectures 15 supplémentaires peuvent être nécessaires pour lire les données pour les entrées dédupliquées. Cependant, étant donné que moins d'écritures sont nécessaires, et que moins d'espace de stockage est utilisé, la fréquence des opérations de GC ou d'autres opérations de maintenance peut être réduite, et la durée de vie globale du système de stockage flash peut être augmentée. En outre, étant donné que la déduplication n'est pas effectuée pendant les opérations d'écriture hôtes, la 20 déduplication n'ajoute pas de latence aux opérations d'écriture hôtes. Etant donné que la copie des données valides nécessite l'écriture de données, la réduction de la quantité de données écrites peut augmenter la durée de vie du dispositif de mémoire flash correspondant. [0058] La déduplication hors ligne peut être plus facile à interrompre que la déduplication en ligne. Par exemple, avec la déduplication hors ligne, les données sont déjà stockées sur le 25 dispositif de stockage flash, et les mappages sont mis à jour. Si une nouvelle commande de lecture est reçue pendant la déduplication hors ligne, les données peuvent être lues, étant donné que les données sont toujours stockées telles que précédemment écrites, ou les mappages peuvent avoir déjà été mis à jour par la déduplication. Si une nouvelle commande d'écriture est reçue pendant la déduplication hors ligne, les données sont généralement écrites à une nouvelle adresse - 17 - physique, plutôt que d'examiner les adresses physiques pour la déduplication. Pendant la déduplication hors ligne, les commandes de GC peuvent avoir une priorité inférieure aux commandes d'écriture hôtes, offrant de plus grands avantages de performance à l'hôte. En outre, la déduplication peut optimiser l'utilisation du stockage étant donné que plus d'espace libre peut être disponible. [0059] L'homme de l'art appréciera que les différents blocs, modules, éléments, composants, procédés et algorithmes d'illustration décrits ici pourront être mis en oeuvre sous forme de matériel électronique, de logiciels informatiques, ou une combinaison des deux. Pour illustrer cette interchangeabilité entre matériel et logiciel, divers blocs, modules, éléments, composants, procédés et algorithmes d'illustration ont été décrits de façon générale ci-dessus en termes de fonctionnalité. Que cette fonctionnalité soit mise en oeuvre sous une forme matérielle ou logicielle dépend de l'application particulière et des contraintes de conception imposées au système général. L'homme de l'art pourra mettre en oeuvre la fonctionnalité décrite de diverses manières pour chaque application particulière. Divers composants et blocs pourront être agencés différemment (par exemple, agencés dans un ordre différent, ou répartis d'une autre façon), le tout sans sortir du cadre de la technologie en question. [0060] Il est entendu que l'ordre ou la hiérarchie spécifique des étapes dans les procédés décrits est une illustration d'approches exemplaires. Sur la base des préférences de conception, il est entendu que l'ordre ou la hiérarchie spécifiques des étapes dans les procédés pourront être réorganisés. Certaines étapes pourront être effectuées simultanément. Les revendications de procédé d'accompagnement présentent des éléments des différentes étapes dans un ordre échantillon, et ne sont pas destinées à être limitées à l'ordre ou à la hiérarchie spécifiques présentés. [0061] La description qui précède est fournie pour permettre à tout homme de l'art de mettre en pratique les divers aspects décrits ici. Diverses modifications de ces aspects apparaîtront facilement à l'homme de l'art, et les principes généraux définis ici pourront être appliqués à d'autres aspects. Ainsi, les revendications ne sont pas destinées à être limitées aux aspects présentés ici, mais doivent se voir accorder la pleine portée en accord avec les revendications linguistiques, où une référence à un élément au singulier n'est pas destinée à signifier « un(e) et - 18 - un(e) seul(e) », sauf indication contraire spécifique, mais plutôt « un(e) ou plusieurs ». Sauf indication contraire, le terme « certains » signifie un(e) ou plusieurs. Les pronoms au masculin (par exemple, son) comprennent le genre féminin et neutre (par exemple, sa et son) et vice versa. Les titres et intertitres, le cas échéant, sont utilisés pour plus de commodité seulement et ne limitent pas l'invention. [0062] Une expression telle qu'un « aspect » ne signifie pas qu'un tel aspect est essentiel à la technologie en question ou qu'un tel aspect s'applique à toutes les configurations de la technologie en question. Une divulgation relative à un aspect peut s'appliquer à toutes les configurations, ou à une ou plusieurs configurations. Une expression telle qu'un aspect peut faire 10 référence à un ou plusieurs aspects, et vice versa. Une expression telle qu'une « configuration » ne signifie pas qu'une telle configuration est essentielle à la technologie en question ou qu'une telle configuration s'applique à toutes les configurations de la technologie en question. Une divulgation relative à une configuration peut s'appliquer à toutes les configurations, ou à une ou plusieurs configurations. Une expression telle qu'une configuration peut faire référence à une ou 15 plusieurs configurations, et vice versa. [0063] Le mot « exemplaire » est utilisé ici pour signifier « servant d'exemple ou d'illustration ». Tout aspect ou toute conception décrits ici comme « exemplaires » ne doivent pas nécessairement être interprétés comme étant préférés ou avantageux par rapport aux autres aspects ou conceptions. 20 [0064] Tous les équivalents structurels et fonctionnels des éléments des divers aspects décrits tout au long de la présente description qui sont connus ou deviendront connus ultérieurement de l'homme du métier sont expressément incorporés ici par référence et sont destinés à être englobés par les revendications. En outre, rien de ce qui est décrit ici n'est destiné à être dédié au public, indépendamment du fait de savoir si une telle divulgation est explicitement mentionnée dans les 25 revendications. Aucun élément de revendication ne doit être interprété en vertu des dispositions de l'article 35 USC §112, sixième alinéa, sauf si l'élément est expressément récité en utilisant l'expression « moyen pour » ou, dans le cas d'une revendication de procédé, si l'élément est récité en utilisant l'expression « étape pour ». En outre, dans la mesure où les termes « comporter », « avoir » ou similaires sont utilisés dans la description ou les revendications, ces termes sont - 19 - destinés à être inclusifs d'une manière similaire au terme « comprendre », étant donné que « comprendre » est interprété lorsqu'il est utilisé comme un mot de transition dans une revendication. - 20 - REVENDICATIONS: 1. Procédé de gestion d'un système de stockage flash, comprenant : lire une pluralité d'unités de données flash à partir d'une mémoire flash dans un tampon, dans lequel chacune de la pluralité d'unités de données flash comprend une ou plusieurs unités de données hôtes ; déterminer un identificateur pour chacune des unités de données hôtes lues dans le tampon ; sélectionner un ensemble d'identificateurs uniques parmi les identificateurs déterminés sur la base d'un nombre d'unités de données hôtes qui partagent les identificateurs uniques respectifs ; 10 et pour chaque identificateur unique de l'ensemble d'identificateurs uniques : désigner une première unité de données hôte partageant l'identificateur unique en tant qu'unité de données maîtresse, dans lequel une adresse logique de la première unité de données hôte est mappée avec une première adresse physique dans la mémoire flash 15 dans une table de consultation ; remapper, dans la table de consultation, les adresses logiques respectives d'une ou plusieurs secondes unités de données hôtes partageant l'identificateur unique à partir de secondes adresses physiques respectives dans la mémoire flash avec la première adresse physique dans la mémoire flash; et 20 invalider les données stockées aux secondes adresses physiques respectives dans la mémoire flash. 2. Procédé selon la revendication 1, dans lequel la pluralité d'unités de données flash sont lues à partir de la mémoire flash dans le tampon en réponse à une opération de maintenance du 25 système, et dans lequel le procédé comprend en outre d'effectuer l'opération de maintenance de système après que les données stockées à la seconde adresse physique respective ont été invalidées. 30 3. Procédé selon la revendication 1, dans lequel le procédé comprend en outre : - 21 -remplir une structure de données sur la base des identificateurs déterminés des unités de données hôtes, dans lequel la structure de données comprend une entrée pour chaque identificateur unique des identificateurs déterminés, et dans lequel chaque entrée comprend un compte d'unités de données hôtes partageant l'identificateur unique respectif et une adresse logique de chaque unité de données hôte partageant l'identificateur unique respectif, dans lequel l'ensemble d'identificateurs uniques est sélectionné en parcourant les entrées de la structure de données et en sélectionnant un nombre prédéterminé d'identificateurs uniques ayant les plus grands comptes d'unités de données hôtes. 4. Procédé selon la revendication 3, dans lequel les plus grands comptes d'unités de données hôtes sont supérieurs à un compte de seuil inférieur. 5. Procédé selon la revendication 3, dans lequel les plus grands comptes d'unités de données hôtes excluent les comptes d'unités de données hôtes supérieurs à un compte de seuil supérieur. 6. Procédé selon la revendication 3, dans lequel la structure de données comprend un arbre de type B, et dans lequel chaque entrée comprend une clé respective de l'arbre de type B. 7. Procédé selon la revendication 1, comprenant en outre, pour chaque identificateur unique dans l'ensemble d'identificateurs uniques : stocker, dans une table de retour-arrière, des mappages inverses respectifs de la première adresse physique avec l'adresse logique de la première unité de données hôte et les adresses logiques respectives desdites une ou plusieurs secondes unités de données hôtes. 8. Procédé selon la revendication 7, comprenant en outre : supprimer de la table de consultation un mappage d'une adresse logique d'une unité de données hôte cible à modifier, l'adresse logique de l'unité de données hôte cible ayant été mappée avec l'adresse physique de l'unité de données maîtresse ; et supprimer de la table de retour-arrière un mappage inverse de l'adresse physique de l'unité de données maîtresse avec l'adresse logique des données hôtes cibles. - 22 -. Procédé selon la revendication 7, comprenant en outre : copier des données à partir d'une adresse physique d'une unité de données hôte cible à une nouvelle adresse physique, dans lequel l'unité de données hôte cible doit être modifiée et l'unité de données hôte cible est désignée en tant que l'unité de données maîtresse ; désigner une unité de damées hôte de la nouvelle adresse physique en tant que l'unité de données maîtresse ; remapper, dans la table de consultation, les adresses logiques respectives des secondes unités de données hôtes avec la nouvelle adresse physique ; mettià jour, dans la table de retour-arrière, les mappages inverses de l'adresse physique de l'unité de données hôte cible avec les mappages inverses de la nouvelle adresse physique ; et invalider les données stockées à l'adresse physique de l'unité de données hôte cible. 10. Procédé selon la revendication 1, comprenant en outre : pour chaque adresse logique associée à un identificateur unique de l'ensemble d'identificateurs uniques, définir un drapeau de déduplication dans une entrée correspondant à l'adresse logique dans la table de consultation, dans lequel le drapeau de déduplication indique que l'adresse logique est mappée avec une adresse physique respective unique. 11. Procédé selon la revendication 1, dans lequel la pluralité d'unités de données flash comprend des unités de données flash respectives parmi une pluralité de dispositifs de mémoire flash du système de stockage flash, et dans lequel les unités de données flash respectives de la pluralité de dispositifs de mémoire flash sont sélectionnées en réponse à une opération de maintenance du système. 12. Système de stockage flash comprenant : une pluralité de dispositifs de mémoire flash ; une mémoire comprenant un tampon ; et un contrôleur configuré pour : lire une pluralité d'unités de données flash à partir de la pluralité de dispositifs de mémoire flash dans le tampon, dans lequel chacune de la pluralité d'unités de données flash comporte une ou plusieurs unités de données hôtes ; - 23 -déterminer un identificateur pour chacune des unités de données hôtes lues dans le tampon ; sélectionner un ensemble d'identificateurs uniques parmi les identificateurs déterminés sur la base d'un nombre d'unités de données hôtes qui partagent les identificateurs uniques respectifs ; et pour chaque identificateur unique de l'ensemble d'identificateurs uniques : désigner une première unité de données hôte partageant l'identificateur unique en tant qu'unité de données maîtresse, dans lequel une adresse logique de la première unité de données hôte est mappée avec une première adresse physique 10 dans le dispositif de mémoire flash dans une table de consultation ; remapper, dans la table de consultation, les adresses logiques respectives d'une ou plusieurs secondes unités de données hôtes partageant l'identificateur unique à partir de secondes adresses physiques respectives dans le dispositif de mémoire flash avec la première adresse physique dans le dispositif de mémoire 15 flash ; et invalider les données stockées dans les secondes adresses physiques respectives dans le dispositif de mémoire flash. 13. Système de stockage flash selon la revendication 12, dans lequel le contrôleur est 20 configuré pour lire la pluralité d'unités de données flash à partir de la pluralité de dispositifs de mémoire flash dans le tampon en réponse à une opération de maintenance du système, et dans lequel le contrôleur est en outre configuré pour effectuer l'opération de maintenance du système après que les données stockées à la seconde adresse physique respective ont été invalidées. 25 14. Système de stockage flash selon la revendication 12, dans lequel le contrôleur est en outre configuré pour : remplir une structure de données dans la mémoire sur la base des identificateurs déterminés des unités de données hôtes, dans lequel la structure de données comprend une entrée 30 pour chaque identificateur unique des identificateurs déterminés, et dans lequel chaque entrée - 24 -comprend un compte d'unités de données hôtes partageant l'identificateur unique respectif et une adresse logique de chaque unité de données hôte partageant l'identificateur unique respectif, dans lequel l'ensemble d'identificateurs uniques est sélectionné en parcourant les entrées de la structure de données et en sélectionnant un nombre prédéterminé d'identificateurs uniques ayant les plus grands comptes d'unités de données hôtes. 15. Système de stockage flash selon la revendication 14, dans lequel les plus grands comptes d'unités de données hôtes sont supérieurs à un compte de seuil inférieur. 16. Système de stockage flash selon la revendication 14, dans lequel les plus grands comptes d'unités de données hôtes excluent les comptes d'unités de données hôtes supérieurs à un compte de seuil supérieur. 17. Système de stockage flash selon la revendication 14, dans lequel la structure de données 15 comprend un arbre de type B, et dans lequel chaque entrée comprend une clé respective de l'arbre de type B. 18. Système de stockage flash selon la revendication 12, dans lequel le contrôleur est en outre configuré pour, pour chaque identificateur unique de l'ensemble d'identificateurs uniques : 20 stocker, dans une table de retour-arrière, les mappages inverses respectifs de la première adresse physique avec l'adresse logique de la première unité de données hôte et les adresses logiques respectives desdites une ou plusieurs secondes unités de données hôtes. 19. Système de stockage flash selon la revendication 18, dans lequel le contrôleur est en outre 25 configuré pour : supprimer de la table de consultation un mappage d'une adresse logique d'une unité de données hôte cible à modifier, l'adresse logique de l'unité de données hôte cible ayant été mappée avec l'adresse physique de l'unité de données maîtresse ; et supprimer de la table de retour-arrière un mappage inverse de l'adresse physique de l'unité 30 de données maîtresse avec l'adresse logique des données hôtes cibles. - 25 -. Système de stockage flash selon la revendication 18, dans lequel le contrôleur est en outre configuré pour : copier des données à partir d'une adresse physique d'une unité de données hôte cible à une nouvelle adresse physique, dans lequel l'unité de données hôte cible doit être modifiée et l'unité de données hôte cible est désignée en tant qu'unité de données maîtresse ; désigner une unité de données hôte de la nouvelle adresse physique en tant que l'unité de données maîtresse ; remapper, dans la table de consultation, les adresses logiques respectives des secondes unités de données hôtes avec la nouvelle adresse physique ; mettre à jour, dans la table de retour-arrière, les mappages inverses de l'adresse physique de l'unité de données hôte cible avec les mappages inverses de la nouvelle adresse physique ; et invalider les données stockées à l'adresse physique de l'unité de données hôte cible. 21. Système de stockage flash selon la revendication 12, dans lequel le contrôleur est en outre configuré pour : pour chaque adresse logique associée à un identificateur unique de l'ensemble d'identificateurs uniques, définir un drapeau de déduplication dans une entrée correspondant à l'adresse logique dans la table de consultation, dans lequel le drapeau de déduplication indique que l'adresse logique n'est pas mappée avec une adresse physique respective unique. 22. Système de stockage flash selon la revendication 12, dans lequel la pluralité d'unités de données flash comprend des unités de données flash respectives de la pluralité de dispositifs de mémoire flash, et dans lequel les unités de données flash respectives de la pluralité de dispositifs de mémoire flash sont sélectionnées en réponse à une opération de maintenance du système. 23. Support non transitoire pouvant être lu par une machine comprenant des instructions stockées sur celui-ci, qui, lorsqu'elles sont exécutées par une machine, amènent la machine à effectuer des opérations comprenant : lire une pluralité d'unités de données flash à partir d'une mémoire flash dans un tampon, 30 dans lequel chacune de la pluralité d'unités de données flash comprend une ou plusieurs unités de données hôtes ; - 26 -déterminer un identificateur pour chacune des unités de données hôtes lues dans le tampon ; sélectionner un ensemble d'identificateurs uniques parmi les identificateurs déterminés sur la base d'un nombre d'unités de données hôtes qui partagent les identificateurs uniques respectifs ; et pour chaque identificateur unique de l'ensemble d'identificateurs uniques : désigner une première unité de données hôte partageant l'identificateur unique en tant qu'unité de données maîtresse, dans lequel une adresse logique de la première unité de données hôte est mappée avec une première adresse physique dans la mémoire flash 10 dans une table de consultation ; remapper, dans la table de consultation, les adresses logiques respectives d'une ou plusieurs secondes unités de données hôtes partageant l'identificateur unique à partir de secondes adresses physiques respectives dans la mémoire flash avec la première adresse physique dans la mémoire flash; et 15 invalider les données stockées aux secondes adresses physiques respectives dans la mémoire flash. 24. Support non transitoire pouvant être lu par une machine selon la revendication 23, dans lequel les instructions amènent en outre la machine à effectuer des opérations comprenant : 20 remplir une structure de données sur la base des identificateurs déterminés des unités de données hôtes, dans lequel la structure de données comprend une entrée pour chaque identificateur unique des identificateurs déterminés, et dans lequel chaque entrée comprend un compte d'unités de données hôtes partageant l'identificateur unique respectif et une adresse logique de chaque unité de données hôte partageant l'identificateur unique respectif, 25 dans lequel l'ensemble d'identificateurs uniques est sélectionné en parcourant les entrées de la structure de données et en sélectionnant un nombre prédéterminé d'identificateurs uniques ayant les plus grands comptes d'unités de données hôtes. 25. Support non transitoire pouvant être lu par une machine selon la revendication 23, dans 30 lequel la pluralité d'unités de données flash sont lues à partir de la mémoire flash dans le tampon en réponse à une opération de récupération de place. - 27 -