FR 3026513 A1 20160401 FR 1559020 A 20150924 DIAGNOSTIC PERMETTANT DE DÉTERMINER LE BON ÉTAT DE FONCTIONNEMENT D'UN DISPOSITIF DE STOCKAGE DOMAINE TECHNIQUE [1] La présente description concerne des dispositifs de stockage, tels que des disques électroniques. ARRIÈRE-PLAN [2] Des disques électroniques (SSD) peuvent être utilisés dans des ordinateurs, dans des applications nécessitant une latence relativement faible et un stockage de haute capacité. Par exemple, les SSD peuvent présenter une latence inférieure, particulièrement pour les lectures et les écritures aléatoires, à celle des disques durs (HDD). Ceci peut permettre une meilleure capacité de traitement pour les lectures et les écritures aléatoires depuis/vers un SSD par comparaison avec un HDD. De plus, les SSD peuvent utiliser plusieurs canaux de données parallèles pour lire et écrire depuis/vers des dispositifs de mémoire, d'où des vitesses de lecture et d'écriture séquentielles élevées. [3] Les SSD peuvent utiliser des dispositifs de mémoire non volatile, tels que des dispositifs de mémoire flash, qui continuent à stocker des données sans requérir une alimentation électrique persistante ou périodique. Les dispositifs de mémoire flash sont écrits et effacés en appliquant une tension à la cellule de mémoire. La tension utilisée pour effacer les dispositifs de mémoire flash peut être relativement élevée, et peut provoquer des changements physiques de la cellule de mémoire flash sur plusieurs opérations d'effacement. C'est pourquoi, des cellules de mémoire flash peuvent s'user après plusieurs opérations d'effacement, réduisant leur capacité de stockage de charge, et diminuant ou éliminant la capacité d'écrire de nouvelles données dans les cellules de m4moire flash. RÉSUMÉ [4] Dans certains exemples, la description présente un dispositif de stockage qui comprend une pluralité de dispositifs de mémoire divisés logiquement en une pluralité de blocs et un contrôleur. Dans certains exemples, le contrôleur peut être configuré pour déterminer un pourcentage de remplissage respectif pour chaque bloc respectif de la pluralité de blocs ; 1 déterminer le plus petit pourcentage de remplissage pour la pluralité de pourcentages de remplissage respectifs ; et en réponse à la détermination que le plus petit pourcentage de remplissage excède une valeur de seuil prédéterminée, exécuter une action concernant le bon état de fonctionnement du dispositif de stockage. [5] Dans certains exemples, la description présente un procédé consistant à déterminer, par un contrôleur d'un dispositif de stockage, un pourcentage de remplissage respectif pour chaque bloc respectif d'une pluralité de blocs du dispositif de stockage ; déterminer, par le contrôleur, le plus petit pourcentage de remplissage pour la pluralité de pourcentages de remplissage respectifs ; et en réponse à la détermination que le plus petit pourcentage de remplissage excède une valeur de seuil prédéterminée, exécuter, par le contrôleur, une action concernant le bon état de fonctionnement du dispositif de stockage. [6] Dans certains exemples, la description présente un support de stockage lisible par ordinateur comportant des instructions qui, lorsqu'elles sont exécutées, configurent un ou plusieurs processeurs d'un dispositif de stockage pour déterminer un pourcentage de remplissage respectif pour chaque bloc respectif d'une pluralité de blocs du dispositif de stockage ; déterminer le plus petit pourcentage de remplissage pour la pluralité de pourcentages de remplissage respectifs ; et, en réponse à la détermination que le plus petit pourcentage de remplissage excède une valeur de seuil prédéterminée, exécuter une action concernant le bon état de fonctionnement du dispositif de stockage. [7] Dans certains exemples, la description présente un système comprenant des moyens permettant de déterminer un pourcentage de remplissage respectif pour chaque bloc respectif d'une pluralité de blocs du dispositif de stockage. Le système peut également comporter des moyens destinés à déterminer le plus petit pourcentage de remplissage pour la pluralité de pourcentages de remplissage respectifs. Selon ces exemples, le système peut également comprendre des moyens permettant d'exécuter, en réponse à la détermination que le phis petit pourcentage de remplissage excède une valeur de seuil prédéterminée, une action concernant le bon état de fonctionnement du dispositif de stockage. [8] Les détails d'un ou plusieurs exemples sont illustrés sur les dessins annexés et dans la description ci-dessous. D'autres caractéristiques, objets et avantages ressortiront plus clairement à la lecture de la description et des dessins, ainsi qu'à la lecture des revendications. 2 BRÈVE DESCRIPTION DES DESSINS La figure 1 est un schéma de principe conceptuel et simplifié illustrant un exemple de système comportant un dispositif de stockage connecté à un dispositif hôte. [10] La figure 2 est un schéma de principe conceptuel illustrant un exemple de dispositif de mémoire 12AA qui comporte une pluralité de blocs, chaque bloc contenant une pluralité de pages. [11] La figure 3 est un schéma de principe conceptuel et simplifié illustrant un exemple de contrôleur. [12] La figure 4 est un exemple de diagramme illustrant une distribution de blocs comme une 10 fonction du pourcentage de remplissage durant le fonctionnement continu d'un dispositif de stockage. [13] La figure 5 est un diagramme du facteur d'amplification d'écriture comme un rapport du taux de sur-provisionnement, p, pour un dispositif de stockage donné à titre d'exemple. [14] La figure 6 est un diagramme d'un début de récupération de l'espace mémoire dans le pire 15 des cas contre un taux de sur-provisionnement pour un dispositif de stockage donné à titre d'exemple. [15] La figure 7 est un organigramme illustrant un exemple de technique permettant d'estimer un bon état de fonctionnement d'un dispositif de stockage sur la base d'une plus petite valeur de pourcentage de remplissage. 20 [16] La figure 8 est un diagramme du début de récupération de l'espace mémoire moyen contre un taux de sur-provisionnement pour un dispositif de stockage donné à titre d'exemple. DESCRIPTION DÉTAILLÉE [17] La description présente une technique permettant de suivre le bon état de fonctionnement 25 d'un dispositif de stockage, tel qu'un disque électronique (SSD). Dans certains exemples, la technique peut utiliser un ou plusieurs paramètres enregistrés par un contrôleur du dispositif de stockage lors d'opérations de récupération de l'espace mémoire du dispositif de stockage. Un dispositif de stockage peut comporter des dispositifs de mémoire qui comprennent chacun une pluralité de blocs, chaque bloc contenant des cellules de mémoire qui stockent des données. Un 30 contrôleur d'un dispositif de stockage peut déterminer un pourcentage de remplissage pour chaque bloc du dispositif de stockage tout en exécutant une récupération de l'espace mémoire. Le 3 pourcentage de remplissage désigne un rapport entre les données valides stockées dans un bloc et la capacité totale du bloc. Le contrôleur peut ensuite déterminer le plus petit pourcentage de remplissage sur l'ensemble des blocs. Le contrôleur peut comparer ce plus petit pourcentage de remplissage à une valeur de seuil prédéterminée. Si le plus petit pourcentage de remplissage est supérieur à la valeur de seuil, ceci peut indiquer que le bon état de fonctionnement du dispositif de stockage se détériore. Le bon état de fonctionnement du dispositif de stockage peut être associé à un certain nombre de blocs libres dans le dispositif de stockage. Si le nombre de blocs libres devient bas, le contrôleur peut s'avérer incapable d'exécuter une répartition de l'usure et une récupération de l'espace mémoire suffisantes pour maintenir les performances du dispositif de stockage. Si le nombre de blocs libres est trop petit, le contrôleur ne pourra pas toujours récupérer les performances perdues ou de nouvelles données peuvent ne pas être écrites sur le dispositif de stockage. Ainsi, il est important pour une opération prolongée du dispositif de stockage de déterminer quand le bon état de fonctionnement du dispositif de stockage se détériore avant d'atteindre un état de non récupération. [18] Dans certains exemples, pour chaque opération de récupération de l'espace mémoire, le contrôleur peut déterminer le plus petit pourcentage de remplissage. Le contrôleur peut ensuite déterminer un plus petit pourcentage de remplissage moyen pour un nombre prédéterminé des derniers plus petits pourcentages de remplissage. En moyennant les plus petits pourcentages de remplissage pour chacune d'une pluralité de dernières opérations de récupération de l'espace mémoire, le contrôleur peut lisser la valeur du plus petit pourcentage de remplissage sur la pluralité des dernières opérations de récupération de l'espace mémoire. Le contrôleur peut ensuite comparer ce plus petit pourcentage de remplissage moyen à la valeur de seuil. [19] Le contrôleur peut exécuter une ou plusieurs opérations prédéterminées en réponse à la détermination que le plus petit pourcentage de remplissage moyen est supérieur à la valeur de seuil. Par exemple, le contrôleur peut modifier un paramètre d'exploitation ou fournir une indication du bon état de fonctionnement du dispositif de stockage à un dispositif hôte du dispositif de stockage. [20] De cette manière, le contrôleur du dispositif de stockage peut contrôler le bon état de fonctionnement du dispositif de stockage lors de l'exécution, à l'aide d'une valeur unique ou d'une moyenne d'une valeur unique sur une pluralité d'opérations. Cette simple valeur ou cette moyenne d'une simple valeur est ensuite comparée à une valeur de seuil pour effectuer une 4 détermination du bon état de fonctionnement du dispositif de stockage. Ainsi, le contrôle du bon état de fonctionnement du dispositif de stockage peut être relativement léger, avec une faible servitude. De plus, les techniques décrites ici utilisent un paramètre enregistré durant la récupération de l'espace mémoire. [21] Comparativement, certaines techniques permettant d'estimer le bon état de fonctionnement d'un dispositif de stockage sont mises en oeuvre par un dispositif hôte et nécessitent que le dispositif hôte calcule un facteur d'amplification d'écriture sur la base de statistiques brutes du dispositif de stockage (telles que la quantité de données que le dispositif hôte a ordonné au dispositif de stockage d'écrire et la quantité de données que le dispositif de stockage a effectivement écrites, notamment des données écrites durant des écritures, une récupération de l'espace mémoire, une répartition de l'usure, et autres). Le dispositif hôte estime ensuite le bon état de fonctionnement du dispositif de stockage sur la base du facteur d'amplification d'écriture calculé. La collection de statistiques brutes du dispositif de stockage et le calcul du facteur d'amplification d'écriture peuvent introduire un temps de retard dans la détermination du bon état de fonctionnement du dispositif de stockage, ce qui peut retarder une intervention si le bon état de fonctionnement du dispositif de stockage s'est détérioré. Dans certains exemples, le temps de retard peut être si sévère que le dispositif de stockage entre dans un état à partir duquel il ne peut pas récupérer. Contrairement à ces techniques, celles décrites ici ne requièrent pas toujours la détermination d'un facteur d'amplification d'écriture en fonction de statistiques d'écriture effectives et/ou peuvent être mises en oeuvre par le contrôleur du dispositif de stockage, plutôt que par le dispositif hôte. C'est pourquoi, les techniques décrites ici peuvent permettre une détection ou une prédiction plus précoce de détérioration du bon état de fonctionnement du dispositif de stockage, et peuvent réduire ou éliminer la probabilité que le dispositif de stockage entre dans un état à partir duquel il ne peut pas récupérer. [22] La figure 1 est un schéma de principe conceptuel et simplifié illustrant un exemple de système comportant un dispositif de stockage 2 connecté à un dispositif hôte 15. Le dispositif hôte 15 peut utiliser des dispositifs de mémoire non volatile inclus dans le dispositif de stockage 2 pour stocker et récupérer des données. Le dispositif hôte 15 peut comprendre n'importe quel dispositif informatique, notamment, par exemple, un serveur informatique, une unité de stockage en réseau (NAS), un ordinateur de bureau, un bloc-notes (par exemple, un ordinateur portable), une tablette, un décodeur, un dispositif informatique mobile tel qu'un téléphone intelligent, une 5 télévision, une caméra, un dispositif d'affichage, un lecteur multimédia numérique, une console de jeu vidéo, un dispositif de diffusion vidéo en continu, ou autres. [23] Comme illustré sur la figure 1, le dispositif de stockage 2 peut comprendre un contrôleur 4, une matrice mémoire non volatile 6 (NVMA 6), une mémoire cache 8, et une interface 10. 5 Dans certains exemples, le dispositif de stockage 2 peut comporter des composants additionnels non représentés sur la figure 1, par souci de clarté. Par exemple, le dispositif de stockage 2 peut comporter des composants de transmission de puissance, notamment, par exemple, un condensateur, un super condensateur, ou une batterie ; une carte de circuit imprimé (PB) à laquelle des composants du dispositif de stockage 2 sont mécaniquement attachés et qui 10 comprend des traces électriquement conductrices qui interconnectent électriquement les composants du dispositif de stockage 2; ou autres. Dans certains exemples, le dispositif de stockage 2 comporte un disque électronique (SSD). [24] Le dispositif de stockage 2 peut comprendre une interface 10 permettant un interfaçage avec le dispositif hôte 15. L'interface 10 peut fournir une connexion mécanique, et une 15 connexion électrique, ou les deux, au dispositif hôte 15. L'interface 10 peut comporter un ou deux éléments parmi un bus de données destiné à échanger des données avec le dispositif hôte 15 et un bus de contrôle destiné à échanger des commandes avec le dispositif hôte 15. L'interface 10 peut fonctionner selon n'importe quel protocole approprié. Par exemple, l'interface 10 peut fonctionner selon un ou plusieurs des protocoles suivants : Advanced Technology Attachment 20 (ATA) (par exemple, ATA série (SATA, et ATA parallèle (PATA)), Fibre Channel, interface SCSI, SCSI à connexion sérielle (SAS), interconnexion de composants périphériques (PCI), et PCI express. La connexion électrique de l'interface 10 (par exemple, le bus de données, le bus de contrôle, ou les deux) est connectée électriquement au contrôleur 4, fournissant une connexion électrique entre le dispositif hôte 15 et le contrôleur, ce qui permet un échange de données entre 25 le dispositif hôte 15 et le contrôleur 4. [25] Le dispositif de stockage 2 peut comporter une NVMA 6 qui peut comprendre une pluralité de dispositifs de mémoire 12AA-12NN (collectivement, de « dispositifs de mémoire 12 ») qui peuvent être configurés chacun pour stocker et/ou récupérer des données. Par exemple, un dispositif de mémoire des dispositifs de mémoire 12 peut recevoir des données et un message 30 à partir du contrôleur 4 qui ordonne au dispositif de mémoire de stocker les données. Similairement, le dispositif de mémoire des dispositifs de mémoire 12 peut recevoir un message à partir du contrôleur 4 qui ordonne au dispositif de mémoire de récupérer des données. Dans certains exemples, chaque dispositif de mémoire 12 peut être configuré pour stocker des quantités relativement importantes de données (par exemple, 128Mo, 256Mo, 512Mo, 1Go, 2Go, 4Go, 8Go, 16Go, 32Go, 64Go, 128Go, 256Go, 512Go, 1To, etc.). [26] Dans certains exemples, des dispositifs de mémoire 12 peuvent comprendre des dispositifs de mémoire flash. Des dispositifs de mémoire flash peuvent comporter des dispositifs de mémoire flash basés NAND ou NOR, et peuvent stocker des données en fonction d'une charge contenue dans une grille flottante d'un transistor pour chaque cellule de mémoire flash. Dans des dispositifs de mémoire flash NAND, le dispositif de mémoire flash peut être divisé en une pluralité de blocs. La figure 2 est un schéma de principe conceptuel illustrant un exemple de dispositif de mémoire 12AA qui contient une pluralité de blocs 16A-16N (collectivement, de « blocs 16 »), chaque bloc comportant une pluralité de pages 18AA-18NM (collectivement, de « pages 18 »). Chaque bloc des blocs 16 peut renfermer une pluralité de cellules NAND. Les rangées de cellules NAND peuvent être connectées électriquement de façon sérielle à l'aide d'une ligne de mots pour définir une page (une page des pages 18). Des cellules respectives dans chacune d'une pluralité de pages 18 peuvent être connectées électriquement à des lignes de bits respectives. Le contrôleur 4 peut écrire et lire des données dans/depuis des dispositifs de mémoire flash NAND au niveau page et effacer des données à partir des dispositifs de mémoire flash NAND au niveau bloc. [27] Dans certains exemples, il s'avère qu'il n'est pas pratique pour le contrôleur 4 d'être connecté séparément à chaque dispositif de mémoire des dispositifs de mémoire 12. C'est pourquoi, les connexions entre les dispositifs de mémoire 12 et le contrôleur 4 peuvent être rnultiplexées. À titre d'exemple, des dispositifs de mémoire 12 peuvent être groupés en canaux 14A-14N (collectivement, en « canaux 14 »). Par exemple, comme illustré sur la figure 1, des dispositifs de mémoire 12AA-12AN peuvent être groupés en premiers canaux 14A, et des dispositifs de mémoire 12NA-12NN peuvent être groupés en Nième canaux 14N. Les dispositifs de mémoire 12 groupés en chacun des canaux 14 peuvent partager une ou plusieurs connexions au contrôleur 4. Par exemple, les dispositifs de mémoire 12 groupés en chacun de premiers canaux 14A peuvent être attachés à un bus d'E/S commun et à un bus de contrôle commun. Le dispositif de stockage 2 peut comporter un bus d'E/S commun et un bus de contrôle commun pour chaque canal respectif des canaux 14. Dans certains exemples, chacun des canaux 14 peut contenir un 7 ensemble de lignes d'autorisation du circuit (CE) qui peuvent être utilisées pour multiplexer des dikpositifs de mémoire sur chaque canal. Par exemple, chaque ligne CE peut être connectée à un dispositif de mémoire respectif des dispositifs de mémoire 12. De cette manière, le nombre de connexions séparées entre des dispositifs de mémoire 12 peut être réduit. De plus, comme chaque canal a un ensemble indépendant de connexions au contrôleur 4, la réduction de connexions peut ne pas affecter significativement le taux de débit de données car le contrôleur 4 peut envoyer simultanément des commandes différentes à chaque canal. [28] Dans certains exemples, le dispositif de stockage 2 peut comporter un certain nombre de dispositifs de mémoire 12 sélectionnés pour fournir une capacité totale qui est supérieure à la capacité accessible au dispositif hôte 15. Ceci s'appelle un sur-provisionnement. Par exemple, s'il est indiqué que le dispositif de stockage 2 comprend 240 Go de capacité de stockage accessible à l'utilisateur, le dispositif de stockage 2 peut comporter un nombre de dispositifs de mémoire 12 suffisant pour donner une capacité de stockage totale de 256 Go. Les 16 Go des dispositifs de stockage 12 ne sont pas toujours accessibles au dispositif hôte 15 ou à un utilisateur du dispositif hôte 15. Les dispositifs de stockage 12 additionnels peuvent fournir, à la place, des blocs additionnels 16 pour faciliter des écritures, une récupération de l'espace mémoire, une répartition de l'usure, et autres. En outre, les dispositifs de stockage 12 additionnels peuvent fournir des blocs additionnels 16 qui peuvent être utilisés si certains blocs usés deviennent inutilisables et sont mis hors service. La présence des blocs additionnels 16 peut permettre la mise hors service des blocs usés sans entraîner un changement de la capacité de stockage disponible pour le dispositif hôte 15. Dans certains exemples, la quantité de sur-provisionnement peut être définie comme p=(T-D)/D, où p est le taux de sur-provisionnement, T est le nombre total de blocs du dispositif de stockage 2, et D est le nombre de blocs du dispositif de stockage 2 qui sont accessibles au dispositif hôte 15. [29] Le dispositif de stockage 2 comprend un contrôleur 4, qui peut gérer une ou plusieurs opérations du dispositif de stockage 2. La figure 3 est un schéma de principe conceptuel et simplifié illustrant un contrôleur 20 donné à titre d'exemple, qui peut être un exemple de contrôleur 4 sur la figure 1. Dans certains exemples, le contrôleur 20 peut comporter un module d'écriture 22, un module de maintenance 24, un module de lecture 26, une pluralité de contrôleurs de canaux 28 A-28N (collectivement, de « contrôleurs de canaux 28 »), et un module de traduction d'adresses 20. Dans d'autres exemples, le contrôleur 20 peut comprendre des modules additionnels ou des unités matérielles, ou peut comporter un nombre moins important de modules ou d'unités matérielles. Le contrôleur 20 peut contenir un microprocesseur, un processeur de signal numérique (DSP), un circuit intégré spécifique à l'application (ASIC), un réseau prédiffusé programmable par l'utilisateur (FPGA), ou une autre circuiterie logique numérique. [30] Le contrôleur 20 peut s'interfacer avec le dispositif hôte 15 par l'intermédiaire de l'interface 10 et gérer le stockage et la récupération de données sur/depuis les dispositifs de mémoire 12. Par exemple, le module d'écriture 22 du contrôleur 20 peut gérer des écritures vers les dispositifs de mémoire 12. Par exemple, le module d'écriture 22 peut recevoir un message à partir du dispositif hôte 15 par l'intermédiaire de l'interface 10 qui ordonne au dispositif de stockage 2 de stocker des données associées à une adresse logique et les données. Le module d'écriture 22 peut gérer l'écriture des données dans les dispositifs de mémoire 12. [31] Par exemple, le module d'écriture 22 peut communiquer avec le module de traduction d'adresses 20, qui gère une traduction entre des adresses logiques utilisées par le dispositif hôte ,15 pour gérer des emplacements de stockage de données et des adresses de blocs physiques utilisées par le module d'écriture 22 pour commander l'écriture de données dans des dispositifs de mémoire. Le module de traduction d'adresses 30 du contrôleur 20 peut utiliser une couche ou une table de traduction flash qui traduit des adresses logiques (ou des adresses de blocs logiques) de données stockées par des dispositifs de mémoire 12 en adresses de blocs physiques de données stockées par des dispositifs de mémoire 12. Par exemple, le dispositif hôte 15 peut utiliser les adresses de blocs logiques des données stockées par des dispositifs de mémoire 12 dans des instructions ou des messages destinés au dispositif de stockage 2, alors que le module d'écriture 22 utilise des adresses de blocs physiques des données pour commander l'écriture de données dans des dispositifs de mémoire 12. (Similairement, le module de lecture 26 peut utiliser des adresses de blocs physiques pour commander la lecture de données à partir de dispositifs de mémoire 12). Les adresses de blocs physiques correspondent à des blocs physiques réels (par exemple, les blocs 16 de la figure 2) des dispositifs de mémoire 12. [32] De cette manière, le dispositif hôte 15 peut être autorisé à utiliser une adresse de bloc logique statique pour un certain ensemble de données, alors que l'adresse de bloc physique à 30 laquelle les données sont effectivement stockées peut changer. Le module de traduction d'adresses 20 peut maintenir la couche ou la table de traduction flash pour mapper les adresses de 9 blocs logiques aux adresses de blocs physiques afin de permettre l'utilisation de l'adresse de bloc logique statique par le dispositif hôte 15, alors que l'adresse de bloc physique des données peut changer, par exemple à cause d'une répartition de l'usure, d'une récupération de l'espace mémoire, ou autres. [33] Comme expliqué ci-dessus, le module d'écriture 24 du contrôleur 20 peut exécuter une ou plusieurs opérations pour gérer l'écriture de données dans des dispositifs de mémoire 16. Par exemple, le module d'écriture 24 peut gérer l'écriture de données dans des dispositifs de mémoire 16 en sélectionnant un ou plusieurs blocs à l'intérieur des dispositifs de mémoire 16 pour stocker les données, et en amenant les dispositifs de mémoire des dispositifs de mémoire 16 qui contiennent les blocs sélectionnés à stocker effectivement les données. Comme décrit ci-dessus, le module d'écriture 24 peut amener le module de traduction d'adresses 30 à mettre à jour la couche ou la table de traduction flash en fonction des blocs sélectionnés. Par exemple, le module d'écriture 24 peut recevoir un message à partir du dispositif hôte 4 qui comprend une unité de données et une adresse de bloc logique, sélectionner un bloc à l'intérieur d'un dispositif de mémoire particulier des dispositifs de mémoire 16 pour stocker les données, amener le dispositif de mémoire particulier des dispositifs de mémoire 16 à stocker effectivement les données (par exemple, par l'intermédiaire d'un contrôleur de canaux des contrôleurs de canaux 28A-28N qui correspond au dispositif de mémoire particulier), et amener le module de traduction d'adresses 30 à mettre à jour la couche ou la table de traduction flash pour indiquer que l'adresse de bloc logique correspond au bloc sélectionné à l'intérieur du dispositif de mémoire particulier. [34] La couche ou la table de traduction flash peut également faciliter la division de données reçues à partir du dispositif hôte 15 sur une pluralité d'adresses de blocs physiques. Par exemple, dans certains exemples, les données reçues à partir du dispositif hôte 15 peuvent être dans des unités qui sont plus grandes qu'un simple bloc. Ainsi, le contrôleur 20 peut sélectionner plusieurs blocs pour qu'ils stockent chacun une partie de l'unité de données. Au lieu de sélectionner plusieurs blocs à l'intérieur d'un seul dispositif de mémoire des dispositifs de mémoire 12 pour stocker les parties de l'unité de données, le contrôleur 20 peut sélectionner des blocs à partir d'une pluralité de dispositifs de mémoire 12 pour stocker les parties de l'unité de données. Le contrôleur 20 peut ensuite amener la pluralité de dispositifs de mémoire 12 à stocker les parties de l'unité de données en parallèle. De cette manière, le contrôleur 20 peut augmenter la vitesse à laquelle des données peuvent être stockées dans des dispositifs de mémoire 12 en écrivant des 10 parties des données vers différents dispositifs de mémoire 12, par exemple connectés à différents canaux 14. [35] Afin d'écrire un bit avec une valeur logique 0 (charge) sur un bit avec une valeur logique précédente 1 (non chargé), un grande quantité de courant est utilisée, ce qui peut provoquer des changements accidentels de la charge des cellules de mémoire flash adjacentes. Pour assurer une protection contre des changements accidentels, un bloc entier de cellules de mémoire flash peut être effacé à une valeur logique 1 (non chargé) avant que des données soient écrites dans des cellules à l'intérieur du bloc. C'est pourquoi, des cellules de mémoire flash peuvent être effacées au niveau bloc et écrites au niveau page. [36] Ainsi, même pour écrire une quantité de données qui utiliserait moins d'une page, le contrôleur 20 peut causer l'effacement d'un bloc entier. Ceci peut conduire à une amplification d'écriture, qui désigne le rapport entre la quantité de données reçues à partir du dispositif hôte 14 devant être écrites dans des dispositifs de mémoire 12 et la quantité de données effectivement écrites dans les dispositifs de mémoire 12. L'amplification d'écriture contribue à une usure plus rapide des cellules de mémoire flash que lorsqu'il n'y a pas d'amplification d'écriture. Une usure des cellules de mémoire flash peut se produire lorsque des cellules de mémoire flash sont effacées en raison des tensions relativement hautes utilisées pour effacer les cellules de mémoire flash. Sur une pluralité de cycles d'effacement, les tensions relativement hautes peuvent entraîner des changements physiques des cellules de mémoire flash. Enfin, les cellules de mémoire flash peuvent s'user, à tel point que des données ne peuvent plus être écrites dans les cellules. [37] Une technique que le contrôleur 20 peut mettre en oeuvre pour réduire une amplification d'écriture et l'usure des cellules de mémoire flash consiste à écrire des données reçues à partir du dispositif hôte 14 dans des blocs non utilisés (ou libres) (par exemple, les blocs 16 de la figure 2) ou dans des blocs partiellement utilisés. Par exemple, si le dispositif hôte 14 envoie des données vers le dispositif de stockage 2 qui changent peu par rapport aux données déjà stockées par le dispositif de stockage 2, le contrôleur 20 peut marquer les anciennes données comme étant périmées ou invalides, et écrire les nouvelles données dans un/des bloc(s) non utilisé(s). À la longue, ceci peut réduire un nombre d'opérations d'effacement auxquelles des blocs sont exposés, comparativement avec l'effacement du bloc qui contient les anciennes données et l'écriture des données mises à jour dans le même bloc. 11 [38] Comme des blocs vides (ou libres) ne contiennent pas de données existantes, des blocs libres peuvent être écrits sans effacer au préalable des données stockées par le bloc. Ainsi, une écriture dans des blocs libres peut s'avérer plus rapide qu'une écriture dans des blocs précédemment pleins ou partiellement pleins. L'écriture dans des blocs libres peut également réduire l'usure des dispositifs de mémoire 12, en raison du manque d'opération d'effacement avant l'opération d'écriture. Dans certains exemples, le dispositif de stockage 2 peut comporter un nombre de dispositifs de mémoire 12 suffisant pour maintenir une réserve de blocs libres, F, pour maintenir des vitesses d'écriture et pour réduire l'usure des dispositifs de mémoire 12. Le nombre de blocs libres, F, est associé au taux de sur-provisionnement, p, car le nombre de blocs libres, F, est égal au nombre de blocs accessibles par l'utilisateur, D, soustrait à partir du nombre total de blocs, T (F=T-D). [39] En réponse à la réception d'une commande d'écriture à partir du dispositif hôte 15, le module d'écriture 22 peut déterminer dans quels emplacements physiques (blocs 16) des dispositifs de mémoire 12 il peut écrire les données. Par exemple, le module d'écriture 22 peut demander au module de traduction d'adresses 30 ou au module de maintenance 24 une ou plusieurs adresses de blocs physiques qui sont vides (par exemple, ne pas stocker de données), partiellement vides (par exemple, seulement quelques pages du bloc stockent des données), ou stocker au moins quelques données invalides (ou périmées). Lors de la réception des une ou plusieurs adresses de blocs physiques, le module d'écriture 22 peut communiquer un message à un ou plusieurs des contrôleurs de canaux 28A-28N (collectivement, des « contrôleurs de canaux 28 »), qui amène les contrôleurs de canaux 28 à écrire les données dans les blocs sélectionnés. [40] Le module de lecture 26 peut commander similairement la lecture de données à partir des dispositifs de mémoire 12. Par exemple, le module de lecture 26 peut recevoir un message à partir du dispositif hôte 15 demandant des données avec une adresse de bloc logique associée. Le module de traduction d'adresses 30 peut convertir l'adresse de bloc logique en une adresse de bloc physique à l'aide de la couche ou de la table de traduction flash. Le module de lecture 26 peut ensuite commander un ou plusieurs des contrôleurs de canaux 28 pour récupérer les données à partir des adresses de blocs physiques. [41] Chaque contrôleur de canaux des contrôleurs de canaux 28 peut être connecté à un canal 30 respectif des canaux 14. Dans certains exemples, le contrôleur 20 peut comporter le même nombre de contrôleurs de canaux 28 que le nombre de canaux 14 du dispositif de stockage 2. Les 12 contrôleurs de canaux 28 peuvent exécuter le contrôle étroit de l'adressage, de la programmation (ou de l'écriture), de l'effacement, et de la lecture des dispositifs de mémoire 12 connectés aux canaux respectifs, par exemple sous le contrôle du module d'écriture 22, du module de lecture 26, et/ou du module de maintenance 24. [42] Le module de maintenance 24 peut être configuré pour exécuter des opérations relatives au maintien des performances et à l'extension de la durée de vie du dispositif de stockage 2 (par exemple, des dispositifs de mémoire 12). Par exemple, le module de maintenance 24 peut mettre en oeuvre au moins une action parmi une répartition de l'usure ou une récupération de l'espace mémoire. [43] Comme décrit ci-dessus, l'effacement de cellules de mémoire flash peut utiliser des tensions relativement hautes qui, sur une pluralité d'opérations d'effacement, peuvent entraîner des changements des cellules de mémoire flash. Après un certain nombre d'opérations d'effacement, des cellules de mémoire flash peuvent se dégrader à tel point que des données ne peuvent plus être écrites dans les cellules de mémoire flash, et qu'un bloc (par exemple, le bloc 16 de la figure 2) contenant ces cellules peut être mis hors service (plus utilisé par le contrôleur pour stocker des données). Pour augmenter la quantité de données qui peuvent être écrites dans des dispositifs de mémoire 12 avant que des blocs soient usés et mis hors service, le module de maintenance 24 peut mettre en oeuvre une répartition de l'usure. [44] Dans une répartition de l'usure, le module de maintenance 24 peut suivre un nombre 20 d'effacements d'un bloc ou d'un groupe de blocs, ou d'écritures dans un bloc ou dans un groupe de blocs, pour chaque bloc ou groupe de blocs. Le module de maintenance 24 peut provoquer l'écriture de données entrantes à partir du dispositif hôte 15 dans un bloc ou dans un groupe de blocs qui a subi relativement moins d'écritures ou d'effacements, pour tenter de maintenir un nombre approximativement égal d'écritures ou d'effacements pour chaque bloc ou groupe de blocs. De cette manière, chaque bloc des dispositifs de mémoire 12 peut s'user pratiquement au même rythme, augmentant ainsi la durée de vie du dispositif de stockage 2. [45] Bien qu'une amplification d'écriture et une usure des cellules de mémoire flash puissent être réduites en diminuant un nombre d'effacements et d'écritures de données dans différents blocs, ceci peut également produire des blocs comportant des données valides (nouvelles) et des données invalides (périmées). Pour résoudre ce problème, le contrôleur 20 peut mettre en oeuvre une récupération de l'espace mémoire. Dans une opération de récupération de l'espace mémoire, 13 le contrôleur 20 peut analyser le contenu des blocs des dispositifs de mémoire 12 pour déterminer un bloc qui contient un pourcentage élevé de données invalides (périmées). Le contrôleur 20 peut ensuite réécrire les données valides depuis le bloc vers un bloc différent, puis effacer le bloc. Ceci peut réduire une quantité de données invalides (périmées) stockées par des dispositifs de mémoire 12 et augmenter un nombre de blocs libres, mais en augmentant également une amplification d'écriture et une usure des dispositifs de mémoire 12. [46] Selon un ou plusieurs exemples de cette description, le dispositif de stockage 2 (par exemple, le module de maintenance 24) peut contrôler un bon état de fonctionnement du dispositif de stockage 2 en utilisant au moins un paramètre déterminé durant des opérations de récupération de l'espace mémoire. Par exemple, pour chaque opération de récupération de l'espace mémoire, le module de maintenance 24 peut déterminer un pourcentage de remplissage pour chaque bloc de dispositifs de stockage 12. Le pourcentage de remplissage désigne le rapport entre la quantité de données valides stockées par le bloc et la capacité totale du bloc. Un pourcentage de remplissage bas indique que le bloc stocke un petit pourcentage de données valides. Par exemple, un pourcentage de remplissage de 0% indique que le bloc ne stocke aucune donnée valide et un pourcentage de remplissage de 100% indique que toutes les données stockées par le bloc sont valides. Le module de maintenance 24 peut utiliser les pourcentages de remplissage durant la récupération de l'espace mémoire pour déterminer quels blocs contiennent des données valides et des données invalides, et peut redistribuer les données à l'intérieur des dispositifs de stockage pour combiner des données à partir de blocs partiellement remplis, afin de libérer des blocs vides. Le plus petit pourcentage de remplissage est désigné ici par « C ». [47] La figure 4 est un exemple de diagramme illustrant une distribution de blocs comme une fonction du pourcentage de remplissage durant le fonctionnement continu d'un dispositif de stockage. Comme représenté sur la figure 4, le nombre de blocs avec un pourcentage de remplissage donné peut suivre un profil de distribution unimodale, avec une traîne relativement plus longue vers les bas pourcentages de remplissage. Le point le plus à gauche sur la courbe, le plus proche de 0, définit le plus petit pourcentage de remplissage «C ». Durant un fonctionnement dans un état continu, la valeur de C peut rester relativement constante, d'une opération de récupération de l'espace mémoire à la suivante. Ceci peut être prédit en supposant que la capacité totale d'un seul bloc logique est N, et que le plus petit pourcentage de remplissagè observé à partir de l'échantillonnage précédent de pourcentages de remplissage est C. Avec ces 14 suppositions, la baisse de remplissage d'un bloc dans le pire des cas peut s'exprimer par (N/(TF))/N=1/(T-F)z-V, ce qui indique que l'on peut prévoir une valeur de C pratiquement identique d'un échantillonnage au suivant. Cependant, la valeur de C peut augmenter lentement avec le temps, au fur et à mesure qu'un nombre de blocs libres du dispositif de stockage 2 diminue. [48] Comme décrit ci-dessus, lorsque les blocs sont usés, des blocs de remplacement sont extraits à partir de la réserve de blocs libres pour remplacer les blocs usés. Ceci réduit le nombre de blocs libres. Ainsi, lorsque le nombre de blocs usés augmente, le nombre de blocs libres diminue proportionnellement. La figure 5 est un diagramme du facteur d'amplification d'écriture comme un rapport du taux de sur-provisionnement, p, pour un dispositif de stockage donné à titre d'exemple. Comme représenté sur la figure 5, lorsque le taux de sur-provisionnement diminue (indiquant moins de blocs totaux disponibles et moins de blocs libres), le facteur d'amplification d'écriture augmente. Si le taux de sur-provisionnement (et le nombre de blocs libres) devient trop bas, une répartition de l'usure et une récupération de l'espace mémoire peuvent s'avérer inefficaces pour maintenir des performances du dispositif de stockage 2, et ses performances peuvent ne pas récupérer. C'est pourquoi, il est important pour une opération prolongée du dispositif de stockage 2 de déterminer quand le bon état de fonctionnement du dispositif de stockage 2 se détériore avant d'atteindre un état de non récupération. La relation du facteur d'amplification d'écriture dans le pire des cas, W, par rapport au taux de sur-provisionnement peut être approximée comme W-=(1+p)/(2*p. [49] La figure 6 est un diagramme d'un début de récupération de l'espace mémoire dans le pire des cas par rapport à un taux de sur-provisionnement, pour un dispositif de stockage donné à titre d'exemple. Comme représenté sur la figure 6, le début de récupération de l'espace mémoire dans le pire des cas augmente lorsque le taux de sur-provisionnement diminue, et se corrèle généralement au facteur d'amplification d'écriture (représenté sur la figure 5). Le début de récupération de l'espace mémoire dans le pire des cas, représenté sur la figure 6, se corrèle au plus petit pourcentage de remplissage, C. Par exemple, la valeur C est égale à la valeur du début de récupération de l'espace mémoire dans le pire des cas, divisée par le nombre total du nombre de blocs. Dans l'exemple de la figure 6, le nombre total de blocs était 16.384, la valeur C étant donc la valeur de l'axe des y représentée sur la figure 6 divisée par 16.384. 150] Le module de maintenance 24 peut utiliser le plus petit pourcentage de remplissage, C, pour estimer le bon état de fonctionnement du dispositif de stockage 2 (par exemple, des 15 dispositifs de mémoire 12). Le module de maintenance 24 peut comparer le plus petit pourcentage de remplissage, C, à une valeur de seuil pour déterminer si le bon état de fonctionnement du dispositif de stockage 2 (par exemple, des dispositifs de mémoire 12) se détériore. Par exemple, site plus petit pourcentage de remplissage, C, est supérieur à la valeur de seuil, le module de maintenance 24 peut déterminer que le bon état de fonctionnement du dispositif de stockage 2 (par exemple, des dispositifs de mémoire 12) se détériore. [51] La valeur de seuil peut être prédéterminée, et peut être sélectionnée en fonction d'une détermination ou d'une estimation du moment où le bon état de fonctionnement du dispositif de stockage 2 se détériore à tel point qu'une action prédéterminée doit être effectuée avant que la détérioration ne s'accentue et que les performances du dispositif de stockage ne soient irrécupérables. Par exemple, la valeur de seuil, TV, peut être fixée comme TV=(W-1)/W, où W est le facteur d'amplification d'écriture dans le pire des cas. En réponse à la détermination que C excède TV, le module de maintenance 24 peut exécuter au moins une fonction prédéterminée, telle que modifier un paramètre d'exploitation du contrôleur 20 ou fournir un message ou une indication au dispositif hôte 15. [52] Par exemple, le module de maintenance 24 peut modifier un paramètre d'exploitation du contrôleur 20, comme suspendre toute écriture ultérieure dans le dispositif de stockage 2. Le module de maintenance 24 peut également envoyer une indication au dispositif hôte 15 selon laquelle le dispositif de stockage 2 est un dispositif de stockage en lecture seule, de sorte que le dispositif hôte 15 ne transmettra plus de commandes d'écriture au dispositif de stockage 2. En convertissant le dispositif de stockage 2 en un dispositif en lecture seule, une perte des données stockées dans le dispositif de stockage 2 peut être évitée. Comme autre exemple, le contrôleur 20 peut réduire (ralentir) des vitesses d'écriture dans les dispositifs de mémoire 12 du dispositif de stockage 2, ce qui laisse plus de temps au contrôleur 20 pour exécuter une récupération de l'espace mémoire. [53] Dans certains exemples, l'opération prédéterminée peut consister à fournir, par le module de maintenance 24, une indication du bon état de fonctionnement du dispositif de stockage 2 au dispositif hôte 12. Le dispositif hôte 15 peut ensuite exécuter optionnellement une ou plusieurs actions prédéterminées en réponse à la réception de l'indication. Par exemple, le dispositif hôte 15 peut être configuré pour ralentir (réduire) des instructions d'écriture dans le dispositif de stockage 2, laissant au contrôleur 20 du dispositif de stockage 2 plus de temps pour exécuter des 16 opérations de récupération de l'espace mémoire. Comme autre exemple, le dispositif hôte 15 peut être configuré pour changer une identification du dispositif de stockage 2 en lecture seule, de sorte que le dispositif hôte 15 n'envoie plus d'instructions d'écriture au dispositif de stockage 2. Comme exemple additionnel, le dispositif hôte 15 peut être configuré pour changer une capacité du dispositif de stockage 2 accessible au dispositif hôte 15, augmentant effectivement le nombre de blocs libres disponibles au contrôleur 20 du dispositif de stockage 2, avec lequel il exécute une répartition de l'usure et une récupération de l'espace mémoire. [54] Dans certains exemples, le module de maintenance 24 peut utiliser une pluralité de plus petites valeurs de pourcentage de remplissage, une pour chacune d'une pluralité d'opérations de récupération de l'espace mémoire, pour déterminer une plus petite valeur de pourcentage de remplissage moyenne. La figure 7 est un organigramme illustrant une technique donnée à titre d'exemple permettant d'estimer un bon état de fonctionnement d'un dispositif de stockage en fonction d'une plus petite valeur de pourcentage de remplissage. La technique de la figure 7 sera décrite avec une référence simultanée au dispositif de stockage 2 et au contrôleur 20 des figures 1 et 3, pour faciliter la description. Cependant, dans d'autres exemples, un dispositif de stockage ou un contrôleur différents peuvent mettre en oeuvre la technique de la figure 7, le dispositif de stockage 2 et le contrôleur 20 des figures 1 et 2 pouvant mettre en oeuvre une technique différente permettant d'estimer un bon état de fonctionnement du dispositif de stockage 2, ou les deux. [55] La technique de la figure 7 peut consister à déterminer, par le module de maintenance 24, le plus petit pourcentage de remplissage, C, sur l'ensemble des blocs (42). Comme décrit ci- dessus, le module de maintenance 24 peut déterminer un pourcentage de remplissage respectif pour chaque bloc des dispositifs de mémoire 12 dans le cadre d'une opération de récupération de l'espace mémoire. [56] La technique de la figure 7 consiste également à déterminer, par le module de maintenance 24, une plus petite valeur de pourcentage de remplissage moyenne, une moyenne C, pour une pluralité d'opérations de récupération de l'espace mémoire (44). Le module de maintenance 24 peut déterminer une valeur C pour chaque opération de récupération de l'espace mémoire. Le module de maintenance 24 peut provoquer le stockage de la valeur C, par exemple dans une mémoire tampon de valeur C ou dans une autre structure de données. Dans certains exemples, la mémoire tampon de valeur C ou une autre structure de données peut comporter N entrées, une valeur C pour chacune des dernières N opérations de récupération de l'espace 17 mémoire (y compris l'opération de récupération de l'espace mémoire courante). Lorsque le module de maintenance 24 exécute une opération de récupération de l'espace mémoire et détermine une valeur C pour l'opération de récupération de l'espace mémoire, la dernière valeur C peut être placée dans l'entrée 0 de la mémoire tampon de valeur C ou dans une autre structure de données, et chaque valeur stockée précédemment dans la mémoire tampon de valeur C ou dans une autre structure de données peut être incrémentée d'une valeur (par exemple, l'entrée précédente 0 devient l'entrée 1, l'entrée précédente N-m devient l'entrée N-m+1). L'entrée N-1, l'entrée finale dans la mémoire tampon de valeur C ou dans une autre structure de données est rejetée. De cette manière, la mémoire tampon de valeur C ou une autre structure de données stocke les valeurs C pour les dernières N opérations de récupération de l'espace mémoire. [57] N, la taille de la mémoire tampon de valeur C ou d'une autre structure de données, peut être sélectionné de sorte que la moyenne des N valeurs C lisse les valeurs C, réduisant le bruit dans le signal de valeur C. Additionnellement, N peut être sélectionné de telle sorte que la valeur C moyenne incorpore uniquement des valeurs C relativement récentes. Dans certains exemples, N peut être 1024. Le module de maintenance 24 détermine la plus petite valeur de pourcentage de remplissage moyenne (la valeur C moyenne) (44) en utilisant les N valeurs C stockées dans la mémoire tampon de valeur C ou dans une autre structure de données. De cette manière, la valeur C moyenne peut être une moyenne mobile des valeurs C pour les N dernières opérations de récupération de l'espace mémoire. [58] La figure 8 est un diagramme du début de récupération de l'espace mémoire moyen par rapport à un taux de sur-provisionnement pour un dispositif de stockage donné à titre d'exemple. Comme représenté sur la figure 8, le début de récupération de l'espace mémoire moyen augmente lorsque le taux de sur-provisionnement diminue, et se corrèle généralement au facteur d'amplification d'écriture (représenté sur la figure 5). Le début de récupération de l'espace mémoire moyen représenté sur la figure 8 se corrèle au plus petit pourcentage de remplissage moyen, la moyenne C. Par exemple, la valeur C moyenne est égale à la valeur du début de récupération de l'espace mémoire dans le pire des cas, divisée par le nombre total de nombre de blocs. Dans l'exemple de la figure 8, le nombre total de blocs était 16.384, de sorte que la valeur C moyenne est la valeur de l'axe des y représentée sur la figure 8 divisée par 16.384. [59] Le module de maintenance 24 compare ensuite la valeur C moyenne à une valeur de seuil prédéterminée (46). La valeur de seuil peut être prédéterminée, et peut être sélectionnée en 18 fonction d'une détermination ou d'une estimation du moment où le bon état de fonctionnement du dispositif de stockage 2 se détériore à tel point qu'une action prédéterminée doit être effectuée avant que la détérioration ne s'accentue et que les performances du dispositif de stockage ne soient irrécupérables. Par exemple, la valeur de seuil, TV, peut être fixée comme TV=(W-1)/W. [60] En réponse à la détermination que la valeur C moyenne excède TV (la branche « OUI » du bloc décisionnel 48), le module de maintenance 24 peut exécuter au moins une fonction prédéterminée (50). La fonction prédéterminée peut concerner le bon état de fonctionnement du dispositif de stockage 2 (par exemple, des dispositifs de mémoire 12), lorsque la valeur C moyenne excédant la TV indique que le bon état de fonctionnement des dispositifs de mémoire 12 se détériore. Par exemple, le module de maintenance 24 peut fournir un message qui amène le contrôleur 20 à modifier un paramètre d'exploitation ou fournir un message ou une instruction qui sont communiqués au dispositif hôte 15. Par exemple, le contrôleur 20 peut modifier un paramètre d'exploitation en ralentissant une réponse à une requête d'écriture reçue à partir du dispositif hôte 15 pour permettre au dispositif de stockage 2 (par exemple, au contrôleur 20) de maintenir des opérations d'écriture et de récupération de l'espace mémoire en fonction du taux (plus faible) de sur-provisionnement courant, ou en convertissant le dispositif de stockage 2 en un dispositif de lecture seule pour empêcher une perte de données. Comme autre exemple, le dispositif hôte 15 peut modifier son fonctionnement en réduisant une capacité de traitement d'écriture (par exemple, des instructions d'écriture) dans le dispositif de stockage 2. [61] Cependant, en réponse à la détermination que la valeur C moyenne n'excède pas TV (la branche « NON » du bloc décisionnel 48), le module de maintenance 24 peut commencer à nouveau la technique de la figure 7, et peut déterminer une valeur C sur la base des performances de l'opération de récupération de l'espace mémoire suivante (42). Le module de maintenance 24 peut ajouter cette nouvelle valeur C à la mémoire tampon de valeur C ou à une autre structure de données et rejeter l'ancienne valeur C à partir de la mémoire tampon de valeur C ou d'une autre structure de données. Le module de maintenance 24 peut déterminer la valeur C moyenne (44) en utilisant les N valeurs C stockées dans la mémoire tampon de valeur C ou dans une autre structure de données et comparer la valeur C moyenne à la TV (46). [62] Dans certains exemples, le module de maintenance 24 peut répéter cette technique à 30 chaque fois qu'une opération de récupération de l'espace mémoire est exécutée, jusqu'à ce que la valeur C moyenne excède la TV, le module de maintenance 24 exécutant alors l'action 19 prédéterminée concernant le bon état de fonctionnement du dispositif de stockage 2 (par exemple, des dispositifs de mémoire 12) (50). Dans d'autres exemples, le module de maintenance 24 peut répéter cette technique périodiquement, par exemple après un nombre prédéterminé d'opérations de récupération de l'espace mémoire, et non pas après chaque opération de récupération de l'espace mémoire. [63] De cette manière, le contrôleur du dispositif de stockage peut contrôler le bon état de fonctionnement du dispositif de stockage lors de l'exécution, en utilisant une valeur C unique ou une valeur C moyenne sur une pluralité d'opérations de récupération de l'espace mémoire. Cette valeur C unique ou cette valeur C moyenne est ensuite comparée à une valeur de seuil (TV) pour effectuer une détermination du bon état de fonctionnement du dispositif de stockage 2 (par exemple, des dispositifs de mémoire 12). Ainsi, la technique de contrôle du bon état de fonctionnement du dispositif de stockage peut être relativement légère et avoir une faible servitude. En outre, les techniques de contrôle du bon état de fonctionnement d'un dispositif de stockage décrites ici utilisent un paramètre suivi durant une récupération de l'espace mémoire. Les techniques décrites ici ne requièrent pas toujours la détermination d'un facteur d'amplification d'écriture sur la base de statistiques d'écriture effectives, peuvent permettre une détection ou une prédiction précoce de la détérioration du bon état de fonctionnement d'un dispositif de stockage, et/ou peuvent être mises en oeuvre par le contrôleur du dispositif de stockage plutôt que par le dispositif hôte.. [64] Les techniques présentées dans cette description peuvent être mises en oeuvre, au moins en partie, sous des formes matérielle, logicielle, micrologicielle, ou avec n'importe quelle combinaison de celles-ci. Par exemple, divers aspects des techniques décrites peuvent être mis en oeuvre à l'intérieur d'un ou plusieurs processeurs, notamment un ou plusieurs microprocesseurs, des processeurs de signal numérique (DSP), des circuits intégrés spécifiques à l'application (ASIC), des réseaux prédiffusés programmables par l'utilisateur (FPGA), ou toute autre circuiterie logique intégrée ou discrète équivalente, ainsi que toute combinaison de tels composants. Le terme « processeur » ou « circuiterie de traitement » peut généralement désigner l'une quelconque des circuiteries logiques précédentes, seule ou en combinaison avec une autre circuiterie logique, ou toute autre circuiterie équivalente. Une unité de commande comportant un matériel peut également exécuter une ou plusieurs des techniques de cette description. 20 [65] De tels matériels, logiciels, et microprogrammes peuvent être mis en oeuvre à l'intérieur du même dispositif ou à l'intérieur de dispositifs séparés pour prendre en charge les diverses techniques décrites ici. De plus, l'un ou l'une quelconque des unités, des modules ou des composants décrits peut être mis en oeuvre avec d'autres ou séparément comme des dispositifs logiques discrets mais ifiteropérables. La description des différentes caractéristiques sous la forme de modules ou d'unités est destinée à souligner divers aspects fonctionnels et n'implique pas nécessairement que de tels modules ou de telles unités soient réalisés par des composants matériels, logiciels ou micrologiciels séparés. La fonctionnalité associée à un ou plusieurs modules ou à une ou plusieurs unités peut être exécutée par des composants matériels, logiciels 10 ou micrologiciels séparés, ou intégrée à l'intérieur de composants matériels, logiciels ou micrologiciels communs ou séparés. [66] Les techniques décrites dans cette description peuvent également être incorporées ou codées dans un article de fabrication comportant un support de stockage lisible par ordinateur codé avec des instructions. Les instructions intégrées ou codées dans un article de fabrication 15 comportant un support de stockage lisible par ordinateur codé peuvent amener un ou plusieurs processeurs programmables, ou d'autres processeurs, à mettre en oeuvre une ou plusieurs des techniques décrites ici, par exemple lorsque des instructions incluses ou codées dans le support de stockage lisible par ordinateur sont exécutées par les un ou plusieurs processeurs. Des supports de stockage lisibles par ordinateur peuvent comprendre une mémoire vive (RAM), une 20 mémoire morte (ROM), une mémoire en lecture seule programmable (PROM), une mémoire en lecture seule programmable effaçable (EPROM), une mémoire en lecture seule programmable effaçable électroniquement (EEPROM), une mémoire flash, un disque dur, un CD-ROM, une disquette, une cassette, des supports magnétiques, des supports optiques, ou d'autres supports lisibles par ordinateur. Dans certains exemples, un article de fabrication peut comporter un ou 25 plusieurs supports de stockage lisibles par ordinateur. [67] Dans certains exemples, un support de stockage lisible par ordinateur peut comporter un support non transitoire. Le terme « non transitoire » peut indiquer que le support de stockage n'est pas incorporé dans une onde porteuse ou dans un signal propagé. Dans certains exemples, un support de stockage non transitoire peut stocker des données qui changent avec le temps (par 30 exemple, dans une RAM ou une mémoire cache). 21 81 Divers exemples ont été décrits. Ces exemples ainsi que d'autres entrent dans le cadre des revendications suivantes. 22 REVENDICATIONS1. Dispositif de stockage comprenant : une pluralité de dispositifs de mémoire divisés logiquement en une pluralité de blocs ; et un contrôleur configuré pour : déterminer un pourcentage de remplissage respectif pour chaque bloc respectif de la pluralité de blocs ; déterminer le plus petit pourcentage de remplissage pour la pluralité de pourcentages de remplissage respectifs ; et 10 en réponse à la détermination que le plus petit pourcentage de remplissage excède une valeur de seuil prédéterminée, exécuter une action relative au bon état de fonctionnement du dispositif de stockage. 2. Dispositif de stockage selon la revendication 1, dans lequel le contrôleur est configuré 15 pour exécuter l'action relative au bon état de fonctionnement du dispositif de stockage en modifiant au moins un paramètre d'exploitation du contrôleur. 3. Dispositif de stockage selon la revendication 2, dans lequel le contrôleur est configuré pour modifier le paramètre d'exploitation du contrôleur en mettant au moins le dispositif de 20 stockage dans un état de lecture seule. 4. Dispositif de stockage selon la revendication 1, dans lequel le contrôleur est configuré pour exécuter l'action relative au bon état de fonctionnement du dispositif de stockage au moins en fournissant une indication à un dispositif hôte qui amène le dispositif hôte à modifier au moins 25 un paramètre d'exploitation. 5. Dispositif de stockage selon la revendication 1, dans lequel le contrôleur est configuré, pour chaque opération de récupération de l'espace mémoire respective d'une pluralité d'opérations de récupération de l'espace mémoire, pour : 30 déterminer un pourcentage de remplissage respectif pour chaque bloc de la pluralité de blocs du dispositif de stockage ; 23déterminer le plus petit pourcentage de remplissage respectif pour la pluralité de pourcentages de remplissage respectifs associés à l'opération de récupération de l'espace mémoire respective ; déterminer un plus petit pourcentage de remplissage moyen en fonction des plus petits pourcentages de remplissage respectifs ; et comparer le plus petit pourcentage de remplissage moyen à la valeur de seuil prédéterminée. 6. Dispositif de stockage selon la revendication 1, dans lequel le contrôleur est en outre configuré pour : déterminer un plus petit pourcentage de remplissage moyen en fonction du plus petit pourcentage de remplissage et des plus petits pourcentages de remplissage respectifs pour chacune d'une pluralité d'opérations de récupération de l'espace mémoire exécutées précédemment, et en réponse à la détermination que le plus petit pourcentage de remplissage moyen excède la valeur de seuil prédéterminée, exécuter l'action relative au bon état de fonctionnement du dispositif de stockage. 7. Dispositif de stockage selon la revendication 1, dans lequel la valeur de seuil égale (W- 1)/W, W=(1+p)/2*p, p-(T-D)/D, T étant le nombre total de blocs du dispositif de stockage et D étant le nombre de blocs accessibles à un dispositif hôte du dispositif de stockage pour écrire des données dans le dispositif de stockage. 8. Dispositif de stockage selon la revendication 1, dans lequel le dispositif de stockage comprend un disque électronique (SSD). 9. Procédé comprenant les étapes suivantes : déterminer, par un contrôleur d'un dispositif de stockage, un pourcentage de remplissage respectif pour chaque bloc respectif d'une pluralité de blocs du dispositif de stockage ; déterminer, par le contrôleur, le plus petit pourcentage de remplissage pour la pluralité de pourcentages de remplissage respectifs ; et 24en réponse à la détermination que le plus petit pourcentage de remplissage excède une valeur de seuil prédéterminée, exécuter, par le contrôleur, une action relative au bon état de fonctionnement du dispositif de stockage. 10. Procédé selon la revendication 9, dans lequel l'étape consistant à exécuter l'action relative au bon état de fonctionnement du dispositif de stockage comprend : modifier un paramètre d'exploitation du contrôleur. 11. Procédé selon la revendication 10, dans lequel l'étape consistant à modifier le paramètre d'exploitation du contrôleur comprend : mettre le dispositif de stockage dans un état de lecture seule. 12. Procédé selon la revendication 9, dans lequel l'étape consistant à exécuter l'action relative au bon état de fonctionnement du dispositif de stockage comprend : fournir une indication à un dispositif hôte qui amène le dispositif hôte à modifier au moins un paramètre d'exploitation. 13. Procédé selon la revendication 9, comprenant en outre, pour chaque opération de récupération de l'espace mémoire respective d'une pluralité d'opérations de récupération de l'espace mémoire, les étapes suivantes : déterminer, par le contrôleur, un pourcentage de remplissage respectif pour chaque bloc de la pluralité de blocs du dispositif de stockage ; déterminer, par le contrôleur, le plus petit pourcentage de remplissage respectif pour la pluralité de pourcentages de remplissage respectifs associés à l'opération de récupération de l'espace mémoire respective ; déterminer, par le contrôleur, un plus petit pourcentage de remplissage moyen en fonction des plus petits pourcentages de remplissage respectifs ; et comparer, par le contrôleur, le plus petit pourcentage de remplissage moyen à la valeur de seuil prédéterminée. 14. Procédé selon la revendication 9, comprenant en outre l'étape suivante : 25déterminer, par le contrôleur, un plus petit pourcentage de remplissage moyen en fonction du plus petit pourcentage de remplissage et des plus petits pourcentages de remplissage respectifs pour chacune d'une pluralité d'opérations de récupération de l'espace mémoire exécutées précédemment, et dans lequel, en réponse à la détermination que le plus petit pourcentage de remplissage excède la valeur de seuil prédéterminée, l'étape consistant à exécuter l'action relative au bon état de fonctionnement du dispositif de stockage comprend : en réponse à la détermination que le plus petit pourcentage de remplissage moyen excède une valeur de seuil prédéterminée, exécuter l'action relative au bon état de fonctionnement du dispositif de stockage. 15. Procédé selon la revendication 9, dans lequel la valeur de seuil égale (W-1)/W, W=(1+p)/2*p, p= (T-D)/D, T étant le nombre total de blocs du dispositif de stockage et D étant le nombre de blocs accessibles à un dispositif hôte du dispositif de stockage pour écrire des données dans le dispositif de stockage. 16. Support de stockage lisible par ordinateur comprenant des instructions qui, lorsqu'elles sont exécutées, configurent un ou plusieurs processeurs d'un dispositif de stockage pour : déterminer un pourcentage de remplissage respectif pour chaque bloc respectif d'une pluralité de blocs du dispositif de stockage ; déterminer le plus petit pourcentage de remplissage pour la pluralité de pourcentages de remplissage respectifs ; et en réponse à la détermination que le plus petit pourcentage de remplissage excède une valeur de seuil prédéterminée, exécuter une action relative au bon état de fonctionnement du dispositif de stockage. 17. Support de stockage lisible par ordinateur selon la revendication 16, comprenant en outre des instructions qui, lorsqu'elles sont exécutées, configurent un ou plusieurs processeurs du dispositif de stockage pour : déterminer un plus petit pourcentage de remplissage moyen en fonction du plus petit 30 pourcentage de remplissage et des plus petits pourcentages de remplissage respectifs pour 26chacune d'une pluralité d'opérations de récupération de l'espace mémoire exécutées précédemment, et dans lequel les instructions qui, lorsqu'elles sont exécutées, configurent les un ou plusieurs processeurs du dispositif de stockage pour, en réponse à la détermination que le plus petit pourcentage de remplissage excède la valeur de seuil prédéterminée, exécuter l'action relative au bon état de fonctionnement du dispositif de stockage comprennent des instructions qui, lorsqu'elles sont exécutées, configurent les un ou plusieurs processeurs du dispositif de stockage pour, en réponse à la détermination que le plus petit pourcentage de remplissage moyen excède une valeur de seuil prédéterminée, exécuter l'action relative au bon état de fonctionnement du dispositif de stockage. 18. Support de stockage lisible par ordinateur selon la revendication 16, comprenant en outre des instructions qui, lorsqu'elles sont exécutées, configurent un ou plusieurs processeurs du dispositif de stockage pour : déterminer un pourcentage de remplissage respectif pour chaque bloc de la pluralité de blocs du dispositif de stockage ; déterminer le plus petit pourcentage de remplissage respectif pour la pluralité de pourcentages de remplissage respectifs associés à l'opération de récupération de l'espace mémoire respective ; déterminer un plus petit pourcentage de remplissage moyen en fonction des plus petits pourcentages de remplissage respectifs ; et comparer le plus petit pourcentage de remplissage moyen à la valeur de seuil prédéterminée. 19. Système comprenant : des moyens destinés à déterminer un pourcentage de remplissage respectif pour chaque bloc respectif d'une pluralité de blocs du dispositif de stockage ; des moyens destinés à déterminer le plus petit pourcentage de remplissage pour la pluralité de pourcentages de remplissage respectifs ; et 27des moyens destinés à exécuter, en réponse à la détermination que le plus petit pourcentage de remplissage excède une valeur de seuil prédéterminée, une action relative au bon état de fonctionnement du dispositif de stockage. 20. Système selon la revendication 19, comprenant en outre : des moyens destinés à déterminer un plus petit pourcentage de remplissage moyen en fonction du plus petit pourcentage de remplissage et des plus petits pourcentages de remplissage respectifs pour chacune d'une pluralité d'opérations de récupération de l'espace mémoire exécutées précédemment, les moyens d'exécution comportant des moyens destinés à exécuter, en réponse à la détermination que le plus petit pourcentage de remplissage moyen excède une valeur de seuil prédéterminée, l'action relative au bon état de fonctionnement du dispositif de stockage. 28