Brevet FR3028656A1 — publié le 20160520

ALLOCATION ET DESALLOCATION DE RESSOURCES POUR LA GESTION DE L'ALIMENTATION DANS DES DISPOSITIFS DOMAINE TECHNIQUE [1] La présente invention concerne l'allocation de ressources, et plus particulièrement, l'allocation de ressources pour la gestion de l'alimentation. CONTEXTE DE L'INVENTION [2] Des dispositifs peuvent allouer et désallouer des ressources à diverses fins en soutien au fonctionnement global d'un dispositif. A titre d'exemple, un dispositif de stockage tel qu'un disque électronique (SSD, Solid State Drive), peut allouer et désallouer des ressources en soutien à l'accès à un tampon de données, au codage de vérification et de correction d'erreurs (ECC, Error Checking and Correction) lors du stockage de données en mémoire non volatile (par exemple, une mémoire flash), à l'accès à des canaux flash lors de l'extraction de données de la mémoire non volatile, et au décodage ECC lors de l'extraction de données de la mémoire non volatile. Dans les cas où le nombre de ressources est inférieur au nombre d'unités (qui peuvent être désignées sous le nom d'unités demandeuses"), le dispositif de stockage peut mettre en oeuvre une technique d'arbitrage (telle qu'une technique dite de chacun son tour) pour tenter de permettre un accès raisonnablement équilibré aux ressources d'une manière qui évite des retards excessifs. [3] Dans certains cas, le nombre de ressources est artificiellement limité pour obtenir un fonctionnement plus efficace du dispositif de stockage (par exemple, du point de vue de la consommation d'énergie). Plus précisément, une certaine partie des ressources disponibles peuvent être mises hors tension pour réduire la consommation d'énergie et les coûts 25 correspondants associés au fonctionnement des dispositifs de stockage. En limitant artificiellement le nombre de ressources dans certains contextes, les fabricants de dispositifs de stockage tentent d'équilibrer les performances avec le rendement de fonctionnement. A titre d'exemple, divers fabricants ont tenté de mettre dynamiquement sous tension les ressources qui étaient initialement mises hors tension afin d'améliorer les performances lorsque la demande de 30 ressources est forte et de mettre dynamiquement hors tension ces mêmes ressources afin d'améliorer le rendement de fonctionnement lorsque la demande de ressources est faible. 3028656 141 L'allocation et la désallocation dynamiques de ressources peuvent par conséquent permettre de mettre sous tension diverses ressources lorsque cela est nécessaire et les mettre hors tension lorsque cela n'est pas nécessaire. Les algorithmes développés pour faciliter cette allocation/désallocation de ressources permettant d'économiser l'énergie peuvent cependant être 5 soumis à des limitations affectant les 'structures de données d'allocation. Les structures de données du type premier entré premier sorti (FIFO, first-dans-first-out) ou les structures de données du type dernier entré premier sorti (LIFO, last-dans-first-out) utilisées pour l'allocation/la désallocation de ressources peuvent conduire à des répartitions aléatoires pour lesquelles des ressources désallouées sont entremêlées avec des ressources allouées, cela rendant 10 difficile de savoir quand une ressource particulière va être exigée avec un temps suffisant pour rendre ces ressources disponibles en temps utile pour traiter les demandes. Un matériel complexe peut être utilisé ou des processeurs polyvalents (tels qu'une unité centrale de traitement ou CPU, Central Processing Unit) peut être déployé pour faciliter l'allocation/la désallocation dynamique de ressources permettant d'équilibrer de manière adéquate le rendement de fonctionnement tout 15 en fournissant également des performances adéquates. Cependant, ce matériel dédié ou ces CPU réutilisées peuvent consommer une énergie significative, réduisant un grand nombre sinon la totalité des économies d'énergie réalisées par l'intermédiaire d'algorithmes d'allocation/désallocation dynamique. 20 RÉSUMÉ [5] Dans un exemple, un procédé consiste à déterminer, par une unité de commande d'un dispositif, le taux d'utilisation d'un premier sous-ensemble non nul d'une pluralité de ressources du dispositif, la pluralité de ressources étant allouées et libérées conformément à une structure de données de thermomètre, comparer, par l'unité de commande, le taux d'utilisation du premier 25 sous-ensemble non nul de la pluralité de ressources à un seuil séparant le premier sous-ensemble non nul de la pluralité de ressources d'un second sous-ensemble non nul de la pluralité de ressources, et mettre sous tension le second sous-ensemble non nul de la pluralité de ressources sur la base au moins de la comparaison. [6] Dans un autre exemple, un dispositif comprend un ou plusieurs processeurs configurés 30 pour déterminer le taux d'utilisation d'un premier sous-ensemble non nul d'une pluralité de ressources, la pluralité de ressources étant allouées et libérées conformément à une structure de 3028656 données de thermomètre, comparer le taux d'utilisation du premier sous-ensemble non nul de la pluralité de ressources à un seuil séparant le premier sous-ensemble non nul de la pluralité de ressources d'un second sous-ensemble non nul de la pluralité de ressources, et mettre sous tension le second sous-ensemble non nul de la pluralité de ressources sur la base au moins de la 5 comparaison, et une mémoire configuré pour stocker le seuil. [7] Dans un autre exemple, un support de stockage lisible par ordinateur non volatil comporte des instructions stockées sur celui-ci qui, lorsqu'elles sont exécutées, amènent un ou plusieurs processeurs à déterminer le taux d'utilisation d'un premier sous-ensemble non nul d'une pluralité de ressources, la pluralité de ressources étant allouées et libérées conformément à une 10 structure de données de thermomètre, comparer le taux d'utilisation du premier sous-ensemble non nul de la pluralité de ressources à un seuil séparant le premier sous-ensemble non nul de la pluralité de ressources d'un second sous-ensemble non nul de la pluralité de ressources, et mettre sous tension le second sous-ensemble non nul de la pluralité de ressources sur la base au moins de la comparaison. 15 [8] Les détails desdits un ou plusieurs exemples mentionnés ci-dessus sont présentés dans les dessins annexés et la description qui suit. D'autres caractéristiques, objets et avantages ressortiront de la description et des dessins, ainsi que des revendications. BRÈVE DESCRIPTION DES DESSINS 20 191 La figure 1 est un schéma conceptuel et synoptique illustrant un exemple d'environnement de stockage dans lequel un dispositif de stockage peut jouer le rôle de dispositif de stockage pour un dispositif hôte, conformément à une ou plusieurs techniques de la présente invention [10] La figure 2 est un schéma conceptuel et synoptique illustrant un exemple d'unité de 25 commande, conformément à une ou plusieurs techniques de la présente invention. [11] La figure 3 est un diagramme illustrant un module d'allocation de ressources général représenté de manière plus détaillée dans l'exemple de la figure 2. [12] La figure 4 est un schéma de principe illustrant de manière plus détaillée un décodeur ECC de la figure 2. 3 3028656 [13] Les figures 5A et 5B sont un organigramme illustrant un exemple de fonctionnement d'un dispositif de stockage lors de la mise en oeuvre des techniques d'allocation et de désallocation de ressources décrites dans le présent fascicule. [14] La figure 6 est un diagramme illustrant de manière plus détaillée la structure de données 5 de thermomètre de la figure 3. DESCRIPTION DÉTAILLÉE [15] Conformément à une ou plusieurs techniques de la présente invention, une unité de commande d'un dispositif (tel qu'un SSD, dans lequel ces unités de commande peuvent être 10 désignées sous le nom d'unité de commande flash) peut effectuer l'allocation et la désallocation dynamiques de ressources en utilisant une structure de données de type thermomètre qui alloue des ressources d'une manière qui facilite l'allocation et la désallocation selon une succession fixe. Plutôt que de baser l'allocation et la désallocation sur des structures de données qui conduisent à une répartition aléatoire d'allocations et de désallocations de ressources, la structure de données 15 de type thermomètre peut conserver un ordre fixe des ressources identifiées en augmentant de façon incrémentielle des identifiants de ressources. Le mécanisme d'allocation peut alors agir conformément à une règle selon laquelle des ressources disponibles ayant l'identifiant de ressource le plus faible sont allouées avant l'allocation de ressources disponibles ayant un identifiant de ressource relativement plus élevé. Il en résulte que la structure de données de 20 thermomètre peut exposer des "points dits chauds" représentatifs d'une utilisation fréquente et de "points froids" représentatifs d'une utilisation peu fréquente par l'intermédiaire d'une analyse statistique des ressources représentées par des composantes de la structure de données de thermomètre. En identifiant ces points chauds et froids, l'unité de commande peut définir dynamiquement un seuil. Plus précisément, l'unité de commande flash peut identifier un seuil par l'intermédiaire d'une analyse statistique du taux d'utilisation des ressources au cours du temps. Le seuil permet de définir une frontière séparant celles des ressources qui doivent rester sous tension de celles des ressources qui peuvent être mises hors tension. [16] L'unité de commande flash peut régler ce seuil et actualiser dynamiquement le seuil au cours du temps afin de prendre en compte un certain nombre de scénarios différents pouvant se 30 produire dans un SSD. A titre d'exemple, l'unité de commande flash peut augmenter le seuil pendant que le taux d'utilisation de ressources de mémoire est accru pendant le pic d'utilisation, 4 3028656 pour ainsi augmenter les performances lorsque le taux d'utilisation exige plus de ressources de mémoire. L'unité de commande flash peut également réduire le seuil pendant une utilisation relativement réduite des ressources de mémoire pendant une utilisation hors pic, pour ainsi améliorer le rendement de fonctionnement en mettant hors tension un plus grand nombre des 5 ressources. A titre d'autre exemple, l'unité de commande flash peut, au cours du temps, observer que le taux d'utilisation de décodeurs ECC a augmenté du fait de l'augmentation des défauts d'une mémoire flash au fur et à mesure que la mémoire flash subit une usure. L'unité de commande flash peut, en réponse à la détection de cette augmentation du taux d'utilisation de décodeurs ECC, augmenter dynamiquement le seuil afin de mettre sous tension un plus grand 10 nombre de décodeurs ECC. A cet égard, les techniques peuvent favoriser l'amélioration du rendement de fonctionnement au début du déploiement du SSD et réduire le rendement de fonctionnement en augmentant le seuil afin de conserver les mêmes performances lors du déploiement ultérieur du SSD. [17] La figure 1 est un schéma conceptuel et synoptique illustrant un exemple 15 d'environnement de stockage 2 dans lequel le dispositif de stockage 6 peut jouer le rôle de dispositif de stockage pour le dispositif hôte 4, conformément à une ou plusieurs techniques de la présente invention. A titre d'exemple, le dispositif hôte 4 peut utiliser des dispositifs de mémoire non volatils contenus dans le dispositif de stockage 6 pour stocker et extraire des données. Dans certains exemples, l'environnement de stockage 2 peut comprendre une pluralité de dispositifs de 20 stockage, tels que le dispositif de stockage 6, pouvant fonctionner en tant que matrice de stockage. A titre d'exemple, l'environnement de stockage 2 peut comprendre une pluralité de dispositifs de stockage 6 configurés en tant que matrice redondante de disques peu coûteux/indépendants (RAID, Redundant Array of Inexpensive/Independent Disks) qui jouent collectivement le rôle de dispositif de stockage de masse pour le dispositif hôte 4. 25 [18] L'environnement de stockage 2 peut comprendre le dispositif hôte 4 qui peut stocker et/ou extraire des données dans et/ou depuis un ou plusieurs dispositifs de stockage, tels que le dispositif de stockage-6. Comme illustré sur la figure 1, le dispositif hôte 4 peut communiquer avec le dispositif de stockage 6 via une interface 14. Le dispositif hôte 4 peut comprendre l'un quelconque d'une large gamme de dispositifs, parmi lesquels des serveurs informatiques, des unités de stockage reliées au réseau (NAS, Network Attached Storage), des ordinateurs de bureau, des ordinateurs blocs-notes (c'est-à-dire portables), des ordinateurs-tablettes, des boîtiers 5 3028656 adaptateurs, des combinés téléphoniques tels que les téléphones dits "intelligents", des blocs-notes "intelligents", des postes de télévision, des caméras, des dispositifs d'affichage, des lecteurs multimédia numériques, des consoles de jeux vidéo, des dispositifs de diffusion vidéo en flux, etc. 5 [19] Comme illustré sur la figure 1 le dispositif de stockage 6 peut comprendre une unité de commande 8, une matrice de mémoire non volatile 10 (NVMA 10, Non-Volatile Memory Array), une alimentation électrique 11, une mémoire volatile 12, et une interface 14. Dans certains exemples, le dispositif de stockage 6 peut comprendre des composants supplémentaires non représentés sur la figure 1 pour plus de clarté. A titre d'exemple, le dispositif de stockage 6 10 peut comprendre une carte imprimée (PB, Printed Board) à laquelle des composants du dispositif de stockage 6 sont fixés mécaniquement et qui comprend des pistes électriquement conductrices qui interconnectent électriquement des composants du dispositif de stockage 6 ; etc. Dans certains exemples, les dimensions physiques et les configurations des connecteurs du dispositif de stockage 6 peuvent respecter un ou plusieurs facteurs de forme normalisés. Certains exemples 15 de facteurs de forme normalisés comprennent, sans aucune limitation, un lecteur de disque dur de 3,5 pouces (HDD, Hard Disk Drive), un HDD de 2,5 pouces, un HDD de 1,8 pouces, une interconnexion de composants périphériques (PCI, Peripheral Component interconnect), une PCI étendue (PCI-X), une PCI Express (PCIe) (par exemple, PCIe x 1, x4, x8, x16, PCIe Mini Card, MiniPCI, etc.). Dans certains exemples, le dispositif de stockage 6 peut être directement relié 20 (par exemple, directement soudé) à une carte mère du dispositif hôte 4. [20] Le dispositif de stockage 6 peut comprendre une interface 14 pour l'interfaçage avec le dispositif hôte 4. L'interface 14 peut comprendre l'un ou les deux d'un bus de données pour échanger des données avec le dispositif hôte 4 et d'un bus de commande pour échanger des commandes avec le dispositif hôte 4. L'interface 14 peut fonctionner conformément à un 25 protocole approprié quelconque. A titre d'exemple, l'interface 14 peut fonctionner conformément à un ou plusieurs des protocoles suivants : raccordement par technologie avancée (ATA, Advanced Technology Attachment) (comme le serial-ATA (SATA), et le parallel-ATA (PATA)), le système Fibre Channel, l'interface pour petits systèmes informatiques (SCSI), le SCSI raccordé en série (SAS, Serially Attached SCSI), une interconnexion de composants périphériques (PCI), et la PCI-express. La connexion électrique de l'interface 14 (par exemple, le bus de données, le bus de commande, ou les deux) est électriquement connectée à l'unité de 6 3028656 commande 8, en établissant une connexion électrique entre le dispositif hôte 4 et l'unité de commande 8, cela permettant d'échanger des données entre le dispositif hôte 4 et l'unité de commande 8. Dans certains exemples, la connexion électrique de l'interface 14 peut également permettre au dispositif de stockage 6 de recevoir une alimentation en provenance du dispositif 5 hôte 4. Comme illustré sur la figure 1, une alimentation électrique 11 peut recevoir une alimentation en provenance du dispositif hôte 4 via l'interface 14. [21] Le dispositif de stockage 6 peut comprendre une NVMA 10 qui peut comprendre une pluralité de dispositifs de mémoire 16Aa-16Nn (collectivement désignés "dispositifs de mémoire 16") qui peuvent chacun être configurés pour stocker et/ou extraire des données. A titre 10 d'exemple, un dispositif de mémoire parmi les dispositifs de mémoire 16 peut recevoir des données et un message en provenance de l'unité de commande 8 qui ordonne au dispositif de mémoire de stocker des données. De même, le dispositif de mémoire parmi les dispositifs de mémoire 16 peut recevoir un message en provenance de l'unité de commande 8 qui ordonne au dispositif de mémoire d'extraire des données. Dans certains exemples, chacun des dispositifs de 15 mémoire 6 peut être désigné sous le nom de dé. Dans certains exemples, une puce physique unique peut comprendre une pluralité de dés (c'est-à-dire une pluralité de dispositifs de mémoire 16). Dans certains exemples, chacun des dispositifs de mémoire 16 peut être configuré pour stocker des quantités relativement grandes de données (par exemple, 128 Mo, 256 Mo, 512 Mo, 1 Go, 2 Go, 4 Go, 8 Go, 16 Go, 32 Go, 64 Go, 128 Go, 256 Go, 512 Go, 1 To, etc.). 20 [22] Dans certains exemples, les dispositifs de mémoire 16 peuvent comprendre un type quelconque de dispositifs de mémoire non volatils. Certains exemples de dispositifs de mémoire 16 comprennent, sans aucune limitation, des dispositifs de mémoire flash, des dispositifs de mémoire à changement de phase (PCM, Phase Change Memory), des dispositifs de mémoire vive résistifs (ReRAM, Resistive Random Access Memory), des dispositifs de mémoire vive 25 magnétorésistifs (MRAM, Magnetoresistive Random Access Memory), une mémoire vive ferroélectrique (F-RAM, Ferroelectric Random Access Memory), des dispositifs de mémoire holographiques, et tout autre type de dispositifs de mémoire non volatils. [23] Les dispositifs de mémoire flash peuvent comprendre des dispositifs de mémoire flash de type NON-ET (NAND) ou NON-OU (NOR), et peuvent stocker des données sur la base d'une 30 charge contenue dans une grille flottante d'un transistor pour chaque cellule de mémoire flash. Dans les dispositifs de mémoire flash NAND, le dispositif de mémoire flash peut être divisé en 7 3028656 une pluralité de blocs qui peuvent être divisés en une pluralité de pages. Chaque bloc de la pluralité de blocs au sein d'un dispositif de mémoire particulier peut comprendre une pluralité de cellules NAND. Des lignes de cellules NAND peuvent être électriquement connectées en utilisant une ligne de mots pour définir une page d'une pluralité de pages. Les cellules 5 respectives de chacune de la pluralité de pages peuvent être électriquement connectées à des lignes de bits respectives. L'unité de commande 6 peut écrire des données et lire des données dans et depuis les dispositifs de mémoire flash NAND au niveau des pages et effacer les données des dispositifs de mémoire flash NAND au niveau des blocs. [24] Dans certains exemples, il peut ne pas être pratique de connecter séparément l'unité de 10 commande 8 à chaque dispositif de mémoire parmi les dispositifs de mémoire 16. De ce fait, les connexions entre les dispositifs de mémoire 16 et l'unité de commande 8 peuvent être multiplexées. A titre d'exemple, les dispositifs de mémoire 16 peuvent être groupés en canaux 18A-18N (collectivement désignés "canaux 18"). A titre d'exemple, comme illustré sur la figure 1, les dispositifs de mémoire 16Aa-16Nn peuvent être groupés en un premier canal 18A, et les 15 dispositifs de mémoire 16Na-16Nn peuvent être groupés en un Nème canal 18N. Les dispositifs de mémoire 16 groupés en chacun des canaux 18 peuvent partager une ou plusieurs connexions à l'unité de commande 8. A titre d'exemple, les dispositifs de mémoire 16 groupés en un premier canal 18A peuvent être raccordés à un bus 1/0 commun et à un bus de commande commun. Le dispositif de stockage 6 peut comprendre un bus I/O commun et un bus de commande commun 20 pour chaque canal respectif parmi les canaux 18. Dans certains exemples, chaque canal parmi les canaux 18 peut comprendre un jeu de lignes d'activation de puce (CE, Chip Enable) qui peuvent être utilisées pour multiplexer les dispositifs de mémoire sur chaque canal. A titre d'exemple, chaque ligne CE peut être connectée à un dispositif de mémoire respectif parmi les dispositifs de mémoire 18. Ainsi, le nombre de connexions séparées entre l'unité de commande 8 et les 25 dispositifs de mémoire 18 peut être réduit. En outre, comme chaque canal comporte un jeu indépendant de connexions à l'unité de commande 8, la réduction des connexions peut ne pas affecter notablement le débit de données étant donné que l'unité de commande 8 peut simultanément délivrer des commandes différentes à chaque canal. [25] Dans certains exemples, le dispositif de stockage 6 peut comprendre un certain nombre 30 de dispositifs de mémoire 16 sélectionnés pour fournir une capacité totale qui est supérieure à la capacité accessible au dispositif hôte 4. Cela est désigné sous le nom de surdimensionnement. A 8 3028656 titre d'exemple, si le dispositif de stockage 6 est annoncé comme comprenant 240 Go de capacité de stockage accessible à l'utilisateur, le dispositif de stockage 6 peut comprendre un nombre suffisant de dispositifs de mémoire 16 pour obtenir une capacité de stockage totale de 256 Go. Les dispositifs de stockage 16 de 16 Go peuvent ne pas être accessibles au dispositif hôte 4 ou à 5 un utilisateur du dispositif hôte 4. Au lieu de cela, des dispositifs de stockage 16 supplémentaires peuvent fournir des blocs supplémentaires pour faciliter les écritures, la récupération de place, la réparation de l'usure, etc. Par ailleurs, les dispositifs de stockage 16 supplémentaires peuvent comporter des blocs supplémentaires qui peuvent être utilisés si certains blocs subissent une usure, deviennent inutilisables et sont mis hors service. La présence des blocs supplémentaires 10 permet de mettre hors service les blocs usagés sans provoquer de modification de la capacité de stockage disponible au dispositif hôte 4. Dans certains exemples, le degré de surdimensionnement peut être défini par p=(T-D)/D, où p est le rapport de surdimensionnement, T est la capacité de stockage totale du dispositif de stockage 2, et D est la capacité de stockage du dispositif de stockage 2 qui est accessible au dispositif hôte 4. 15 [26] Le dispositif de stockage 6 peut comprendre une alimentation électrique 11, qui peut alimenter en courant un ou plusieurs des composants du dispositif de stockage 6. Lors d'un fonctionnement dans un mode standard, une alimentation électrique 11 peut alimenter en courant les un ou plusieurs composants en utilisant l'alimentation fournie par un dispositif externe, tel que le dispositif hôte 4. A titre d'exemple, l'alimentation électrique 11 peut alimenter en courant 20 les un ou plusieurs composants en utilisant l'alimentation reçue en provenance du dispositif hôte 4 via l'interface 14. Dans certains exemples, l'alimentation électrique 11 peut comprendre un ou plusieurs composants de stockage d'énergie configurés pour alimenter en courant les un ou plusieurs composants lors d'un fonctionnement dans un mode d'arrêt, comme dans les cas où l'alimentation cesse d'être reçue du dispositif externe. L'alimentation électrique 11 peut ainsi 25 jouer le rôle de source d'énergie secourue embarquée. Certains exemples desdits un ou plusieurs composants de stockage d'énergie comprennent, sans aucune limitation, des condensateurs, des super-condensateurs, des batteries, etc. Dans certains exemples, la quantité d'énergie qui peut être stockée par lesdits un ou plusieurs composants de stockage d'énergie peut être fonction du coût et/ou de la taille (par exemple, de la superficie / du volume) desdits un ou plusieurs 30 composants de stockage d'énergie. En d'autres termes, lorsque la quantité d'énergie stockée par 9 3028656 lesdits un ou plusieurs composants de stockage d'énergie croît, le coût et/ou la taille desdits un ou plusieurs composants de stockage d'énergie croît également. [27] L'unité de commande 8 peut effectuer une forme d'allocation et de désallocation dynamiques de ressources en soutien à une ou plusieurs des opérations de lecture et des 5 opérations d'écriture. L'unité de commande 8 peut, comme décrit de manière plus détaillée en référence à la figure 2, allouer et désallouer des ressources en soutien à l'accès à un tampon de données, au codage de vérification et de correction d'erreurs (ECC) lors du stockage de données en mémoire non volatile (par exemple, une mémoire flash), à l'accès à des canaux flash lors de l'extraction de données de la mémoire non volatile, et au décodage ECC lors de l'extraction de 10 données de la mémoire non volatile. Dans les cas où le nombre de ressources est inférieur au nombre d'unités demandeuses (qui peuvent être désignées sous le nom d'unités demandeuses"), l'unité de commande 8 peut mettre en oeuvre une ou plusieurs techniques d'arbitrage pour tenter de permettre un accès raisonnablement équilibré aux ressources d'une manière qui évite des retards excessifs. 15 [28] Dans certains cas, le nombre de ressources est artificiellement limité pour obtenir un fonctionnement plus efficace du dispositif de stockage (par exemple, du point de vue de la consommation d'énergie). Plus précisément, l'unité de commande 8 peut mettre hors tension une certaine partie des ressources disponibles pour réduire la consommation d'énergie et les coûts correspondants associés au fonctionnement du dispositif de stockage. En limitant artificiellement 20 le nombre de ressources dans certains contextes, l'unité de commande 8 peut tenter d'équilibrer les performances avec le rendement de fonctionnement. A titre d'exemple, l'unité de commande 8 peut mettre dynamiquement sous tension les ressources qui sont initialement mises hors tension afin d'améliorer les performances lorsque la demande de ressources est forte et mettre dynamiquement hors tension ces mêmes ressources afin d'améliorer le rendement de 25 fonctionnement lorsque la demande de ressources est faible. [29] L'allocation et la désallocation dynamiques de ressources peuvent par conséquent permettre de mettre sous tension diverses ressources lorsque cela est nécessaire et les mettre hors tension lorsque cela n'est, pas nécessaire. Les algorithmes développés pour faciliter cette allocation/désallocation de ressources permettant d'économiser l'énergie peuvent cependant être 30 soumis à des limitations affectant l'allocation/désallocation des structures de données. A titre d'illustration, un algorithme d'allocation peut utiliser une structure de données du type premier 10 3028656 entré premier sorti, telle qu'une file d'attente. Dans cette technique d'allocation, un identifiant de ressource est affecté à chacune des ressources. L'arbitre de cette technique d'allocation peut pousser chacun des identifiants de ressources dans la file d'attente, l'identifiant de ressource le plus faible étant par exemple le premier alloué (ou, selon la terminologie des files d'attente, 5 "éjecté" de la file d'attente). L'arbitre peut allouer la ressource associée à l'identifiant de ressource éjecté de la file d'attente. L'éjection de l'identifiant de ressource a pour effet de retirer cette ressource afin qu'elle ne soit pas allouée à deux unités demandeuses ou plus. [30] Cependant, les temps d'utilisation des ressources par unité demandeuse peuvent varier, ce qui signifie que l'arbitre peut renvoyer aléatoirement l'identifiant de ressource dans la file 10 d'attente. Il résulte de ce temps d'allocation de ressources variable que les identifiants de ressources deviennent rapidement répartis aléatoirement dans la file d'attente. Cette répartition aléatoire d'identifiants de ressources peut réduire l'aptitude à identifier le nombre de ressources qui sont exigées pour chaque trame de temps quelconque donnée en gênant ainsi l'alimentation dynamique des ressources afin d'équilibrer le rendement de fonctionnement avec les 15 performances. Les techniques d'allocation qui utilisent les structures de données du type dernier entré premier sorti (LIFO) pour l'allocation/la désallocation de ressources peuvent de même conduire à des répartitions aléatoires d'identifiants de ressources. Pour remédier à ces limitations affectant les techniques d'allocation, les unités de commande peuvent incorporer un matériel complexe ou des processeurs polyvalents (tels qu'une unité centrale de traitement ou CPU) pour 20 faciliter l'allocation/la désallocation dynamique de ressources permettant d'équilibrer de manière adéquate le rendement de fonctionnement tout en fournissant également des performances adéquates. Cependant, ce matériel dédié ou ces CPU réutilisées peuvent consommer une énergie notable, réduisant un grand nombre sinon la totalité des économies d'énergie réalisées au moyen d'algorithmes d'allocation/désallocation dynamiques. 25 [31] Conformément à une ou plusieurs techniques de la présente invention, l'unité de commande 8 d'un dispositif de stockage 6 peut effectuer l'allocation et la désallocation dynamiques de ressources en utilisant une structure de données de type thermomètre qui alloue des ressources d'une manière qui facilite l'allocation et la désallocation selon une succession fixe. Plutôt que de baser l'allocation et la désallocation sur des structures de données qui conduisent à 30 une répartition aléatoire d'allocations et de désallocations de ressources, la structure de données de type thermomètre peut conserver un ordre fixe des ressources identifiées en augmentant de 11 3028656 manière incrémentielle, et potentiellement monotone, des identifiants de ressources. Le mécanisme d'allocation peut alors fonctionner conformément à une règle selon laquelle des ressources disponibles ayant l'identifiant de ressource le plus faible sont allouées avant l'allocation de ressources disponibles ayant un identifiant de ressource relativement plus élevé. Il 5 en résulte que la structure de données de thermomètre peut exposer des "points dits chauds" représentatifs d'une utilisation fréquente et de "points froids" représentatifs d'une utilisation peu fréquente au moyen d'une analyse statistique des ressources représentées par des composantes de la structure de données de thermomètre. En identifiant ces points chauds et froids, l'unité de commande 8 peut définir dynamiquement un seuil. Plus précisément, l'unité de commande flash 10 peut identifier un seuil au moyen d'une analyse statistique du taux d'utilisation des ressources au cours du temps. Le seuil permet de définir une frontière séparant celles des ressources qui doivent rester sous tension et celles des ressources qui peuvent être mises hors tension. [32] L'unité de commande 8 peut régler ce seuil et actualiser dynamiquement le seuil au cours du temps afin de prendre en compte un certain nombre de cas. A titre d'exemple, l'unité de 15 commande 8 peut augmenter le seuil pendant une utilisation accrue de ressources de mémoire pendant le pic d'utilisation, pour ainsi augmenter les performances lorsque le taux d'utilisation exige plus de ressources de mémoire. L'unité de commande 8 peut également réduire le seuil pendant une utilisation relativement réduite des ressources de mémoire pendant une utilisation hors pic, pour ainsi améliorer potentiellement le rendement de fonctionnement électrique en 20 mettant hors tension un plus grand nombre des ressources. A titre d'autre exemple, l'unité de commande 8 peut identifier, au cours du temps, les cas où le taux d'utilisation de décodeurs ECC a augmenté du fait de l'augmentation des défauts de mémoire non volatile 10 à mesure que la mémoire non volatile 10 subit une usure. L'unité de commande 8 peut, en réponse à la détection de cette augmentation du taux d'utilisation de décodeurs ECC, augmenter dynamiquement le 25 seuil afin de mettre sous tension un plus grand nombre de décodeurs ECC. A cet égard, les techniques peuvent favoriser l'amélioration du rendement de fonctionnement au début du déploiement du SSD et réduire le rendement de fonctionnement en augmentant le seuil afin de conserver les mêmes performances lors du déploiement ultérieur du SSD. [33] A cet égard, l'unité de commande 8 peut déterminer le taux d'utilisation d'un premier 30 sous-ensemble non nul (ou, en d'autres termes, d'une partie) d'une pluralité de ressources, la pluralité de ressources étant allouées et libérées conformément à une structure de données 12 3028656 analogue à un thermomètre, qui peut également être désignée sous le nom de structure de données de thermomètre. L'unité de commande 8 peut alors comparer le taux d'utilisation du premier sous-ensemble non nul de la pluralité de ressources à un seuil séparant le premier sous-ensemble non nul de la pluralité de ressources d'un second sous-ensemble non nul de ressources. 5 [34] L'unité de commande 8 peut, dans certains exemples, traduire le taux d'utilisation en un certain nombre des ressources avant d'effectuer cette comparaison. A titre d'exemple, le taux d'utilisation peut être défini sous la forme d'un nombre de demandes pour une certaine trame de temps. L'unité de commande 8 peut alors déterminer ou obtenir d'une autre manière un certain nombre de demandes pour ladite trame de temps que chacune des ressources est capable de 10 gérer. L'unité de commande 8 peut alors diviser le nombre de demandes pour ladite trame de temps par le nombre de demandes pour la même trame de temps que la ressource est capable de gérer de manière à déterminer le nombre attendu des ressources qui sont exigées. [35] L'unité de commande 8 peut alors comparer le nombre attendu des ressources qui peuvent être exigées (qui représente en fait le taux d'utilisation) au seuil. L'unité de commande 8 peut 15 mettre sous tension le second sous-ensemble non nul de ressources sur la base au moins de la comparaison du nombre attendu des ressources qui peuvent être exigées pour ce seuil. De même, l'unité de commande 8 peut continuer de déterminer ou d'obtenir d'une autre manière le taux d'utilisation au cours du temps et peut comparer ce taux d'utilisation au seuil après avoir mis sous tension ou, en d'autres termes, activé le second sous-ensemble non nul de ressources. Lorsque le 20 taux d'utilisation est inférieur à celui qui est permis par le seuil, l'unité de commande 8 peut mettre hors tension le second sous-ensemble non nul de ressources. [36] La figure 2 est un schéma conceptuel et synoptique illustrant des exemples de détails de l'unité de commande 8. Dans certains exemples, l'unité de commande 8 peut comprendre un module de traduction d'adresse 22, un module d'écriture 24, un module de maintenance 26, un 25 module de lecture 28, un module de planification 30, et une pluralité d'unités de commande de canaux 32A-32N (collectivement désignées "unités de commande de canaux 32"). Dans d'autres exemples, l'unité de commande 8 peut comprendre des modules ou des unités matérielles supplémentaires, ou peut comprendre moins de modules ou d'unités matérielles. L'unité de commande 8 peut comprendre un microprocesseur, un processeur numérique de signaux (DSP, 30 Digital Signal Processor), un circuit intégré spécifique d'applications (ASIC, Application Specific Integrated Circuit), une matrice prédiffusée programmable (FPGA, Field Programmable 13 3028656 Gate Array), ou d'autres circuits logiques numériques. Dans certains exemples, l'unité de commande 8 peut être un système sur puce (SoC, System on Chip). [37] L'unité de commande 8 peut s'interfacer avec le dispositif hôte 4 via l'interface 14 et gérer le stockage de données et l'extraction de données dans et depuis les dispositifs de mémoire 16. A 5 titre d'exemple, le module d'écriture 24 de l'unité de commande 8 peut gérer les écritures dans les dispositifs de mémoire lb. A titre d'exemple, le module d'écriture 24 peut recevoir un message en provenance du dispositif hôte 4 via l'interface 14 ordonnant au dispositif de stockage 6 de stocker des données associées à une adresse logique et les données. Le module d'écriture 24 peut gérer l'écriture des données dans les dispositifs de mémoire 16. 10 [38] A titre d'exemple, le module d'écriture 24 peut communiquer avec le module de traduction d'adresse 22, qui gère la traduction entre des adresses logiques utilisées par le dispositif hôte 4 afin de gérer les emplacements de stockage de données et les adresses de blocs physiques utilisées par le module d'écriture 24 pour diriger l'écriture de données vers les dispositifs de mémoire. Le module de traduction d'adresse 22 de l'unité de commande 8 peut 15 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 les dispositifs de mémoire 16 en les adresses de blocs physiques de données stockées par les dispositifs de mémoire 16. A titre d'exemple, le dispositif hôte 4 peut utiliser les adresses de blocs logiques des données stockées par les dispositifs de mémoire 16 dans des instructions ou des messages dans le dispositif de stockage 6, 20 alors que le module d'écriture 24 utilise les adresses de blocs physiques des données pour commander l'écriture de données dans les dispositifs de mémoire 16. (De même, le module de lecture 28 peut utiliser les adresses de blocs physiques pour commander la lecture de données dans et depuis les dispositifs de mémoire 16). Les adresses de blocs physiques correspondent à des blocs physiques réels des dispositifs de mémoire 16. Dans certains exemples, le module de 25 traduction d'adresse 22 peut stocker la couche ou la table de traduction flash dans une mémoire volatile 12, par exemple dans des informations mises en cache 13. [39] Le dispositif hôte 4 peut ainsi être autorisé à utiliser une adresse de bloc logique statique pour un certain ensemble de données, alors que l'adresse de bloc physique à laquelle les données sont effectivement stockées peut changer. Le module de traduction d'adresse 22 peut conserver la 30 couche ou la table de traduction flash pour mapper les adresses de blocs logiques en les adresses de blocs physiques afin d'autoriser l'utilisation de l'adresse de bloc logique statique par le 14 3028656 dispositif hôte 4 alors que l'adresse de bloc physique des données peut changer, par exemple, du fait de la réparation d'usure, de la récupération de place, ou autre. [40] Comme mentionné ci-dessus, le module d'écriture 24 de l'unité de commande 8 peut effectuer une ou plusieurs opérations afin de gérer l'écriture de données dans les dispositifs de 5 mémoire 16. A titre d'exemple, le module d'écriture .24 peut gérer l'écriture de données dans les dispositifs de mémoire 16 en sélectionnant un ou plusieurs blocs au sein de dispositifs de mémoire 16 pour stocker les données et amener les dispositifs de mémoire parmi les dispositifs de mémoire 16 qui comprennent les blocs sélectionnés à stocker effectivement les données. Comme mentionné ci-dessus, le module d'écriture 24 peut amener le module de traduction 10 d'adresse 22 à actualiser la couche ou la table de traduction flash sur la base des blocs sélectionnés. A titre d'exemple, le module d'écriture 24 peut recevoir un message en provenance du dispositif hôte 4 qui comprend une unité de données et une adresse de bloc logique, sélectionner un bloc au sein d'un dispositif de mémoire particulier parmi les dispositifs de mémoire 16 pour stocker les données, amener le dispositif de mémoire particulier parmi les 15 dispositifs de mémoire 16 à stocker effectivement les données (par exemple, via une unité de commande de canal parmi les unités de commande de canaux 32 qui correspond au dispositif de mémoire particulier), et amener le module de traduction d'adresse 22 à actualiser la couche ou la table de traduction flash afin d'indiquer que l'adresse de bloc logique correspond au bloc sélectionné au sein du dispositif de mémoire particulier. 20 [41] Dans certains exemples, après avoir reçu l'unité de données en provenance du dispositif hôte 4, le module d'écriture 24 peut utiliser une mémoire volatile 12 afin de stocker temporairement l'unité de données avant d'amener un ou plusieurs des dispositifs de mémoire 16 à stocker effectivement les données. Dans certains exemples, le module d'écriture 24 peut être configuré pour envoyer au dispositif hôte 4 un message indiquant si les données ont pu être 25 stockées. Cependant, dans certains exemples, le module d'écriture 24 peut envoyer le message au dispositif hôte 4 pour confirmer la réussite du stockage des données avant que les données soient effectivement stockées. A titre d'exemple, le module d'écriture 24 peut envoyer le message au dispositif hôte 4 pour confirmer la réussite du stockage des données lorsque les données sont stockées dans une mémoire volatile 12. 30 [42] Dans certains exemples, en plus d'amener les données à être stockées par les dispositifs de mémoire 16, le module d'écriture 24 peut amener les dispositifs de mémoire 16 à stocker des 15 3028656 informations qui peuvent être utilisées pour récupérer l'unité de données si un ou plusieurs des blocs deviennent défectueux ou deviennent corrompus. Les informations de parité peuvent être utilisées pour récupérer les données stockées par d'autres blocs. Dans certains exemples, les informations de parité peuvent être un OU-EX des données stockées par lesdits autres blocs. 5 [43] Afin d'écrire un bit ayant une valeur logique de 0 (chargé) sur un bit ayant une valeur logique antérieure de 1 (non chargé), un courant élevé est utilisé. Ce courant peut être suffisamment élevé pour provoquer des modifications involontaires de la charge de cellules de mémoire flash adjacentes. Pour la protection contre les modifications involontaires, la totalité d'un bloc de cellules de mémoire flash peut être effacée à une valeur logique de 1 (non chargé) 10 avant l'écriture de données quelconques dans des cellules du bloc. En raison de cela, des cellules de mémoire flash peuvent être effacées au niveau des blocs et écrites au niveau des pages. [44] Par conséquent, pour écrire même une quantité de données qui consommerait moins d'une page, l'unité de commande 8 peut provoquer l'effacement de la totalité d'un bloc. Cela peut conduire à une amplification d'écriture, cela désignant le rapport entre la quantité de données 15 reçues en provenance du dispositif hôte 4 devant être écrites dans les dispositifs de mémoire 16 et la quantité de données effectivement écrites dans les dispositifs de mémoire 16. Une amplification d'écriture contribue à une usure plus rapide des cellules de mémoire flash que ce qui se produirait en l'absence d'amplification d'écriture. L'usure des cellules de mémoire flash peut se produire lorsque des cellules de mémoire flash sont effacées du fait des tensions 20 relativement hautes utilisées pour effacer les cellules de mémoire flash. Sur une pluralité de cycles d'effacement, les tensions relativement hautes peuvent conduire à des modifications des cellules de mémoire flash. Les cellules de mémoire flash peuvent finalement devenir inutilisables du fait de cette usure lors de laquelle les cellules de mémoire flash peuvent être incapables de stocker des données avec une précision suffisante pour permettre l'extraction des données. 25 [45] Une technique que l'unité de commande 8 peut mettre en oeuvre pour réduire l'amplification d'écriture et l'usure des cellules de mémoire flash consiste à écrire les données reçues en provenance du dispositif hôte 4 dans des blocs inutilisés ou des blocs partiellement utilisés. Par exemple, si le dispositif hôte 4 envoie des données au dispositif de stockage 6 qui ne comprennent qu'une petite variation par rapport à des données déjà stockées par le dispositif de 30 stockage 6. L'unité de commande peut alors marquer les anciennes données comme étant périmées ou n'étant plus valides. Au cours du temps, cela peut réduire le nombre d'opérations 16 3028656 d'effacement auxquelles les blocs sont exposés, par comparaison à l'effacement du bloc qui contient les anciennes données et à l'écriture des données actualisées dans ce même bloc. [46] En réponse à la réception d'une commande d'écriture en provenance du dispositif hôte 4, le module d'écriture 24 peut déterminer les emplacements physiques (par exemple, des blocs) 5 parmi les dispositifs de mémoire 16 auxquels les données doivent être écrites. A titre d'exemple, le module d'écriture 24 peut demander au module de traduction d'adresse 22 ou au module de maintenance 26 une ou plusieurs adresses de blocs physiques qui sont vides (par exemple, ne stockant pas de données), partiellement vides (par exemple, seules certaines pages du bloc stockent des données), ou stocker au moins certaines données invalides (ou périmées). Lors de la 10 réception desdites une ou plusieurs adresses de blocs physiques, le module d'écriture 24 peut sélectionner un ou plusieurs blocs comme mentionné ci-dessus, et transmettre un message qui amène les unités de commande de canaux 32A-32N (collectivement désignées "unités de commande de canaux 32") à écrire les données dans les blocs sélectionnés. [47] Le module de lecture 28 peut de même commander la lecture de données vers et depuis 15 les dispositifs de mémoire 16. A titre d'exemple, le module de lecture 28 peut recevoir un message en provenance du dispositif hôte 4 demandant des données ayant une adresse de bloc logique associée. Le module de traduction d'adresse 22 peut convertir l'adresse de bloc logique en une adresse de bloc physique en utilisant la couche ou la table de traduction flash. Le module de lecture 28 peut alors commander une ou plusieurs des unités de commande de canaux 32 afin 20 d'extraire les données des adresses de blocs physiques. Comme pour le module d'écriture 24, le module de lecture 28 peut sélectionner un ou plusieurs blocs et transmettre un message qui amène les unités de commande de canaux 32 à lire les données depuis les blocs sélectionnés. [48] Chaque unité de commande de canal parmi les unités de commande de canaux 32 peut être connectée à un canal respectif parmi les canaux 18. Dans certains exemples, l'unité de 25 commande 8 peut comprendre le même nombre d'unités de commande de canaux 32 que le nombre de canaux 18 du dispositif de stockage 2. Les unités de commande de canaux 32 peuvent effectuer la commande intime de l'adressage, de la programmation, de l'effacement, et de la lecture des dispositifs de mémoire 16 connectés à des canaux respectifs, par exemple, sous le contrôle du module d'écriture 24, du module de lecture 28, et/ou du module de maintenance 26. 30 [49] Le module de maintenance 26 peut être configuré pour effectuer des opérations liées au maintien des performances et à la prolongation de la vie utile du dispositif de stockage 6 (par 17 3028656 exemple, les dispositifs de mémoire 16). A titre d'exemple, le module de maintenance 26 peut mettre en oeuvre au moins l'une de la réparation d'usure ou de la récupération de place. [50] Comme décrit ci-dessus, l'effacement des cellules de mémoire flash peut utiliser des tensions relativement hautes qui, sur une pluralité d'opérations d'effacement, peuvent provoquer 5 des modifications des cellules de mémoire flash. Après un certain nombre d'opérations d'effacement, les cellules de mémoire flash peuvent se dégrader au point que les données ne peuvent plus être écrites dans les cellules de mémoire flash et qu'un bloc comprenant ces cellules peut être mis hors service (ne plus être utilisé par l'unité de commande 8 pour stocker des données). Pour augmenter la quantité de données qui peuvent être écrites dans les dispositifs de 10 mémoire 16 avant que les blocs soient usagés et mis hors service, le module de maintenance 26 peut mettre en oeuvre une réparation d'usure. [51] Dans la réparation d'usure, le module de maintenance 26 peut suivre un certain nombre d'effacements ou d'écritures dans un bloc ou un groupe de blocs, pour chaque bloc ou groupe de blocs. Le module de maintenance 26 peut faire en sorte que des données entrantes en provenance 15 du dispositif hôte 4 soient écrites dans un bloc ou un groupe de blocs qui a été soumis à relativement moins d'écritures ou d'effacements, afin de tenter de maintenir approximativement égaux les nombres d'écritures ou d'effacements pour chaque bloc ou groupe de blocs. Cela peut amener chaque bloc des dispositifs de mémoire 16 à subir une usure approximativement à la même vitesse, et peut augmenter la durée de vie utile du dispositif de stockage 6. 20 [52] Bien que cela puisse réduire l'amplification d'écriture et l'usure des cellules de mémoire flash en réduisant le nombre d'effacements et d'écritures de données dans différents blocs, cela peut également conduire à des blocs comprenant certaines données valides (récentes) et certaines données invalides (périmées). Pour remédier à cet état de données récentes/données périmées, le module de maintenance 26 peut mettre en oeuvre la récupération de place. Dans une opération de 25 récupération de place, le module de maintenance 26 peut analyser les contenus des blocs de dispositifs de mémoire 16 pour déterminer un bloc qui contient un pourcentage élevé de données invalides (périmées). Le module de maintenance 26 peut alors réécrire les données valides depuis ledit bloc vers un bloc différent, puis effacer le bloc. Cela permet de réduire une quantité de données invalides (périmées) stockées par les dispositifs de mémoire 16 et d'augmenter le 30 nombre de blocs libres, mais peut également augmenter l'amplification d'écriture et l'usure des dispositifs de mémoire 16. 18 3028656 [53] Le module de planification 30 de l'unité de commande 8 peut effectuer une ou plusieurs opérations pour planifier les activités devant être effectuées par les dispositifs de mémoire 16. A titre d'exemple, le module de planification 30 peut planifier des demandes reçues d'autres composants de l'unité de commande 8 afin d'ordonner à un ou plusieurs des dispositifs de 5 mémoire 16 d'effectuer une ou plusieurs activités pendant la période d'exécution. Dans certains exemples, le module de planification 30 peut planifier les demandes devant être effectuées dans l'ordre dans lequel elles ont été reçues (par exemple, premier entré premier sorti ou FIFO). Dans certains exemples, le module de planification 30 peut planifier les demandes sur la base d'un ou plusieurs facteurs qui peuvent comprendre, sans aucune limitation, le type de demande (par 10 exemple une demande de lecture, une demande d'écriture, une demande d'effacement, une demande de récupération de place, etc.), le temps s'étant écoulé depuis que la demande a été reçue, la quantité d'énergie qui serait consommée par la mise en oeuvre de la demande, des considérations de largeur de bande, etc. [54] Dans certains exemples, par exemple pour respecter budget de consommation d'énergie, 15 le module de planification 30 peut planifier les activités devant être effectuées de manière à ce que les performances soient régulées. A titre d'exemple, lorsque le budget de consommation d'énergie alloue aux dispositifs de mémoire 16 une quantité d'énergie qui est inférieure à une quantité d'énergie qui serait consommée si tous les dispositifs de mémoire 16 étaient simultanément actifs, le module de planification 30 peut planifier les activités devant être 20 effectuées de manière à ce que la quantité d'énergie consommée par les dispositifs de mémoire 16 ne dépasse pas la quantité d'énergie allouée aux dispositifs de mémoire 16. [55] A titre d'exemple, lorsque le dispositif de stockage 6 a une cible de consommation d'énergie de 25W, le budget de consommation d'énergie peut allouer une partie de la cible de consommation d'énergie (par exemplé, 16W) pouvant être utilisée par les dispositifs de mémoire 25 16. Si la quantité d'énergie qui serait consommée si tous les dispositifs de mémoire 16 étaient simultanément actifs est supérieure à la partie allouée de la cible de consommation d'énergie (par exemple, 16W), le module de planification 30 peut déterminer une quantité de dispositifs de mémoire 16 pouvant être simultanément actifs sans consommer plus d'énergie que la partie allouée. A titre d'exemple, lorsque les dispositifs de mémoire 16 se voient allouer X unités d'un 30 budget de consommation d'énergie et que chaque dispositif de mémoire parmi les dispositifs de mémoire 16 a consommé une unité d'énergie lorsqu'il est actif, le module de planification 30 peut 19 3028656 déterminer que X dispositifs de mémoire parmi les dispositifs de mémoire 16 peuvent être simultanément actifs. [56] Dans certains exemples, le module de planification 30 peut être configuré pour activer sélectivement une régulation des performances. A titre d'exemple, le module de planification 30 5 peut activer la régulation lors d'un fonctionnement dans un premier mode et désactiver la régulation lors d'un fonctionnement dans un second mode. Dans certains exemples, comme dans les cas où une régulation réduit la quantité de dispositifs de mémoire 16 pouvant être simultanément actifs, la vitesse à laquelle le module de planification 30 peut amener les données à être écrites dans les dispositifs de mémoire 16 peut être plus faible lorsque la régulation est 10 activée par comparaison au cas où la régulation est désactivée. [57] Comme indiqué plus en détail dans l'exemple de la figure 2, l'unité de commande 8 peut comprendre un certain nombre de tampons 34. Les tampons 34 peuvent être désignés sous le nom de "tampons de données brutes 34" dans certains exemples. Les tampons de données brutes 34 peuvent être des tampons utilisés pour stocker des données qui doivent être admises à passer 15 vers et/ou reçues en provenance d'unités de commande de canaux 32. Les tampons de données brutes 34 peuvent être l'une des ressources mentionnées ci-dessus qui peuvent être demandées par l'une des unités dites demandeuses, telles que le module d'écriture 24 et le module de lecture 28. [58] Par ailleurs, bien que cela ne soit illustré qu'à propos de l'unité de commande de canal 20 32A à des fins de simplification de l'illustration, chacune des unités de commande de canaux 32 peut comprendre un certain nombre de ressources qui peuvent par exemple être sous la forme de codeurs ECC 36, de tampons de lecture 38 et de décodeurs ECC 40 semblables à ceux représentés à propos de l'unité de commande de canal 32A. Les codeurs ECC 36 peuvent être une unité ou un module configuré pour effectuer un codage ECC sur des données en attente 25 d'être écrites dans la zone de mémoire non volatile 10. Les tampons de lecture 38 sont une unité ou un module configuré pour stocker des données lues depuis la zone de mémoire non volatile 10. Les tampons de lecture 38 peuvent être configurés pour stocker des mots de code lus. Les décodeurs ECC 40 peuvent être une unité ou un module configuré pour effectuer un décodage ECC sur des données stockées dans les tampons de lecture 38. 30 [59] Conformément à une ou plusieurs techniques de la présente invention, l'unité de commande de canal 32A peut comprendre un module d'allocation de ressources 42 qui effectue 20 3028656 l'allocation et la désallocation d'un ou plusieurs des codeurs ECC 36, des tampons de lecture 38 et des décodeurs ECC 40 en utilisant, au moins en partie, une structure de données de thermomètre qui permet l'allocation et la désallocation des ressources, par exemple, selon une succession fixe, de la manière décrite ci-après plus en détail. Bien qu'elle soit représentée comme 5 comprenant un module d'allocation de ressources 42 unique, l'unité de commande de canal 32A peut comprendre de multiples modules d'allocation de ressources 42 différents, dont chacun peut être responsable de l'allocation de l'une, distincte, des ressources 36-40. Bien que cela ne soit pas illustré dans l'exemple de la figure 2 à des fins de simplification de l'illustration, chacune des unités de commande de canaux 32 ou, dans certains cas, une ou plusieurs des unités de 10 commande de canaux 32 peuvent comprendre un ou plusieurs modules d'allocation de ressources 42 semblables au module d'allocation de ressources 42 de l'unité de commande de canal 32A. De plus, l'unité de commande 8 peut, bien que cela ne soit pas représenté dans l'exemple de la figure 2, ici encore à des fins de simplification de l'illustration, comprendre une autre instance du module d'allocation de ressources 42 en tant que module distinct des unités de commande de 15 canaux 32 qui peut mettre en oeuvre les techniques décrites dans le présent fascicule pour allouer/désallouer des tampons 34 afin d'équilibrer le rendement de fonctionnement avec les performances. [60] Dans tous les cas, le module d'allocation de ressources 42 peut analyser la structure de données de thermomètre pour identifier l'utilisation d'une ou plusieurs des ressources 34-40 20 identifiées précédemment afin de déterminer un seuil. Ce seuil peut initialement être prédéfini et configuré dans l'unité de commande 8 sur la base d'une analyse statistique antérieure ou d'autres critères. Le module d'allocation de ressources 42 peut, comme mentionné ci-dessus, lorsqu'il est initialement mis sous tension, ne mettre sous tension qu'un premier sous-ensemble non nul d'une ou plusieurs des ressources 34-40 et, au cours du temps, déterminer le taux d'utilisation de ces 25 ressources, en comparant ce taux d'utilisation au seuil. Le module d'allocation de ressources 42 peut alors, sur la base de cette comparaison, mettre sous tension un second sous-ensemble non nul d'une ou plusieurs des ressources 34-40, ce second sous-ensemble non nul pouvant ne comprendre aucune des ressources 34-40 du premier sous-ensemble non nul de ressources correspondantes 34-40. 30 [61] La figure 3 est un diagramme illustrant un module d'allocation de ressources 42 général représenté de manière plus détaillée dans l'exemple de la figure 2. Comme cela est représenté 21 3028656 dans l'exemple de la figure 3, le module d'allocation de ressources 42 peut comprendre un module-arbitre 50 (pouvant également être désigné sous le nom d'"arbitre de ressources 50") et un module allocateur et de commande d'alimentation 52 (pouvant également être désigné sous le nom d'allocateur de ressources 52"). Le module d'allocation de ressources 42 peut s'interfacer 5 avec des ressources 54A-54M ("ressources 54"), pouvant être l'une quelconque ou plusieurs des ressources décrites ci-dessus, par exemple, les tampons 34, les codeurs ECC 36, les tampons de lecture 38 et les décodeurs ECC 40, ainsi que toute autre ressource courante dans des dispositifs de stockage ou plus généralement, des dispositifs informatiques. [62] Le module d'allocation de ressources 42 peut également s'interfacer avec les unités 10 demandeuses 56A-56N ("unités demandeuses 56") en vue d'arbitrer l'accès à des ressources 54 tout en allouant également les ressources 54 de différents sous-ensembles non nuls de ressources 54 pour faciliter la commande d'alimentation conformément aux techniques décrites dans le présent fascicule. Les ressources 56 peuvent être des unités d'exécution différentes exécutées par un processeur polyvalent (tel qu'une unité centrale de traitement ou CPU), des processeurs 15 dédiés, des matériels dédiés, des coeurs différents ou tout autre type de d'unité demandeuse logicielle ou matérielle. [63] De manière générale, les techniques de la présente invention permettent de faciliter l'accès à des ressources 54 lorsque le nombre d'unités demandeuses 56 dépasse le nombre de ressources 54 (par exemple, lorsque N est supérieur à M). Dans ces cas, le module d'allocation de 20 ressources 42 peut fournir plusieurs interfaces : 1) Un ensemble de N ports de demande concurrents conçus pour être connectés à l'une d'un ensemble de M ressources où M REVENDICATIONS1. Procédé consistant à : déterminer, par une unité (8) de commande d'un dispositif (6), le taux d'utilisation d'un premier sous-ensemble non nul d'une pluralité de ressources (54) du dispositif, la pluralité de ressources étant allouées et libérées conformément à une structure de données de thermomètre (61) ; comparer, par l'unité (8) de commande, le taux d'utilisation du premier sous-ensemble non nul de la pluralité de ressources (54) à un seuil séparant le premier sous-ensemble non nul de la pluralité de ressources (54) d'un second sous-ensemble non nul de la pluralité de ressources (54); et mettre sous tension le second sous-ensemble non nul de la pluralité de ressources (54) sur la base au moins de la comparaison. 2. Procédé selon la revendication 1, dans lequel le dispositif (6) comprend un disque électronique (SSD), et dans lequel la pluralité de ressources (54) prennent en charge un ou plusieurs de l'écriture données dans et de la lecture données depuis une mémoire non volatile du SSD. 3. Procédé selon la revendication 1, consistant en outre à déterminer, par l'unité (8) de commande, le taux d'utilisation du premier sous-ensemble non nul de la pluralité de ressources (54) sur la base d'au moins une analyse de ta structure de données de thermomètre (61). 4. Procédé selon la revendication 1, dans lequel la structure de données de thermomètre (61) comprend un bit respectif pour chacune de la pluralité de ressources (54), chacun des bits respectifs indiquant si celle qui lui correspond de la pluralité de ressources (54) est allouée à une unité demandeuse (56) ou est disponible pour l'allocation à une unité demandeuse. 5. Procédé selon la revendication 4, consistant en outre à déterminer le taux d'utilisation du premier sous-ensemble non nul de la pluralité de ressources (54) sur la base d'au moins une analyse statistique des bits respectifs de la structure de données de thermomètre (61). 3028656 34 6. Procédé selon la revendication 1, consistant en outre à traduire le taux d'utilisation du premier sous-ensemble non nul de la pluralité de ressources (54) en un taux d'utilisation prédit indicatif d'un nombre attendu de la pluralité de ressources (54) qui seront demandées, 5 dans lequel la comparaison du taux d'utilisation du premier sous-ensemble non nul de la pluralité de ressources (54) consiste à comparer le nombre attendu de la pluralité de ressources (54) qui seront demandées au seuil. 7. Procédé selon la revendication 1, dans lequel chacune de la pluralité de ressources (54) 10 comprend un emplacement de mémoire respectif, chacun des emplacements de mémoire respectifs comprenant un même nombre d'octets. 8. Procédé selon la revendication 1, dans lequel chacune de la pluralité de ressources (54) comprend un décodeur (40) respectif de vérification et de correction d'erreurs (ECC) utilisé pour 15 effectuer un décodage ECC sur des données codées par ECC écrites dans une mémoire non volatile d'un disque électronique. 9. Procédé selon la revendication 1, dans lequel la mise sous tension du second sous-ensemble non nul de la pluralité de 20 ressources (54) consiste à mettre sous tension le second sous-ensemble non nul de la pluralité de ressources(54) lorsque le taux d'utilisation est égal ou supérieur au seuil, et dans lequel le procédé consiste en outre à mettre hors tension le second sous-ensemble non nul de la pluralité de ressources lorsque le taux d'utilisation est inférieur au seuil. 25 10. Procédé selon la revendication 1, consistant en outre à régler dynamiquement le seuil à différentes valeurs au cours du temps pour commander la consommation d'énergie. 11. Dispositif (6) comprenant : un ou plusieurs processeurs configurés pour déterminer le taux d'utilisation d'un premier 30 sous-ensemble non nul d'une pluralité de ressources (54), la pluralité de ressources étant allouées et libérées conformément à une structure de données de thermomètre (61), comparer le taux 3028656 d'utilisation du premier sous-ensemble non nul de la pluralité de ressources (54) à un seuil séparant le premier sous-ensemble non nul de la pluralité de ressources (54) d'un second sous-ensemble non nul de la pluralité de ressources (54), et mettre sous tension le second sous-ensemble non nul de la pluralité de ressources (54)sur la base au moins de la comparaison ; et 5 une mémoire configuré pour stocker le seuil. 12. Dispositif (6) selon la revendication 11, dans lequel le dispositif comprend un disque électronique (SSD), et dans lequel la pluralité de ressources (54) prennent en charge un ou plusieurs de l'écriture 10 données dans et de la lecture données depuis une mémoire non volatile du SSD. 13. Dispositif (6) selon la revendication 11, dans lequel lesdits un ou plusieurs processeurs sont en outre configurés pour déterminer le taux d'utilisation du premier sous-ensemble non nul de la pluralité de ressources (54) sur la base d'au moins une analyse de la structure de données de 15 thermomètre (61). 14. Dispositif (6) selon la revendication 11, dans lequel la structure de données de thermomètre (61) comprend un bit respectif pour chacune de la pluralité de ressources (54), chacun des bits respectifs indiquant si celle qui lui correspond de la pluralité de ressources (54) 20 est allouée à une unité demandeuse (56) ou est disponible pour l'allocation à une unité demandeuse. 15. Dispositif (6) selon la revendication 14, dans lequel lesdits un ou plusieurs processeurs sont en outre configurés pour déterminer le taux d'utilisation du premier sous-ensemble non nul 25 de la pluralité de ressources (54) sur la base d'au moins une analyse statistique des bits respectifs de la structure de données de thermomètre (61). 16. Dispositif (6) selon la revendication 11, dans lequel lesdits un ou plusieurs processeurs sont en outre configurés pour traduire le 30 taux d'utilisation du premier sous-ensemble non nul de la pluralité de ressources (54) en un taux 3028656 36 d'utilisation prédit indicatif d'un nombre attendu de la pluralité de ressources (54) qui seront demandées, et dans lequel lesdits un ou plusieurs processeurs sont configurés pour comparer le nombre attendu de la pluralité de ressources (54) qui seront demandées au seuil. 5 17. Dispositif (6) selon la revendication 11, dans lequel chacune de la pluralité de ressources (54) comprend un emplacement de mémoire respectif, chacun des emplacements de mémoire respectifs comprenant un même nombre d'octets. 10 18. Dispositif (6) selon la revendication 11, dans lequel chacune de la pluralité de ressources (54) comprend un décodeur (40) respectif de vérification et de correction d'erreurs (ECC) utilisé pour effectuer un décodage ECC sur dés données codées par ECC écrites dans une mémoire non volatile d'un disque électronique. 15 19. Dispositif (6) selon la revendication 11, dans lequel lesdits un ou plusieurs processeurs sont configurés pour mettre sous tension le second sous-ensemble non nul de la pluralité de ressources (54) lorsque le taux d'utilisation est égal ou supérieur au seuil, et dans lequel lesdits un ou plusieurs processeurs sont en outre configurés pour mettre hors 20 tension le second sous-ensemble non nul de la pluralité de ressources (54) lorsque le taux d'utilisation est inférieur au seuil. 20. Dispositif (6) selon la revendication 11, dans lequel lesdits un ou plusieurs processeurs sont en outre configurés pour régler dynamiquement le seuil à différentes valeurs au cours du 25 temps pour commander la consommation d'énergie. 21. Support de stockage lisible par ordinateur non volatil sur lequel sont stockées des instructions qui, lorsqu'elles sont exécutées, amènent un ou plusieurs processeurs à : déterminer le taux d'utilisation d'un premier sous-ensemble non nul d'une pluralité de 30 ressources (54), la pluralité de ressources (54) étant allouées et libérées conformément à une structure de données de thermomètre (61) ; 3028656 37 comparer le taux d'utilisation du premier sous-ensemble non nul de la pluralité de ressources (54) à un seuil séparant le premier sous-ensemble non nul de la pluralité de ressources (54) d'un second sous-ensemble non nul de la pluralité de ressources ; et mettre sous tension le second sous-ensemble non nul de la pluralité de ressources (54) sur 5 la base au moins de la comparaison.