FR3028656A1 - - Google Patents

Download PDF

Info

Publication number
FR3028656A1
FR3028656A1 FR1560938A FR1560938A FR3028656A1 FR 3028656 A1 FR3028656 A1 FR 3028656A1 FR 1560938 A FR1560938 A FR 1560938A FR 1560938 A FR1560938 A FR 1560938A FR 3028656 A1 FR3028656 A1 FR 3028656A1
Authority
FR
France
Prior art keywords
resources
utilization rate
subset
module
zero subset
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Withdrawn
Application number
FR1560938A
Other languages
English (en)
Inventor
Dillip K Dash
James V Henson
Bhasker R Jakka
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Western Digital Technologies Inc
Original Assignee
HGST Netherlands BV
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by HGST Netherlands BV filed Critical HGST Netherlands BV
Publication of FR3028656A1 publication Critical patent/FR3028656A1/fr
Withdrawn legal-status Critical Current

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F1/00Details not covered by groups G06F3/00 - G06F13/00 and G06F21/00
    • G06F1/16Constructional details or arrangements
    • G06F1/20Cooling means
    • G06F1/206Cooling means comprising thermal management
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/08Error detection or correction by redundancy in data representation, e.g. by using checking codes
    • G06F11/10Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's
    • G06F11/1008Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's in individual solid state devices
    • G06F11/1072Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's in individual solid state devices in multilevel memories
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/50Allocation of resources, e.g. of the central processing unit [CPU]
    • G06F9/5005Allocation of resources, e.g. of the central processing unit [CPU] to service a request
    • G06F9/5011Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resources being hardware resources other than CPUs, Servers and Terminals
    • G06F9/5016Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resources being hardware resources other than CPUs, Servers and Terminals the resource being the memory
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F1/00Details not covered by groups G06F3/00 - G06F13/00 and G06F21/00
    • G06F1/26Power supply means, e.g. regulation thereof
    • G06F1/32Means for saving power
    • G06F1/3203Power management, i.e. event-based initiation of a power-saving mode
    • G06F1/3234Power saving characterised by the action undertaken
    • G06F1/329Power saving characterised by the action undertaken by task scheduling
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F1/00Details not covered by groups G06F3/00 - G06F13/00 and G06F21/00
    • G06F1/26Power supply means, e.g. regulation thereof
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F1/00Details not covered by groups G06F3/00 - G06F13/00 and G06F21/00
    • G06F1/26Power supply means, e.g. regulation thereof
    • G06F1/32Means for saving power
    • G06F1/3203Power management, i.e. event-based initiation of a power-saving mode
    • G06F1/3206Monitoring of events, devices or parameters that trigger a change in power modality
    • G06F1/3215Monitoring of peripheral devices
    • G06F1/3221Monitoring of peripheral devices of disk drive devices
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F1/00Details not covered by groups G06F3/00 - G06F13/00 and G06F21/00
    • G06F1/26Power supply means, e.g. regulation thereof
    • G06F1/32Means for saving power
    • G06F1/3203Power management, i.e. event-based initiation of a power-saving mode
    • G06F1/3234Power saving characterised by the action undertaken
    • G06F1/3243Power saving in microcontroller unit
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F1/00Details not covered by groups G06F3/00 - G06F13/00 and G06F21/00
    • G06F1/26Power supply means, e.g. regulation thereof
    • G06F1/32Means for saving power
    • G06F1/3203Power management, i.e. event-based initiation of a power-saving mode
    • G06F1/3234Power saving characterised by the action undertaken
    • G06F1/325Power saving in peripheral device
    • G06F1/3268Power saving in hard disk drive
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F1/00Details not covered by groups G06F3/00 - G06F13/00 and G06F21/00
    • G06F1/26Power supply means, e.g. regulation thereof
    • G06F1/32Means for saving power
    • G06F1/3203Power management, i.e. event-based initiation of a power-saving mode
    • G06F1/3234Power saving characterised by the action undertaken
    • G06F1/325Power saving in peripheral device
    • G06F1/3275Power saving in memory, e.g. RAM, cache
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F1/00Details not covered by groups G06F3/00 - G06F13/00 and G06F21/00
    • G06F1/26Power supply means, e.g. regulation thereof
    • G06F1/32Means for saving power
    • G06F1/3203Power management, i.e. event-based initiation of a power-saving mode
    • G06F1/3234Power saving characterised by the action undertaken
    • G06F1/3287Power saving characterised by the action undertaken by switching off individual functional units in the computer system
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/08Error detection or correction by redundancy in data representation, e.g. by using checking codes
    • G06F11/10Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's
    • G06F11/1008Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's in individual solid state devices
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/30Monitoring
    • G06F11/34Recording or statistical evaluation of computer activity, e.g. of down time, of input/output operation ; Recording or statistical evaluation of user activity, e.g. usability assessment
    • G06F11/3442Recording or statistical evaluation of computer activity, e.g. of down time, of input/output operation ; Recording or statistical evaluation of user activity, e.g. usability assessment for planning or managing the needed capacity
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/30Monitoring
    • G06F11/34Recording or statistical evaluation of computer activity, e.g. of down time, of input/output operation ; Recording or statistical evaluation of user activity, e.g. usability assessment
    • G06F11/3452Performance evaluation by statistical analysis
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/0223User address space allocation, e.g. contiguous or non contiguous base addressing
    • G06F12/023Free address space management
    • G06F12/0238Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory
    • G06F12/0246Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory in block erasable memory, e.g. flash memory
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/0625Power saving in storage systems
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0629Configuration or reconfiguration of storage systems
    • G06F3/0634Configuration or reconfiguration of storage systems by changing the state or mode of one or more devices
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0653Monitoring storage devices or systems
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0668Interfaces specially adapted for storage systems adopting a particular infrastructure
    • G06F3/0671In-line storage system
    • G06F3/0673Single storage device
    • G06F3/0679Non-volatile semiconductor memory device, e.g. flash memory, one time programmable memory [OTP]
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0668Interfaces specially adapted for storage systems adopting a particular infrastructure
    • G06F3/0671In-line storage system
    • G06F3/0683Plurality of storage devices
    • G06F3/0688Non-volatile semiconductor memory arrays
    • YGENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y02TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
    • Y02DCLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
    • Y02D10/00Energy efficient computing, e.g. low power processors, power management or thermal management

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • General Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Human Computer Interaction (AREA)
  • Computer Hardware Design (AREA)
  • Quality & Reliability (AREA)
  • Computing Systems (AREA)
  • Software Systems (AREA)
  • Life Sciences & Earth Sciences (AREA)
  • Evolutionary Biology (AREA)
  • Probability & Statistics with Applications (AREA)
  • Bioinformatics & Computational Biology (AREA)
  • Bioinformatics & Cheminformatics (AREA)
  • Techniques For Improving Reliability Of Storages (AREA)
  • Power Sources (AREA)
  • Computer Security & Cryptography (AREA)

Abstract

Des techniques sont décrites de manière générale pour l'allocation et la désallocation de ressources qui facilitent la gestion de l'alimentation. Un dispositif comprenant un ou plusieurs processeurs et une mémoire peut être configuré pour mettre en œuvre ces techniques. Le processeur peut être configuré pour déterminer le taux d'utilisation d'un premier sous-ensemble non nul d'une pluralité de ressources, la pluralité de ressources étant allouées et libérées conformément à une structure de données de thermomètre. Les processeurs peuvent en outre être configurés pour comparer le taux d'utilisation du premier sous-ensemble non nul de la pluralité de ressources à un seuil séparant le premier sous-ensemble non nul de la pluralité de ressources d'un second sous-ensemble non nul de la pluralité de ressources, et mettre sous tension le second sous-ensemble non nul de la pluralité de ressources sur la base au moins de la comparaison. La mémoire peut être configurée pour stocker le seuil.

Description

ALLOCATION ET DESALLOCATION DE RESSOURCES POUR LA GESTION DE L'ALIMENTATION DANS DES DISPOSITIFS DOMAINE TECHNIQUE [1] La présente invention concerne l'allocation de ressources, et plus particulièrement, l'allocation de ressources pour la gestion de l'alimentation. CONTEXTE DE L'INVENTION [2] Des dispositifs peuvent allouer et désallouer des ressources à diverses fins en soutien au fonctionnement global d'un dispositif. A titre d'exemple, un dispositif de stockage tel qu'un disque électronique (SSD, Solid State Drive), peut allouer et désallouer des ressources en soutien à l'accès à un tampon de données, au codage de vérification et de correction d'erreurs (ECC, Error Checking and Correction) lors du stockage de données en mémoire non volatile (par exemple, une mémoire flash), à l'accès à des canaux flash lors de l'extraction de données de la mémoire non volatile, et au décodage ECC lors de l'extraction de données de la mémoire non volatile. Dans les cas où le nombre de ressources est inférieur au nombre d'unités (qui peuvent être désignées sous le nom d'unités demandeuses"), le dispositif de stockage peut mettre en oeuvre une technique d'arbitrage (telle qu'une technique dite de chacun son tour) pour tenter de permettre un accès raisonnablement équilibré aux ressources d'une manière qui évite des retards excessifs. [3] Dans certains cas, le nombre de ressources est artificiellement limité pour obtenir un fonctionnement plus efficace du dispositif de stockage (par exemple, du point de vue de la consommation d'énergie). Plus précisément, une certaine partie des ressources disponibles peuvent être mises hors tension pour réduire la consommation d'énergie et les coûts 25 correspondants associés au fonctionnement des dispositifs de stockage. En limitant artificiellement le nombre de ressources dans certains contextes, les fabricants de dispositifs de stockage tentent d'équilibrer les performances avec le rendement de fonctionnement. A titre d'exemple, divers fabricants ont tenté de mettre dynamiquement sous tension les ressources qui étaient initialement mises hors tension afin d'améliorer les performances lorsque la demande de 30 ressources est forte et de mettre dynamiquement hors tension ces mêmes ressources afin d'améliorer le rendement de fonctionnement lorsque la demande de ressources est faible.
3028656 141 L'allocation et la désallocation dynamiques de ressources peuvent par conséquent permettre de mettre sous tension diverses ressources lorsque cela est nécessaire et les mettre hors tension lorsque cela n'est pas nécessaire. Les algorithmes développés pour faciliter cette allocation/désallocation de ressources permettant d'économiser l'énergie peuvent cependant être 5 soumis à des limitations affectant les 'structures de données d'allocation. Les structures de données du type premier entré premier sorti (FIFO, first-dans-first-out) ou les structures de données du type dernier entré premier sorti (LIFO, last-dans-first-out) utilisées pour l'allocation/la désallocation de ressources peuvent conduire à des répartitions aléatoires pour lesquelles des ressources désallouées sont entremêlées avec des ressources allouées, cela rendant 10 difficile de savoir quand une ressource particulière va être exigée avec un temps suffisant pour rendre ces ressources disponibles en temps utile pour traiter les demandes. Un matériel complexe peut être utilisé ou des processeurs polyvalents (tels qu'une unité centrale de traitement ou CPU, Central Processing Unit) peut être déployé pour faciliter l'allocation/la désallocation dynamique de ressources permettant d'équilibrer de manière adéquate le rendement de fonctionnement tout 15 en fournissant également des performances adéquates. Cependant, ce matériel dédié ou ces CPU réutilisées peuvent consommer une énergie significative, réduisant un grand nombre sinon la totalité des économies d'énergie réalisées par l'intermédiaire d'algorithmes d'allocation/désallocation dynamique.
20 RÉSUMÉ [5] Dans un exemple, un procédé consiste à déterminer, par une unité de commande d'un dispositif, le taux d'utilisation d'un premier sous-ensemble non nul d'une pluralité de ressources du dispositif, la pluralité de ressources étant allouées et libérées conformément à une structure de données de thermomètre, comparer, par l'unité de commande, le taux d'utilisation du premier 25 sous-ensemble non nul de la pluralité de ressources à un seuil séparant le premier sous-ensemble non nul de la pluralité de ressources d'un second sous-ensemble non nul de la pluralité de ressources, et mettre sous tension le second sous-ensemble non nul de la pluralité de ressources sur la base au moins de la comparaison. [6] Dans un autre exemple, un dispositif comprend un ou plusieurs processeurs configurés 30 pour déterminer le taux d'utilisation d'un premier sous-ensemble non nul d'une pluralité de ressources, la pluralité de ressources étant allouées et libérées conformément à une structure de 3028656 données de thermomètre, comparer le taux d'utilisation du premier sous-ensemble non nul de la pluralité de ressources à un seuil séparant le premier sous-ensemble non nul de la pluralité de ressources d'un second sous-ensemble non nul de la pluralité de ressources, et mettre sous tension le second sous-ensemble non nul de la pluralité de ressources sur la base au moins de la 5 comparaison, et une mémoire configuré pour stocker le seuil. [7] Dans un autre exemple, un support de stockage lisible par ordinateur non volatil comporte des instructions stockées sur celui-ci qui, lorsqu'elles sont exécutées, amènent un ou plusieurs processeurs à déterminer le taux d'utilisation d'un premier sous-ensemble non nul d'une pluralité de ressources, la pluralité de ressources étant allouées et libérées conformément à une 10 structure de données de thermomètre, comparer le taux d'utilisation du premier sous-ensemble non nul de la pluralité de ressources à un seuil séparant le premier sous-ensemble non nul de la pluralité de ressources d'un second sous-ensemble non nul de la pluralité de ressources, et mettre sous tension le second sous-ensemble non nul de la pluralité de ressources sur la base au moins de la comparaison. 15 [8] Les détails desdits un ou plusieurs exemples mentionnés ci-dessus sont présentés dans les dessins annexés et la description qui suit. D'autres caractéristiques, objets et avantages ressortiront de la description et des dessins, ainsi que des revendications. BRÈVE DESCRIPTION DES DESSINS 20 191 La figure 1 est un schéma conceptuel et synoptique illustrant un exemple d'environnement de stockage dans lequel un dispositif de stockage peut jouer le rôle de dispositif de stockage pour un dispositif hôte, conformément à une ou plusieurs techniques de la présente invention [10] La figure 2 est un schéma conceptuel et synoptique illustrant un exemple d'unité de 25 commande, conformément à une ou plusieurs techniques de la présente invention. [11] La figure 3 est un diagramme illustrant un module d'allocation de ressources général représenté de manière plus détaillée dans l'exemple de la figure 2. [12] La figure 4 est un schéma de principe illustrant de manière plus détaillée un décodeur ECC de la figure 2. 3 3028656 [13] Les figures 5A et 5B sont un organigramme illustrant un exemple de fonctionnement d'un dispositif de stockage lors de la mise en oeuvre des techniques d'allocation et de désallocation de ressources décrites dans le présent fascicule. [14] La figure 6 est un diagramme illustrant de manière plus détaillée la structure de données 5 de thermomètre de la figure 3. DESCRIPTION DÉTAILLÉE [15] Conformément à une ou plusieurs techniques de la présente invention, une unité de commande d'un dispositif (tel qu'un SSD, dans lequel ces unités de commande peuvent être 10 désignées sous le nom d'unité de commande flash) peut effectuer l'allocation et la désallocation dynamiques de ressources en utilisant une structure de données de type thermomètre qui alloue des ressources d'une manière qui facilite l'allocation et la désallocation selon une succession fixe. Plutôt que de baser l'allocation et la désallocation sur des structures de données qui conduisent à une répartition aléatoire d'allocations et de désallocations de ressources, la structure de données 15 de type thermomètre peut conserver un ordre fixe des ressources identifiées en augmentant de façon incrémentielle des identifiants de ressources. Le mécanisme d'allocation peut alors agir conformément à une règle selon laquelle des ressources disponibles ayant l'identifiant de ressource le plus faible sont allouées avant l'allocation de ressources disponibles ayant un identifiant de ressource relativement plus élevé. Il en résulte que la structure de données de 20 thermomètre peut exposer des "points dits chauds" représentatifs d'une utilisation fréquente et de "points froids" représentatifs d'une utilisation peu fréquente par l'intermédiaire d'une analyse statistique des ressources représentées par des composantes de la structure de données de thermomètre. En identifiant ces points chauds et froids, l'unité de commande peut définir dynamiquement un seuil. Plus précisément, l'unité de commande flash peut identifier un seuil par l'intermédiaire d'une analyse statistique du taux d'utilisation des ressources au cours du temps. Le seuil permet de définir une frontière séparant celles des ressources qui doivent rester sous tension de celles des ressources qui peuvent être mises hors tension. [16] L'unité de commande flash peut régler ce seuil et actualiser dynamiquement le seuil au cours du temps afin de prendre en compte un certain nombre de scénarios différents pouvant se 30 produire dans un SSD. A titre d'exemple, l'unité de commande flash peut augmenter le seuil pendant que le taux d'utilisation de ressources de mémoire est accru pendant le pic d'utilisation, 4 3028656 pour ainsi augmenter les performances lorsque le taux d'utilisation exige plus de ressources de mémoire. L'unité de commande flash peut également réduire le seuil pendant une utilisation relativement réduite des ressources de mémoire pendant une utilisation hors pic, pour ainsi améliorer le rendement de fonctionnement en mettant hors tension un plus grand nombre des 5 ressources. A titre d'autre exemple, l'unité de commande flash peut, au cours du temps, observer que le taux d'utilisation de décodeurs ECC a augmenté du fait de l'augmentation des défauts d'une mémoire flash au fur et à mesure que la mémoire flash subit une usure. L'unité de commande flash peut, en réponse à la détection de cette augmentation du taux d'utilisation de décodeurs ECC, augmenter dynamiquement le seuil afin de mettre sous tension un plus grand 10 nombre de décodeurs ECC. A cet égard, les techniques peuvent favoriser l'amélioration du rendement de fonctionnement au début du déploiement du SSD et réduire le rendement de fonctionnement en augmentant le seuil afin de conserver les mêmes performances lors du déploiement ultérieur du SSD. [17] La figure 1 est un schéma conceptuel et synoptique illustrant un exemple 15 d'environnement de stockage 2 dans lequel le dispositif de stockage 6 peut jouer le rôle de dispositif de stockage pour le dispositif hôte 4, conformément à une ou plusieurs techniques de la présente invention. A titre d'exemple, le dispositif hôte 4 peut utiliser des dispositifs de mémoire non volatils contenus dans le dispositif de stockage 6 pour stocker et extraire des données. Dans certains exemples, l'environnement de stockage 2 peut comprendre une pluralité de dispositifs de 20 stockage, tels que le dispositif de stockage 6, pouvant fonctionner en tant que matrice de stockage. A titre d'exemple, l'environnement de stockage 2 peut comprendre une pluralité de dispositifs de stockage 6 configurés en tant que matrice redondante de disques peu coûteux/indépendants (RAID, Redundant Array of Inexpensive/Independent Disks) qui jouent collectivement le rôle de dispositif de stockage de masse pour le dispositif hôte 4. 25 [18] L'environnement de stockage 2 peut comprendre le dispositif hôte 4 qui peut stocker et/ou extraire des données dans et/ou depuis un ou plusieurs dispositifs de stockage, tels que le dispositif de stockage-6. Comme illustré sur la figure 1, le dispositif hôte 4 peut communiquer avec le dispositif de stockage 6 via une interface 14. Le dispositif hôte 4 peut comprendre l'un quelconque d'une large gamme de dispositifs, parmi lesquels des serveurs informatiques, des unités de stockage reliées au réseau (NAS, Network Attached Storage), des ordinateurs de bureau, des ordinateurs blocs-notes (c'est-à-dire portables), des ordinateurs-tablettes, des boîtiers 5 3028656 adaptateurs, des combinés téléphoniques tels que les téléphones dits "intelligents", des blocs-notes "intelligents", des postes de télévision, des caméras, des dispositifs d'affichage, des lecteurs multimédia numériques, des consoles de jeux vidéo, des dispositifs de diffusion vidéo en flux, etc. 5 [19] Comme illustré sur la figure 1 le dispositif de stockage 6 peut comprendre une unité de commande 8, une matrice de mémoire non volatile 10 (NVMA 10, Non-Volatile Memory Array), une alimentation électrique 11, une mémoire volatile 12, et une interface 14. Dans certains exemples, le dispositif de stockage 6 peut comprendre des composants supplémentaires non représentés sur la figure 1 pour plus de clarté. A titre d'exemple, le dispositif de stockage 6 10 peut comprendre une carte imprimée (PB, Printed Board) à laquelle des composants du dispositif de stockage 6 sont fixés mécaniquement et qui comprend des pistes électriquement conductrices qui interconnectent électriquement des composants du dispositif de stockage 6 ; etc. Dans certains exemples, les dimensions physiques et les configurations des connecteurs du dispositif de stockage 6 peuvent respecter un ou plusieurs facteurs de forme normalisés. Certains exemples 15 de facteurs de forme normalisés comprennent, sans aucune limitation, un lecteur de disque dur de 3,5 pouces (HDD, Hard Disk Drive), un HDD de 2,5 pouces, un HDD de 1,8 pouces, une interconnexion de composants périphériques (PCI, Peripheral Component interconnect), une PCI étendue (PCI-X), une PCI Express (PCIe) (par exemple, PCIe x 1, x4, x8, x16, PCIe Mini Card, MiniPCI, etc.). Dans certains exemples, le dispositif de stockage 6 peut être directement relié 20 (par exemple, directement soudé) à une carte mère du dispositif hôte 4. [20] Le dispositif de stockage 6 peut comprendre une interface 14 pour l'interfaçage avec le dispositif hôte 4. L'interface 14 peut comprendre l'un ou les deux d'un bus de données pour échanger des données avec le dispositif hôte 4 et d'un bus de commande pour échanger des commandes avec le dispositif hôte 4. L'interface 14 peut fonctionner conformément à un 25 protocole approprié quelconque. A titre d'exemple, l'interface 14 peut fonctionner conformément à un ou plusieurs des protocoles suivants : raccordement par technologie avancée (ATA, Advanced Technology Attachment) (comme le serial-ATA (SATA), et le parallel-ATA (PATA)), le système Fibre Channel, l'interface pour petits systèmes informatiques (SCSI), le SCSI raccordé en série (SAS, Serially Attached SCSI), une interconnexion de composants périphériques (PCI), et la PCI-express. La connexion électrique de l'interface 14 (par exemple, le bus de données, le bus de commande, ou les deux) est électriquement connectée à l'unité de 6 3028656 commande 8, en établissant une connexion électrique entre le dispositif hôte 4 et l'unité de commande 8, cela permettant d'échanger des données entre le dispositif hôte 4 et l'unité de commande 8. Dans certains exemples, la connexion électrique de l'interface 14 peut également permettre au dispositif de stockage 6 de recevoir une alimentation en provenance du dispositif 5 hôte 4. Comme illustré sur la figure 1, une alimentation électrique 11 peut recevoir une alimentation en provenance du dispositif hôte 4 via l'interface 14. [21] Le dispositif de stockage 6 peut comprendre une NVMA 10 qui peut comprendre une pluralité de dispositifs de mémoire 16Aa-16Nn (collectivement désignés "dispositifs de mémoire 16") qui peuvent chacun être configurés pour stocker et/ou extraire des données. A titre 10 d'exemple, un dispositif de mémoire parmi les dispositifs de mémoire 16 peut recevoir des données et un message en provenance de l'unité de commande 8 qui ordonne au dispositif de mémoire de stocker des données. De même, le dispositif de mémoire parmi les dispositifs de mémoire 16 peut recevoir un message en provenance de l'unité de commande 8 qui ordonne au dispositif de mémoire d'extraire des données. Dans certains exemples, chacun des dispositifs de 15 mémoire 6 peut être désigné sous le nom de dé. Dans certains exemples, une puce physique unique peut comprendre une pluralité de dés (c'est-à-dire une pluralité de dispositifs de mémoire 16). Dans certains exemples, chacun des dispositifs de mémoire 16 peut être configuré pour stocker des quantités relativement grandes de données (par exemple, 128 Mo, 256 Mo, 512 Mo, 1 Go, 2 Go, 4 Go, 8 Go, 16 Go, 32 Go, 64 Go, 128 Go, 256 Go, 512 Go, 1 To, etc.). 20 [22] Dans certains exemples, les dispositifs de mémoire 16 peuvent comprendre un type quelconque de dispositifs de mémoire non volatils. Certains exemples de dispositifs de mémoire 16 comprennent, sans aucune limitation, des dispositifs de mémoire flash, des dispositifs de mémoire à changement de phase (PCM, Phase Change Memory), des dispositifs de mémoire vive résistifs (ReRAM, Resistive Random Access Memory), des dispositifs de mémoire vive 25 magnétorésistifs (MRAM, Magnetoresistive Random Access Memory), une mémoire vive ferroélectrique (F-RAM, Ferroelectric Random Access Memory), des dispositifs de mémoire holographiques, et tout autre type de dispositifs de mémoire non volatils. [23] Les dispositifs de mémoire flash peuvent comprendre des dispositifs de mémoire flash de type NON-ET (NAND) ou NON-OU (NOR), et peuvent stocker des données sur la base d'une 30 charge contenue dans une grille flottante d'un transistor pour chaque cellule de mémoire flash. Dans les dispositifs de mémoire flash NAND, le dispositif de mémoire flash peut être divisé en 7 3028656 une pluralité de blocs qui peuvent être divisés en une pluralité de pages. Chaque bloc de la pluralité de blocs au sein d'un dispositif de mémoire particulier peut comprendre une pluralité de cellules NAND. Des lignes de cellules NAND peuvent être électriquement connectées en utilisant une ligne de mots pour définir une page d'une pluralité de pages. Les cellules 5 respectives de chacune de la pluralité de pages peuvent être électriquement connectées à des lignes de bits respectives. L'unité de commande 6 peut écrire des données et lire des données dans et depuis les dispositifs de mémoire flash NAND au niveau des pages et effacer les données des dispositifs de mémoire flash NAND au niveau des blocs. [24] Dans certains exemples, il peut ne pas être pratique de connecter séparément l'unité de 10 commande 8 à chaque dispositif de mémoire parmi les dispositifs de mémoire 16. De ce fait, les connexions entre les dispositifs de mémoire 16 et l'unité de commande 8 peuvent être multiplexées. A titre d'exemple, les dispositifs de mémoire 16 peuvent être groupés en canaux 18A-18N (collectivement désignés "canaux 18"). A titre d'exemple, comme illustré sur la figure 1, les dispositifs de mémoire 16Aa-16Nn peuvent être groupés en un premier canal 18A, et les 15 dispositifs de mémoire 16Na-16Nn peuvent être groupés en un Nème canal 18N. Les dispositifs de mémoire 16 groupés en chacun des canaux 18 peuvent partager une ou plusieurs connexions à l'unité de commande 8. A titre d'exemple, les dispositifs de mémoire 16 groupés en un premier canal 18A peuvent être raccordés à un bus 1/0 commun et à un bus de commande commun. Le dispositif de stockage 6 peut comprendre un bus I/O commun et un bus de commande commun 20 pour chaque canal respectif parmi les canaux 18. Dans certains exemples, chaque canal parmi les canaux 18 peut comprendre un jeu de lignes d'activation de puce (CE, Chip Enable) qui peuvent être utilisées pour multiplexer les dispositifs de mémoire sur chaque canal. A titre d'exemple, chaque ligne CE peut être connectée à un dispositif de mémoire respectif parmi les dispositifs de mémoire 18. Ainsi, le nombre de connexions séparées entre l'unité de commande 8 et les 25 dispositifs de mémoire 18 peut être réduit. En outre, comme chaque canal comporte un jeu indépendant de connexions à l'unité de commande 8, la réduction des connexions peut ne pas affecter notablement le débit de données étant donné que l'unité de commande 8 peut simultanément délivrer des commandes différentes à chaque canal. [25] Dans certains exemples, le dispositif de stockage 6 peut comprendre un certain nombre 30 de dispositifs de mémoire 16 sélectionnés pour fournir une capacité totale qui est supérieure à la capacité accessible au dispositif hôte 4. Cela est désigné sous le nom de surdimensionnement. A 8 3028656 titre d'exemple, si le dispositif de stockage 6 est annoncé comme comprenant 240 Go de capacité de stockage accessible à l'utilisateur, le dispositif de stockage 6 peut comprendre un nombre suffisant de dispositifs de mémoire 16 pour obtenir une capacité de stockage totale de 256 Go. Les dispositifs de stockage 16 de 16 Go peuvent ne pas être accessibles au dispositif hôte 4 ou à 5 un utilisateur du dispositif hôte 4. Au lieu de cela, des dispositifs de stockage 16 supplémentaires peuvent fournir des blocs supplémentaires pour faciliter les écritures, la récupération de place, la réparation de l'usure, etc. Par ailleurs, les dispositifs de stockage 16 supplémentaires peuvent comporter des blocs supplémentaires qui peuvent être utilisés si certains blocs subissent une usure, deviennent inutilisables et sont mis hors service. La présence des blocs supplémentaires 10 permet de mettre hors service les blocs usagés sans provoquer de modification de la capacité de stockage disponible au dispositif hôte 4. Dans certains exemples, le degré de surdimensionnement peut être défini par p=(T-D)/D, où p est le rapport de surdimensionnement, T est la capacité de stockage totale du dispositif de stockage 2, et D est la capacité de stockage du dispositif de stockage 2 qui est accessible au dispositif hôte 4. 15 [26] Le dispositif de stockage 6 peut comprendre une alimentation électrique 11, qui peut alimenter en courant un ou plusieurs des composants du dispositif de stockage 6. Lors d'un fonctionnement dans un mode standard, une alimentation électrique 11 peut alimenter en courant les un ou plusieurs composants en utilisant l'alimentation fournie par un dispositif externe, tel que le dispositif hôte 4. A titre d'exemple, l'alimentation électrique 11 peut alimenter en courant 20 les un ou plusieurs composants en utilisant l'alimentation reçue en provenance du dispositif hôte 4 via l'interface 14. Dans certains exemples, l'alimentation électrique 11 peut comprendre un ou plusieurs composants de stockage d'énergie configurés pour alimenter en courant les un ou plusieurs composants lors d'un fonctionnement dans un mode d'arrêt, comme dans les cas où l'alimentation cesse d'être reçue du dispositif externe. L'alimentation électrique 11 peut ainsi 25 jouer le rôle de source d'énergie secourue embarquée. Certains exemples desdits un ou plusieurs composants de stockage d'énergie comprennent, sans aucune limitation, des condensateurs, des super-condensateurs, des batteries, etc. Dans certains exemples, la quantité d'énergie qui peut être stockée par lesdits un ou plusieurs composants de stockage d'énergie peut être fonction du coût et/ou de la taille (par exemple, de la superficie / du volume) desdits un ou plusieurs 30 composants de stockage d'énergie. En d'autres termes, lorsque la quantité d'énergie stockée par 9 3028656 lesdits un ou plusieurs composants de stockage d'énergie croît, le coût et/ou la taille desdits un ou plusieurs composants de stockage d'énergie croît également. [27] L'unité de commande 8 peut effectuer une forme d'allocation et de désallocation dynamiques de ressources en soutien à une ou plusieurs des opérations de lecture et des 5 opérations d'écriture. L'unité de commande 8 peut, comme décrit de manière plus détaillée en référence à la figure 2, allouer et désallouer des ressources en soutien à l'accès à un tampon de données, au codage de vérification et de correction d'erreurs (ECC) lors du stockage de données en mémoire non volatile (par exemple, une mémoire flash), à l'accès à des canaux flash lors de l'extraction de données de la mémoire non volatile, et au décodage ECC lors de l'extraction de 10 données de la mémoire non volatile. Dans les cas où le nombre de ressources est inférieur au nombre d'unités demandeuses (qui peuvent être désignées sous le nom d'unités demandeuses"), l'unité de commande 8 peut mettre en oeuvre une ou plusieurs techniques d'arbitrage pour tenter de permettre un accès raisonnablement équilibré aux ressources d'une manière qui évite des retards excessifs. 15 [28] Dans certains cas, le nombre de ressources est artificiellement limité pour obtenir un fonctionnement plus efficace du dispositif de stockage (par exemple, du point de vue de la consommation d'énergie). Plus précisément, l'unité de commande 8 peut mettre hors tension une certaine partie des ressources disponibles pour réduire la consommation d'énergie et les coûts correspondants associés au fonctionnement du dispositif de stockage. En limitant artificiellement 20 le nombre de ressources dans certains contextes, l'unité de commande 8 peut tenter d'équilibrer les performances avec le rendement de fonctionnement. A titre d'exemple, l'unité de commande 8 peut mettre dynamiquement sous tension les ressources qui sont initialement mises hors tension afin d'améliorer les performances lorsque la demande de ressources est forte et mettre dynamiquement hors tension ces mêmes ressources afin d'améliorer le rendement de 25 fonctionnement lorsque la demande de ressources est faible. [29] L'allocation et la désallocation dynamiques de ressources peuvent par conséquent permettre de mettre sous tension diverses ressources lorsque cela est nécessaire et les mettre hors tension lorsque cela n'est, pas nécessaire. Les algorithmes développés pour faciliter cette allocation/désallocation de ressources permettant d'économiser l'énergie peuvent cependant être 30 soumis à des limitations affectant l'allocation/désallocation des structures de données. A titre d'illustration, un algorithme d'allocation peut utiliser une structure de données du type premier 10 3028656 entré premier sorti, telle qu'une file d'attente. Dans cette technique d'allocation, un identifiant de ressource est affecté à chacune des ressources. L'arbitre de cette technique d'allocation peut pousser chacun des identifiants de ressources dans la file d'attente, l'identifiant de ressource le plus faible étant par exemple le premier alloué (ou, selon la terminologie des files d'attente, 5 "éjecté" de la file d'attente). L'arbitre peut allouer la ressource associée à l'identifiant de ressource éjecté de la file d'attente. L'éjection de l'identifiant de ressource a pour effet de retirer cette ressource afin qu'elle ne soit pas allouée à deux unités demandeuses ou plus. [30] Cependant, les temps d'utilisation des ressources par unité demandeuse peuvent varier, ce qui signifie que l'arbitre peut renvoyer aléatoirement l'identifiant de ressource dans la file 10 d'attente. Il résulte de ce temps d'allocation de ressources variable que les identifiants de ressources deviennent rapidement répartis aléatoirement dans la file d'attente. Cette répartition aléatoire d'identifiants de ressources peut réduire l'aptitude à identifier le nombre de ressources qui sont exigées pour chaque trame de temps quelconque donnée en gênant ainsi l'alimentation dynamique des ressources afin d'équilibrer le rendement de fonctionnement avec les 15 performances. Les techniques d'allocation qui utilisent les structures de données du type dernier entré premier sorti (LIFO) pour l'allocation/la désallocation de ressources peuvent de même conduire à des répartitions aléatoires d'identifiants de ressources. Pour remédier à ces limitations affectant les techniques d'allocation, les unités de commande peuvent incorporer un matériel complexe ou des processeurs polyvalents (tels qu'une unité centrale de traitement ou CPU) pour 20 faciliter l'allocation/la désallocation dynamique de ressources permettant d'équilibrer de manière adéquate le rendement de fonctionnement tout en fournissant également des performances adéquates. Cependant, ce matériel dédié ou ces CPU réutilisées peuvent consommer une énergie notable, réduisant un grand nombre sinon la totalité des économies d'énergie réalisées au moyen d'algorithmes d'allocation/désallocation dynamiques. 25 [31] Conformément à une ou plusieurs techniques de la présente invention, l'unité de commande 8 d'un dispositif de stockage 6 peut effectuer l'allocation et la désallocation dynamiques de ressources en utilisant une structure de données de type thermomètre qui alloue des ressources d'une manière qui facilite l'allocation et la désallocation selon une succession fixe. Plutôt que de baser l'allocation et la désallocation sur des structures de données qui conduisent à 30 une répartition aléatoire d'allocations et de désallocations de ressources, la structure de données de type thermomètre peut conserver un ordre fixe des ressources identifiées en augmentant de 11 3028656 manière incrémentielle, et potentiellement monotone, des identifiants de ressources. Le mécanisme d'allocation peut alors fonctionner conformément à une règle selon laquelle des ressources disponibles ayant l'identifiant de ressource le plus faible sont allouées avant l'allocation de ressources disponibles ayant un identifiant de ressource relativement plus élevé. Il 5 en résulte que la structure de données de thermomètre peut exposer des "points dits chauds" représentatifs d'une utilisation fréquente et de "points froids" représentatifs d'une utilisation peu fréquente au moyen d'une analyse statistique des ressources représentées par des composantes de la structure de données de thermomètre. En identifiant ces points chauds et froids, l'unité de commande 8 peut définir dynamiquement un seuil. Plus précisément, l'unité de commande flash 10 peut identifier un seuil au moyen d'une analyse statistique du taux d'utilisation des ressources au cours du temps. Le seuil permet de définir une frontière séparant celles des ressources qui doivent rester sous tension et celles des ressources qui peuvent être mises hors tension. [32] L'unité de commande 8 peut régler ce seuil et actualiser dynamiquement le seuil au cours du temps afin de prendre en compte un certain nombre de cas. A titre d'exemple, l'unité de 15 commande 8 peut augmenter le seuil pendant une utilisation accrue de ressources de mémoire pendant le pic d'utilisation, pour ainsi augmenter les performances lorsque le taux d'utilisation exige plus de ressources de mémoire. L'unité de commande 8 peut également réduire le seuil pendant une utilisation relativement réduite des ressources de mémoire pendant une utilisation hors pic, pour ainsi améliorer potentiellement le rendement de fonctionnement électrique en 20 mettant hors tension un plus grand nombre des ressources. A titre d'autre exemple, l'unité de commande 8 peut identifier, au cours du temps, les cas où le taux d'utilisation de décodeurs ECC a augmenté du fait de l'augmentation des défauts de mémoire non volatile 10 à mesure que la mémoire non volatile 10 subit une usure. L'unité de commande 8 peut, en réponse à la détection de cette augmentation du taux d'utilisation de décodeurs ECC, augmenter dynamiquement le 25 seuil afin de mettre sous tension un plus grand nombre de décodeurs ECC. A cet égard, les techniques peuvent favoriser l'amélioration du rendement de fonctionnement au début du déploiement du SSD et réduire le rendement de fonctionnement en augmentant le seuil afin de conserver les mêmes performances lors du déploiement ultérieur du SSD. [33] A cet égard, l'unité de commande 8 peut déterminer le taux d'utilisation d'un premier 30 sous-ensemble non nul (ou, en d'autres termes, d'une partie) d'une pluralité de ressources, la pluralité de ressources étant allouées et libérées conformément à une structure de données 12 3028656 analogue à un thermomètre, qui peut également être désignée sous le nom de structure de données de thermomètre. L'unité de commande 8 peut alors comparer le taux d'utilisation du premier sous-ensemble non nul de la pluralité de ressources à un seuil séparant le premier sous-ensemble non nul de la pluralité de ressources d'un second sous-ensemble non nul de ressources. 5 [34] L'unité de commande 8 peut, dans certains exemples, traduire le taux d'utilisation en un certain nombre des ressources avant d'effectuer cette comparaison. A titre d'exemple, le taux d'utilisation peut être défini sous la forme d'un nombre de demandes pour une certaine trame de temps. L'unité de commande 8 peut alors déterminer ou obtenir d'une autre manière un certain nombre de demandes pour ladite trame de temps que chacune des ressources est capable de 10 gérer. L'unité de commande 8 peut alors diviser le nombre de demandes pour ladite trame de temps par le nombre de demandes pour la même trame de temps que la ressource est capable de gérer de manière à déterminer le nombre attendu des ressources qui sont exigées. [35] L'unité de commande 8 peut alors comparer le nombre attendu des ressources qui peuvent être exigées (qui représente en fait le taux d'utilisation) au seuil. L'unité de commande 8 peut 15 mettre sous tension le second sous-ensemble non nul de ressources sur la base au moins de la comparaison du nombre attendu des ressources qui peuvent être exigées pour ce seuil. De même, l'unité de commande 8 peut continuer de déterminer ou d'obtenir d'une autre manière le taux d'utilisation au cours du temps et peut comparer ce taux d'utilisation au seuil après avoir mis sous tension ou, en d'autres termes, activé le second sous-ensemble non nul de ressources. Lorsque le 20 taux d'utilisation est inférieur à celui qui est permis par le seuil, l'unité de commande 8 peut mettre hors tension le second sous-ensemble non nul de ressources. [36] La figure 2 est un schéma conceptuel et synoptique illustrant des exemples de détails de l'unité de commande 8. Dans certains exemples, l'unité de commande 8 peut comprendre un module de traduction d'adresse 22, un module d'écriture 24, un module de maintenance 26, un 25 module de lecture 28, un module de planification 30, et une pluralité d'unités de commande de canaux 32A-32N (collectivement désignées "unités de commande de canaux 32"). Dans d'autres exemples, l'unité de commande 8 peut comprendre des modules ou des unités matérielles supplémentaires, ou peut comprendre moins de modules ou d'unités matérielles. L'unité de commande 8 peut comprendre un microprocesseur, un processeur numérique de signaux (DSP, 30 Digital Signal Processor), un circuit intégré spécifique d'applications (ASIC, Application Specific Integrated Circuit), une matrice prédiffusée programmable (FPGA, Field Programmable 13 3028656 Gate Array), ou d'autres circuits logiques numériques. Dans certains exemples, l'unité de commande 8 peut être un système sur puce (SoC, System on Chip). [37] L'unité de commande 8 peut s'interfacer avec le dispositif hôte 4 via l'interface 14 et gérer le stockage de données et l'extraction de données dans et depuis les dispositifs de mémoire 16. A 5 titre d'exemple, le module d'écriture 24 de l'unité de commande 8 peut gérer les écritures dans les dispositifs de mémoire lb. A titre d'exemple, le module d'écriture 24 peut recevoir un message en provenance du dispositif hôte 4 via l'interface 14 ordonnant au dispositif de stockage 6 de stocker des données associées à une adresse logique et les données. Le module d'écriture 24 peut gérer l'écriture des données dans les dispositifs de mémoire 16. 10 [38] A titre d'exemple, le module d'écriture 24 peut communiquer avec le module de traduction d'adresse 22, qui gère la traduction entre des adresses logiques utilisées par le dispositif hôte 4 afin de gérer les emplacements de stockage de données et les adresses de blocs physiques utilisées par le module d'écriture 24 pour diriger l'écriture de données vers les dispositifs de mémoire. Le module de traduction d'adresse 22 de l'unité de commande 8 peut 15 utiliser une couche ou une table de traduction flash qui traduit des adresses logiques (ou des adresses de blocs logiques) de données stockées par les dispositifs de mémoire 16 en les adresses de blocs physiques de données stockées par les dispositifs de mémoire 16. A titre d'exemple, le dispositif hôte 4 peut utiliser les adresses de blocs logiques des données stockées par les dispositifs de mémoire 16 dans des instructions ou des messages dans le dispositif de stockage 6, 20 alors que le module d'écriture 24 utilise les adresses de blocs physiques des données pour commander l'écriture de données dans les dispositifs de mémoire 16. (De même, le module de lecture 28 peut utiliser les adresses de blocs physiques pour commander la lecture de données dans et depuis les dispositifs de mémoire 16). Les adresses de blocs physiques correspondent à des blocs physiques réels des dispositifs de mémoire 16. Dans certains exemples, le module de 25 traduction d'adresse 22 peut stocker la couche ou la table de traduction flash dans une mémoire volatile 12, par exemple dans des informations mises en cache 13. [39] Le dispositif hôte 4 peut ainsi être autorisé à utiliser une adresse de bloc logique statique pour un certain ensemble de données, alors que l'adresse de bloc physique à laquelle les données sont effectivement stockées peut changer. Le module de traduction d'adresse 22 peut conserver la 30 couche ou la table de traduction flash pour mapper les adresses de blocs logiques en les adresses de blocs physiques afin d'autoriser l'utilisation de l'adresse de bloc logique statique par le 14 3028656 dispositif hôte 4 alors que l'adresse de bloc physique des données peut changer, par exemple, du fait de la réparation d'usure, de la récupération de place, ou autre. [40] Comme mentionné ci-dessus, le module d'écriture 24 de l'unité de commande 8 peut effectuer une ou plusieurs opérations afin de gérer l'écriture de données dans les dispositifs de 5 mémoire 16. A titre d'exemple, le module d'écriture .24 peut gérer l'écriture de données dans les dispositifs de mémoire 16 en sélectionnant un ou plusieurs blocs au sein de dispositifs de mémoire 16 pour stocker les données et amener les dispositifs de mémoire parmi les dispositifs de mémoire 16 qui comprennent les blocs sélectionnés à stocker effectivement les données. Comme mentionné ci-dessus, le module d'écriture 24 peut amener le module de traduction 10 d'adresse 22 à actualiser la couche ou la table de traduction flash sur la base des blocs sélectionnés. A titre d'exemple, le module d'écriture 24 peut recevoir un message en provenance du dispositif hôte 4 qui comprend une unité de données et une adresse de bloc logique, sélectionner un bloc au sein d'un dispositif de mémoire particulier parmi les dispositifs de mémoire 16 pour stocker les données, amener le dispositif de mémoire particulier parmi les 15 dispositifs de mémoire 16 à stocker effectivement les données (par exemple, via une unité de commande de canal parmi les unités de commande de canaux 32 qui correspond au dispositif de mémoire particulier), et amener le module de traduction d'adresse 22 à actualiser la couche ou la table de traduction flash afin d'indiquer que l'adresse de bloc logique correspond au bloc sélectionné au sein du dispositif de mémoire particulier. 20 [41] Dans certains exemples, après avoir reçu l'unité de données en provenance du dispositif hôte 4, le module d'écriture 24 peut utiliser une mémoire volatile 12 afin de stocker temporairement l'unité de données avant d'amener un ou plusieurs des dispositifs de mémoire 16 à stocker effectivement les données. Dans certains exemples, le module d'écriture 24 peut être configuré pour envoyer au dispositif hôte 4 un message indiquant si les données ont pu être 25 stockées. Cependant, dans certains exemples, le module d'écriture 24 peut envoyer le message au dispositif hôte 4 pour confirmer la réussite du stockage des données avant que les données soient effectivement stockées. A titre d'exemple, le module d'écriture 24 peut envoyer le message au dispositif hôte 4 pour confirmer la réussite du stockage des données lorsque les données sont stockées dans une mémoire volatile 12. 30 [42] Dans certains exemples, en plus d'amener les données à être stockées par les dispositifs de mémoire 16, le module d'écriture 24 peut amener les dispositifs de mémoire 16 à stocker des 15 3028656 informations qui peuvent être utilisées pour récupérer l'unité de données si un ou plusieurs des blocs deviennent défectueux ou deviennent corrompus. Les informations de parité peuvent être utilisées pour récupérer les données stockées par d'autres blocs. Dans certains exemples, les informations de parité peuvent être un OU-EX des données stockées par lesdits autres blocs. 5 [43] Afin d'écrire un bit ayant une valeur logique de 0 (chargé) sur un bit ayant une valeur logique antérieure de 1 (non chargé), un courant élevé est utilisé. Ce courant peut être suffisamment élevé pour provoquer des modifications involontaires de la charge de cellules de mémoire flash adjacentes. Pour la protection contre les modifications involontaires, la totalité d'un bloc de cellules de mémoire flash peut être effacée à une valeur logique de 1 (non chargé) 10 avant l'écriture de données quelconques dans des cellules du bloc. En raison de cela, des cellules de mémoire flash peuvent être effacées au niveau des blocs et écrites au niveau des pages. [44] Par conséquent, pour écrire même une quantité de données qui consommerait moins d'une page, l'unité de commande 8 peut provoquer l'effacement de la totalité d'un bloc. Cela peut conduire à une amplification d'écriture, cela désignant le rapport entre la quantité de données 15 reçues en provenance du dispositif hôte 4 devant être écrites dans les dispositifs de mémoire 16 et la quantité de données effectivement écrites dans les dispositifs de mémoire 16. Une amplification d'écriture contribue à une usure plus rapide des cellules de mémoire flash que ce qui se produirait en l'absence d'amplification d'écriture. L'usure des cellules de mémoire flash peut se produire lorsque des cellules de mémoire flash sont effacées du fait des tensions 20 relativement hautes utilisées pour effacer les cellules de mémoire flash. Sur une pluralité de cycles d'effacement, les tensions relativement hautes peuvent conduire à des modifications des cellules de mémoire flash. Les cellules de mémoire flash peuvent finalement devenir inutilisables du fait de cette usure lors de laquelle les cellules de mémoire flash peuvent être incapables de stocker des données avec une précision suffisante pour permettre l'extraction des données. 25 [45] Une technique que l'unité de commande 8 peut mettre en oeuvre pour réduire l'amplification d'écriture et l'usure des cellules de mémoire flash consiste à écrire les données reçues en provenance du dispositif hôte 4 dans des blocs inutilisés ou des blocs partiellement utilisés. Par exemple, si le dispositif hôte 4 envoie des données au dispositif de stockage 6 qui ne comprennent qu'une petite variation par rapport à des données déjà stockées par le dispositif de 30 stockage 6. L'unité de commande peut alors marquer les anciennes données comme étant périmées ou n'étant plus valides. Au cours du temps, cela peut réduire le nombre d'opérations 16 3028656 d'effacement auxquelles les blocs sont exposés, par comparaison à l'effacement du bloc qui contient les anciennes données et à l'écriture des données actualisées dans ce même bloc. [46] En réponse à la réception d'une commande d'écriture en provenance du dispositif hôte 4, le module d'écriture 24 peut déterminer les emplacements physiques (par exemple, des blocs) 5 parmi les dispositifs de mémoire 16 auxquels les données doivent être écrites. A titre d'exemple, le module d'écriture 24 peut demander au module de traduction d'adresse 22 ou au module de maintenance 26 une ou plusieurs adresses de blocs physiques qui sont vides (par exemple, ne stockant pas de données), partiellement vides (par exemple, seules certaines pages du bloc stockent des données), ou stocker au moins certaines données invalides (ou périmées). Lors de la 10 réception desdites une ou plusieurs adresses de blocs physiques, le module d'écriture 24 peut sélectionner un ou plusieurs blocs comme mentionné ci-dessus, et transmettre un message qui amène les unités de commande de canaux 32A-32N (collectivement désignées "unités de commande de canaux 32") à écrire les données dans les blocs sélectionnés. [47] Le module de lecture 28 peut de même commander la lecture de données vers et depuis 15 les dispositifs de mémoire 16. A titre d'exemple, le module de lecture 28 peut recevoir un message en provenance du dispositif hôte 4 demandant des données ayant une adresse de bloc logique associée. Le module de traduction d'adresse 22 peut convertir l'adresse de bloc logique en une adresse de bloc physique en utilisant la couche ou la table de traduction flash. Le module de lecture 28 peut alors commander une ou plusieurs des unités de commande de canaux 32 afin 20 d'extraire les données des adresses de blocs physiques. Comme pour le module d'écriture 24, le module de lecture 28 peut sélectionner un ou plusieurs blocs et transmettre un message qui amène les unités de commande de canaux 32 à lire les données depuis les blocs sélectionnés. [48] Chaque unité de commande de canal parmi les unités de commande de canaux 32 peut être connectée à un canal respectif parmi les canaux 18. Dans certains exemples, l'unité de 25 commande 8 peut comprendre le même nombre d'unités de commande de canaux 32 que le nombre de canaux 18 du dispositif de stockage 2. Les unités de commande de canaux 32 peuvent effectuer la commande intime de l'adressage, de la programmation, de l'effacement, et de la lecture des dispositifs de mémoire 16 connectés à des canaux respectifs, par exemple, sous le contrôle du module d'écriture 24, du module de lecture 28, et/ou du module de maintenance 26. 30 [49] Le module de maintenance 26 peut être configuré pour effectuer des opérations liées au maintien des performances et à la prolongation de la vie utile du dispositif de stockage 6 (par 17 3028656 exemple, les dispositifs de mémoire 16). A titre d'exemple, le module de maintenance 26 peut mettre en oeuvre au moins l'une de la réparation d'usure ou de la récupération de place. [50] Comme décrit ci-dessus, l'effacement des cellules de mémoire flash peut utiliser des tensions relativement hautes qui, sur une pluralité d'opérations d'effacement, peuvent provoquer 5 des modifications des cellules de mémoire flash. Après un certain nombre d'opérations d'effacement, les cellules de mémoire flash peuvent se dégrader au point que les données ne peuvent plus être écrites dans les cellules de mémoire flash et qu'un bloc comprenant ces cellules peut être mis hors service (ne plus être utilisé par l'unité de commande 8 pour stocker des données). Pour augmenter la quantité de données qui peuvent être écrites dans les dispositifs de 10 mémoire 16 avant que les blocs soient usagés et mis hors service, le module de maintenance 26 peut mettre en oeuvre une réparation d'usure. [51] Dans la réparation d'usure, le module de maintenance 26 peut suivre un certain nombre d'effacements ou d'écritures dans un bloc ou un groupe de blocs, pour chaque bloc ou groupe de blocs. Le module de maintenance 26 peut faire en sorte que des données entrantes en provenance 15 du dispositif hôte 4 soient écrites dans un bloc ou un groupe de blocs qui a été soumis à relativement moins d'écritures ou d'effacements, afin de tenter de maintenir approximativement égaux les nombres d'écritures ou d'effacements pour chaque bloc ou groupe de blocs. Cela peut amener chaque bloc des dispositifs de mémoire 16 à subir une usure approximativement à la même vitesse, et peut augmenter la durée de vie utile du dispositif de stockage 6. 20 [52] Bien que cela puisse réduire l'amplification d'écriture et l'usure des cellules de mémoire flash en réduisant le nombre d'effacements et d'écritures de données dans différents blocs, cela peut également conduire à des blocs comprenant certaines données valides (récentes) et certaines données invalides (périmées). Pour remédier à cet état de données récentes/données périmées, le module de maintenance 26 peut mettre en oeuvre la récupération de place. Dans une opération de 25 récupération de place, le module de maintenance 26 peut analyser les contenus des blocs de dispositifs de mémoire 16 pour déterminer un bloc qui contient un pourcentage élevé de données invalides (périmées). Le module de maintenance 26 peut alors réécrire les données valides depuis ledit bloc vers un bloc différent, puis effacer le bloc. Cela permet de réduire une quantité de données invalides (périmées) stockées par les dispositifs de mémoire 16 et d'augmenter le 30 nombre de blocs libres, mais peut également augmenter l'amplification d'écriture et l'usure des dispositifs de mémoire 16. 18 3028656 [53] Le module de planification 30 de l'unité de commande 8 peut effectuer une ou plusieurs opérations pour planifier les activités devant être effectuées par les dispositifs de mémoire 16. A titre d'exemple, le module de planification 30 peut planifier des demandes reçues d'autres composants de l'unité de commande 8 afin d'ordonner à un ou plusieurs des dispositifs de 5 mémoire 16 d'effectuer une ou plusieurs activités pendant la période d'exécution. Dans certains exemples, le module de planification 30 peut planifier les demandes devant être effectuées dans l'ordre dans lequel elles ont été reçues (par exemple, premier entré premier sorti ou FIFO). Dans certains exemples, le module de planification 30 peut planifier les demandes sur la base d'un ou plusieurs facteurs qui peuvent comprendre, sans aucune limitation, le type de demande (par 10 exemple une demande de lecture, une demande d'écriture, une demande d'effacement, une demande de récupération de place, etc.), le temps s'étant écoulé depuis que la demande a été reçue, la quantité d'énergie qui serait consommée par la mise en oeuvre de la demande, des considérations de largeur de bande, etc. [54] Dans certains exemples, par exemple pour respecter budget de consommation d'énergie, 15 le module de planification 30 peut planifier les activités devant être effectuées de manière à ce que les performances soient régulées. A titre d'exemple, lorsque le budget de consommation d'énergie alloue aux dispositifs de mémoire 16 une quantité d'énergie qui est inférieure à une quantité d'énergie qui serait consommée si tous les dispositifs de mémoire 16 étaient simultanément actifs, le module de planification 30 peut planifier les activités devant être 20 effectuées de manière à ce que la quantité d'énergie consommée par les dispositifs de mémoire 16 ne dépasse pas la quantité d'énergie allouée aux dispositifs de mémoire 16. [55] A titre d'exemple, lorsque le dispositif de stockage 6 a une cible de consommation d'énergie de 25W, le budget de consommation d'énergie peut allouer une partie de la cible de consommation d'énergie (par exemplé, 16W) pouvant être utilisée par les dispositifs de mémoire 25 16. Si la quantité d'énergie qui serait consommée si tous les dispositifs de mémoire 16 étaient simultanément actifs est supérieure à la partie allouée de la cible de consommation d'énergie (par exemple, 16W), le module de planification 30 peut déterminer une quantité de dispositifs de mémoire 16 pouvant être simultanément actifs sans consommer plus d'énergie que la partie allouée. A titre d'exemple, lorsque les dispositifs de mémoire 16 se voient allouer X unités d'un 30 budget de consommation d'énergie et que chaque dispositif de mémoire parmi les dispositifs de mémoire 16 a consommé une unité d'énergie lorsqu'il est actif, le module de planification 30 peut 19 3028656 déterminer que X dispositifs de mémoire parmi les dispositifs de mémoire 16 peuvent être simultanément actifs. [56] Dans certains exemples, le module de planification 30 peut être configuré pour activer sélectivement une régulation des performances. A titre d'exemple, le module de planification 30 5 peut activer la régulation lors d'un fonctionnement dans un premier mode et désactiver la régulation lors d'un fonctionnement dans un second mode. Dans certains exemples, comme dans les cas où une régulation réduit la quantité de dispositifs de mémoire 16 pouvant être simultanément actifs, la vitesse à laquelle le module de planification 30 peut amener les données à être écrites dans les dispositifs de mémoire 16 peut être plus faible lorsque la régulation est 10 activée par comparaison au cas où la régulation est désactivée. [57] Comme indiqué plus en détail dans l'exemple de la figure 2, l'unité de commande 8 peut comprendre un certain nombre de tampons 34. Les tampons 34 peuvent être désignés sous le nom de "tampons de données brutes 34" dans certains exemples. Les tampons de données brutes 34 peuvent être des tampons utilisés pour stocker des données qui doivent être admises à passer 15 vers et/ou reçues en provenance d'unités de commande de canaux 32. Les tampons de données brutes 34 peuvent être l'une des ressources mentionnées ci-dessus qui peuvent être demandées par l'une des unités dites demandeuses, telles que le module d'écriture 24 et le module de lecture 28. [58] Par ailleurs, bien que cela ne soit illustré qu'à propos de l'unité de commande de canal 20 32A à des fins de simplification de l'illustration, chacune des unités de commande de canaux 32 peut comprendre un certain nombre de ressources qui peuvent par exemple être sous la forme de codeurs ECC 36, de tampons de lecture 38 et de décodeurs ECC 40 semblables à ceux représentés à propos de l'unité de commande de canal 32A. Les codeurs ECC 36 peuvent être une unité ou un module configuré pour effectuer un codage ECC sur des données en attente 25 d'être écrites dans la zone de mémoire non volatile 10. Les tampons de lecture 38 sont une unité ou un module configuré pour stocker des données lues depuis la zone de mémoire non volatile 10. Les tampons de lecture 38 peuvent être configurés pour stocker des mots de code lus. Les décodeurs ECC 40 peuvent être une unité ou un module configuré pour effectuer un décodage ECC sur des données stockées dans les tampons de lecture 38. 30 [59] Conformément à une ou plusieurs techniques de la présente invention, l'unité de commande de canal 32A peut comprendre un module d'allocation de ressources 42 qui effectue 20 3028656 l'allocation et la désallocation d'un ou plusieurs des codeurs ECC 36, des tampons de lecture 38 et des décodeurs ECC 40 en utilisant, au moins en partie, une structure de données de thermomètre qui permet l'allocation et la désallocation des ressources, par exemple, selon une succession fixe, de la manière décrite ci-après plus en détail. Bien qu'elle soit représentée comme 5 comprenant un module d'allocation de ressources 42 unique, l'unité de commande de canal 32A peut comprendre de multiples modules d'allocation de ressources 42 différents, dont chacun peut être responsable de l'allocation de l'une, distincte, des ressources 36-40. Bien que cela ne soit pas illustré dans l'exemple de la figure 2 à des fins de simplification de l'illustration, chacune des unités de commande de canaux 32 ou, dans certains cas, une ou plusieurs des unités de 10 commande de canaux 32 peuvent comprendre un ou plusieurs modules d'allocation de ressources 42 semblables au module d'allocation de ressources 42 de l'unité de commande de canal 32A. De plus, l'unité de commande 8 peut, bien que cela ne soit pas représenté dans l'exemple de la figure 2, ici encore à des fins de simplification de l'illustration, comprendre une autre instance du module d'allocation de ressources 42 en tant que module distinct des unités de commande de 15 canaux 32 qui peut mettre en oeuvre les techniques décrites dans le présent fascicule pour allouer/désallouer des tampons 34 afin d'équilibrer le rendement de fonctionnement avec les performances. [60] Dans tous les cas, le module d'allocation de ressources 42 peut analyser la structure de données de thermomètre pour identifier l'utilisation d'une ou plusieurs des ressources 34-40 20 identifiées précédemment afin de déterminer un seuil. Ce seuil peut initialement être prédéfini et configuré dans l'unité de commande 8 sur la base d'une analyse statistique antérieure ou d'autres critères. Le module d'allocation de ressources 42 peut, comme mentionné ci-dessus, lorsqu'il est initialement mis sous tension, ne mettre sous tension qu'un premier sous-ensemble non nul d'une ou plusieurs des ressources 34-40 et, au cours du temps, déterminer le taux d'utilisation de ces 25 ressources, en comparant ce taux d'utilisation au seuil. Le module d'allocation de ressources 42 peut alors, sur la base de cette comparaison, mettre sous tension un second sous-ensemble non nul d'une ou plusieurs des ressources 34-40, ce second sous-ensemble non nul pouvant ne comprendre aucune des ressources 34-40 du premier sous-ensemble non nul de ressources correspondantes 34-40. 30 [61] La figure 3 est un diagramme illustrant un module d'allocation de ressources 42 général représenté de manière plus détaillée dans l'exemple de la figure 2. Comme cela est représenté 21 3028656 dans l'exemple de la figure 3, le module d'allocation de ressources 42 peut comprendre un module-arbitre 50 (pouvant également être désigné sous le nom d'"arbitre de ressources 50") et un module allocateur et de commande d'alimentation 52 (pouvant également être désigné sous le nom d'allocateur de ressources 52"). Le module d'allocation de ressources 42 peut s'interfacer 5 avec des ressources 54A-54M ("ressources 54"), pouvant être l'une quelconque ou plusieurs des ressources décrites ci-dessus, par exemple, les tampons 34, les codeurs ECC 36, les tampons de lecture 38 et les décodeurs ECC 40, ainsi que toute autre ressource courante dans des dispositifs de stockage ou plus généralement, des dispositifs informatiques. [62] Le module d'allocation de ressources 42 peut également s'interfacer avec les unités 10 demandeuses 56A-56N ("unités demandeuses 56") en vue d'arbitrer l'accès à des ressources 54 tout en allouant également les ressources 54 de différents sous-ensembles non nuls de ressources 54 pour faciliter la commande d'alimentation conformément aux techniques décrites dans le présent fascicule. Les ressources 56 peuvent être des unités d'exécution différentes exécutées par un processeur polyvalent (tel qu'une unité centrale de traitement ou CPU), des processeurs 15 dédiés, des matériels dédiés, des coeurs différents ou tout autre type de d'unité demandeuse logicielle ou matérielle. [63] De manière générale, les techniques de la présente invention permettent de faciliter l'accès à des ressources 54 lorsque le nombre d'unités demandeuses 56 dépasse le nombre de ressources 54 (par exemple, lorsque N est supérieur à M). Dans ces cas, le module d'allocation de 20 ressources 42 peut fournir plusieurs interfaces : 1) Un ensemble de N ports de demande concurrents conçus pour être connectés à l'une d'un ensemble de M ressources où M < N ; 2) Un ensemble de sorties de commande d'alimentation qui se connectent à chaque instance de la ressource ; 25 3) Un ensemble d'entrées indicatrices d'état d'alimentation des ressources vers l'appareil, qui indiquent l'état d'alimentation courant de la ressource associée ; et 4) Une interface à base de mémoire de CPU ou d'entrée/sortie (IO). [64] Le module-arbitre 50 peut être une unité configurée pour mettre en oeuvre une technique d'arbitrage. Un exemple de technique d'arbitrage est une technique d'arbitrage tour à tour. Dans 30 la technique d'arbitrage tour à tour, l'une des unités demandeuses 56 à laquelle un accès à l'une des ressources 54 a été accordé présente la plus faible priorité relative parmi les unités 22 3028656 demandeuses 56 du point de vue de la réception de l'acceptation suivante, et sinon la suivante des unités demandeuses 56 dans l'ordre numérique reçoit l'acceptation suivante. Plus précisément, à chacune des unités demandeuses 56 est affecté un identifiant d'unité demandeuse (ID), pouvant définir l'ordre numérique des unités demandeuses 56. Un ID de ressource peut également être 5 affecté à chacune des ressources 54. Dans certains exemples, de multiples ID de ressources peuvent être affectés à chacune des ressources 54 selon les capacités de cette ressource particulière parmi les ressources 54. Dans ces exemples où de multiples ID de ressources peuvent être affectés à une seule des ressources 54, les ID de ressources peuvent être désignés sous le nom d'"ID d'éléments de ressources" ou d'ID d'allocation". Même dans les cas où un ID 10 de ressource unique est affecté à une seule des ressources 54, les ID de ressources peuvent être désignés sous le nom d'"ID d'éléments de ressources" ou d'"ID d'allocation". Ces termes peuvent être utilisés indifféremment et ne doivent pas nécessairement indiquer si oui ou non de multiples ID de ressources ont été affectés à une ou plusieurs des ressources 54.
1651 La technique d'arbitrage tour à tour mise en oeuvre par le module-arbitre 50 peut conduire 15 au fait que le module-arbitre 50 affecte un ID d'unité demandeuse à chacune des unités demandeuses 56 et un ou plusieurs ID de ressources à chacune des ressources 54. Le module-arbitre 50 peut alors parcourir cycliquement les demandes en attente pour l'accès à des ressources 54 dans l'ordre numérique de l'ID d'unité demandeuse associé à chacune des demandes en ordre numérique croissant. Le module-arbitre 50 peut rétrograder certaines des demandes selon qu'une 20 demande particulière de la même unité parmi les unités demandeuses 56 a ou non été la dernière demande acceptée, pour ainsi rétrograder effectivement les demandes provenant des unités demandeuses 56 qui ont été le plus récemment traitées en vue d'équilibrer l'accès à des ressources 54 entre les unités demandeuses 56. Les demandes provenant des unités demandeuses 56 sont repérées par les flèches et peuvent être désignées sous le nom de "demandes 58A-58N" 25 ou collectivement sous le nom de "demandes 58". [66] Dans l'exemple de la figure 3, le module allocateur et de commande d'alimentation 52 comprend un module allocateur 60 et un module de commande d'alimentation 62. Lors de l'arbitrage entre les demandes 58 provenant des unités demandeuses 56, le module allocateur 60 peut transmettre ou sinon partager des données avec le module-arbitre 50 pour faciliter 30 l'acceptation des demandes 58. A titre d'exemple, lorsque le module allocateur 60 indique que toutes les ressources 54 sont allouées au module-arbitre 50, le module-arbitre 50 ne peut pas 23 3028656 accepter l'une des demandes en attente 58. A titre d'autre exemple, lorsque le module allocateur 60 indique que toutes les ressources disponibles (qui peuvent être un sous-ensemble non nul de ressources 54 qui sont sous tension) sont allouées au module-arbitre 50, le module-arbitre 50 ne peut pas accepter l'une des demandes en attente 58. A titre d'autre exemple, lorsque le module 5 allocateur 60 indique que toutes les ressources 54 sont mises hors tension au module-arbitre 50, le module-arbitre 50 ne peut pas accepter l'une des demandes en attente 58. Dans certains exemples, une ou plusieurs des ressources 54 peuvent être activées pour l'acceptation par une CPU externe ou un autre dispositif de commande (ce qui, dans certains exemples, peut se produire par l'intermédiaire d'une interface de registre). Le module allocateur 60 peut de même 10 ne communiquer au module-arbitre 50 que celles qui sont commandées des ressources 54 sont disponibles pour être allouées lorsque la CPU ou un autre dispositif de commande active lesdites ressources 54 pour l'acceptation. [67] En premier lieu, lorsque le dispositif de stockage 6 est tout d'abord mis sous tension, le dispositif de stockage 6 peut fonctionner dans un état de faible alimentation dans lequel certaines 15 sinon la totalité des ressources 54 sont hors tension (ou ne sont pas sous tension). Les unités demandeuses 56 peuvent commencer à émettre une ou plusieurs des demandes 58, et la CPU ou un autre système logique de commande peut alors permettre au module allocateur 60 de s'interfacer avec le module de commande d'alimentation 62 afin de mettre sous tension un certain sous-ensemble non nul de ressources 54. Plus précisément, le module allocateur 60 peut 20 s'interfacer avec le module de commande d'alimentation 62 pour ne mettre sous tension que ce sous-ensemble non nul de ressources 54 sans mettre sous tension celles qui restent des ressources 54. Ce sous-ensemble non nul de ressources 54 peut également être désigné sous le nom de partie des ressources 54 ou de base de ressources 54. De plus, ce sous-ensemble non nul de ressources 54 peut comprendre une ou deux des ressources 54 ou plus mais pas toutes les 25 ressources 54. [68] En réponse à la mise sous tension de ce sous-ensemble non nul de ressources 54, le module allocateur 60 peut alors initialiser la structure de données de thermomètre 61 ("structure de données de thermomètre 61"), en affectant des ID de ressources croissants dans un ordre séquentiel au sous-ensemble non nul de ressources sous tension 54 et en actualisant la structure 30 de données de thermomètre 61 pour faire apparaître l'affectation des ID de ressources à certaines, particulières, du sous-ensemble non nul de ressources sous tension 54. Cette structure de données 24 3028656 de thermomètre 61 peut comprendre un noeud pour chacune du sous-ensemble non nul de ressources sous tension 54, chaque noeud stockant l'un des ID de ressources croissant séquentiellement et potentiellement de manière monotone et une indication indiquant si ladite ressource correspondante de l'ensemble non nul de ressources est disponible ou en cours 5 d'utilisation. Le module allocateur 60 peut alors admettre à passer les ID de ressources vers le module-arbitre 50 afin de les utiliser dans l'acceptation d'une ou de plusieurs des demandes 58. Comme cela est représenté dans l'exemple de la figure 3, le module allocateur 60 peut admettre à passer les ID de ressources en fournissant la structure de données de thermomètre 61 au module-arbitre 50. Bien qu'ils soient représentés comme ayant chacun une copie de la structure de 10 données de thermomètre 61, le module-arbitre 50 et le module allocateur 60 peuvent chacun accéder à la même structure de données de thermomètre 61, qui peut être stockée à un emplacement unique accessible à la fois au module-arbitre 50 et au module allocateur 60.
1691 Le module-arbitre 50 peut alors procéder à l'acceptation de demandes 58 conformément à la technique d'arbitrage, pour ainsi permettre aux unités demandeuses 56 d'accéder aux 15 ressources identifiées par les ID de ressources. Le module-arbitre 50 peut actualiser la structure de données de thermomètre 61 pour indiquer celles du sous-ensemble non nul de ressources 54 qui sont allouées comme étant utilisées par l'une des unités demandeuses 56. A mesure que le temps passe, les unités demandeuses 56 peuvent délivrer un nombre croissant de demandes 58, cela pouvant conduire au fait que les unités demandeuses 56 attendent en moyenne plus 20 longtemps qu'un accès à l'une des ressources 54 soit accepté. Le module allocateur 60 peut identifier ce retard (par exemple, sous la forme du temps moyen de l'émission de l'une des demandes 58 à l'acceptation de ladite une des demandes 58) et convertir ce retard en un nombre attendu de ressources qui seront exigées pour réduire le retard. Ce nombre attendu de ressources peut être prédictif par nature en ce sens que la conversion peut chercher à prédire les taux 25 d'utilisation sur la base de taux d'utilisation antérieurs afin de mettre sous tension les ressources avant que l'on s'attende à ce que les ressources soient nécessaires. Cette prédiction du taux d'utilisation peut permettre au module allocateur 60 de s'interfacer avec le module d'alimentation 62 pour mettre sous tension les ressources 54 de manière à ce que ces ressources 54 soient disponibles lorsque les informations de taux d'utilisation effectives (et non les informations de 30 taux d'utilisation prédites) indiquent que ces ressources supplémentaires, parmi les ressources 54, sont demandées. 25 3028656 [70] Lors de l'initialisation de la structure de données de thermomètre 61, le module allocateur 60 peut déterminer un seuil séparant le sous-ensemble non hul de ressources 54 qui doivent être mises sous tension de celles qui restent des ressources 54 qui ne doivent pas être mises sous tension. Ce seuil peut être défini par ladite CPU ou un autre système logique de commande, 5 préprogrammé ou préconfiguré dans le module allocateur 60, obtenu par apprentissage (via des algorithmes d'apprentissage par ordinateur) conformément au fonctionnement antérieur du dispositif de stockage 6 ou une combinaison quelconque de ceux-ci. Bien qu'elles aient été décrites à propos d'un seuil unique dans le présent fascicule, ces techniques peuvent être étendues à de multiples seuils, dont chacun définit un autre point de séparation entre les sous-10 ensembles non nuls de ressources sous tension et hors tension. [71] Dans tous les cas, lorsque le nombre attendu des ressources 54 est égal ou supérieur (ou, dans certains exemples, est uniquement supérieur) au seuil, le module allocateur 60 peut s'interfacer avec le module de commande d'alimentation 62 pour mettre sous tension celles qui restent des ressources 54. Dans certains exemples, le module allocateur 60 peut tout d'abord 15 s'interfacer avec la CPU ou un autre système logique de commande pour confirmer que celles qui restent des ressources 54 doivent être mises sous tension avant de mettre sous tension lesdites ressources 54. Une fois qu'il a été mis sous tension, comme cela est signalé par le module de commande d'alimentation 62, le module allocateur 60 peut actualiser la structure de données de thermomètre 61 pour faire apparaître celles qui viennent d'être mises sous tension des ressources 20 54. Le module-arbitre 50 peut alors, après que la structure de données de thermomètre 61 a été actualisée, commencer à affecter celle qui vient d'être mise sous tension des ressources 54 à des unités demandeuses 56 de manière à accepter des demandes 58 provenant des unités demandeuses 56. En utilisant la structure de données de thermomètre 61, le module allocateur 60 peut mettre sous tension des ressources 54 selon une succession fixe ou selon une progression 25 spécifique. [72] En d'autres termes, le module allocateur 60 fonctionne conformément à un algorithme permettant de concentrer les ID de ressources sur les valeurs les plus faibles qui sont celles qui sont associées à celles des ressources 54 qui ont la numérotation la plus faible. Lorsqu'une première des demandes 58 est reçue par le module-arbitre 50, le module-arbitre 50 peut être 30 configuré pour allouer celui des ID de ressources stockés ayant la numérotation la plus faible à la structure de données de thermomètre 61 et actualiser la structure de données de thermomètre 61 26 3028656 pour indiquer que celle qui lui correspond des ressources 54 est occupée (ou, en d'autres termes, en cours d'utilisation ou indisponible). Lorsqu'un une seconde des demandes 58 est reçue par le module-arbitre 50 avant que la première demande ait été entièrement traitée par celle qui lui correspond des ressources 54, le module-arbitre 50 peut affecter le second ID de ressource le 5 plus faible disponible des ID de ressources stockés à la structure de données de thermomètre 61. Après avoir affecté ce second ID de ressource le plus faible disponible des ID de ressources, le module-arbitre 50 peut actualiser la structure de données de thermomètre 61 pour indiquer que cette ressource correspondante est occupée. Une fois que la première des demandes 58 a été traitée, le module-arbitre 50 peut actualiser la structure de données de thermomètre 61 pour 10 indiquer que celle des ressources 54 qui traite ladite première des demandes 58 est disponible. Compte tenu du fait que ladite une des ressources 54 présente l'ID de ressource disponible le plus faible (de tous les ID de ressources disponibles), le module-arbitre 50 peut encore une fois affecter cet ID de ressource en réponse à des demandes supplémentaires quelconques des demandes 58, pour ainsi potentiellement éviter d'avoir à mettre sous tension celles qui restent des 15 ressources 54. [73] A mesure que le temps passe, le module allocateur 60 peut déterminer que le nombre de demandes par intervalle de temps donné a diminué. Cette diminution peut avoir pour effet de conduire au fait que certaines des ressources disponibles 54 soient inactives pendant certaines périodes de temps. Le module allocateur 60 peut détecter cette inactivité en convertissant le 20 nombre de demandes par intervalle de temps donné en un nombre attendu de ressources. Le module allocateur 60 peut comparer ce nombre attendu de ressources au seuil mentionné ci-dessus et, sur la base de cette comparaison (par exemple, lorsque le nombre attendu des ressources est inférieur ou égal ou simplement inférieur au seuil), mettre hors tension le sous-ensemble non nul restant de ressources 54 précédemment mises sous tension. 25 [74] Le module allocateur 60 peut au cours du temps augmenter le nombre de seuils pour fournir une commande d'alimentation plus affinée ou sinon ajuster les seuils existants pour ne mettre sous ou hors tension qu'une certaine quantité incrémentielle des ressources 54. En d'autres termes, bien qu'elles aient été décrites ci-dessus comme présentant un seuil statique, les techniques peuvent être mises en oeuvre avec un seuil dynamique qui varie au cours du temps sur 30 la base du nombre attendu de ressources, de l'heure du jour ou de toute autre condition, comme la chaleur, les cycles de traitement consommés, le taux d'utilisation de la mémoire, etc. Lors de 27 3028656 l'ajustement dynamique du seuil, le module allocateur 60 peut mettre sous ou hors tension des ressources supplémentaires sur le sous-ensemble non nul initial de ressources 54, en augmentant ou en réduisant le nombre de ressources présentes dans ce sous-ensemble non nul de ressources 54. L'ajustement dynamique du seuil peut constituer encore une autre façon d'équilibrer les 5 performances avec la consommation d'énergie. [75] La figure 4 est un schéma de principe illustrant de manière plus détaillée un décodeur ECC 40 de la figure 2. Dans l'exemple de la figure 4, un décodeur ECC 40 comprend un module d'allocation de ressources intégré 42 (non représenté) sous la forme du module-arbitre 50 et du module allocateur et de commande d'alimentation 52 (dont chacun peut être semblable ou 10 identique au module-arbitre 50 et/ou au module de commande d'alimentation allocateur 52 représentés dans l'exemple de la figure 3). Le décodeur ECC 40 peut en outre comprendre un ou plusieurs modules de demande de ressources qui peuvent en fait être des unités demandeuses 56 et un multiplexeur de données de lecture 72 ("mux de données de lecture 72"). Les unités demandeuses 56 peuvent être une interface configurée pour l'interfaçage avec la CPU 70 et 15 générer des demandes 58. Le mux de données de lecture 72 peut être une unité configurée pour effectuer un multiplexage entre, ou sinon sélectionner des données provenant de l'un des bancs de mémoire désignés comme étant des ressources 54. [76] Dans l'exemple de la figure 4, les unités demandeuses 56 peuvent être un dispositif, une unité ou un module qui demande un tampon de mémoire dans lequel des données doivent être 20 copiées. Les ressources 54 peuvent être des tampons de mémoire situés dans les bancs de mémoire 0-3 (pouvant par exemple chacun comprendre un type de mémoire désigné sous le nom de SRAM). Si l'on suppose que chaque banc de mémoire peut fournir quatre tampons et que le temps moyen d'inter-arrivée des demandes est tel qu'un maximum de quatre unités demandeuses 56 sont actives au cours de la durée de vie des tampons, alors un seul des bancs de mémoire 54 25 peut être sous tension pour satisfaire à la demande. Cependant, lorsque le temps d'inter-arrivée des demandes décroît, ou lorsque la durée de vie moyenne des tampons croît, le module d'allocation et de commande d'alimentation 52 peut mettre sous tension l'un, supplémentaire, des bancs de mémoire 54 (par exemple, le banc de mémoire 1 en plus du banc de mémoire 0), pour ainsi fournir quatre autres ID de ressources. Le module d'allocation et de commande 30 d'alimentation 52 peut alors augmenter la réserve disponible d'emplacements de tampons de quatre à huit, mais seulement après que le banc de mémoire 1 a indiqué qu'il est dans un état sous 28 3028656 tension via le canal de commande PWR IS _ON (ou ce que l'on désigne sous le nom de ligne de _ commande d'état d'alimentation). [77] Les figures 5A et 5B sont un organigramme illustrant un exemple de fonctionnement d'un dispositif de stockage lors de la mise en oeuvre des techniques d'allocation et de désallocation de 5 ressources décrites dans le présent fascicule. Se référant tout d'abord à la figure 5A, lorsqu'un dispositif de stockage, tel que le dispositif de stockage 6 représenté dans l'exemple de la figure 1, est tout d'abord mis sous tension, le dispositif de stockage 6 peut fonctionner dans un état de faible alimentation dans lequel certaines sinon la totalité des ressources 54 (représentées dans l'exemple des figures 3 et 4) sont hors tension (ou ne sont pas sous tension) (90). Les unités 10 demandeuses 56 peuvent commencer à émettre une ou plusieurs des demandes 58, et la CPU ou un autre système logique de commande peut alors permettre au module allocateur 60 de s'interfacer avec le module de commande d'alimentation 62 pour mettre sous tension un certain sous-ensemble non nul de ressources 54 (94). [78] En réponse à la mise sous tension de ce sous-ensemble non nul de ressources 54, le 15 module allocateur 60 peut alors initialiser la structure de données de thermomètre 61 ("structure de données temp 61"), en affectant des ID de ressources croissants dans un ordre séquentiel au sous-ensemble non nul de ressources sous tension 54 et en actualisant la structure de données de thermomètre 61 pour faire apparaître l'affectation des ID de ressources à certaines, particulières, du sous-ensemble non nul de ressources sous tension 54 (96). Le module-arbitre 50 peut alors 20 procéder à l'acceptation de demandes 58 conformément à la technique d'arbitrage (98), pour ainsi permettre aux unités demandeuses 56 d'accéder aux ressources identifiées par les ID de ressources. Le module-arbitre 50 peut actualiser la structure de données de thermomètre 61 pour indiquer celles du sous-ensemble non nul de ressources 54 qui sont allouées comme étant utilisées par l'une des unités demandeuses 56 (100). 25 [79] A mesure que le temps passe, les unités demandeuses 56 peuvent délivrer un nombre croissant de demandes 58, pouvant conduire au fait que les unités demandeuses 56 attendent en moyenne plus longtemps qu'un accès à l'une des ressources 54 soit accepté. Le module allocateur 60 peut déterminer le retard entre demande et acceptation (par exemple, sous la forme du temps moyen de l'émission de l'une des demandes 58 à l'acceptation de ladite une des demandes 58) et 30 comparer ce retard (sous la forme d'un nombre attendu de ressources) à un seuil (102, 104) de la manière décrite ci-dessus. Lorsque le nombre attendu de ressources 54 (qui représente en fait le 29 3028656 retard) est inférieur ou égal au seuil ("NON" 106), le module allocateur 60 peut continuer de surveiller ou sinon déterminer le retard entre demande et acceptation et comparer ce retard au seuil (102, 104). Lorsque le nombre attendu de ressources 54 dépasse le seuil ("OUI" 106), le module allocateur 60 peut s'interfacer avec le module de commande d'alimentation 62 pour 5 mettre sous tension celles qui restent des ressources 54 (108). [80] Comme mentionné ci-dessus, bien qu'elles aient été décrites en ce qui concerne un sous-ensemble non nul de la pluralité de ressources et celles qui restent de la pluralité de ressources, les techniques peuvent être étendues à un nombre quelconque de sous-ensembles de ressources, un seuil correspondant étant défini pour séparer chaque sous-ensemble non nul contigu de 10 ressources. A cet égard, la pluralité de ressources peuvent être considérées comme étant un sous-ensemble d'une plus grande pluralité de ressources. De ce fait, celles qui restent de la pluralité de ressources peuvent représenter un second sous-ensemble non nul de la pluralité de ressources dans la plus grande pluralité de ressources. [81] Dans tous les cas, une fois qu'il a été mis sous tension comme cela est signalé par le 15 module de commande d'alimentation 62, le module allocateur 60 peut actualiser la structure de données de thermomètre 61 pour faire apparaître celles qui viennent d'être mises sous tension des ressources 54 (110). Se référant à l'exemple de la figure 5B, le module-arbitre 50 peut alors, après que la structure de données de thermomètre 61 a été actualisée, commencer à affecter celle qui vient d'être mise sous tension des ressources 54 à des unités demandeuses 56 de manière à 20 accepter des demandes 58 provenant des unités demandeuses 56 tout en actualisant la structure de données de thermomètre 61 pour faire apparaître l'affectation et la libération de ces ressources 56 (112, 114). [82] A mesure que le temps passe, le module allocateur 60 peut déterminer que le nombre de demandes par intervalle de temps donné a diminué. Cette diminution peut avoir pour effet de 25 conduire au fait que certaines des ressources disponibles 54 soient inactives pendant certaines périodes de temps. Le module allocateur 60 peut à nouveau déterminer le retard entre demande et acceptation (116) en convertissant potentiellement le nombre de demandes par intervalle de temps donné en un nombre attendu de ressources. Le module allocateur 60 peut comparer ce nombre attendu de ressources au seuil mentionné ci-dessus (118) et, sur la base de cette 30 comparaison (par exemple, lorsque le nombre attendu de ressources est inférieur ou égal ou 30 3028656 simplement inférieur au seuil), mettre hors tension le sous-ensemble non nul restant de ressources 54 précédemment mises sous tension. [83] A titre d'exemple, lorsque le retard est supérieur au seuil ("OUI" 120), le module allocateur 60 peut continuer de déterminer le retard entre demande et acceptation et comparer ce 5 retard au seuil (116, 118). Lorsque le retard est inférieur ou égal au seuil ("NON" 120), le module allocateur 60 peut s'interfacer avec le module de commande d'alimentation 62 afin de mettre hors tension le sous-ensemble restant de ressources 54 (122). Le module allocateur 60 peut actualiser la structure de données de thermomètre 61 pour faire apparaître la mise hors tension desdites ressources 54 (124). Le dispositif de stockage 6 peut continuer de fonctionner de 10 cette manière, en déterminant continuellement le retard entre demande et acceptation 102 dans ce qui peut maintenant être désigné sous le nom de mode de réduction du coût-de fonctionnement (102-106, 122, 124) jusqu'à ce que le retard entre demande et acceptation dépasse le seuil, lors de quoi le dispositif de stockage 6 fonctionne dans un mode à hautes performances (108-120). [84] La figure 6 est un diagramme illustrant de manière plus détaillée la structure de données 15 de thermomètre 61 de la figure 3. La structure de données de thermomètre 61 comprend des noeuds 130A-130I ("noeuds 130"), chaque noeud stockant un ID de ressource (RID, Resource ID) et un bit disponible (A). Dans l'exemple de la figure 6, des ressources 54 associés aux noeuds 130A, 130C-130F et 130H sont indisponibles, comme indiqué par A=0 (et dans le diagramme, par le remplissage en diagonale). A chacun des noeuds 130 est affecté un ID de ressource 20 croissant successivement de gauche à droite (par exemple, de 0 à 8). Pour l'allocation de ressources libres (où les noeuds 130B, 130G et 1301 sont associés à des ressources libres ou, en d'autres termes, disponibles), le module-arbitre 50 commence toujours la recherche par une ressource libre en partant d'un côté (par exemple, le côté gauche). Il en résulte que le module-arbitre 50 peut affecter, en réponse à celle qui suit des demandes 58, l'une des ressources 54 25 associées à un ID de ressource égal à un (comme identifié par le noeud 130B). Au lieu d'une allocation classique, cette allocation du type graphique à barres/thermomètre permet de mettre à l'arrêt des ressources inutilisées de la manière décrite ci-dessus. En effet, un côté de la structure de données de thermomètre 61 peut rester occupé alors que l'autre côté peut rester pratiquement libre. 30 [85] Les techniques décrites dans le présent fascicule peuvent être mises en oeuvre, au moins en partie, sous la forme de matériels, de logiciels, de micrologiciels, ou d'une combinaison 31 3028656 quelconque de ceux-ci. A titre d'exemple, divers aspects des techniques décrites peuvent être mis en oeuvre dans un ou plusieurs processeurs, parmi lesquels un ou plusieurs microprocesseurs, des processeurs numériques de signaux (DSP), des circuits intégrés spécifiques d'applications (ASIC), des matrices prédiffusées programmables (FPGA), ou tous autres circuits logiques 5 intégrés ou discrets équivalents, ainsi que des combinaisons quelconques de ces composants. Le terme "processeur" ou "circuits de traitement" peut de manière générale faire référence à l'un quelconque des circuits logiques précités, seuls ou en association avec d'autres circuits logiques, ou tous autres circuits équivalents. Une unité de commande comprenant un matériel peut également mettre en oeuvre une ou plusieurs des techniques de la présente invention.
10 1861 Ces matériels, logiciels, et micrologiciels peuvent être mis en oeuvre dans un même dispositif ou dans des dispositifs séparés pour prendre en charge les diverses techniques décrites dans le présent fascicule. En outre, n'importe lesquels des unités, modules ou composants décrits peuvent être mis en oeuvre ensemble ou séparément sous la forme de dispositifs logiques discrets mais interopérables. L'illustration des différentes caractéristiques sous la forme de modules ou 15 d'unités est destinée à faire ressortir différents aspects fonctionnels et n'implique pas nécessairement que ces modules ou unités doivent être réalisés sous la forme de matériels, de micrologiciels, ou de composants logiciels séparés. En effet, la fonctionnalité associée à un ou plusieurs modules ou unités peut être mise en oeuvre sous la forme de matériels, de micrologiciels, ou de composants logiciels séparés, ou intégrés à des matériels, des 20 micrologiciels, ou des composants logiciels communs ou séparés. [87] Les techniques décrites dans le présent fascicule peuvent également être mises en oeuvre ou codées dans un article de fabrication comprenant un support de stockage lisible par ordinateur sur lequel son codées des instructions. Des instructions intégrées ou codées dans un article de fabrication comprenant un support de stockage lisible par ordinateur codé, peuvent amener un ou 25 plusieurs processeurs programmables, ou d'autres processeurs, à mettre en oeuvre une ou plusieurs des techniques décrites ici, par exemple lorsque des instructions contenues ou codées dans le support de stockage lisible par ordinateur sont exécutées par lesdits un ou plusieurs processeurs. Les supports de stockage lisibles par ordinateur peuvent comprendre une mémoire vive (RAM), une mémoire morte (ROM), une mémoire morte programmable (PROM), une 30 mémoire morte programmable effaçable (EPROM), une mémoire morte programmable effaçable électroniquement (EEPROM), une mémoire flash, un disque dur, une ROM à disque compact 32 3028656 (CD-ROM), une disquette souple, une cassette, des supports magnétiques, des supports optiques, ou d'autres supports lisibles par ordinateur. Dans certains exemples, un article de fabrication peut comprendre un ou plusieurs supports de stockage lisibles par ordinateur. [88] Dans certains exemples, un support de stockage lisible par ordinateur peut comprendre un 5 support non volatil. Le terme "non volatil" peut indiquer que le support de stockage n'est pas mis en oeuvre dans une onde porteuse ou un signal se propageant. Dans certains exemples, un support de stockage non volatil peut stocker des données qui peuvent varier au cours du temps (par exemple, dans une RAM ou une mémoire cache). [89] Divers exemples ont été décrits. Ces exemples et d'autres encore entrent dans le cadre des 10 revendications suivantes. 33

Claims (21)

  1. REVENDICATIONS1. Procédé consistant à : déterminer, par une unité (8) de commande d'un dispositif (6), le taux d'utilisation d'un premier sous-ensemble non nul d'une pluralité de ressources (54) du dispositif, la pluralité de ressources étant allouées et libérées conformément à une structure de données de thermomètre (61) ; comparer, par l'unité (8) de commande, le taux d'utilisation du premier sous-ensemble non nul de la pluralité de ressources (54) à un seuil séparant le premier sous-ensemble non nul de la pluralité de ressources (54) d'un second sous-ensemble non nul de la pluralité de ressources (54); et mettre sous tension le second sous-ensemble non nul de la pluralité de ressources (54) sur la base au moins de la comparaison.
  2. 2. Procédé selon la revendication 1, dans lequel le dispositif (6) comprend un disque électronique (SSD), et dans lequel la pluralité de ressources (54) prennent en charge un ou plusieurs de l'écriture données dans et de la lecture données depuis une mémoire non volatile du SSD.
  3. 3. Procédé selon la revendication 1, consistant en outre à déterminer, par l'unité (8) de commande, le taux d'utilisation du premier sous-ensemble non nul de la pluralité de ressources (54) sur la base d'au moins une analyse de ta structure de données de thermomètre (61).
  4. 4. Procédé selon la revendication 1, dans lequel la structure de données de thermomètre (61) comprend un bit respectif pour chacune de la pluralité de ressources (54), chacun des bits respectifs indiquant si celle qui lui correspond de la pluralité de ressources (54) est allouée à une unité demandeuse (56) ou est disponible pour l'allocation à une unité demandeuse.
  5. 5. Procédé selon la revendication 4, consistant en outre à déterminer le taux d'utilisation du premier sous-ensemble non nul de la pluralité de ressources (54) sur la base d'au moins une analyse statistique des bits respectifs de la structure de données de thermomètre (61). 3028656 34
  6. 6. Procédé selon la revendication 1, consistant en outre à traduire le taux d'utilisation du premier sous-ensemble non nul de la pluralité de ressources (54) en un taux d'utilisation prédit indicatif d'un nombre attendu de la pluralité de ressources (54) qui seront demandées, 5 dans lequel la comparaison du taux d'utilisation du premier sous-ensemble non nul de la pluralité de ressources (54) consiste à comparer le nombre attendu de la pluralité de ressources (54) qui seront demandées au seuil.
  7. 7. Procédé selon la revendication 1, dans lequel chacune de la pluralité de ressources (54) 10 comprend un emplacement de mémoire respectif, chacun des emplacements de mémoire respectifs comprenant un même nombre d'octets.
  8. 8. Procédé selon la revendication 1, dans lequel chacune de la pluralité de ressources (54) comprend un décodeur (40) respectif de vérification et de correction d'erreurs (ECC) utilisé pour 15 effectuer un décodage ECC sur des données codées par ECC écrites dans une mémoire non volatile d'un disque électronique.
  9. 9. Procédé selon la revendication 1, dans lequel la mise sous tension du second sous-ensemble non nul de la pluralité de 20 ressources (54) consiste à mettre sous tension le second sous-ensemble non nul de la pluralité de ressources(54) lorsque le taux d'utilisation est égal ou supérieur au seuil, et dans lequel le procédé consiste en outre à mettre hors tension le second sous-ensemble non nul de la pluralité de ressources lorsque le taux d'utilisation est inférieur au seuil. 25
  10. 10. Procédé selon la revendication 1, consistant en outre à régler dynamiquement le seuil à différentes valeurs au cours du temps pour commander la consommation d'énergie.
  11. 11. Dispositif (6) comprenant : un ou plusieurs processeurs configurés pour déterminer le taux d'utilisation d'un premier 30 sous-ensemble non nul d'une pluralité de ressources (54), la pluralité de ressources étant allouées et libérées conformément à une structure de données de thermomètre (61), comparer le taux 3028656 d'utilisation du premier sous-ensemble non nul de la pluralité de ressources (54) à un seuil séparant le premier sous-ensemble non nul de la pluralité de ressources (54) d'un second sous-ensemble non nul de la pluralité de ressources (54), et mettre sous tension le second sous-ensemble non nul de la pluralité de ressources (54)sur la base au moins de la comparaison ; et 5 une mémoire configuré pour stocker le seuil.
  12. 12. Dispositif (6) selon la revendication 11, dans lequel le dispositif comprend un disque électronique (SSD), et dans lequel la pluralité de ressources (54) prennent en charge un ou plusieurs de l'écriture 10 données dans et de la lecture données depuis une mémoire non volatile du SSD.
  13. 13. Dispositif (6) selon la revendication 11, dans lequel lesdits un ou plusieurs processeurs sont en outre configurés pour déterminer le taux d'utilisation du premier sous-ensemble non nul de la pluralité de ressources (54) sur la base d'au moins une analyse de la structure de données de 15 thermomètre (61).
  14. 14. Dispositif (6) selon la revendication 11, dans lequel la structure de données de thermomètre (61) comprend un bit respectif pour chacune de la pluralité de ressources (54), chacun des bits respectifs indiquant si celle qui lui correspond de la pluralité de ressources (54) 20 est allouée à une unité demandeuse (56) ou est disponible pour l'allocation à une unité demandeuse.
  15. 15. Dispositif (6) selon la revendication 14, dans lequel lesdits un ou plusieurs processeurs sont en outre configurés pour déterminer le taux d'utilisation du premier sous-ensemble non nul 25 de la pluralité de ressources (54) sur la base d'au moins une analyse statistique des bits respectifs de la structure de données de thermomètre (61).
  16. 16. Dispositif (6) selon la revendication 11, dans lequel lesdits un ou plusieurs processeurs sont en outre configurés pour traduire le 30 taux d'utilisation du premier sous-ensemble non nul de la pluralité de ressources (54) en un taux 3028656 36 d'utilisation prédit indicatif d'un nombre attendu de la pluralité de ressources (54) qui seront demandées, et dans lequel lesdits un ou plusieurs processeurs sont configurés pour comparer le nombre attendu de la pluralité de ressources (54) qui seront demandées au seuil. 5
  17. 17. Dispositif (6) selon la revendication 11, dans lequel chacune de la pluralité de ressources (54) comprend un emplacement de mémoire respectif, chacun des emplacements de mémoire respectifs comprenant un même nombre d'octets. 10
  18. 18. Dispositif (6) selon la revendication 11, dans lequel chacune de la pluralité de ressources (54) comprend un décodeur (40) respectif de vérification et de correction d'erreurs (ECC) utilisé pour effectuer un décodage ECC sur dés données codées par ECC écrites dans une mémoire non volatile d'un disque électronique. 15
  19. 19. Dispositif (6) selon la revendication 11, dans lequel lesdits un ou plusieurs processeurs sont configurés pour mettre sous tension le second sous-ensemble non nul de la pluralité de ressources (54) lorsque le taux d'utilisation est égal ou supérieur au seuil, et dans lequel lesdits un ou plusieurs processeurs sont en outre configurés pour mettre hors 20 tension le second sous-ensemble non nul de la pluralité de ressources (54) lorsque le taux d'utilisation est inférieur au seuil.
  20. 20. Dispositif (6) selon la revendication 11, dans lequel lesdits un ou plusieurs processeurs sont en outre configurés pour régler dynamiquement le seuil à différentes valeurs au cours du 25 temps pour commander la consommation d'énergie.
  21. 21. Support de stockage lisible par ordinateur non volatil sur lequel sont stockées des instructions qui, lorsqu'elles sont exécutées, amènent un ou plusieurs processeurs à : déterminer le taux d'utilisation d'un premier sous-ensemble non nul d'une pluralité de 30 ressources (54), la pluralité de ressources (54) étant allouées et libérées conformément à une structure de données de thermomètre (61) ; 3028656 37 comparer le taux d'utilisation du premier sous-ensemble non nul de la pluralité de ressources (54) à un seuil séparant le premier sous-ensemble non nul de la pluralité de ressources (54) d'un second sous-ensemble non nul de la pluralité de ressources ; et mettre sous tension le second sous-ensemble non nul de la pluralité de ressources (54) sur 5 la base au moins de la comparaison.
FR1560938A 2014-11-18 2015-11-16 Withdrawn FR3028656A1 (fr)

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
US14/546,914 US9417961B2 (en) 2014-11-18 2014-11-18 Resource allocation and deallocation for power management in devices

Publications (1)

Publication Number Publication Date
FR3028656A1 true FR3028656A1 (fr) 2016-05-20

Family

ID=55132624

Family Applications (1)

Application Number Title Priority Date Filing Date
FR1560938A Withdrawn FR3028656A1 (fr) 2014-11-18 2015-11-16

Country Status (10)

Country Link
US (1) US9417961B2 (fr)
JP (1) JP6250613B2 (fr)
KR (1) KR101876001B1 (fr)
CN (1) CN105607721B (fr)
AU (1) AU2015258208B2 (fr)
CA (1) CA2911982A1 (fr)
DE (1) DE102015014851B4 (fr)
FR (1) FR3028656A1 (fr)
GB (1) GB2533688B (fr)
IE (1) IE20150399A1 (fr)

Families Citing this family (31)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN104348764B (zh) * 2013-07-31 2017-09-19 国际商业机器公司 在数据接收链路中分配计算单元的方法和装置
US9910465B2 (en) * 2014-11-11 2018-03-06 Microsoft Technology Licensing, Llc Covered radius hinge
US9625954B2 (en) 2014-11-26 2017-04-18 Microsoft Technology Licensing, Llc Multi-pivot hinge
US9851759B2 (en) 2014-12-31 2017-12-26 Microsoft Technology Licensing, Llc Multi-pivot hinge cover
US10174534B2 (en) 2015-01-27 2019-01-08 Microsoft Technology Licensing, Llc Multi-pivot hinge
US20160246715A1 (en) * 2015-02-23 2016-08-25 Advanced Micro Devices, Inc. Memory module with volatile and non-volatile storage arrays
US9720604B2 (en) * 2015-08-06 2017-08-01 Sandisk Technologies Llc Block storage protocol to RAM bypass
US10162389B2 (en) 2015-09-25 2018-12-25 Microsoft Technology Licensing, Llc Covered multi-axis hinge
US10453502B2 (en) * 2016-04-04 2019-10-22 Micron Technology, Inc. Memory bank power coordination including concurrently performing a memory operation in a selected number of memory regions
CN107733552B (zh) * 2016-08-12 2020-04-03 华为技术有限公司 数据传输方法和装置
US10437293B2 (en) 2016-09-23 2019-10-08 Microsoft Technology Licensing, Llc Multi-axis hinge
US10705885B2 (en) * 2018-01-31 2020-07-07 Palo Alto Networks, Inc. Autoscaling of data processing computing systems based on predictive queue length
US11194511B2 (en) * 2018-12-31 2021-12-07 Micron Technology, Inc. Arbitration techniques for managed memory
US11687277B2 (en) 2018-12-31 2023-06-27 Micron Technology, Inc. Arbitration techniques for managed memory
US11237617B2 (en) * 2018-12-31 2022-02-01 Micron Technology, Inc. Arbitration techniques for managed memory
US11249657B2 (en) * 2019-07-10 2022-02-15 Arm Limited Non-volatile storage circuitry accessible as primary storage for processing circuitry
US10990724B1 (en) 2019-12-27 2021-04-27 Arteris, Inc. System and method for incremental topology synthesis of a network-on-chip
US11665776B2 (en) 2019-12-27 2023-05-30 Arteris, Inc. System and method for synthesis of a network-on-chip for deadlock-free transformation
US11657203B2 (en) 2019-12-27 2023-05-23 Arteris, Inc. Multi-phase topology synthesis of a network-on-chip (NoC)
US11558259B2 (en) 2019-12-27 2023-01-17 Arteris, Inc. System and method for generating and using physical roadmaps in network synthesis
KR20210103309A (ko) 2020-02-13 2021-08-23 삼성전자주식회사 전원 공급 회로를 포함하는 스토리지 장치 및 이의 동작 방법
US11418448B2 (en) 2020-04-09 2022-08-16 Arteris, Inc. System and method for synthesis of a network-on-chip to determine optimal path with load balancing
US11330471B2 (en) * 2020-06-22 2022-05-10 T-Mobile Usa, Inc. Simultaneous multi-path uplink transmissions to a telecommunications network
CN111951866B (zh) * 2020-10-19 2021-01-15 深圳市芯天下技术有限公司 非易失型闪存深睡眠低静态功耗的电路
US11601357B2 (en) 2020-12-22 2023-03-07 Arteris, Inc. System and method for generation of quality metrics for optimization tasks in topology synthesis of a network
US11281827B1 (en) 2020-12-26 2022-03-22 Arteris, Inc. Optimization of parameters for synthesis of a topology using a discriminant function module
US11449655B2 (en) 2020-12-30 2022-09-20 Arteris, Inc. Synthesis of a network-on-chip (NoC) using performance constraints and objectives
US11956127B2 (en) 2021-03-10 2024-04-09 Arteris, Inc. Incremental topology modification of a network-on-chip
US11960341B2 (en) 2021-08-31 2024-04-16 Apple Inc. Power delivery reduction scheme for SoC
CN114388008B (zh) * 2022-01-14 2023-08-29 长鑫存储技术有限公司 电源控制电路及控制方法
US20230325097A1 (en) * 2022-04-12 2023-10-12 Dell Products L.P. Selective powering of storage drive components in a storage node based on system performance limits

Family Cites Families (27)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20030196126A1 (en) 2002-04-11 2003-10-16 Fung Henry T. System, method, and architecture for dynamic server power management and dynamic workload management for multi-server environment
US6742097B2 (en) * 2001-07-30 2004-05-25 Rambus Inc. Consolidation of allocated memory to reduce power consumption
US7219249B1 (en) 2002-12-03 2007-05-15 The Research Foundation Of State University Of New York System and method for reducing power requirements of microprocessors through dynamic allocation of datapath resources
US7007183B2 (en) 2002-12-09 2006-02-28 International Business Machines Corporation Power conservation by turning off power supply to unallocated resources in partitioned data processing systems
US7185215B2 (en) 2003-02-24 2007-02-27 International Business Machines Corporation Machine code builder derived power consumption reduction
US20040215912A1 (en) * 2003-04-24 2004-10-28 George Vergis Method and apparatus to establish, report and adjust system memory usage
US20060117160A1 (en) * 2004-12-01 2006-06-01 Intel Corporation Method to consolidate memory usage to reduce power consumption
US8041967B2 (en) 2005-02-15 2011-10-18 Hewlett-Packard Development Company, L.P. System and method for controlling power to resources based on historical utilization data
US7631162B2 (en) * 2005-10-27 2009-12-08 Sandisck Corporation Non-volatile memory with adaptive handling of data writes
JP2007293442A (ja) * 2006-04-21 2007-11-08 Hitachi Ltd ストレージシステム及びその制御方法
JP5057792B2 (ja) * 2007-01-29 2012-10-24 株式会社日立製作所 性能ボトルネックを緩和する機能を備えたストレージシステム
US7971074B2 (en) 2007-06-28 2011-06-28 Intel Corporation Method, system, and apparatus for a core activity detector to facilitate dynamic power management in a distributed system
JP4461170B2 (ja) * 2007-12-28 2010-05-12 株式会社東芝 メモリシステム
US20090228697A1 (en) * 2008-03-07 2009-09-10 Kabushiki Kaisha Toshiba Information processing apparatus, storage drive and firmware update method
US8291245B2 (en) * 2008-04-17 2012-10-16 International Business Machines Corporation Method, apparatus and system for reducing power consumption based on storage device data migration
US8271818B2 (en) 2009-04-30 2012-09-18 Hewlett-Packard Development Company, L.P. Managing under-utilized resources in a computer
JP5091912B2 (ja) * 2009-05-21 2012-12-05 株式会社東芝 マルチコアプロセッサシステム
US8289801B2 (en) * 2009-09-09 2012-10-16 Fusion-Io, Inc. Apparatus, system, and method for power reduction management in a storage device
CN102141943A (zh) * 2010-01-28 2011-08-03 建兴电子科技股份有限公司 闪存装置及其数据保护方法
US8213255B2 (en) * 2010-02-19 2012-07-03 Sandisk Technologies Inc. Non-volatile storage with temperature compensation based on neighbor state information
US9098521B2 (en) * 2010-09-15 2015-08-04 Qualcomm Incorporated System and method for managing resources and threshsold events of a multicore portable computing device
JP5633440B2 (ja) * 2011-03-17 2014-12-03 富士通株式会社 情報処理装置、電力制御方法及び電力制御プログラム
JP5576827B2 (ja) * 2011-06-03 2014-08-20 日本電信電話株式会社 サーバ管理システム、サーバ管理装置、サーバ管理方法、及びサーバ管理プログラム
JP2013149065A (ja) * 2012-01-19 2013-08-01 Nec Corp サーバ、サーバの消費電力削減方法、およびコンピュータプログラム
JP5554358B2 (ja) * 2012-03-23 2014-07-23 株式会社東芝 マルチプロセッサシステムおよび電力制御方法
JP5857849B2 (ja) * 2012-03-30 2016-02-10 富士通株式会社 ストレージ装置、起動装置決定方法およびプログラム
US9766678B2 (en) * 2013-02-04 2017-09-19 Intel Corporation Multiple voltage identification (VID) power architecture, a digital synthesizable low dropout regulator, and apparatus for improving reliability of power gates

Also Published As

Publication number Publication date
GB201519886D0 (en) 2015-12-23
CN105607721B (zh) 2018-10-09
GB2533688A (en) 2016-06-29
KR101876001B1 (ko) 2018-07-06
DE102015014851A1 (de) 2016-05-19
JP6250613B2 (ja) 2017-12-20
CA2911982A1 (fr) 2016-05-18
US20160139639A1 (en) 2016-05-19
GB2533688B (en) 2019-07-03
DE102015014851B4 (de) 2020-07-09
IE20150399A1 (en) 2016-06-29
AU2015258208A1 (en) 2016-06-02
CN105607721A (zh) 2016-05-25
JP2016105273A (ja) 2016-06-09
AU2015258208B2 (en) 2017-10-19
US9417961B2 (en) 2016-08-16
KR20160059430A (ko) 2016-05-26

Similar Documents

Publication Publication Date Title
FR3028656A1 (fr)
US11068170B2 (en) Multi-tier scheme for logical storage management
KR101861924B1 (ko) 보호된 데이터로부터 분리된 패리티 데이터 저장
US20160210060A1 (en) Dynamic resource allocation within storage devices
KR101908581B1 (ko) 저장 디바이스들에서의 웨어 레벨링
KR101580454B1 (ko) 상이한 최소 어드레스가능 데이터 유닛 크기들을 갖는 비휘발성 메모리 유닛들 사이의 선택
US9645769B2 (en) Performance acceleration during shutdown of a data storage device
KR101933763B1 (ko) 연판정 디코딩을 위한 물리적 페이지 어드레스들을 상관시키는 것
US10379747B2 (en) Automated latency monitoring
FR3026513A1 (fr)
US10235069B2 (en) Load balancing by dynamically transferring memory range assignments
US9971515B2 (en) Incremental background media scan
US9582192B2 (en) Geometry aware block reclamation
US20220129206A1 (en) Resource allocation in memory systems based on operation modes
US9911494B1 (en) Overlapping write schemes for cross-point non-volatile memory devices
US20160291871A1 (en) Data storage device and operating method thereof
US11556274B1 (en) Endurance groups ECC allocation
US20230359393A1 (en) Memory system and operating method of the memory system

Legal Events

Date Code Title Description
PLFP Fee payment

Year of fee payment: 2

PLFP Fee payment

Year of fee payment: 3

PLFP Fee payment

Year of fee payment: 4

PLFP Fee payment

Year of fee payment: 5

PLSC Publication of the preliminary search report

Effective date: 20191122

TP Transmission of property

Owner name: WESTERN DIGITAL TECHNOLOGIES, INC., US

Effective date: 20200319

ST Notification of lapse

Effective date: 20210705