Brevet FR3026545A1 — publié le 20160401

SYSTEME A NIVEAUX MULTIPLES DE GESTION DE STOCKAGE LOGIQUE DOMAINE TECHNIQUE [1] La présente invention concerne la gestion de stockage logique, et plus particulièrement, la gestion de stockage logique pour les disques à circuits intégrés. CONTEXTE [2] Les dispositifs de mémoire peuvent comporter des circuits intégrés internes à semi- conducteurs dans des ordinateurs ou d'autres dispositifs électroniques. Il existe de nombreux types différents de mémoire, notamment la mémoire vive (RAM), la mémoire morte (ROM), la mémoire vive dynamique (DRAM), la mémoire RAM statique (SRAM), et la mémoire RAM dynamique synchrone (SDRAM). La mémoire peut être une mémoire non volatile ou une mémoire volatile. [3] La principale différence entre la mémoire non volatile et la mémoire volatile est que la mémoire non volatile peut continuer à stocker des données sans avoir besoin d'une alimentation électrique permanente. En conséquence, les dispositifs de mémoire non volatile sont devenus un type de mémoire populaire pour un grand nombre d'applications électroniques. Un type de mémoire non volatile comprend la mémoire flash. Les dispositifs de mémoire flash utilisent généralement une cellule de mémoire à un transistor qui permet des densités de mémoire élevées, une grande fiabilité et une faible consommation d'énergie. Les utilisations courantes de la mémoire flash comprennent les ordinateurs personnels, les assistants numériques personnels (PDA), les appareils photo numériques et les téléphones cellulaires. Un code de programme et des données système telles qu'un système de base d'entrée/sortie (BIOS) peuvent être stockés dans des dispositifs de mémoire flash pour un usage personnel dans des systèmes informatiques personnels. [4] Les dispositifs de mémoire non volatile, notamment les dispositifs de mémoire flash, sont également intégrés dans des dispositifs de stockage à semi-conducteurs, tels que les disques à circuits intégrés (SSD). 1 RÉSUMÉ [5] Dans un exemple, un dispositif de stockage peut comprendre une matrice mémoire comprenant une pluralité de dés agencés en une pluralité de canaux et un contrôleur. Dans certains exemples, le contrôleur peut être configuré pour définir, à partir de la matrice mémoire, une pluralité de jeux de dés sur la base de lignes d'autorisation de circuit respectives associées à la pluralité de dés, dans lequel chaque jeu de dés de la pluralité de jeux de dés comprend au moins un dé de chacun de la pluralité de canaux ; définir, à partir d'un jeu de dés sélectionné de la pluralité de jeux de dés, une pluralité de jeux de blocs, dans lequel chaque jeu de blocs comprend un bloc de chaque dé du jeu de dés sélectionné ; recevoir une unité de données à stocker ; et transmettre des commandes qui amènent l'unité de données à être stockée dans des blocs d'un jeu de blocs sélectionné de la pluralité de jeux de blocs. [6] Dans un autre exemple, un procédé comprend définir, à partir d'une matrice mémoire comprenant une pluralité de dés agencés en une pluralité de canaux, une pluralité de jeux de dés sur la base ligne d'autorisation de circuit respectives associées à la pluralité de dés, dans lequel chaque jeu de dés de la pluralité de jeux de dés comprend au moins un dé de chacun de la pluralité de canaux, et définir, à partir d'un jeu de dés sélectionné de la pluralité de jeux de dés, une pluralité jeux de blocs, dans lequel chaque jeu de blocs comprend un bloc de chaque dé du jeu de dés sélectionné. Dans cet exemple, le procédé comprend également recevoir, par un contrôleur de la matrice mémoire, une unité de données à stocker ; et transmettre, par le contrôleur, des commandes qui amènent l'unité de données à être stockée dans des blocs d'un jeu de blocs sélectionné de la pluralité de jeux de blocs. [7] Dans un autre exemple, un support de stockage lisible par ordinateur stocke des instructions qui, lorsqu'elles sont exécutées, amènent un ou plusieurs processeurs d'un dispositif de stockage à: définir, à partir d'une matrice mémoire comprenant une pluralité de dés agencés en une pluralité de canaux, une pluralité de jeux de dés sur la base de lignes d'autorisation de circuit respectives associées à la pluralité de dés, dans lequel chaque jeu de dés de la pluralité de jeux de dés comprend au moins un dé de chacun de la pluralité de canaux ; et définir, à partir d'un jeu de dés sélectionné de la pluralité de jeux de dés, une pluralité de jeux de blocs, dans lequel chaque jeu de blocs comprend un bloc de chaque dé du jeu de dés sélectionné. Dans cet exemple, le support de stockage lisible par ordinateur stocke également des instructions qui, lorsqu'elles sont exécutées, amènent un ou plusieurs processeurs du dispositif de stockage à recevoir une 2 unité de données à stocker ; et transmettent des commandes qui amènent l'unité de données à être stockée dans des blocs d'un jeu de blocs sélectionné de la pluralité de jeux de blocs. [8] Dans un autre exemple, un système comprend des moyens pour définir, à partir d'une matrice mémoire comprenant une pluralité de dés agencés en une pluralité de canaux, une pluralité de jeux de dés sur la base de lignes d'autorisation de circuit respectives associées à la pluralité de dés, dans lequel chaque jeu de dés de la pluralité de jeux de dés comprend au moins un dé de chacun de la pluralité de canaux ; et des moyens pour définir, à partir d'un jeu de dés sélectionné de la pluralité de jeux de dés, une pluralité de jeux de blocs, dans lequel chaque jeu de blocs comprend un bloc de chaque dé du jeu de dés sélectionné. Dans cet exemple, le système comprend également des moyens pour recevoir une unité de données à stocker ; et des moyens pour transmettre des commandes qui amènent l'unité de données à être stockée dans des blocs d'un jeu de blocs sélectionné de la pluralité de jeux de blocs. [9] Les détails d'un ou plusieurs exemples sont présentés dans les dessins d'accompagnement et la description ci-dessous. D'autres caractéristiques, objets et avantages apparaîtront à la lecture de la description et des dessins, et des revendications. BRÈVE DESCRIPTION DES DESSINS [10] La figure 1 est un schéma fonctionnel conceptuel et schématique illustrant un exemple d'environnement de stockage dans lequel un dispositif de stockage peut fonctionner en tant que 20 dispositif de stockage pour un dispositif hôte, conformément à une ou plusieurs techniques de la présente invention. [11] La figure 2 est un schéma fonctionnel conceptuel illustrant un exemple de dispositif de mémoire qui comprend une pluralité de blocs, chaque bloc comprenant une pluralité de pages, conformément à une ou plusieurs techniques de la présente invention. 25 [12] La figure 3 est un schéma fonctionnel conceptuel et schématique illustrant un exemple de contrôleur, conformément à une ou plusieurs techniques de la présente invention. [13] La figure 4 est un schéma fonctionnel conceptuel illustrant un exemple de matrice mémoire non volatile qui comprend une pluralité de dispositifs de mémoire agencés en une pluralité de canaux, conformément à une ou plusieurs techniques de la présente invention. 30 [14] La figure 5 est un schéma fonctionnel conceptuel illustrant un exemple de technique pouvant être mise en oeuvre par un contrôleur d'un dispositif de stockage pour définir des jeux de 3 blocs à partir d'un jeu de dés, conformément à une ou plusieurs techniques de la présente invention. [15] La figure 6 est un schéma fonctionnel conceptuel illustrant un autre exemple de technique qui peut être mise en oeuvre par un contrôleur d'un dispositif de stockage pour définir des jeux de blocs à partir d'un jeu de dés, conformément à une ou plusieurs techniques de la présente invention. [16] La figure 7 est un organigramme illustrant un exemple de technique de gestion d'un dispositif de stockage en utilisant des jeux de blocs, conformément à une ou plusieurs techniques de la présente invention. DESCRIPTION DÉTAILLÉE [17] Pour améliorer le débit en utilisant le parallélisme, un contrôleur SSD peut mettre en oeuvre un système de gestion d'arrière-plan en regroupant de multiples blocs flash physiques situés sur différents canaux et lignes d'autorisation de circuit (CE) pour former des conteneurs logiques. Le contrôleur SSD peut alors utiliser ces conteneurs logiques en tant qu'unité opérationnelle de base pour un domaine de gestion logique. [18] Dans certains exemples, le contrôleur peut construire le conteneur logique en sélectionnant un bloc flash physique respectif à partir de chaque cible (par exemple, une ligne CE) pour chaque canal physique. Ce faisant, le contrôleur peut remplir tous les blocs flash dans le conteneur logique en même temps et le système peut atteindre le plein potentiel dans le débit d'E/S. Par exemple, pour un contrôleur avec 16 canaux physiques et 8 CE, une taille de conteneur logique peut être de 128 blocs physiques (16 canaux fois 8 CE). Toutefois, dans certains exemples, il peut ne pas être souhaitable de sélectionner un bloc à partir de chacun des dispositifs de mémoire. [19] En général, la présente invention décrit des techniques pour utiliser un système de partitionnement à deux niveaux pour gérer un dispositif de stockage. Dans certains exemples, un contrôleur d'un dispositif de stockage peut définir le premier niveau en partitionnant une matrice de dispositifs de mémoire en une pluralité de jeux de dés qui peuvent chacun comprendre au moins un dispositif de mémoire de chaque canal de la matrice. Le contrôleur peut définir le second niveau en définissant une pluralité de jeux de blocs à partir de chacun de la pluralité de jeux de dés de telle sorte que chaque jeu de blocs de la pluralité de jeux de blocs comprend au moins un bloc de chaque dispositif de mémoire respectif dans le jeu de dés. Le contrôleur peut alors utiliser les jeux de blocs comme unités de base d'un domaine de gestion logique. Par exemple, un contrôleur qui a 8 CE et 16 canaux peut mettre en oeuvre les techniques de la présente invention en partitionnant tous les dispositifs de mémoire en 8 jeux de dés, chaque jeu de dés contenant un dispositif de mémoire respectif de chaque canal. Dans cet exemple, les jeux de blocs peuvent comporter chacun 16 blocs flash physiques, un bloc provenant de chacun des 16 canaux. De cette manière, le contrôleur peut réduire le nombre de blocs inclus dans les unités de base de du domaine de gestion logique, par exemple, sans pour autant compromettre le débit potentiel. [20] En outre, la présente invention concerne des techniques pour programmer dynamiquement le nombre de dispositifs de mémoire actifs sur la base de différents budgets de consommation d'énergie, objectifs de performance, ou les deux. Par exemple, le contrôleur peut déterminer, en temps d'exécution, une quantité de dispositifs de mémoire qui peuvent être actifs simultanément pour répondre, par exemple, à un budget de consommation d'énergie ou à un objectif de performances. Sur la base de la quantité déterminée, le contrôleur peut programmer d'écrire, de lire, ou les deux simultanément dans un ou plusieurs jeux de dés (un nombre quelconque de jeux de dés entre un et le nombre de jeux de dés du dispositif de stockage). Le fait d'augmenter le nombre de jeux de dés actifs simultanément peut augmenter les performances d'E/S du dispositif de stockage tout en augmentant l'énergie consommée par le dispositif de stockage. Inversement, le fait de diminuer le nombre de jeux de dés actifs simultanément peut diminuer les performances d'E/S du dispositif de stockage tout en diminuant l'énergie consommée par le dispositif de stockage. De cette façon, le contrôleur peut programmer dynamiquement le nombre de dispositifs de mémoire actifs afin de se conformer à différents budgets de consommation d'énergie, objectifs de performance, ou les deux. [21] La figure 1 est un diagramme fonctionnel conceptuel et schématique illustrant un exemple environnement de stockage 2 dans lequel un dispositif de stockage 6 peut fonctionner en tant que dispositif de stockage pour un dispositif hôte 4, conformément à une ou plusieurs techniques de la présente invention. Par exemple, le dispositif hôte 4 peut utiliser des dispositifs de mémoire non volatile inclus 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 stockage, tels que le dispositif de stockage 6, qui peuvent fonctionner en tant que matrice de 5 stockage. Par exemple, l'environnement de stockage 2 peut comporter une pluralité de dispositifs de stockages 6 configurés comme un réseau redondant de disques bon marché/indépendants (RAID) qui fonctionnent collectivement comme un dispositif de stockage de masse pour le dispositif hôte 4. [22] L'environnement de stockage 2 peut comprendre un dispositif hôte 4 qui peut stocker et/ou extraire des données dans 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 par l'intermédiaire d'une interface 14. Le dispositif hôte 4 peut comprendre l'un quelconque d'un large éventail de dispositifs, comprenant des serveurs informatiques, des unités de stockage en réseau (NAS), des ordinateurs de bureau, des ordinateurs bloc-notes (par exemple, un ordinateur portable), des tablettes électroniques, des boîtiers décodeurs, des combinés téléphoniques tels que les téléphones dits « intelligents », des tablettes dites « intelligentes », des téléviseurs, des caméras, des dispositifs d'affichage, des lecteurs multimédias numériques, des consoles de jeux vidéo, des dispositifs de streaming vidéo, et autres. [23] Comme illustré sur la figure 1, le dispositif de stockage 6 peut comprendre un contrôleur 8, une matrice mémoire non volatile 10 (NVMA 10), une mémoire cache 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é. Par exemple, le dispositif de stockage 6 peut comprendre des composants de distribution d'énergie, comprenant, par exemple, un condensateur, un supercondensateur, ou une batterie ; un circuit imprimé (PB) auquel les composants du dispositif de stockage 6 sont reliés mécaniquement et qui comprend des traces conductrices de l'électricité qui relient électriquement les composants du dispositif de stockage 6; et analogues. Dans certains exemples, les dimensions physiques et les configurations de connexion du dispositif de stockage 6 peuvent être conformes à un ou plusieurs facteurs de forme standard. Certains exemples de facteurs de forme standard comprennent, mais ne sont pas limités à, un disque dur (HDD) 3,5", un HDD 2,5", un HDD 1,8", l'interconnexion de composants périphériques (PCI), PCI-étendue (PCI-X), PCI Express (PCIe) (par exemple, PCIe x 1 , x4, x8, x16, carte Mini PCIe, MiniPCI, etc.). Dans certains exemples, le dispositif de stockage 6 peut être couplé directement (par exemple, soudé directement) à une carte mère du dispositif hôte 4. 6 [24] Le dispositif de stockage 6 peut comporter interface 14 pour s'interfacer avec le dispositif hôte 4. L'interface 14 peut comprendre un bus de données pour échanger des données avec le dispositif hôte 4 et/ou un bus de commande pour échanger des commandes avec le dispositif hôte 4. L'interface 14 peut fonctionner conformément à n'importe quel protocole approprié. Par exemple, l'interface 14 peut fonctionner conformément à un ou plusieurs des protocoles suivants : technologie avancée de connexion (ATA) (par exemple, ATA série (SATA), et ATA parallèle (PATA)), canal de fibres optiques, interface de petit système informatique (SCSI), SCSI à connexion série (SAS), interconnexion de composants périphériques (PCI), et PCI-Express. La connexion électrique de l'interface 14 (par exemple, le bus de données, le bus de commande, ou les deux) est reliée électriquement au contrôleur 8, assurant la connexion électrique entre le dispositif hôte 4 et le contrôleur 8, permettant l'échange de données entre le dispositif hôte 4 et le contrôleur 8. Dans certains exemples, la connexion électrique de l'interface 14 peut également permettre au dispositif de stockage 6 de recevoir de l'énergie à partir du dispositif hôte 4. [25] Le dispositif de stockage 6 peut comprendre un NVMA 10 qui peut comprendre une pluralité de dispositifs de mémoire 16Aa-16Nn (collectivement, « dispositifs de mémoire 16 ») dont chacun peut être configuré pour stocker et/ou extraire des données. Par exemple, un dispositif de mémoire des dispositifs de mémoire 16 peut recevoir des données et un message du contrôleur 8 qui donne l'ordre au dispositif de mémoire de stocker les données. De même, le dispositif de mémoire des dispositifs de mémoire 16 peut recevoir un message du contrôleur 8 qui donne l'ordre au dispositif de mémoire d'extraire des données. Dans certains exemples, chacun des dispositifs de mémoire 6 peut être appelé dé. Dans certains exemples, une seule puce physique peut comporter une pluralité de dés (par exemple, 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 importantes 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.). [26] Dans certains exemples, les dispositifs de mémoire 16 peuvent comprendre des dispositifs de mémoire flash. Les dispositifs de mémoire flash peuvent inclure des dispositifs de mémoire flash de type NON-ET ou NON-OU, et peuvent stocker des données sur la base d'une charge contenue dans une grille flottante d'un transistor pour chaque cellule de mémoire flash. Dans les dispositifs de mémoire flash NON-ET, le dispositif de mémoire flash peut être divisé en une pluralité de blocs. La figure 2 est un schéma fonctionnel conceptuel illustrant un exemple d'un 7 dispositif de mémoire 16Aa qui comprend une pluralité de blocs 17A-17N (collectivement, les « blocs 17 »), chaque bloc comprenant une pluralité de pages 19Aa-19Nm (collectivement, les « pages 19 »). Chaque bloc des blocs 17 peut comprendre une pluralité de cellules NON-ET. Des rangées de cellules NON-ET peuvent être reliées électriquement en série en utilisant un canal mot pour définir une page (une page des pages 19). Des cellules respectives dans chacune d'une pluralité de pages 19 peuvent être reliées électriquement à des canaux bit respectifs. Le contrôleur 6 peut écrire et lire des données dans des dispositifs de mémoire flash NON-ET au niveau page et effacer des données de dispositifs de mémoire flash NON-ET au niveau bloc. [27] Dans certains exemples, il peut ne pas être pratique pour le contrôleur 8 d'être relié séparément à chaque dispositif de mémoire des dispositifs de mémoire 16. À ce titre, les connexions entre les dispositifs de mémoire 16 et le contrôleur 8 peuvent être multiplexées. À titre d'exemple, les dispositifs de mémoire 16 peuvent être regroupés en canaux 18A-18N (collectivement, les « canaux 18 »). Par 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 dispositifs de mémoire 16Na-16Nn peuvent être groupés en un Nième canal 18N. Les dispositifs de mémoire 16 groupés dans chacun des canaux 18 peuvent partager une ou plusieurs connexions au contrôleur 8. Par exemple, les dispositifs de mémoire 16 groupés en le premier canal 18A peuvent être attachés à un bus d'E/S commun et un bus de commande commun. Le dispositif de stockage 6 peut comprendre un bus d'E/S commun et un bus de commande commun pour chaque canal respectif des canaux 18. Dans certains exemples, chaque canal des canaux 18 peut comprendre un jeu de lignes d'autorisation de circuit (CE) qui peuvent être utilisées pour multiplexer les dispositifs de mémoire sur chaque canal. Par exemple, chaque ligne de CE peut être reliée à un dispositif de mémoire respectif des dispositifs de mémoire 18. De cette façon, le nombre de connexions distinctes entre le contrôleur 8 et les dispositifs de mémoire 18 peut être réduit. En outre, étant donné que chaque canal dispose d'un jeu indépendant de connexions au contrôleur 8, la réduction de connexions peut ne pas affecter de manière significative le débit de données étant donné que le contrôleur 8 peut transmettre simultanément différentes commandes à chaque canal. [28] Dans certains exemples, le dispositif de stockage 6 peut comporter un nombre de dispositifs de mémoire 16 sélectionné pour fournir une capacité totale qui est supérieure à la capacité accessible au dispositif hôte 4. C'est ce que l'on appelle le surapprovisionnement. Par 8 exemple, si le dispositif de stockage 6 est annoncé comme comportant 240 Go de capacité de stockage accessible à l'utilisateur, le dispositif de stockage 6 peut comporter des dispositifs de mémoire suffisants 16 pour donner une capacité totale de stockage de 256 Go. Les 16 Go de dispositifs de stockage 16 peuvent ne pas être accessibles au dispositif hôte 4 ou à un utilisateur du dispositif hôte 4. Plutôt, les dispositifs de stockage supplémentaires 16 peuvent fournir des blocs supplémentaires 17 pour faciliter les écritures, la récupération de place, la répartition de l'usure, et similaires. En outre, les dispositifs de stockage supplémentaires 16 peuvent fournir des blocs supplémentaires 17 qui peuvent être utilisés si certains blocs s'usent au point de devenir inutilisables et sont mis hors service. La présence des blocs supplémentaires 17 peut permettre de mettre hors service les blocs usés sans provoquer de changement dans la capacité de stockage disponible au dispositif hôte 4. Dans certains exemples, la quantité de surapprovisionnement peut être définie sous la forme p=(T-D)/D, où p est le rapport de surapprovisionnement, T est la capacité totale de stockage 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. [29] Le dispositif de stockage 6 comprend le contrôleur 8, qui peut gérer une ou plusieurs opérations du dispositif de stockage 6. La figure 3 est un schéma fonctionnel conceptuel et schématique illustrant un exemple de contrôleur 20 qui peut être, par exemple, un exemple du contrôleur 6 de la figure 1. Dans certains exemples, le contrôleur 20 peut comprendre un module de traduction d'adresse 22, un module d'écriture 24, un module de maintenance 26, un module de lecture 28, un module de planification 30, et une pluralité de contrôleurs de canaux 32A-32N (collectivement, les « contrôleurs de canaux 28 »). Dans d'autres exemples, le contrôleur 20 peut inclure des modules ou des unités matérielles supplémentaires, ou peut inclure moins de modules ou d'unités matérielles. Le contrôleur 20 peut comprendre un microprocesseur, un processeur de signal numérique (DSP), un circuit intégré à application spécifique (ASIC), un réseau prédiffusé programmable par l'utilisateur (FPGA) ou un autre circuit logique numérique. [30] Le contrôleur 20 peut s'interfacer avec le dispositif hôte 4 par l'intermédiaire de l'interface 14 et gérer le stockage et l'extraction de données dans les dispositifs de mémoire 16. Par exemple, le module d'écriture 24 du contrôleur 20 peut gérer les écritures dans les dispositifs de mémoire 16. Par exemple, le module d'écriture 24 peut recevoir un message du dispositif hôte 4 par l'intermédiaire de l'interface 14 donnant l'ordre au dispositif de stockage 6 de stocker des 9 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. [31] Par exemple, le module d'écriture 24 peut communiquer avec le module de traduction d'adresse 22, qui gère la traduction entre les adresses logiques utilisées par le dispositif hôte 4 pour gérer les emplacements de stockage des données et les adresses de blocs physiques utilisées par le module d'écriture 24 pour diriger l'écriture des données dans les dispositifs de mémoire. Le module de traduction d'adresse 22 du contrôleur 20 peut utiliser une couche ou une table de traduction flash qui traduit les adresses logiques (ou les adresses de blocs logiques) de données stockées par les dispositifs de mémoire 16 en adresses de blocs physiques de données stockées par les dispositifs de mémoire 16. Par 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 au dispositif de stockage 6, tandis que le module d'écriture 24 utilise des 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 des adresses de blocs physiques pour commander la lecture de données dans les dispositifs de mémoire 16.) Les adresses de blocs physiques correspondent à des blocs physiques réels (par exemple, les blocs 17 de la figure 2) des dispositifs de mémoire 16. [32] De cette façon, le dispositif hôte 4 peut être autorisé à utiliser une adresse de bloc logique statique pour un certain ensemble de données, tandis que l'adresse de bloc physique à laquelle les données sont effectivement stockées peut changer. Le module de traduction d'adresse 22 peut maintenir la couche ou la table de traduction flash pour mapper les adresses de blocs logiques avec des adresses de blocs physiques pour permettre l'utilisation de l'adresse de bloc logique statique par le dispositif hôte 4 tandis que l'adresse de bloc physique des données peut changer, par exemple, en raison de la répartition de l'usure, de la récupération d'espace, ou similaire. [33] Comme indiqué ci-dessus, le module d'écriture 24 du contrôleur 20 peut effectuer une ou plusieurs opérations pour gérer l'écriture de données dans les dispositifs de mémoire 16. Par exemple, le module d'écriture 24 peut gérer l'écriture de données sur les dispositifs de mémoire 16 en sélectionnant un ou plusieurs blocs dans les dispositifs de mémoire 16 pour stocker les données et amener les dispositifs de mémoire des dispositifs de mémoire 16 qui comprennent les blocs sélectionnés à stocker effectivement les données. Comme indiqué ci-dessus, le module d'écriture 24 peut amener le module de traduction d'adresse 22 à mettre à jour la couche ou la 10 table de traduction flash sur la base des blocs sélectionnés. Par exemple, le module d'écriture 24 peut recevoir un message provenant du dispositif hôte 4 qui comprend une unité de données et une adresse de bloc logique, sélectionner un bloc dans 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 canal des contrôleurs de canaux 32 qui correspond au dispositif de mémoire particulier), et amener le module de traduction d'adresse 22 à mettre à jour la couche ou la table de traduction flash pour indiquer que l'adresse de bloc logique correspond au bloc sélectionné dans le dispositif de mémoire particulier. 10 [34] Dans certains cas, les données devant être écrites peuvent être dans des unités qui sont plus grandes qu'un seul bloc (c'est-à-dire, un bloc physique unique) d'un dispositif de mémoire des dispositifs de mémoire 16. En tant que tel, le module d'écriture 24 peut sélectionner de multiples blocs, appelés collectivement conteneur logique, pour stocker chacun une partie de l'unité de données. Par exemple, le module d'écriture 24 peut définir un conteneur logique en 15 sélectionnant de multiples blocs d'un dispositif de mémoire unique des dispositifs de mémoire 16. Toutefois, dans certains exemples, il peut ne pas être souhaitable que le module d'écriture 24 sélectionne tous les blocs d'un conteneur logique d'un dispositif de mémoire unique. Par exemple, il peut ne pas être possible d'écrire dans de multiples blocs inclus dans un dispositif de mémoire unique en parallèle. 20 [35] Par conséquent, plutôt que de définir un conteneur logique en sélectionnant de multiples blocs d'un dispositif de mémoire unique des dispositifs de mémoire 16, le module d'écriture 24 peut définir un conteneur logique en sélectionnant des blocs parmi une pluralité de dispositifs de mémoire 16. À titre d'exemple, lorsqu'un NVMA 10 comprend 128 dispositifs de mémoire 16 agencés en seize canaux qui ont chacun huit lignes/cibles d'autorisation de circuit (CE), une 25 ligne/cible de CE pour chacun des dispositifs de mémoire 16 dans un canal (c'est-a-dire, lorsque le canal 18A comprend les dispositifs de mémoire 16Aa-Ah, ..., et le canal 18P comprend les dispositifs de mémoire 16Pa-Ph), le module d'écriture 24 peut définir un conteneur logique qui comprend 128 blocs en sélectionnant un bloc de chacun des dispositifs de mémoire 16Aa-16Ph. Le module d'écriture 24 peut alors amener la pluralité de dispositifs de mémoire 16 à stocker les 30 parties de l'unité de données en parallèle dans les blocs sélectionnés. De cette façon, le module d'écriture 24 peut augmenter la vitesse à laquelle les données peuvent être stockées dans les 11 dispositifs de mémoire 16 en écrivant des parties des données dans différents dispositifs de mémoire 16, par exemple, reliés à différents canaux 18. Toutefois, dans certains exemples, il peut ne pas être souhaitable qu'un conteneur logique comprenne un bloc de chacun des dispositifs de mémoire 16. [36] Conformément à une ou plusieurs techniques de la présente invention, plutôt que de définir un conteneur logique qui comprend un bloc de chacun des dispositifs de mémoire 16, le module d'écriture 24 peut définir un jeu de blocs qui comprend un bloc de chaque dispositif de mémoire d'un sous-ensemble de dispositifs de mémoire 16 qui comprend au moins un dispositif de mémoire de chacun des canaux 18. Dans certains exemples, le sous-ensemble de dispositifs de mémoire 16 peut être appelé jeu de dés. Par exemple, le module d'écriture 24 peut partitionner les dispositifs de mémoire 16 sur la base des lignes de CE respectives associées aux dispositifs respectifs des dispositifs de mémoire 16 pour définir une pluralité de sous-ensembles de dispositifs de mémoire 16, chaque sous-ensemble comprenant au moins un dispositif de mémoire (par exemple, un dé) de chacun des canaux 18. Pour chaque sous-ensemble respectif de la pluralité de sous-ensembles de dispositifs de mémoire 16, le module d'écriture 24 peut définir une pluralité respective de jeux de blocs, chaque jeu de blocs comprenant un bloc de chaque dé du sous-ensemble respectif de la pluralité de sous-ensembles de dispositifs de mémoire 16. De cette façon, par exemple, en utilisant des jeux de blocs qui comprennent moins de blocs, le module d'écriture 24 peut diminuer la quantité de temps nécessaire pour effacer des blocs dans un jeu de blocs, ce qui peut également diminuer la latence pour que les jeux de blocs retournent à la réserve de ressources libres. Aussi de cette manière, la quantité de temps nécessaire pour qu'une opération de récupération d'espace récupère un jeu de blocs peut être réduite. [37] Dans certains exemples, en plus d'amener les parties de l'unité de 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 informations qui peuvent être utilisées pour récupérer l'unité de données si un ou plusieurs des blocs sont défectueux ou deviennent corrompus. Par exemple, le module d'écriture 24 peut amener les dispositifs de mémoire 16 à stocker des informations de parité dans un bloc au sein de chaque jeu de blocs. Les informations de parité peuvent être utilisées pour récupérer les données stockées par d'autres blocs du jeu de blocs. Dans certains exemples, les informations de parité peuvent être un OU exclusif des données stockées par les autres blocs. 12 [38] Afin d'écrire un bit avec une valeur logique de 0 (chargé) sur un bit avec une valeur logique précédente de 1 (non chargé), on utilise un courant fort. Ce courant peut être si fort qu'il peut provoquer des modifications involontaires de la charge de cellules de mémoire flash adjacentes. Pour se protéger contre toute modification accidentelle, un bloc entier de cellules de mémoire flash peut être effacé à une valeur logique de 1 (non chargé) avant d'écrire des données dans les cellules du bloc. Pour cette raison, les cellules de mémoire flash peuvent être effacées au niveau bloc et écrites au niveau page. [39] Ainsi, pour écrire, même une quantité de données qui consomment moins d'une page, le contrôleur 20 peut amener un bloc entier à être effacé. Cela peut conduire à une amplification 10 d'écriture, qui fait référence au rapport entre la quantité de données reçues du dispositif hôte 4 devant être écrites dans les dispositifs de mémoire 16 et la quantité de données réellement écrites dans les dispositifs de mémoire 16. L'amplification d'écriture contribue à accélérer l'usure des cellules de mémoire flash par rapport à ce qui se produirait sans amplification d'écriture. L'usure des cellules de mémoire flash peut se produire lorsque les cellules de mémoire flash sont effacées 15 en raison des tensions relativement élevées utilisées pour effacer les cellules de mémoire flash. Sur une pluralité de cycles d'effacement, les tensions relativement élevées peuvent entraîner des modifications des cellules de mémoire flash. Finalement, les cellules de mémoire flash peuvent s'user, si bien que les données ne peuvent plus être écrites dans les cellules. [40] Une technique que le contrôleur 20 peut mettre en oeuvre pour réduire l'amplification 20 d'écriture et l'usure des cellules de mémoire flash comprend écrire des données reçues du dispositif hôte 4 dans des blocs inutilisés (par exemple, les blocs 17 de la figure 2) ou des blocs partiellement utilisés. Par exemple, si le dispositif hôte 4 envoie des données au dispositif de stockage 6 qui comprennent seulement une petite modification par rapport aux données déjà stockées par le dispositif de stockage 6. Le contrôleur peut alors marquer les anciennes données 25 comme périmées ou n'étant plus valides. Au fil du temps, cela peut réduire un certain nombre d'opérations d'effacement auxquelles les blocs sont exposés, par rapport au fait d'effacer le bloc qui contient les anciennes données et d'écrire des données mises à jour dans le même bloc. [41] En réponse à la réception d'une commande d'écriture du dispositif hôte 4, le module d'écriture 24 peut déterminer les emplacements physiques (blocs 17) des dispositifs de mémoire 30 16 dans lesquels l'écriture de données est effectuée. Par exemple, le module d'écriture 24 peut demander auprès du module de traduction d'adresse 22 ou du module de maintenance 26 une ou 13 plusieurs adresses de blocs physiques qui sont vides (par exemple, ne stockent aucune donnée), partiellement vides (par exemple, seulement quelques pages du bloc stockent des données), ou qui stockent au moins certaines données invalides (ou périmées). Après avoir reçu lesdites une ou plusieurs adresses de blocs physiques, le module d'écriture 24 peut définir et/ou sélectionner un ou plusieurs jeux de blocs comme discuté ci-dessus, et communiquer un message aux contrôleurs de canaux 32A-32N (collectivement, les « contrôleurs de canaux 32 »), ce qui amène les contrôleurs de canaux 32 à écrire les données dans les blocs du jeu de blocs. [42] Le module de lecture 28 peut commander de la même façon la lecture des données à partir des dispositifs de mémoire 16. Par exemple, le module de lecture 28 peut recevoir un message du 10 dispositif hôte 4 demandant des données avec 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 un ou plusieurs des contrôleurs de canaux 32 pour extraire les données à partir des adresses de blocs physiques. Comme pour le module d'écriture 24, le module de lecture 28 peut 15 sélectionner un ou plusieurs jeux de blocs et communiquer un message aux contrôleurs de canaux 32, ce qui amène les contrôleurs de canaux 32 à lire les données à partir des blocs du jeu de blocs. [43] Chaque contrôleur de canal des contrôleurs de canaux 32 peut être relié à un canal respectif des canaux 18. Dans certains exemples, le contrôleur 20 peut comprendre le même nombre de contrôleurs de canaux 32 que le nombre de canaux 18 du dispositif de stockage 2. Les 20 contrôleurs de canaux 32 peuvent effectuer la commande intime d'adressage, de programmation, d'effacement et de lecture des dispositifs de mémoire 16 reliés aux 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. [44] Le module de maintenance 26 peut être configuré pour effectuer des opérations liées au 25 maintien des performances et à la prolongation de la durée de vie utile du dispositif de stockage 6 (par exemple, les dispositifs de mémoire 16). Par exemple, le module de maintenance 26 peut mettre en oeuvre au moins l'une de la répartition de l'usure et de la récupération d'espace. [45] Comme décrit ci-dessus, l'effacement des cellules de mémoire flash peut utiliser des tensions relativement élevées, ce qui peut, sur une pluralité d'opérations d'effacement, entraîner 30 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 des données ne 14 peuvent plus être écrites dans les cellules de mémoire flash, et un bloc (par exemple, le bloc 17 de la figure 2) comprenant ces cellules peut être mis hors service (plus utilisé par le contràleur 20 pour stocker des données). Pour augmenter la quantité de données qui peuvent être écrites dans les dispositifs de mémoire 16 avant que les blocs ne soient usés et mis hors service, le module de maintenance 26 peut mettre en oeuvre une répartition de l'usure. [46] Dans la répartition de l'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 amener des données entrantes du dispositif hôte 4 à être écrites dans un bloc ou un groupe de blocs qui a subi relativement moins d'écritures ou d'effacements, pour tenter de maintenir le nombre d'écritures ou d'effacements pour chaque bloc ou groupe de blocs sensiblement égal. Cela peut amener chaque bloc de dispositifs de mémoire 16 à s'user à peu près au même rythme, et peut augmenter la durée de vie utile du dispositif de stockage 6. [47] Bien que cela puisse réduire l'amplification d'écriture et l'usure des cellules de mémoire flash en réduisant un certain nombre d'effacements et d'écritures de données dans différents blocs, cela peut également conduire à des blocs qui comprennent des données valides (fraîches) et des données invalides (périmées). Pour lutter contre cela, le module de maintenance 26 peut mettre en oeuvre une récupération d'espace. Dans une opération de récupération d'espace, le module de maintenance 26 peut analyser le contenu des blocs des dispositifs de mémoire 16 pour déterminer un bloc qui contient un pourcentage élevé de données non valides (périmées). Le module de maintenance 26 peut ensuite réécrire les données valides du bloc dans un autre bloc, puis effacer le bloc. Cela peut réduire une quantité de données non valides (périmées) stockées par les dispositifs de mémoire 16 et augmenter un nombre de blocs libres, mais peut également augmenter l'amplification d'écriture et l'usure des dispositifs de mémoire 16. Dans certains exemples, le module de maintenance 26 peut effectuer une récupération d'espace au sein de chacun de la pluralité de jeu de dés pour générer des blocs vides dans les jeux de bloc. De cette façon, le module de maintenance 26 peut augmenter la probabilité que des blocs ou des jeux de blocs vides puissent être définis avec succès au sein de chaque jeu de dés. [48] Le module de planification 30 du contrôleur 20 peut effectuer une ou plusieurs opérations pour planifier les activités à effectuer par les dispositifs de mémoire 16. Par exemple, le module de planification 30 peut planifier les demandes reçues d'autres composants du contrôleur 20 pour 15 commander un ou plusieurs des dispositifs de mémoire 16 pour effectuer une ou plusieurs activités pendant le temps d'exécution. Dans certains exemples, le module de planification 30 peut planifier les demandes à effectuer 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 inclure, mais ne sont pas limités à, le type de demande (par exemple, une demande de lecture, une demande d'écriture, une demande d'effacement, une demande de récupération d'espace, etc.), une quantité de temps écoulé depuis la réception de la demande, une quantité d'énergie qui serait consommée par l'exécution de la demande, des considérations de bande passante, et analogues. À titre d'exemple, le module de planification 30 peut planifier des activités à effectuer sur la base d'une quantité de dispositifs de mémoire des dispositifs de mémoire 16 qui peuvent être actifs simultanément (par exemple, lire, écrire et/ou effacer des données simultanément). Par exemple, le module de planification 30 peut déterminer la quantité de dispositifs de mémoire des dispositifs de mémoire 16 qui peuvent être actifs simultanément sur la base d'un budget de consommation d'énergie, d'un objectif de performances, ou les deux. Le budget de consommation d'énergie peut indiquer une quantité d'énergie disponible pouvant être utilisée par les dispositifs de mémoire 16. Par exemple, lorsque le dispositif de stockage 6 a un objectif énergétique de 25 W, le budget de consommation d'énergie peut allouer une partie de l'objectif énergétique (par exemple, 16 W) pour l'utilisation par les dispositifs de mémoire 16. Toutefois, dans certains exemples, la quantité d'énergie qui serait consommée si l'ensemble des dispositifs de mémoire 16 étaient actifs simultanément peut être supérieure à la partie allouée de l'énergie fournie. En tant que tel, le module de planification 30 peut déterminer une quantité de dispositifs de mémoire 16 qui peuvent être actifs simultanément sans consommer plus d'énergie que la partie allouée. [49] Par exemple, lorsque les dispositifs de mémoire 16 se voient allouer X unités d'un budget de consommation d'énergie et chaque dispositif de mémoire des dispositifs de mémoire 16 utilise une unité de puissarice lorsqu'il est actif, le module de planification 30 peut déterminer que X dispositifs de mémoire des dispositifs de mémoire 16 peuvent être actifs simultanément. Dans certains exemples, tels que lorsqu'une pluralité de jeux de dés sont définis à partir des dispositifs de mémoire 16, le module de planification 30 peut déterminer une quantité de jeux de dés de la pluralité de jeux de dés qui peuvent être actifs simultanément. Par exemple, lorsque les 16 dispositifs de mémoire 16 se voient allouer X unités d'un budget de consommation d'énergie, chaque dispositif de mémoire des dispositifs de mémoire 16 utilise une unité de puissance lorsqu'il est actif, et chaque ensemble de dés comprend X/2 dispositifs de mémoire des dispositifs de mémoire 16, le module de planification 30 peut déterminer que deux jeux de dés de la pluralité de jeux de dés peuvent être actifs simultanément. [50] Afin de se conformer au budget de consommation d'énergie, le module de planification 30 peut s'abstenir de planifier les activités à effectuer par les sous-ensembles respectifs des dispositifs de mémoire 16 inclus respectivement dans la pluralité de jeux de dés qui aboutiraient à ce qu'il y ait plus jeux de dés de la pluralité de jeux de dés à être actifs simultanément que la quantité déterminée de jeux de dés qui peuvent être actifs simultanément. Par exemple, lorsque le module de planification 30 détermine qu'un jeu de dés de la pluralité de jeux de dés peuvent être actifs simultanément, le module de planification 30 peut planifier les activités de telle sorte que de premières commandes sont transmises qui amènent un premier jeu de dés de la pluralité de jeux de dés à être actifs pendant une première période de temps de telle sorte qu'une quantité d'énergie consommée par des dispositifs de mémoire 16 pendant la première période de temps satisfait le budget de consommation d'énergie, et de secondes commandes sont transmises qui amènent un second jeu de dés de la pluralité de jeux de dés à être actifs pendant une seconde période de temps différente, de telle sorte qu'une quantité d'énergie consommée par des dispositifs de mémoire 16 lors de la seconde période de temps différente satisfait également le budget de consommation d'énergie. Le premier jeu de dés peut être le même jeu de dés que le second jeu de dés ou le premier jeu de dés peut être un jeu de dés différent du second jeu de dés. [51] Le module de planification 30 peut également déterminer la quantité de jeux de dés qui peuvent être actifs simultanément sur la base d'un ou plusieurs des objectifs de performances. Par exemple, le module de planification 30 peut planifier les activités de telle sorte que le dispositif de stockage 6 réalise un ou plusieurs d'un objectif de vitesse d'écriture (par exemple, 1,5 Go/s), d'un objectif de vitesse de lecture (par exemple, 3,0 Go/s), d'un ou plusieurs objectifs d'opérations d'entrée/sortie par seconde (TOPS) (par exemple, lecture/écriture séquentielle, lecture/écriture aléatoire, et total), et similaires. [52] Dans certains exemples, les activités planifiées par le module de planification 30 peuvent prendre diverses quantités de temps et/ou d'énergie pour s'effectuer. À titre d'exemple, une activité d'écriture peut prendre plus de temps (par exemple, 2 fois plus de temps, 5 fois plus de 17 temps, 10 fois plus de temps, etc.) pour s'effectuer qu'une activité de lecture. Comme autre exemple, la quantité d'énergie consommée par un dispositif de mémoire des dispositifs de mémoire 16 lorsqu'il exécute une activité d'écriture peut être plus importante que la quantité d'énergie consommée par le dispositif de mémoire des dispositifs de mémoire 16 lorsqu'il exécute une activité de lecture (par exemple, 2 fois plus de temps, 5 fois plus de temps, 10 fois plus de temps, etc.). Dans certains exemples, le module de planification 30 peut utiliser ces différences lorsqu'il planifie des activités et/ou lorsqu'il détermine la quantité de jeux de dés qui peuvent être actifs simultanément. Par exemple, si l'exécution d'une activité de lecture consomme moins d'énergie que l'exécution d'une activité d'écriture, le module de planification 30 peut déterminer que plus de jeux de dés peuvent exécuter simultanément des activités de lecture que cela n'est le cas pour exécuter simultanément des activités d'écriture. De l'une ou plusieurs de ces façons, le module de planification 30 peut planifier des activités pour atteindre un ou plusieurs objectifs de performances. [53] Dans certains exemples, les messages reçus du dispositif hôte 4 peuvent ne pas être équilibrés entre les demandes de lecture de données et les demandes d'écriture de données. Par exemple, un rapport de demandes de lecture de données à des demandes d'écriture de données peut être de 1:0 (soit 100 % de demandes de lecture de données), de 3:1 (soit 75 % de demandes de lecture de données et 25 % de demandes d'écriture de données), de 1:1 (soit 50 % de demandes de lecture de données et 50 % de demandes d'écriture de données), de 1:3 (soit 25 % 20 de demandes de lecture de données et 75 % de demandes d'écriture de données), de 0:1 (soit 0 % de demandes de lecture de données et 100 % de demandes d'écriture des données), et n'importe quel rapport intermédiaire. Dans certains exemples, le module de planification 30 peut utiliser ce rapport lorsqu'il planifie des activités et/ou lorsqu'il détermine la quantité de jeux de dés qui peuvent être actifs simultanément. Par exemple, si la quantité de temps nécessaire pour effectuer 25 une activité de lecture est inférieure à la quantité de temps nécessaire pour effectuer une activité d'écriture, le module de planification 30 peut planifier que de multiples activités de lecture aient lieu pendant la même période de temps qu'une activité d'écriture unique. En tant que tel, le dispositif de stockage 6 peut réaliser un taux de lecture supérieur à un taux d'écriture. De l'une ou plusieurs de ces façons, le module de planification 30 peut planifier des activités pour atteindre 30 un ou plusieurs objectifs de performances. 18 [54] Comme indiqué ci-dessus, le module de maintenance 26 peut effectuer une ou plusieurs activités de maintenance, telle que la récupération d'espace, sur les dispositifs de mémoire 16 afin, par exemple, d'augmenter le nombre de blocs/jeux de blocs libres. En tant que tel, dans certains exemples, le module de planification 30 peut prioriser les demandes de récupération d'espace par rapport à des demandes basées sur des messages reçus du dispositif hôte 4 (par exemple, des demandes pour lire et/ou écrire des données) en allouant une quantité de jeux de dés qui peuvent être utilisés simultanément pour la récupération d'espace et en allouant une quantité de jeux de dés qui peuvent être simultanément à la disposition du dispositif hôte 4 pendant une période de temps donnée. [55] Sur la base des quantités déterminées, le module de planification 30 peut planifier des activités de telle sorte que, pendant une période de temps donnée, un premier jeu des jeux de dés effectue des activités sur la base des messages reçus du dispositif hôte 4 et un second jeu des jeux de dés effectue des activités de récupération d'espace. Dans certains exemples, le premier jeu des jeux de dés peut comporter une quantité de jeux de dés qui est inférieure ou égale à la quantité de jeux de dés qui peuvent être disponibles simultanément pour l'hôte. Dans certains exemples, le second jeu des jeux de dés peut comporter une quantité de jeux de dés qui est inférieure ou égale à une différence entre la quantité déterminée de jeux de dés qui peuvent être actifs simultanément et une quantité de jeux de dés qui sont planifiés pour effectuer des activités sur la base des messages reçus du dispositif hôte 4 pendant la période de temps particulière (c'est-à-dire, la quantité de jeux de dés auxquels le contrôleur délivre des commandes basées sur les messages reçus de l'hôte pendant la période de temps particulière). De cette façon, le module de planification 8 peut équilibrer la nécessité d'effectuer une récupération d'espace avec la quantité de bande passante disponible pour le dispositif hôte 4 tout en satisfaisant le budget de consommation d'énergie. [56] En outre, le module de planification 30 peut planifier que différents jeux de dés effectuent simultanément différentes activités (par exemple, la lecture, l'écriture et l'effacement). Par exemple, par opposition à une programmation pour que tous les jeux de dés effectuent simultanément une activité d'écriture, le module de planification 30 peut programmer simultanément un premier jeu de dés pour exécuter une activité de lecture, un deuxième jeu de dés pour exécuter une activité d'écriture, un troisième jeu de dés pour exécuter une activité d'effacement, et un quatrième jeu de dés pour être inactif De cette façon, par exemple, en 19 partitionnant les dispositifs de mémoire 16 en une pluralité de jeux de dés, les techniques de la présente invention peuvent permettre au module de planification 30 de planifier efficacement différents types d'opérations/d'activités. [57] La figure 4 est un schéma conceptuel et schématique illustrant d'autres détails d'un 5 exemple de matrice mémoire non volatile 10 de la figure 1, conformément à une ou plusieurs techniques de la présente invention. Comme discuté ci-dessus, des dispositifs de mémoire 16 peuvent être groupés en canaux 18 et les dispositifs de mémoire des dispositifs de mémoire 16 sur chaque canal peuvent partager une ou plusieurs connexions avec le contrôleur 8. Par exemple, les dispositifs de mémoire 16 groupés en un canal respectif des canaux 18 peuvent être attachés à 10 un bus d'E/S commun respectif des bus d'E/S 34A-34N (collectivement, les « bus d'E/S 34 ») et à un bus de commande commun respectif des bus de commande 36A-36N (collectivement, les « bus de commande 36 »). Comme illustré sur la figure 4, les dispositifs de mémoire 16Aa-16An du canal 18A peuvent chacun être attachés au bus d'E/S 34 A et au bus de commande 36A. [58] Dans certains exemples, chaque bus d'E/S respectif des bus d'E/S 34 peut comprendre une 15 pluralité de lignes d'E/S bidirectionnelles (par exemple, 8 lignes, 16 lignes, etc.) qui peuvent être utilisées pour échanger des informations d'adresse, des données, et des informations d'instruction entre le contrôleur 8 et les dispositifs de mémoire 16 attachés au bus d'E/S respectif. Dans certains exemples, chaque bus de commande respectif des bus de commande 36 peut comprendre une pluralité de lignes qui peuvent être utilisées pour échanger des signaux de commande, et des 20 informations d'état entre le contrôleur 8 et les dispositifs de mémoire 16 attachés au bus de commande respectif Par exemple, un exemple de bus de commande des bus de commande 36 peut inclure une ligne d'autorisation de verrou d'adresse (ALE), une ligne d'autorisation de verrou de commande (CLE), une ligne d'autorisation de lecture (RE), une ligne d'autorisation d'écriture (WE), et une ligne de protection d'écriture (WP) qui peuvent être utilisées par le contrôleur 8 25 pour envoyer des commandes à un dispositif de mémoire des dispositifs de mémoire 16; et une ligne prêt/occupé (R/B) qui peut être utilisée par un dispositif de mémoire des dispositifs de mémoire 16 pour envoyer des informations d'état au contrôleur 8. [59] Comme discuté ci-dessus, chacun des canaux 18 peut comprendre un jeu de lignes d'autorisation de circuit (CE) qui peuvent être utilisées pour multiplexer les dispositifs de 30 mémoire sur chaque canal. Par exemple, comme illustré sur la figure 4, les lignes CE 38Aa-38Na peuvent être utilisées pour multiplexer les dispositifs de mémoire 16Aa-16An du canal 18A. Par 20 exemple, pour envoyer un message au dispositif de mémoire 16Aa, le contrôleur 8 peut envoyer un signal via CE0 38Aa qui amène le dispositif de mémoire 16Aa à « écouter » les signaux sur le bus d'E/S 34A et/ou les signaux sur le bus de commande 36A . Le contrôleur 8 peut alors transmettre une commande au dispositif de mémoire 16Aa en émettant des signaux sur le bus d'E/S 34A et/ou le bus de commande 36A. De cette manière, le contrôleur 8 peut multiplexer les dispositifs de mémoire des dispositifs de mémoire 16 dans un canal particulier des canaux 18. [60] Conformément à une ou plusieurs techniques de la présente invention, le contrôleur 8 peut définir un jeu de blocs qui comprend un bloc de chaque dispositif de mémoire d'un sous-ensemble (ou jeu de dés) de dispositifs de mémoire 16 qui comprend au moins un dispositif de 10 mémoire de chacun des canaux 18. Comme discuté ci-dessus et illustré sur la figure 4, le contrôleur 8 peut partitionner les dispositifs de mémoire 16 pour définir des jeux de dés 40A-40N (collectivement, les «jeux de dés 40 ») qui comprennent chacun au moins un dispositif de mémoire (par exemple, un dé) de chacun des canaux 18. Dans certains exemples, le contrôleur 8 peut partitionner les dispositifs de mémoire 16 en jeux de dés 40 sur la base des lignes de CE 15 associées aux dispositifs de mémoire 16. Par exemple, le contrôleur 8 peut partitionner l'ensemble des dés situés physiquement sur une ligne de CE particulière (c'est-à-dire CE0 sur chacun des canaux 18) en un ou plusieurs de jeux de dés particuliers (ou sélectionnés) 40. À titre d'exemple, le contrôleur 8 peut partitionner des dispositifs de mémoire des dispositifs de mémoire 16 situés physiquement sur le CE0 de chaque canal (c'est-à-dire, les dispositifs de mémoire 16Aa, 20 16Ba, ..., et 16Na) en le jeu de dés 40A. Dans certains exemples, le contrôleur 8 peut partitionner des dispositifs de mémoire 16 en des jeux de dés 40 sur la base d'autres agencements. Par exemple, le contrôleur 8 peut partitionner des dispositifs de mémoire des dispositifs de mémoire -16 situés physiquement sur différents CE de chaque canal (c'est-à-dire, les dispositifs de mémoire 16Aa, 16Bc, ..., et 16Nb) en un jeu de dés. D'autres détails sur un exemple de jeu de dés 40A des 25 jeux de dés 40 sont discutés ci-dessous relativement au schéma conceptuel illustré à la figure 5. [61] Comme illustré sur la figure 5, chaque dispositif de mémoire 16Aa-16Na du jeu de dés 40A comprend 16 blocs. Bien que 16 blocs soient illustrés pour chacun des dispositifs de mémoire 16Aa-16Na dans l'exemple de la figure 5, dans d'autres exemples, chacun des dispositifs de mémoire 16Aa-16Na peut comporter plus de blocs. À partir de la pluralité de dispositifs de 30 mémoire 16Aa-16Na dans le jeu de dés 40A, le contrôleur 8 peut définir une pluralité de jeux de 21 blocs 42A-42N (collectivement, les «jeux de blocs 42 »). Chaque jeu de blocs 42 peut comporter un bloc (par exemple, un seul bloc) de chaque dé du jeu de dés 40A. [62] Dans certains exemples, le contrôleur 8 peut sélectionner un bloc d'un emplacement particulier dans les dispositifs de mémoire 16Aa, 16Ba, ..., et 16Na pour définir un jeu de blocs des jeux de blocs 42. Par exemple, comme illustré sur la figure 5, chaque bloc inclus dans le jeu de blocs 42A provient d'un emplacement 5 respectif de chacun des dispositifs de mémoire 16Aa, 16Ba, ..., et 16Na. Dans certains exemples, le contrôleur 8 peut sélectionner un bloc à partir de différents emplacements au sein des dispositifs de mémoire 16Aa, 16Ba, ..., et 16Na pour définir un jeu de blocs des jeux de blocs 42. Par exemple, comme illustré sur la figure 5, le jeu de blocs 42B peut comprendre le bloc 4 du dispositif de mémoire 16Aa, le bloc 7 du dispositif de mémoire 16Ba, le bloc 12 du dispositif de mémoire 16Ca, ..., et le bloc 7 du dispositif de mémoire 16Na. Dans certains exemples, par exemple lorsqu'il n'est plus souhaitable d'utiliser un bloc à un emplacement particulier d'un dispositif de mémoire (par exemple, lorsque le bloc est défectueux, a un nombre de cycles d'écriture/d'effacement relativement élevé par rapport aux autres blocs du même mémoire dispositif, etc.), le contrôleur 8 peut continuer à sélectionner des blocs à l'emplacement particulier (ou à un emplacement différent) d'autres dispositifs de mémoire au sein du jeu de dés 40A pour définir des jeux de blocs. [63] Dans certains exemples, le contrôleur 8 peut définir les jeux de blocs en utilisant un agencement virtualisé de dispositifs de mémoire 16 au sein d'un NVMA 10. Par exemple, par opposition à la sélection d'un dispositif de mémoire unique des dispositifs de mémoire 16 à partir de chacun des canaux physiques 18, le contrôleur 8 peut sélectionner de multiples dispositifs de mémoire des dispositifs de mémoire 16 à partir de chacun des canaux physiques 18 pour définir un jeu de dés des jeux de dés 40. En particulier, le contrôleur 8 peut sélectionner des dispositifs de mémoire des dispositifs de mémoire 16 attachés à différentes lignes de CE au sein de chacun des canaux physiques 18 pour définir un jeu de dés des jeux de dés 40. Par exemple, la figure 6 est un schéma fonctionnel conceptuel illustrant un autre exemple de technique qui peut être mise en oeuvre par un contrôleur d'un dispositif de stockage pour définir des jeux de blocs à partir d'un jeu de dés, conformément à une ou plusieurs techniques de la présente invention. Comme illustré dans l'exemple de la figure 6, le contrôleur 8 peut définir le jeu de dés 40A' en sélectionnant des dispositifs de mémoire 16Aa, 16Ba, 16Ca, ..., et 16Na et des dispositifs de mémoire 16Ab, 16Bb, 16Cb, ..., et 16Nb. En outre, comme discuté ci-dessus en référence à la figure 4, les dispositifs de 22 mémoire 16Aa, 16Ba, 16Ca, ..., et 16Na peuvent être reliés à un premier ensemble de lignes d'autorisation de circuit, par exemple, CE0 38Aa-38An, et les dispositifs de mémoire 16Ab, 16Bb, 16Cb, ..., et 16Nb peut être reliés à un second ensemble de lignes d'autorisation de circuit, par exemple, CE1-38Ba-38Bn. [64] Au sein de chaque jeu de dés des jeux de dés 40, le contrôleur 8 peut mapper respectivement les dispositifs de mémoire des dispositifs de mémoire 16 qui sont attachés à chacun des canaux 18 avec une pluralité de canaux virtuels. Dans l'exemple de la figure 6, le contrôleur 8 peut mapper les dispositifs de mémoire 16Aa, 16Ba, 16Ca, ..., et 16Na avec un premier ensemble de canaux virtuels et mapper les dispositifs de mémoire 16Ab, 16Bb, ..., et 16Nb avec un second ensemble de canaux virtuels, par exemple, sur la base des lignes d'autorisation CE auxquelles les dispositifs de mémoire 16Aa, 16Ba, 16Ca, ..., 16Na et et les dispositifs de mémoire 16Ab, 16Bb, 16Nb et sont reliés, respectivement. De cette manière, le contrôleur 8 peut définir un plus grand nombre de canaux virtuels que la quantité de canaux physiques auxquels les dispositifs de mémoire 16 sont effectivement attachés. Dans certains exemples, cela peut permettre au contrôleur 8 ou 20 d'accéder à un parallélisme accru des dispositifs de mémoire 16. [65] Le contrôleur 8 peut alors définir des jeux de blocs 42 en utilisant les techniques décrites ci-dessus. Par exemple, pour un jeu de blocs particulier des jeux de blocs 40, le contrôleur 8 peut définir une pluralité de jeux de blocs 42 qui peuvent comprendre chacun un bloc de chaque dé du jeu de dés particulier (ou sélectionné). Lorsque le jeu de dés particulier comprend des dispositifs de mémoire des dispositifs de mémoire 16 attachés à différentes lignes de CE au sein de chacun des canaux physiques 18, le contrôleur 8 peut définir un jeu de blocs des jeux de blocs 42 en sélectionnant un bloc à partir de chaque dispositif de mémoire des dispositifs de mémoire 16 qui est attaché à une ligne de CE différente au sein de chacun des canaux physiques 18. Comme illustré dans l'exemple de la figure 6, le contrôleur 8 peut définir le jeu de blocs 42A' en sélectionnant un bloc de chacun des dispositifs de mémoire 16Aa, 16Ba, 16Ca, ..., et 16Na et chacun des dispositifs de mémoire 16Ab, 16Bb, 16Cb, ..., et 16Nb. [66] La figure 7 est un organigramme illustrant un exemple de technique pour définir des jeux de dés et des jeux de blocs dans un dispositif de stockage, conformément à une ou plusieurs techniques de la présente invention. La technique de la figure 7 sera décrite en référence simultanée au dispositif de stockage 6 et au contrôleur 8 de la figure 1 et au contrôleur 20 de la 23 figure 3 pour faciliter la description, bien que des dispositifs de calcul ayant des configurations différentes de celle du dispositif de stockage 6, du contrôleur 8, ou du contrôleur 20 puissent mettre en oeuvre les techniques de la figure 7. [67] Conformément à une ou plusieurs techniques de la présente invention, le contrôleur 8 peut définir, à partir d'une matrice mémoire (par exemple, NVMA 10) comprenant une pluralité de dés (par exemple, les dispositifs de mémoire 16) agencés en une pluralité de canaux (par exemple, les canaux 18), une pluralité de jeux de dés qui comprennent chacun au moins un dé de chacun de la pluralité de canaux (702). Par exemple, le module d'écriture 24 du contrôleur 20 peut définir une pluralité de jeux de dés 40 selon les techniques décrites ci-dessus en référence à la figure. 4. Dans certains exemples, le module d'écriture 24 peut définir la pluralité de jeux de dés en recevant des instructions de programme qui indiquent le partitiormement des dispositifs de mémoire 16 en jeux de dés 40. [68] Le contrôleur 8 peut définir, à partir d'un jeu de dés sélectionné de la pluralité de jeux de dés, une pluralité de jeux de blocs qui comprennent chacun un bloc de chaque dé du jeu de dés sélectionné (704). À titre d'exemple, le module d'écriture 24 peut définir une pluralité de jeux de blocs 42 à partir du jeu de dés 40A qui comprennent chacun un bloc de chaque dé du jeu de dés 40A selon les techniques décrites ci-dessus en référence à la figure 5. Dans certains exemples, le contrôleur 8 peut redéfinir un ou plusieurs de la pluralité de jeux de blocs sur la base d'informations d'état des blocs. Par exemple, si un bloc particulier d'un dispositif de mémoire particulier est défectueux, le contrôleur 8 peut sélectionner un autre bloc du dispositif de mémoire particulier pour redéfinir un jeu de blocs qui comporte le bloc particulier. [69] Le contrôleur 8 peut recevoir une unité de données à stocker (706). Par exemple, le contrôleur 8 peut recevoir un message d'un dispositif hôte, tel que le dispositif hôte 4 de la figure 1, qui inclut une adresse de bloc logique et l'unité de données à stocker. [70] Le contrôleur 8 peut transmettre des commandes qui amènent des parties de l'unité de données à être stockées dans des blocs d'un jeu de blocs sélectionné de la pluralité de jeux de blocs (708). Par exemple, le module d'écriture 24 du contrôleur 8 peut diviser l'unité de données en une pluralité de parties respectives et transmettre des commandes qui amènent des dispositifs de mémoire des dispositifs de mémoire 16 qui comprennent des blocs respectifs du jeu de blocs particulier à stocker les parties respectives de l'unité de données. 24 [71] De cette façon, par exemple, en écrivant simultanément les parties respectives des données dans les blocs respectifs des dispositifs de mémoire sur des canaux différents, le contrôleur 8 peut améliorer le débit en utilisant le parallélisme. De cette manière également, le contrôleur 8 peut réduire le nombre de blocs inclus dans les unités de base du domaine de gestion logique, par exemple, sans pour autant compromettre le débit potentiel. [72] Les exemples suivants peuvent illustrer une ou plusieurs des techniques de la présente invention. [73] Exemple 1. Procédé comprenant : définir, à partir d'une matrice mémoire comprenant une pluralité de dés agencés en une pluralité de canaux, une pluralité de jeux de dés sur la base des lignes d'autorisation de circuit respectives associées à la pluralité de dés, dans lequel chaque jeu de dés de la pluralité de jeux de dés comprend au moins un dé de chacun de la pluralité de canaux ; définir, à partir d'un jeu de dés sélectionné de la pluralité de jeux de dés, une pluralité de jeux de blocs, dans lequel chaque jeu de blocs comprend un bloc de chaque dé du jeu de dés sélectionné ; recevoir, par un contrôleur de la matrice mémoire, une unité de données à stocker ; et transmettre, par le contrôleur, des commandes qui amènent l'unité de données à être stockée dans les blocs d'un jeu de blocs sélectionné de la pluralité de jeux de blocs. [74] Exemple 2. Procédé de l'exemple 1, comprenant en outre : déterminer, par le contrôleur, une quantité de jeux de dés qui peuvent être actifs simultanément ; transmettre, par le contrôleur, des commandes à un jeu de la pluralité de jeux de dés qui comprend un nombre de jeux de dés qui est inférieur ou égal à la quantité de jeux de dés qui peuvent être actifs simultanément ; et s'abstenir, par le contrôleur, de transmettre des commandes qui amèneraient plus de jeux de dés de la pluralité de jeux de dés à être actifs simultanément que la quantité de jeux de dés qui peuvent être actifs simultanément. [75] Exemple 3. Procédé selon une combinaison quelconque des exemples 1 et 2, comprenant en outre : transmettre, par le contrôleur, de premières commandes qui amènent un premier sous-ensemble de la pluralité de jeux de dés à être actifs pendant une première période de temps de telle sorte qu'une quantité d'énergie consommée par la matrice mémoire pendant la première période de temps est inférieure ou égale à un budget de consommation d'énergie ; et transmettre, par le contrôleur, de secondes commandes qui amènent un second sous-ensemble de la pluralité de jeux de dés à être actif pendant une seconde période de temps de telle sorte qu'une 25 quantité d'énergie consommée par la matrice mémoire pendant la seconde période de temps est également inférieure ou égale au budget de consommation d'énergie. [76] Exemple 4. Procédé selon une combinaison quelconque des exemples 1 à 3, dans lequel le second sous-ensemble comprend au moins un jeu de dés de la pluralité de jeux de dés non inclus dans le premier sous-ensemble de telle sorte que les dés dudit au moins un jeu de dés sont actifs pendant la seconde période de temps, mais pas actifs pendant la première période de temps. [77] Exemple 5. Procédé selon une combinaison quelconque des exemples 1 à 4, dans lequel la transmission des premières commandes comprend : transmettre une première commande d'un ensemble de commandes aux dés d'un premier jeu de dés du premier sous-ensemble, dans lequel l'ensemble de commandes comprend une commande de lecture, une commande d'écriture, et une commande d'effacement ; et transmettre une seconde commande différente de l'ensemble de commandes aux dés d'un second jeu de dés du premier sous-ensemble. [78] Exemple 6. Procédé selon une combinaison quelconque des exemples 1 à 5, dans lequel la détermination de la quantité de jeux de dés devant être actifs simultanément comprend : déterminer la quantité de jeux de dés qui peuvent être actifs simultanément pendant le temps d'exécution et sur la base d'au moins l'un d'un budget de consommation d'énergie ou d'un objectif de performances. [79] Exemple 7. Procédé selon une combinaison quelconque des exemples 1 à 6, comprenant en outre : exécuter une récupération d'espace au sein de la pluralité de jeux de dés pour générer des jeux de blocs vides. [80] Exemple 8. Procédé selon une combinaison quelconque des exemples 1 à 7, dans lequel la détermination de la quantité de jeux de dés qui peuvent être actifs simultanément comprend la détermination une première quantité de jeux de dés qui peuvent être actifs 25 simultanément pendant une période de temps particulière, le procédé comprenant en outre : déterminer, par le contrôleur, une seconde quantité de jeux de dés qui peuvent être disponibles simultanément pour un hôte pendant la période de temps particulière, dans lequel la seconde quantité de jeux de dés est inférieure ou égale à la première quantité de jeux de dés ; transmettre, par le contrôleur et sur la base de messages reçus à partir de l'hôte, des commandes à un premier 30 jeu des jeux de dés de la pluralité de jeux de dés qui comprend un nombre de jeux de dés qui est inférieur ou égal à la seconde quantité de jeux de dés ; déterminer une différence entre la 26 première quantité de jeux de dés et le nombre de jeux de dés auxquels le contrôleur a transmis des commandes sur la base des messages reçus de l'hôte ; et effectuer une récupération d'espace sur un second ensemble de jeux de dés de la pluralité de jeux de dés qui comprend une quantité de jeux de dés qui est inférieure ou égale à la différence déterminée. [81] Exemple 9. Procédé selon une combinaison quelconque des exemples 1 à 8, comprenant en outre : définir le jeu de dés particulier au moins en sélectionnant un seul dé de la pluralité de dés à partir de chacun de la pluralité de canaux. [82] Exemple 10. Procédé selon une combinaison quelconque des exemples 1 à 9, dans lequel la pluralité de canaux comprend N canaux physiques, le procédé comprenant en outre : définir le jeu de dés sélectionné au moins en sélectionnant, à partir de chacun de la pluralité de canaux, au moins deux de la pluralités de dés qui sont associés à différentes lignes d'autorisation de circuit ; et mapper les dés sélectionnés avec M canaux virtuels m où M est un nombre entier au moins deux fois plus grand que N. [83] Exemple 11. Dispositif de stockage comprenant : une matrice mémoire comprenant une pluralité de dés agencés en une pluralité de canaux ; et un contrôleur configuré pour : définir, à partir de la matrice mémoire, une pluralité de jeux de dés sur la base des lignes d'autorisation de circuit respectives associées à la pluralité de dés, dans lequel chaque jeu de dés de la pluralité de jeux de dés comprend au moins un dé de chacun de la pluralité de canaux ; définir, à partir d'un jeu de dés sélectionné de la pluralité de jeux de dés, une pluralité de jeux de blocs, dans lequel chaque jeu de blocs comprend un bloc de chaque dé du jeu de dés sélectionné ; recevoir une unité de données à stocker ; et transmettre des commandes qui amènent l'unité de données à être stockée dans des blocs d'un jeu de blocs sélectionné de la pluralité de jeux de blocs. [84] Exemple 12. Dispositif de stockage de l'exemple 11, dans lequel le contrôleur est en outre configuré pour exécuter le procédé selon une combinaison quelconque des exemples 1 à 10. [85] Exemple 13. Support de stockage lisible par ordinateur stockant des instructions qui, lorsqu'elles sont exécutées, amènent un ou plusieurs processeurs d'un dispositif de stockage à: définir, à partir d'une matrice mémoire comportant une pluralité de dés agencés en une pluralité de canaux, une pluralité de jeux de dés sur la base des lignes d'autorisation de circuit respectives associées à la pluralité de dés, dans lequel chaque jeu de dés de la pluralité de jeux de dés comprend au moins un dé de chacun de la pluralité de canaux ; définir, à partir d'un jeu de dés sélectionné de la pluralité de jeux de dés, une pluralité de jeux de blocs, dans lequel chaque jeu 27 de blocs comprend un bloc de chaque dé du jeu de dés sélectionné ; recevoir une unité de données à stocker ; et transmettre des commandes qui amènent l'unité de données à être stockée dans les blocs d'un jeu de blocs sélectionné de la pluralité de jeux de blocs. [86] Exemple 14. Support de stockage lisible par ordinateur de l'exemple 13, stockant en outre des instructions qui, lorsqu'elles sont exécutées, amènent un ou plusieurs processeurs du dispositif de stockage à exécuter le procédé d'une combinaison quelconque des exemples 1 à 10. [87] Exemple 15. Système comprenant : un moyen pour définir, à partir d'une matrice mémoire comprenant une pluralité de dés agencés en une pluralité de canaux, une pluralité de jeux de dés sur la base des lignes d'autorisation de circuit respectives associées à la pluralité de 10 dés, dans lequel chaque jeu de dés de la pluralité de jeux de dés comprend au moins un dé de chacun de la pluralité de canaux ; un moyen pour définir, à partir d'un jeu de dés sélectionné de la pluralité de jeux de dés, une pluralité de jeux de blocs, dans lequel chaque jeu de blocs comprend un bloc de chaque dé du jeu de dés sélectionné ; un moyen pour recevoir une unité de données à stocker ; et un moyen pour transmettre des commandes qui amènent l'unité de données à être 15 stockée dans les blocs d'un jeu de blocs sélectionné de la pluralité de jeux de blocs. [88] Exemple 16. Système selon l'exemple 15, comprenant en outre un moyen pour exécuter le procédé d'une combinaison quelconque des exemples 1 à 10. [89] Les techniques décrites dans la présente description peuvent être mises en oeuvre, au moins en partie, dans des matériels, des logiciels, des micrologiciels, ou n'importe quelle 20 combinaison de ceux-ci. Par exemple, divers aspects des techniques décrites peuvent être mis en oeuvre au sein d'un ou plusieurs processeurs, y compris un ou plusieurs microprocesseurs, processeurs de signaux numériques (DSP), circuits intégrés à application spécifique (ASIC), réseaux prédiffusés programmables par l'utilisateur (FPGA), ou tout autre un circuit logique intégré ou discret équivalent, ainsi que n'importe quelles combinaisons de ces composants. Le 25 terme « processeur » ou « circuit de traitement » peut généralement faire référence à l'un quelconque des circuits logiques qui précèdent, seul ou en combinaison avec d'autres circuits logiques, ou tout autre circuit équivalent. Une unité de commande comprenant un matériel peut également mettre en oeuvre une ou plusieurs des techniques de la présente invention. [90] De tels matériels, logiciels et micrologiciels peuvent être mis en oeuvre au sein d'un même 30 appareil ou dans des dispositifs séparés pour prendre en charge les diverses techniques décrites dans la présente description. En outre, toutes les unités, tous les modules ou tous les composants 28 décrits peuvent être mis en oeuvre ensemble ou séparément en tant que dispositifs logiques discrets, mais interopérables. La description des différentes caractéristiques en tant que modules ou unités est destinée à mettre en évidence différents aspects fonctionnels et ne signifie pas nécessairement que ces modules ou unités doivent être réalisés par des composants matériels, micrologiciels ou logiciels distincts. Plutôt, les fonctionnalités associées à un ou plusieurs modules ou unités peuvent être exécutées par des composants matériels, micrologiciels ou logiciels distincts, ou intégrées dans des composants matériels, micrologiciels ou logiciels communs ou distincts. [91] Les techniques décrites dans le présent mémoire peuvent également être incorporées ou 113 codées dans un article manufacturé comprenant un support de stockage lisible par ordinateur codé avec des instructions. Les instructions intégrées ou codées dans un article manufacturé comprenant 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, comme lorsque des instructions incluses ou codées dans le support de 15 stockage lisible par ordinateur sont exécutées par lesdits un ou plusieurs processeurs. Les supports de stockage lisibles par ordinateur peuvent inclure une mémoire vive (RAM), une mémoire morte (ROM), une mémoire morte programmable (PROM), une mémoire morte reprogrammable (EPROM), une mémoire morte programmable et effaçable électroniquement (EEPROM), une mémoire flash, un disque dur, un disque compact ROM (CD-ROM), une 20 disquette, une cassette, des supports magnétiques, des supports optiques, ou tout autre support lisible par ordinateur. Dans certains exemples, un article manufacturé peut comprendre un ou plusieurs supports de stockage lisibles par ordinateur. [92] Dans certains exemples, un support de stockage lisible par ordinateur peut comprendre un support non transitoire. Le terme « non transitoire » peut indiquer que le support de stockage est 25 pas incorporé dans une onde porteuse ou un signal propagé. Dans certains exemples, un support de stockage non transitoire peut stocker des données qui peuvent changer au fil du temps (par exemple, dans la mémoire vive ou la mémoire cache). [93] Plusieurs exemples ont été décrits. Ces exemples ainsi que d'autres relèvent de la portée des revendications suivantes. 29 REVENDICATIONS: 1. Dispositif de stockage comprenant : une matrice mémoire comprenant une pluralité de dés agencés en une pluralité de canaux ; et un contrôleur configuré pour : définir, à partir de la matrice mémoire, une pluralité de jeux de dés sur la base de lignes d'autorisation de circuit respectives associées à la pluralité de dés, dans lequel chaque jeu de dés de la pluralité de jeux de dés comprend au moins un dé de chacun de la 10 pluralité de canaux ; définir, à partir d'un jeu de dés sélectionné de la pluralité de jeux de dés, une pluralité de jeux de blocs, dans lequel chaque jeu de blocs comprend un bloc de chaque dé du jeu de dés sélectionné ; recevoir une unité de données à stocker ; et 15 transmettre des commandes qui amènent l'unité de données à être stockée dans les blocs d'un jeu de blocs sélectionné de la pluralité de jeux de blocs. 2. Dispositif de stockage selon la revendication 1, dans lequel le contrôleur est en outre configuré pour : 20 déterminer une quantité de jeux de dés qui peuvent être actifs simultanément ; transmettre des commandes à un jeu de la pluralité de jeux de dés qui comprend un nombre de jeux de dés qui est inférieur ou égal à la quantité de jeux de dés qui peuvent être actifs simultanément ; et s'abstenir de transmettre des commandes qui amèneraient plus de jeux de dés de la 25 pluralité de jeux de dés à être actifs simultanément que la quantité de jeux de dés qui peuvent être actifs simultanément. 3. Dispositif de stockage selon la revendication 2, dans lequel le contrôleur est configuré pour déterminer la quantité de jeux de dés devant être actifs simultanément au moins en : 30déterminant la quantité de jeux de dés qui peuvent être actifs simultanément pendant le temps d'exécution et sur la base d'au moins l'un d'un budget de consommation d'énergie ou d'un objectif de performances. 4. Dispositif de stockage selon la revendication 2, dans lequel le contrôleur est configuré pour déterminer la quantité de jeux de dés qui peuvent être actifs simultanément au moins en déterminant une première quantité de jeux de dés qui peuvent être actifs simultanément pendant une période de temps particulière, et dans lequel le contrôleur est en outre configuré pour : déterminer une seconde quantité de jeux de dés qui peuvent être disponibles simultanément pour un hôte pendant la période de temps particulière, dans lequel la seconde quantité de jeux de dés est inférieure ou égale à la première quantité de jeux de dés ; transmettre, sur la base de messages reçus de l'hôte, des commandes à un premier jeu des jeux de dés de la pluralité de jeux de dés qui comprend un nombre de jeux de dés qui est inférieur ou égal à la seconde quantité de jeux de dés ; déterminer une différence entre la première quantité de jeux de dés et le nombre de jeux de dés auxquels le contrôleur a transmis des commandes sur la base des messages reçus de l'hôte ; et effectuer une récupération d'espace sur un second jeu de jeux de dés de la pluralité de jeux de dés qui comprend une quantité de jeux de dés qui est inférieure ou égale à la différence 20 déterminée. 5. Dispositif de stockage selon la revendication 1, dans lequel le contrôleur est en outre configuré pour : transmettre de premières commandes qui amènent un premier sous-ensemble de la 25 pluralité de jeux de dés à être actif pendant une première période de temps de telle sorte qu'une quantité d'énergie consommée par la matrice mémoire pendant la première période de temps est inférieure ou égale à un budget de consommation d'énergie ; et transmettre de secondes commandes qui amènent un second sous-ensemble de la pluralité de jeux de dés à être actif pendant une seconde période de temps de telle sorte qu'une quantité 30 d'énergie consommée par la matrice mémoire pendant la seconde période de temps est également inférieure ou égale au budget de consommation d'énergie. 31. Dispositif de stockage selon la revendication 5, dans lequel le second sous-ensemble comprend au moins un jeu de dés de la pluralité de jeux de dés non inclus dans le premier sous-ensemble de telle sorte que les dés dudit au moins un jeu de dés sont actifs pendant la seconde période de temps, mais non actifs pendant la première période de temps. 7. Dispositif de stockage selon la revendication 6, dans lequel le contrôleur est configuré pour transmettre les premières commandes au moins en : transmettant une première commande d'un ensemble de commandes aux dés d'un premier jeu de dés du premier sous-ensemble, dans lequel l'ensemble de commandes comprend une 10 commande de lecture, une commande d'écriture, et une commande d'effacement ; et transmettre une seconde commande différente de l'ensemble de commandes aux dés d'un second jeu de dés du premier sous-ensemble. 8. Dispositif de stockage selon la revendication 1, dans lequel le contrôleur est en outre 15 configuré pour : effectuer une récupération d'espace au sein de la pluralité de jeux de dés pour générer des jeux de blocs vides. 9. Dispositif de stockage selon la revendication 1, dans lequel le contrôleur est en outre 20 configuré pour : définir le jeu de dés particulier en sélectionnant au moins un dé de la pluralité de dés à partir de chacun de la pluralité de canaux. 10. Dispositif de stockage selon la revendication 1, dans lequel la pluralité de canaux 25 comprend N canaux physiques, et dans lequel le contrôleur est en outre configuré pour : définir le jeu de dés sélectionné au moins en sélectionnant, à partir de chacun de la pluralité de canaux, au moins deux de la pluralité de dés qui sont associés à différentes lignes d'autorisation de circuit ; et mapper les dés sélectionnés avec M canaux virtuels où M est un nombre entier au moins 30 deux fois plus grand que N. 32. Procédé comprenant : définir, à partir d'une matrice mémoire comprenant une pluralité de dés agencés en une pluralité de canaux, une pluralité de jeux de dés sur la base de lignes d'autorisation de circuit respectives associées à la pluralité de dés, dans lequel chaque jeu de dés de la pluralité de jeux de 5 dés comprend au moins un dé de chacun de la pluralité de canaux ; définir, à partir d'un jeu de dés sélectionné de la pluralité de jeux de dés, une pluralité de jeux de blocs, dans lequel chaque jeu de blocs comprend un bloc de chaque dé du jeu de dés sélectionné ; recevoir, par un contrôleur de la matrice mémoire, une unité de données à stocker ; et 10 transmettre, par le contrôleur, des commandes qui amènent l'unité de données à être stockée dans des blocs d'un jeu de blocs sélectionné de la pluralité de jeux de blocs. 12. Procédé selon la revendication 11, comprenant en outre : déterminer, par le contrôleur, une quantité de jeux de dés qui peuvent être actifs 15 simultanément ; transmettre, par le contrôleur, des commandes à un jeu de la pluralité de jeux de dés qui comprend un nombre de jeux de dés qui est inférieur ou égal à la quantité de jeux de dés qui peuvent être actifs simultanément ; et s'abstenir, par le contrôleur, de transmettre des commandes qui amèneraient plus de jeux 20 de dés de la pluralité de jeux de dés à être actifs simultanément que la quantité de jeux de dés qui peuvent être actifs simultanément. 13. Procédé selon la revendication 11, comprenant en outre : transmettre, par le contrôleur, de premières commandes qui amènent un premier sous-25 ensemble de la pluralité de jeux de dés à être actif pendant une première période de temps de telle sorte qu'une quantité d'énergie consommée par la matrice mémoire pendant la première période de temps est inférieure ou égale à un budget de consommation d'énergie ; et transmettre, par le contrôleur, de secondes commandes qui amènent un second sous-ensemble de la pluralité de jeux de dés à être actif pendant une seconde période de temps de telle 30 sorte qu'une quantité d'énergie consommée par la matrice mémoire pendant la seconde période de temps est également inférieure ou égale au budget de consommation d'énergie. 33. Procédé selon la revendication 13, dans lequel la transmission des premières commandes comprend : transmettre une première commande d'un ensemble de commandes aux dés d'un premier jeu de dés du premier sous-ensemble, dans lequel l'ensemble de commandes comprend une 5 commande de lecture, une commande d'écriture, et une commande d'effacement ; et transmettre une seconde commande différente de l'ensemble de commandes aux dés d'un second jeu de dés du premier sous-ensemble. 15. Procédé selon la revendication 12, dans lequel la détermination de la quantité de jeux de 10 dés qui peuvent être actifs simultanément comprend la détermination d'une première quantité de jeux de dés qui peuvent être actifs simultanément pendant une période de temps particulière, le procédé comprenant en outre : déterminer, par le contrôleur, une seconde quantité de jeux de dés qui peuvent être disponibles simultanément pour un hôte pendant la période de temps particulière, dans lequel la 15 seconde quantité de jeux de dés est inférieure ou égale à la première quantité de jeux de dés ; transmettre, par le contrôleur, sur la base de messages reçus de l'hôte, des commandes à un premier jeu des jeux de dés de la pluralité de jeux de dés qui comprend un nombre de jeux de dés qui est inférieur ou égal à la seconde quantité de jeux de dés ; déterminer une différence entre la première quantité de jeux de dés et le nombre de jeux 20 de dés auxquels le contrôleur a transmis des commandes sur la base des messages reçus de l'hôte ; et effectuer une récupération d'espace sur un second jeu de jeux de dés de la pluralité de jeux de dés qui comprend une quantité de jeux de dés qui est inférieure ou égale à la différence déterminée. 25 16. Support de stockage lisible par ordinateur stockant des instructions qui, lorsqu'elles sont exécutées, amènent un ou plusieurs processeurs d'un dispositif de stockage à: définir, à partir d'une matrice mémoire comprenant une pluralité de dés agencés en une pluralité de canaux, une pluralité de jeux de dés sur la base de lignes d'autorisation de circuit 30 respectives associées à la pluralité de dés, dans lequel chaque jeu de dés de la pluralité de jeux di dés comprend au moins un dé de chacun de la pluralité de canaux ; 34définir, à partir d'un jeu de dés sélectionné de la pluralité de jeux de dés, une pluralité de jeux de blocs, dans lequel chaque jeu de blocs comprend un bloc de chaque dé du jeu de dés sélectionné ; recevoir une unité de données à stocker ; et transmettre des commandes qui amènent l'unité de données à être stockée dans les blocs d'un jeu de blocs sélectionné de la pluralité de jeux de blocs. 17. Support de stockage lisible par ordinateur selon la revendication 16, stockant en outre des instructions qui, lorsqu'elles sont exécutées, amènent un ou plusieurs processeurs du dispositif de stockage à : déterminer une quantité de jeux de dés qui peuvent être actifs simultanément ; transmettre des commandes à un jeu de la pluralité de jeux de dés qui comprend un nombre de jeux de dés qui est inférieur ou égal à la quantité de jeux de dés qui peuvent être actifs simultanément ; et s'abstenir de transmettre des commandes qui amèneraient plus de jeux de dés de la pluralité de jeux de dés à être actifs simultanément que la quantité de jeux de dés qui peuvent être actifs simultanément. 18. Support de stockage lisible par ordinateur selon la revendication 17, dans lequel les instructions qui, lorsqu'elles sont exécutées, amènent un ou plusieurs processeurs du dispositif de stockage à déterminer la quantité de jeux de dés qui peuvent être actifs simultanément comprennent des instructions qui, lorsqu'elles sont exécutées, amènent un ou plusieurs processeurs du dispositif de stockage à déterminer une première quantité de jeux de dés qui peuvent être actifs simultanément pendant une période de temps particulière, et comprenant en outre des instructions qui, lorsqu'elles sont exécutées, amènent un ou plusieurs processeurs du dispositif de stockage à: déterminer une seconde quantité de jeux de dés qui peuvent être disponibles simultanément pour un hôte pendant la période de temps particulière, dans lequel la seconde quantité de jeux de dés est inférieure ou égale à la première quantité de jeux de dés ; 35transmettre, sur la base de messages reçus de l'hôte, des commandes à un premier jeu de jeux de dés de la pluralité de jeux de dés qui comprend un nombre de jeux de dés qui est inférieur ou égal à la seconde quantité de jeux de dés ; déterminer une différence entre la première quantité de jeux de dés et le nombre de jeux 5 de dés auxquels le contrôleur a transmis des commandes sur la base des messages reçus de l'hôte ; et effectuer une récupération d'espace sur un second jeu de jeux de dés de la pluralité de jeux de dés qui comprend une quantité de jeux de dés qui est inférieure ou égale à la différence déterminée. 10 19. Système, comprenant : un moyen pour définir, à partir d'une matrice mémoire comprenant une pluralité de dés agencés en une pluralité de canaux, une pluralité de jeux de dés sur la base de lignes d'autorisation de circuit respectives associées à la pluralité de dés, dans lequel chaque jeu de dés 15 de la pluralité de jeux de dés comprend au moins un dé de chacun de la pluralité de canaux ; un moyen pour définir, à partir d'un jeu de dés sélectionné de la pluralité de jeux de dés, une pluralité de jeux de blocs, dans lequel chaque jeu de blocs comprend un bloc de chaque dé du jeu de dés sélectionné ; un moyen pour recevoir une unité de données à stocker ; et 20 un moyen pour transmettre des commandes qui amènent l'unité de données à être stockée dans les blocs d'un jeu de blocs sélectionné de la pluralité de jeux de blocs. 20. Système selon la revendication 20, comprenant en outre : un moyen pour déterminer une quantité de jeux de dés qui peuvent être actifs 25 simultanément ; un moyen pour transmettre des commandes à un jeu de la pluralité de jeux de dés qui comprend un nombre de jeux de dés qui est inférieur ou égal à la quantité de jeux de dés qui peuvent être actifs simultanément ; et un moyen pour s'abstenir de transmettre des commandes qui amèneraient plus de jeux de 30 dés de la pluralité de jeux de dés à être actifs simultanément que la quantité de jeux de dés qui peuvent être actifs simultanément. 36