DE102015014851B4 - Ressourcenzuteilung und -freigabe für die Energieverwaltung in Vorrichtungen - Google Patents

Ressourcenzuteilung und -freigabe für die Energieverwaltung in Vorrichtungen Download PDF

Info

Publication number
DE102015014851B4
DE102015014851B4 DE102015014851.6A DE102015014851A DE102015014851B4 DE 102015014851 B4 DE102015014851 B4 DE 102015014851B4 DE 102015014851 A DE102015014851 A DE 102015014851A DE 102015014851 B4 DE102015014851 B4 DE 102015014851B4
Authority
DE
Germany
Prior art keywords
resources
zero subset
data
module
threshold
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.)
Active
Application number
DE102015014851.6A
Other languages
English (en)
Other versions
DE102015014851A1 (de
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
Western Digital Technologies Inc
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 Western Digital Technologies Inc filed Critical Western Digital Technologies Inc
Publication of DE102015014851A1 publication Critical patent/DE102015014851A1/de
Application granted granted Critical
Publication of DE102015014851B4 publication Critical patent/DE102015014851B4/de
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • 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
    • 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
    • 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
    • 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)
  • Computer Security & Cryptography (AREA)
  • Power Sources (AREA)

Abstract

Verfahren, umfassend:Bestimmen, durch eine Steuerung (8) einer Vorrichtung (6), der Nutzung einer ersten nicht null betragenden Teilmenge einer Mehrzahl von Ressourcen (34-40,54) der Vorrichtung, wobei die Mehrzahl von Ressourcen entsprechend einer Thermometer-Datenstruktur zugeteilt bzw. freigegeben wird;Vergleichen (104), durch die Steuerung, der Nutzung der ersten nicht null betragenden Teilmenge der Mehrzahl von Ressourcen mit einem Schwellwert, der die erste nicht null betragende Teilmenge der Mehrzahl von Ressourcen gegen eine zweite nicht null betragende Teilmenge der Mehrzahl von Ressourcen abgrenzt; undEinschalten (108) der zweiten nicht null betragenden Teilmenge der Mehrzahl von Ressourcen basierend wenigstens auf dem Vergleich.

Description

  • TECHNISCHES GEBIET
  • Die vorliegende Offenbarung betrifft die Ressourcenzuteilung und spezieller die Ressourcenzuteilung für die Energieverwaltung.
  • US 2011 / 0 060 927 A1 beschreibt ein Gerät, ein System und ein Verfahren zur Verwaltung des Stromverbrauchs in einem Datenspeichergerät. Ein Prüfmodul überwacht eine Stromverbrauchsrate der Datenspeichervorrichtung im Verhältnis zu einem Stromverbrauchsziel. Ein Drosselmodul passt die Ausführung einer oder mehrerer Operationen auf dem Datenspeichergerät als Reaktion auf die Stromverbrauchsrate des Datenspeichergeräts an, die das Stromverbrauchsziel nicht erfüllt. Ein Verifizierungsmodul verifiziert, ob die Leistungsaufnahmerate der Datenspeichervorrichtung als Reaktion auf die Anpassung der Ausführung der einen oder mehreren Operationen das Leistungsaufnahmevolumen-Ziel erfüllt.
  • HINTERGRUND DER ERFINDUNG
  • Vorrichtungen können Ressourcen für verschiedene Zwecke zuteilen und freigeben, um den Betrieb einer Vorrichtung insgesamt zu unterstützen. Beispielsweise kann eine Speichervorrichtung, etwa eine Festkörperplatte (Solid State Drive, SSD), Ressourcen zuteilen und freigeben, um einen Zugriff auf Datenpuffer, eine Fehlerprüfung und -korrektur (Error Checking And Correction, ECC) -Codierung beim Speichern von Daten in einen nichtflüchtigen Datenspeicher (z. B. Flash-Datenspeicher), einen Flash-Kanalzugriff beim Abrufen von Daten aus dem nichtflüchtigen Datenspeicher und eine ECC-Decodierung beim Abrufen von Daten aus dem nichtflüchtigen Datenspeicher zu unterstützen. In Fällen, in denen die Anzahl der Ressourcen geringer ist als die Anzahl der Einheiten (die als „Anforderer“ bezeichnet werden können), kann die Speichervorrichtung ein Arbitrationsschema implementieren (etwa ein so genanntes Round-Robin-Schema), um zu versuchen, einen vernünftig ausbalancierten Zugriff auf die Ressourcen derart zu ermöglichen, dass überlange Verzögerungen vermieden werden.
  • In einigen Fällen wird die Anzahl der Ressourcen künstlich begrenzt, um einen effizienteren Betrieb der Speichervorrichtung zu erzielen (z. B. hinsichtlich des Stromverbrauchs). Das bedeutet, dass ein Teil der verfügbaren Ressourcen abgeschaltet werden kann, um den Stromverbrauch und die entsprechenden Kosten im Zusammenhang mit dem Betrieb der Speichervorrichtungen zu reduzieren. Indem die Anzahl der Ressourcen in bestimmten Zusammenhängen künstlich begrenzt wird, versuchen Hersteller von Speichervorrichtungen, ein ausgewogenes Verhältnis zwischen Leistung und Betriebseffizienz zu realisieren. Beispielsweise haben diverse Hersteller versucht, solche Ressourcen, die ursprünglich abgeschaltet waren, dynamisch einzuschalten, um die Leistung zu verbessern, wenn Ressourcen stark nachgefragt werden, und dieselben Ressourcen dynamisch abzuschalten, um die Betriebseffizienz zu steigern, wenn die Nachfrage nach Ressourcen gering ist.
  • Dynamische Ressourcenzuteilung und -freigabe kann es daher ermöglichen, dass verschiedene Ressourcen eingeschaltet werden, wenn sie benötigt werden, und abgeschaltet werden, wenn sie nicht gebraucht werden. Algorithmen, die für die Umsetzung dieser energiesparenden Ressourcenzuteilung/-freigabe entwickelt wurden, können jedoch aufgrund von Einschränkungen bei den Zuteilungsdatenstrukturen Nachteile haben. FIFO (First-In-First-Out) -Datenstrukturen oder LIFO (Last-In-First-Out) -Datenstrukturen, die für die Ressourcenzuteilung/-freigabe verwendet werden, können zu willkürlichen Verteilungen führen, bei denen freigegebene Ressourcen mit zugeteilten Ressourcen vermischt sind, wodurch es schwierig wird zu wissen, wann eine bestimmte Ressource benötigt wird, und genügend Zeit zu haben, diese Ressourcen rechtzeitig für Dienstanfragen zur Verfügung zu stellen. Komplizierte Hardware kann eingesetzt werden, oder Universalprozessoren (etwa eine zentrale Verarbeitungseinheit (Central Processing Unit, CPU)) können verwendet werden, um eine dynamische Ressourcenzuteilung/ -freigabe zu ermöglichen, die in geeigneter Weise die Betriebseffizienz ausbalancieren kann und gleichzeitig auch adäquate Leistung bereitstellt. Diese dedizierte Hardware oder umgenutzten CPUs können jedoch einen erheblichen Stromverbrauch aufweisen, der einen großen Teil der, wenn nicht sämtliche Energieersparnisse zunichtemacht, die durch die dynamischen Ressourcenzuteilungs-/-freigabealgorithmen erzielt werden.
  • KURZFASSUNG
  • In einem Beispiel umfasst ein Verfahren das Bestimmen, durch eine Steuerung einer Vorrichtung, der Nutzung einer ersten nicht null betragenden Teilmenge einer Mehrzahl von Ressourcen der Vorrichtung, wobei die Mehrzahl von Ressourcen entsprechend einer Thermometer-Datenstruktur zugeteilt bzw. freigegeben wird, das Vergleichen, durch die Steuerung, der Nutzung der ersten nicht null betragenden Teilmenge der Mehrzahl von Ressourcen mit einem Schwellwert, der die erste nicht null betragende Teilmenge der Mehrzahl von Ressourcen gegen eine zweite nicht null betragende Teilmenge der Mehrzahl von Ressourcen abgrenzt, und das Einschalten der zweiten nicht null betragenden Teilmenge der Mehrzahl von Ressourcen basierend wenigstens auf dem Vergleich.
  • In einem anderen Beispiel umfasst eine Vorrichtung einen oder mehrere Prozessor(en), der/die ausgelegt ist/sind zum Bestimmen der Nutzung einer ersten nicht null betragenden Teilmenge einer Mehrzahl von Ressourcen, wobei die Mehrzahl von Ressourcen entsprechend einer Thermometer-Datenstruktur zugeteilt bzw. freigegeben wird, zum Vergleichen der Nutzung der ersten nicht null betragenden Teilmenge der Mehrzahl von Ressourcen mit einem Schwellwert, der die erste nicht null betragende Teilmenge der Mehrzahl von Ressourcen gegen eine zweite nicht null betragende Teilmenge der Mehrzahl von Ressourcen abgrenzt, und zum Einschalten der zweiten nicht null betragenden Teilmenge der Mehrzahl von Ressourcen basierend wenigstens auf dem Vergleich, sowie einen Datenspeicher, der ausgelegt ist den Schwellwert zu speichern.
  • In einem anderen Beispiel weist ein nichtflüchtiges, computerlesbares Speichermedium darauf gespeicherte Anweisungen auf, deren Ausführung einen oder mehrere Prozessor(en) veranlasst, die Nutzung einer ersten nicht null betragenden Teilmenge einer Mehrzahl von Ressourcen zu bestimmen, wobei die Mehrzahl von Ressourcen entsprechend einer Thermometer-Datenstruktur zugeteilt bzw. freigegeben wird, die Nutzung der ersten nicht null betragenden Teilmenge der Mehrzahl von Ressourcen mit einem Schwellwert zu vergleichen, der die erste nicht null betragende Teilmenge der Mehrzahl von Ressourcen gegen eine zweite nicht null betragende Teilmenge der Mehrzahl von Ressourcen abgrenzt, und die zweite nicht null betragende Teilmenge der Mehrzahl von Ressourcen basierend wenigstens auf dem Vergleich einzuschalten.
  • Die Einzelheiten eines oder mehrerer der vorstehend erörterten Beispiele werden in den beigefügten Zeichnungen und der nachstehenden Beschreibung dargelegt. Andere Merkmale, Ziele und Vorteile werden aus der Beschreibung und den Zeichnungen und aus den Patentansprüchen ersichtlich.
  • Figurenliste
    • ist ein konzeptionelles, schematisches Blockschaltbild, das eine beispielhafte Speicherumgebung, in der eine Speichervorrichtung als Speichervorrichtung für eine Host-Vorrichtung fungieren kann, gemäß einem oder mehreren der Verfahren der vorliegenden Offenbarung darstellt.
    • ein konzeptionelles, schematisches Blockschaltbild, das eine beispielhafte Steuerung gemäß einem oder mehreren der Verfahren der vorliegenden Offenbarung darstellt.
    • ist ein Diagramm, das ein allgemeines Ressourcenzuteilungsmodul, welches in dem Beispiel von gezeigt ist, detaillierter darstellt.
    • ist ein Blockschaltbild, das einen ECC-Decodierer aus detaillierter darstellt.
    • und sind Flussdiagramme, die beispielhaft den Betrieb einer Speichervorrichtung bei Durchführung der in dieser Offenbarung beschriebenen Verfahren zur Ressourcenzuteilung und -freigabe darstellen.
    • ist ein Diagramm, das die Thermometer-Datenstruktur aus detaillierter darstellt.
  • AUSFÜHRLICHE BESCHREIBUNG
  • Gemäß einem oder mehreren Verfahren der vorliegenden Offenbarung kann eine Steuerung einer Vorrichtung (etwa einer SSD, bei der solche Steuerungen als Flash-Steuerung bezeichnet werden können) die dynamische Ressourcenzuteilung und -freigabe unter Verwendung einer thermometerartigen Datenstruktur ausführen, die Ressourcen in einer Weise zuteilt, die die Zuteilung und Freigabe in einer festgelegten Abfolge ermöglicht. Anstatt die Zuteilung und Freigabe auf Datenstrukturen zu stützen, die zu einer willkürlichen Verteilung der Ressourcenzuteilung und -freigabe führen, kann die thermometerartige Datenstruktur eine feste Reihenfolge der identifizierten Ressourcen beibehalten, indem die Ressourcenkennzeichner schrittweise erhöht werden. Der Zuteilungsmechanismus kann dann gemäß einer Regel arbeiten, nach der verfügbare Ressourcen mit dem niedrigsten Ressourcenkennzeichner zugeteilt werden, bevor Ressourcen mit einem relativ höheren Ressourcenkennzeichner zugeteilt werden. Im Ergebnis kann eine Thermometer-Datenstruktur im Rahmen einer statistischen Analyse der durch die Komponenten der Thermometer-Datenstruktur repräsentierten Ressourcen so genannte „Hotspots“ aufweisen, die eine häufige Nutzung bedeuten, und so genannte „Coldspots“, die eine eher seltene Nutzung bedeuten. Durch Identifizieren dieser Hot- und Coldspots kann die Steuerung dynamisch einen Schwellwert definieren. Das bedeutet, die Flash-Steuerung kann einen Schwellwert durch die statistische Analyse der Ressourcennutzung im Verlauf der Zeit identifizieren. Der Schwellwert kann eine Grenze definieren, die diejenigen Ressourcen, welche eingeschaltet bleiben müssen, gegen diejenigen Ressourcen abgrenzt, die ausgeschaltet werden können.
  • Die Flash-Steuerung kann diesen Schwellwert definieren und den Schwellwert im Laufe der Zeit dynamisch aktualisieren, um einer Reihe von unterschiedlichen Szenarien Rechnung zu tragen, die in einer SSD eintreten können. Beispielsweise kann die Flash-Steuerung den Schwellwert bei erhöhter Inanspruchnahme von Datenspeicherressourcen in Spitzennutzungszeiten heraufsetzen und dadurch die Leistung steigern, wenn die Nutzung einen größeren Anteil der Datenspeicherressourcen verlangt. Die Flash-Steuerung kann den Schwellwert bei verringerter relativer Nutzung der Datenspeicherressourcen zu anderen als den Spitzennutzungszeiten herabsetzen und dadurch die Betriebseffizienz steigern, indem ein größerer Teil der Ressourcen abgeschaltet wird. Als weiteres Beispiel kann die Flash-Steuerung im Laufe der Zeit feststellen, dass die Nutzung der ECC-Decodierer gestiegen ist, bedingt durch zunehmende Fehler des Flash-Datenspeichers, wenn der Flash-Datenspeicher abnutzt. Die Flash-Steuerung kann in Reaktion auf das Erkennen dieser vermehrten Nutzung der ECC-Decodierer dynamisch den Schwellwert erhöhen, um mehr ECC-Decodierer einzuschalten. Auf diese Weise können die Verfahren eine verbesserte Betriebseffizienz in der frühen Einsatzphase der SSD fördern und in einer späteren Einsatzphase der SSD die Betriebseffizienz verringern, indem der Schwellwert heraufgesetzt wird, um dieselbe Leistung zu gewährleisten.
  • ist ein konzeptionelles, schematisches Blockschaltbild, das eine beispielhafte Speicherumgebung 2, in der eine Speichervorrichtung 6 als Speichervorrichtung für eine Host-Vorrichtung 4 fungieren kann, gemäß einem oder mehreren der Verfahren der vorliegenden Offenbarung darstellt. Beispielsweise kann die Host-Vorrichtung 4 nichtflüchtige Datenspeichervorrichtungen in der Speichervorrichtung 6 nutzen, um Daten zu speichern und abzurufen. In einigen Beispielen kann die Speicherumgebung 2 eine Mehrzahl von Speichervorrichtungen, etwa Speichervorrichtung 6, umfassen, die als Speicher-Array fungieren. Beispielsweise kann die Speicherumgebung 2 eine Mehrzahl von Speichervorrichtungen 6 aufweisen, die als redundantes Array kostengünstiger/unabhängiger Platten (Redundant Array Of Inexpensive/Independent Disks, RAID) konfiguriert sind, die zusammen als Massenspeichervorrichtung für die Host-Vorrichtung 4 fungieren.
  • Die Speicherumgebung 2 kann eine Host-Vorrichtung 4 aufweisen, die Daten in einer oder mehreren Speichervorrichtungen, etwa der Speichervorrichtung 6, speichern und/oder von dort abrufen kann. Wie in dargestellt, kann die Host-Vorrichtung 4 mit der Speichervorrichtung 6 über die Schnittstelle 14 kommunizieren. Die Host-Vorrichtung 4 kann eine beliebige aus einer breiten Palette von Vorrichtungen umfassen, die Computer-Server, netzangebundene Speichereinheiten (NAS), Desktop-Computer, Notebook (z. B. Laptop) -Computer, Tablet-Computer, Set-Top-Boxen, drahtlose Telefone wie etwa so genannte „Smartphones“, so genannte „Smart-Pads“, Fernsehgeräte, Kameras, Anzeigevorrichtungen, Wiedergabegeräte für digitale Medien, Video-Spielkonsolen, Video-Streaming-Vorrichtungen und dergleichen einschließen.
  • Wie in dargestellt, kann die Speichervorrichtung 6 die Steuerung 8, das nichtflüchtige Datenspeicher-Array 10 (Non-Volatile Memory Array, NVMA 10), die Stromversorgung 11, den flüchtigen Datenspeicher 12 und die Schnittstelle 14 aufweisen. In einigen Beispielen kann die Speichervorrichtung 6 weitere Komponenten aufweisen, die der Übersichtlichkeit halber in nicht dargestellt sind. Beispielsweise kann die Speichervorrichtung 6 eine Leiterplatte (Printed Board, PB) aufweisen, auf der Komponenten der Speichervorrichtung 6 mechanisch angebracht sind und die elektrisch leitende Bahnen aufweist, welche die Komponenten der Speichervorrichtung 6 elektrisch miteinander verbinden; und dergleichen. In einigen Beispielen können die physischen Abmessungen und die Steckverbinderanordnungen der Speichervorrichtung 6 einem oder mehreren Standardformfaktor(en) entsprechen. Einige beispielhafte Standardformfaktoren beinhalten, sind jedoch nicht beschränkt auf 3,5"-Festplattenlaufwerke (Hard Disk Drive, HDD), 2,5"-HDD, 1,8"-HDD, Peripheriegeräteverbindungsbus (Peripheral Component Interconnect, PCI), erweiterter PCI (PCI-extended, PCI-X), PCI Express (PCIe) (z. B. PCIe x1, x4, x8, x16, PCIe Mini Card, MiniPCI etc.). In einigen Beispielen kann die Speichervorrichtung 6 direkt an eine Hauptplatine der Host-Vorrichtung 4 gekoppelt (z. B. direkt gelötet) sein.
  • Die Speichervorrichtung 6 kann die Schnittstelle 14 aufweisen für die Kommunikation mit der Host-Vorrichtung 4. Die Schnittstelle 14 kann einen Datenbus zum Austauschen von Daten mit der Host-Vorrichtung 4 und/oder einen Steuerbus zum Austauschen von Befehlen mit der Host-Vorrichtung 4 aufweisen. Die Schnittstelle 14 kann gemäß einem geeigneten Protokoll arbeiten. Beispielsweise kann die Schnittstelle 14 gemäß einem oder mehreren der folgenden Protokolle arbeiten: Advanced Technology Attachment (ATA) (z. B. Serial-ATA (SATA) und Parallel-ATA (PATA)), Fibre Channel, Small Computer System Interface (SCSI), Serially Attached SCSI (SAS), Peripheral Component Interconnect (PCI) und PCI-Express. Der elektrische Anschluss der Schnittstelle 14 (z. B. Datenbus, Steuerbus oder beide) ist elektrisch mit der Steuerung 8 verbunden und stellt die elektrische Verbindung zwischen der Host-Vorrichtung 4 und der Steuerung 8 bereit, so dass Daten zwischen Host-Vorrichtung 4 und Steuerung 8 ausgetauscht werden können. In einigen Beispielen kann die elektrische Verbindung der Schnittstelle 14 auch ermöglichen, dass die Speichervorrichtung 6 Strom von der Host-Vorrichtung 4 bezieht. Wie in dargestellt, kann die Stromversorgung 11 Strom von der Host-Vorrichtung 4 über die Schnittstelle 14 beziehen.
  • Die Speichervorrichtung 6 kann das NVMA 10 aufweisen, das eine Mehrzahl von Datenspeichervorrichtungen 16Aa-16Nn (zusammenfassend „Datenspeichervorrichtungen 16“) einschließen kann, die jeweils für das Speichern und/oder Abrufen von Daten ausgelegt sein können. Beispielsweise kann eine Datenspeichervorrichtung der Datenspeichervorrichtungen 16 Daten sowie eine Nachricht von der Steuerung 8 empfangen, die die Datenspeichervorrichtung anweist, die Daten zu speichern. In ähnlicher Weise kann die Datenspeichervorrichtung der Datenspeichervorrichtung 16 eine Nachricht von der Steuerung 8 empfangen, die die Datenspeichervorrichtung anweist, die Daten abzurufen. In einigen Beispielen kann jede der Speichervorrichtungen 6 als Halbleiterplättchen bezeichnet werden. In einigen Beispielen kann ein einziger physischer Chip eine Mehrzahl von Halbleiterplättchen (z. B. eine Mehrzahl von Datenspeichervorrichtungen 16) aufweisen. In einigen Beispielen kann jede der Datenspeichervorrichtungen 16 ausgelegt sein, relativ große Datenmengen zu speichern (z. B. 128 MB, 256 MB, 512 MB, 1 GB, 2 GB, 4 GB, 8 GB, 16 GB, 32 GB, 64 GB, 128 GB, 256 GB, 512 GB, 1 TB etc.).
  • In einigen Beispielen können die Datenspeichervorrichtungen 16 jede beliebige Art von nichtflüchtigen Datenspeichervorrichtungen aufweisen. Einige Beispiele von Speichervorrichtungen 16 beinhalten, sind jedoch nicht beschränkt auf Flash-Datenspeichervorrichtungen, Phasenwechselspeicher (Phase-Change Memory, PCM) -Vorrichtungen, resistive Direktzugriffsspeicher (Resistive Random-Access Memory, ReRAM) -Vorrichtungen, magnetoresistive Direktzugriffsspeicher (Magnetoresistive Random-Access Memory, MRAM) -Vorrichtungen, ferroelektrische Direktzugriffspeicher (Ferroelectric Random-Access Memory, F-RAM), holografische Datenspeichervorrichtungen und jede beliebige andere Art nichtflüchtiger Datenspeichervorrichtung.
  • Flash-Datenspeichervorrichtungen können NAND- oder NOR-basierte Flash-Datenspeichervorrichtungen sein und können Daten basierend auf einer Ladung speichern, die in einem freien Gate eines Transistors jeder Flash-Datenspeicherzelle enthalten ist. In NAND-Flash-Datenspeichervorrichtungen kann die Flash-Datenspeichervorrichtung in eine Mehrzahl von Blöcken unterteilt sein, die wiederum in eine Mehrzahl von Seiten untergliedert sein können. Jeder Block der Mehrzahl von Blöcken in einer bestimmten Datenspeichervorrichtung kann eine Mehrzahl von NAND-Zellen aufweisen. Reihen von NAND-Zellen können elektrisch verbunden werden, mithilfe einer Wortleitung, um eine Seite der Mehrzahl von Seiten zu definieren. Jeweilige Zellen jeder der Mehrzahl von Seiten können elektrisch zu jeweiligen Bitleitungen verbunden sein. Die Steuerung 8 kann Daten auf Seitenebene in NAND-Flash-Datenspeichervorrichtungen schreiben und daraus auslesen sowie Daten auf Blockebene aus NAND-Flash-Datenspeichervorrichtungen löschen.
  • In einigen Beispielen kann es nicht praktisch sein, dass die Steuerung 8 separat mit jeder einzelnen Datenspeichervorrichtung der Datenspeichervorrichtungen 16 verbunden ist. Daher können die Verbindungen zwischen Datenspeichervorrichtungen 16 und Steuerung 8 gemultiplext sein. Als Beispiel können die Datenspeichervorrichtungen 16 zu Kanälen 18A-18N (zusammenfassend „Kanäle 18“) gruppiert sein. Beispielsweise können, wie in dargestellt, Datenspeichervorrichtungen 16Aa-16Nn zu einem ersten Kanal 18A gruppiert sein, und Datenspeichervorrichtungen 16Na-16Nn können zu einem N-ten Kanal 18N gruppiert sein. Die zu jedem der Kanäle 18 gruppierten Datenspeichervorrichtungen 16 können sich eine oder mehrere Verbindungen zur Steuerung 8 teilen. Beispielsweise können die zum ersten Kanal 18A gruppierten Datenspeichervorrichtungen 16 an einen gemeinsamen E/A-Bus und einen gemeinsamen Steuerbus angeschlossen sein. Speichervorrichtung 6 kann jeweils einen gemeinsamen E/A-Bus und einen gemeinsamen Steuerbus für jeden Kanal der Kanäle 18 aufweisen. In einigen Beispielen kann jeder Kanal der Kanäle 18 einen Satz Chipfreigabe (Chip Enable, CE) -Leitungen aufweisen, die verwendet werden können, um Datenspeichervorrichtungen auf jedem Kanal zu multiplexen. Beispielsweise kann jede CE-Leitung mit einer jeweiligen Datenspeichervorrichtung der Datenspeichervorrichtungen 18 verbunden werden. Auf diese Weise kann die Zahl der separaten Verbindungen zwischen Steuerung 8 und Datenspeichervorrichtungen 18 verringert werden. Darüber hinaus kann, da jeder Kanal über einen unabhängigen Satz von Verbindungen zur Steuerung 8 verfügt, die Reduzierung der Verbindungen den Datendurchsatz nicht wesentlich beeinträchtigen, da die Steuerung 8 gleichzeitig verschiedene Befehle auf jedem Kanal ausführen kann.
  • In einigen Beispielen kann die Speichervorrichtung 6 eine Anzahl von Datenspeichervorrichtungen 16 aufweisen, die ausgewählt sind, um eine Gesamtkapazität bereitzustellen, die größer als die Kapazität ist, auf die die Host-Vorrichtung 4 zugreifen kann. Dies wird als „Over-Provisioning“ (Überdimensionierung) bezeichnet. Falls beispielsweise die Speichervorrichtung 6 mit 240 GB für den Benutzer zugänglicher Speicherkapazität gemeldet wird, kann die Speichervorrichtung 6 ausreichend Datenspeichervorrichtungen 16 aufweisen, um eine Gesamtspeicherkapazität von 256 GB bereitzustellen. Die 16 GB der Speichervorrichtungen 16 können für die Host-Vorrichtung 4 oder einen Benutzer der Host-Vorrichtung 4 nicht zugänglich sein. Stattdessen können die zusätzlichen Speichervorrichtungen 16 weitere Blöcke bereitstellen, um Schreibvorgänge, Garbage Collection (automatische Speicherbereinigung), Wear Leveling (Abnutzungsausgleich) und dergleichen zu ermöglichen. Ferner können die zusätzlichen Speichervorrichtungen 16 weitere Blöcke bereitstellen, die genutzt werden können, wenn einige Blöcke abnutzen, so dass sie unbrauchbar werden und außer Betrieb genommen werden. Das Vorhandensein der zusätzlichen Blöcke kann es erlauben, die abgenutzten Blöcke außer Betrieb zu nehmen, ohne eine Veränderung der Speicherkapazität zu bewirken, die der Host-Vorrichtung 4 zur Verfügung steht. In einigen Beispielen kann der Betrag der Überdimensionierung als p=(T-D)/D definiert werden, wobei p das Überdimensionierungsverhältnis ist, T die Gesamtspeicherkapazität der Speichervorrichtung 2 ist und D die Gesamtkapazität der Speichervorrichtung 2 ist, die für die Host-Vorrichtung 4 zugänglich ist.
  • Die Speichervorrichtung 6 kann eine Stromversorgung 11 aufweisen, die Strom für eine oder mehrere Komponente(n) der Speichervorrichtung 6 liefert. Beim Betrieb in einem Standardmodus kann die Stromversorgung 11 Strom an die eine oder die mehreren Komponente(n) liefern und dazu Strom verwenden, der von einer externen Vorrichtung bereitgestellt wird, etwa Host-Vorrichtung 4. Beispielsweise kann die Stromversorgung 11 Strom an die eine oder die mehreren Komponente(n) liefern und dazu Strom verwenden, den sie von der Host-Vorrichtung 4 empfangen hat, über die Schnittstelle 14. In einigen Beispielen kann die Stromversorgung 11 eine oder mehrere Stromspeicherkomponente(n) aufweisen, die ausgelegt sind, Strom an die eine oder die mehreren Komponente(n) zu liefern, wenn in einem abgeschalteten Modus gearbeitet wird, etwa wenn kein Strom mehr von der externen Vorrichtung empfangen wird. Auf diese Weise kann die Stromversorgung 11 als bordeigene Backup-Stromquelle dienen. Einige Beispiele der einen oder mehreren Stromspeichervorrichtung(en) beinhalten, sind jedoch nicht beschränkt auf Kondensatoren, Superkondensatoren, Batterien und dergleichen. In einigen Beispielen kann die Strommenge, die von der einen oder den mehreren Stromspeicherkomponente(n) gespeichert werden kann, eine Funktion aus Kosten und/oder Größe (z. B. Fläche/Volumen) der einen oder der mehreren Speicherkomponente(n) sein. Anders ausgedrückt: Wenn die Strommenge, die von der einen oder den mehreren Stromspeichervorrichtung(en) gespeichert wird, zunimmt, steigen auch die Kosten und/oder nimmt die Größe der einen oder der mehreren Komponente(n) zu.
  • Die Steuerung 8 kann eine Form der dynamischen Ressourcenzuteilung und -freigabe ausführen, um einen oder mehrere Lesevorgang/-vorgänge und Schreibvorgang/ -vorgänge zu unterstützen. Die Steuerung 8 kann, wie unter Bezugnahme auf ausführlicher beschrieben, Ressourcen zuteilen und freigeben, um einen Zugriff auf Datenpuffer, eine Fehlerprüfung und -korrektur (Error Checking And Correction, ECC) -Codierung beim Speichern von Daten in einen nichtflüchtigen Datenspeicher (z. B. Flash-Datenspeicher), einen Flash-Kanalzugriff beim Abrufen von Daten aus dem nichtflüchtigen Datenspeicher und ECC-Decodierung beim Abrufen von Daten aus dem nichtflüchtigen Datenspeicher zu unterstützen. In Fällen, in denen die Anzahl der Ressourcen geringer ist als die Anzahl der anfordernden Einheiten (die als „Anforderer“ bezeichnet werden können), kann die Steuerung 8 ein oder mehrere Arbitrationsschema(ta) implementieren, um zu versuchen, einen vernünftig ausbalancierten Zugriff auf die Ressourcen derart zu ermöglichen, dass überlange Verzögerungen vermieden werden.
  • In einigen Fällen wird die Anzahl der Ressourcen künstlich begrenzt, um einen effizienteren Betrieb der Speichervorrichtung zu erzielen (z. B. hinsichtlich des Stromverbrauchs). Das bedeutet, dass die Steuerung 8 einen Teil der verfügbaren Ressourcen abschalten kann, um den Stromverbrauch und die entsprechenden Kosten im Zusammenhang mit dem Betrieb der Speichervorrichtung zu reduzieren. Indem die Anzahl der Ressourcen in bestimmten Zusammenhängen künstlich begrenzt wird, kann die Steuerung 8 versuchen, ein ausgewogenes Verhältnis zwischen Leistung und Betriebseffizienz zu realisieren. Beispielsweise kann die Steuerung 8 solche Ressourcen, die ursprünglich abgeschaltet waren, dynamisch einschalten, um die Leistung zu verbessern, wenn Ressourcen stark nachgefragt werden, und dieselben Ressourcen dynamisch abschalten, um die Betriebseffizienz zu steigern, wenn die Nachfrage nach Ressourcen gering ist.
  • Dynamische Ressourcenzuteilung und -freigabe kann es daher ermöglichen, dass verschiedene Ressourcen eingeschaltet werden, wenn sie benötigt werden, und abgeschaltet werden, wenn sie nicht gebraucht werden. Algorithmen, die für die Umsetzung dieser energiesparenden Ressourcenzuteilung/-freigabe entwickelt wurden, können jedoch aufgrund von Einschränkungen bei den Zuteilungs-/Freigabedatenstrukturen Nachteile haben. Als Beispiel kann ein Zuteilungsalgorithmus eine FIFO (First-In-First-Out) -Datenstruktur verwenden, etwa eine Warteschlange. In diesem Zuteilungsschema ist den Ressourcen jeweils ein Ressourcenkennzeichner zugewiesen. Der Arbiter in diesem Zuteilungsschema kann jeden der Ressourcenkennzeichner in die Warteschlage verschieben, wobei beispielsweise der niedrigste Ressourcenkennzeichner der erste zuzuteilende Kennzeichner (oder, bei einer Warteschlange, der erste, der die Warteschlange verlässt) ist. Der Arbiter kann die mit dem Ressourcenkennzeichner aus der Warteschlange verknüpfte Ressource zuteilen. Das Herausnehmen des Ressourcenkennzeichners aus der Warteschlange verhindert effektiv, dass die betreffende Ressource zwei oder mehr Anforderern zugeteilt wird.
  • Allerdings können die Ressourcennutzungszeiten pro Anforderer variieren, was bedeutet, dass der Arbiter den Ressourcenkennzeichner willkürlich wieder in die Warteschlange einreiht. Als Ergebnis dieser nicht festgelegten Ressourcenzuteilungszeit sind die Ressourcenkennzeichner nach kurzer Zeit willkürlich in der Warteschlange verteilt. Diese willkürliche Verteilung der Ressourcenkennzeichner kann die Fähigkeit verringern, die Anzahl Ressourcen zu identifizieren, die pro gegebenem Zeitrahmen benötigt werden, und somit das dynamische Ein- und Ausschalten der Ressourcen zum Ausbalancieren von Betriebseffizienz und Leistung behindern. Zuteilungsschemata, die bei der Ressourcenzuteilung/-freigabe auf LIFO (Last-In-First-Out) -Datenstrukturen zurückgreifen, können in ähnlicher Weise zur willkürlichen Verteilung von Ressourcenkennzeichnern führen. Um diese Beschränkungen von Zuteilungsschemata zu überwinden, können Steuerungen komplizierte Hardware oder Universalprozessoren (etwa eine zentrale Verarbeitungseinheit (Central Processing Unit, CPU)) verwenden, um eine dynamische Ressourcenzuteilung/-freigabe zu ermöglichen, die in geeigneter Weise die Betriebseffizienz ausbalancieren kann und gleichzeitig auch adäquate Leistung bereitstellt. Diese dedizierte Hardware oder umgenutzten CPUs können jedoch einen erheblichen Stromverbrauch aufweisen, der einen großen Teil der, wenn nicht sämtliche Energieersparnisse zunichtemacht, die durch die dynamischen Ressourcenzuteilungs-/ -freigabealgorithmen erzielt werden.
  • Gemäß einem oder mehreren Verfahren der vorliegenden Offenbarung kann die Steuerung 8 der Speichervorrichtung 6 eine dynamische Ressourcenzuteilung und -freigabe unter Verwendung einer thermometerartigen Datenstruktur ausführen, die Ressourcen in einer Weise zuteilt, die die Zuteilung und Freigabe in einer festgelegten Abfolge ermöglicht. Anstatt die Zuteilung und Freigabe auf Datenstrukturen zu stützen, die zu einer willkürlichen Verteilung der Ressourcenzuteilung und -freigabe führen, kann die thermometerartige Datenstruktur eine feste Reihenfolge der identifizierten Ressourcen beibehalten, indem die Ressourcenkennzeichner schrittweise, und potenziell monoton, erhöht werden. Der Zuteilungsmechanismus kann dann gemäß einer Regel arbeiten, nach der verfügbare Ressourcen mit dem niedrigsten Ressourcenkennzeichner zugeteilt werden, bevor Ressourcen mit einem relativ höheren Ressourcenkennzeichner zugeteilt werden. Im Ergebnis kann eine Thermometer-Datenstruktur im Rahmen einer statistischen Analyse der durch die Komponenten der Thermometer-Datenstruktur repräsentierten Ressourcen so genannte „Hotspots“ aufweisen, die eine häufige Nutzung bedeuten, und so genannte „Coldspots“, die eine eher seltene Nutzung bedeuten. Durch Identifizieren dieser Hot- und Coldspots kann die Steuerung 8 dynamisch einen Schwellwert definieren. Das bedeutet, die Flash-Steuerung kann einen Schwellwert durch die statistische Analyse der Ressourcennutzung im Verlauf der Zeit identifizieren. Der Schwellwert kann eine Grenze definieren, die diejenigen Ressourcen, welche eingeschaltet bleiben müssen, gegen diejenigen Ressourcen abgrenzt, die ausgeschaltet werden können.
  • Die Steuerung 8 kann diesen Schwellwert definieren und den Schwellwert im Laufe der Zeit dynamisch aktualisieren, um einer Reihe von Vorkommnissen Rechnung zu tragen. Beispielsweise kann die Steuerung 8 den Schwellwert bei erhöhter Inanspruchnahme von Datenspeicherressourcen in Spitzennutzungszeiten heraufsetzen und dadurch die Leistung steigern, wenn die Nutzung einen größeren Anteil der Datenspeicherressourcen verlangt. Die Steuerung 8 kann den Schwellwert bei verringerter relativer Nutzung der Datenspeicherressourcen zu anderen als den Spitzennutzungszeiten herabsetzen und dadurch potenziell die elektrische Betriebseffizienz steigern, indem ein größerer Teil der Ressourcen abgeschaltet wird. Als weiteres Beispiel kann die Steuerung 8 im Laufe der Zeit Vorkommnisse identifizieren, bei denen die Nutzung der ECC-Decodierer gestiegen ist, bedingt durch zunehmende Fehler des nichtflüchtigen Datenspeichers 10, wenn der nichtflüchtige Datenspeicher 10 abnutzt. Die Steuerung 8 kann in Reaktion auf das Erkennen dieser vermehrten Nutzung der ECC-Decodierer dynamisch den Schwellwert erhöhen, um mehr ECC-Decodierer einzuschalten. Auf diese Weise können die Verfahren eine verbesserte Betriebseffizienz in der frühen Einsatzphase der SSD fördern und in einer späteren Einsatzphase der SSD die Betriebseffizienz verringern, indem der Schwellwert heraufgesetzt wird, um dieselbe Leistung zu gewährleisten.
  • In dieser Hinsicht kann die Steuerung 8 die Nutzung einer ersten nicht null betragenden Teilmenge (oder anders ausgedrückt eines Teils) einer Mehrzahl von Ressourcen bestimmen, wobei die Mehrzahl von Ressourcen entsprechend einer thermometerartigen Thermometer-Datenstruktur zugeteilt bzw. freigegeben wird, die auch als Thermometer-Datenstruktur bezeichnet werden kann. Die Steuerung 8 kann die Nutzung der ersten nicht null betragenden Teilmenge der Mehrzahl von Ressourcen mit einem Schwellwert vergleichen, der die erste nicht null betragende Teilmenge der Mehrzahl von Ressourcen gegen eine zweite nicht null betragende Teilmenge der Ressourcen abgrenzt.
  • Die Steuerung 8 kann in einigen Beispielen die Nutzungswerte in eine Anzahl Ressourcen übersetzen, bevor dieser Vergleich durchgeführt wird. Beispielsweise kann die Nutzung als eine Anzahl von Anforderungen innerhalb eines Zeitrahmens definiert sein. Die Steuerung 8 kann dann eine Anzahl von Anforderungen pro Zeitrahmen, die jede der Ressourcen abwickeln kann, bestimmen oder auf andere Weise erhalten. Die Steuerung 8 kann dann die Anzahl der Anforderungen pro Zeitrahmen durch die Anzahl der Anforderungen in dem betreffenden Zeitrahmen teilen, die die Ressource abwickeln kann, um so die erwartete Anzahl von benötigten Ressourcen zu bestimmen.
  • Die Steuerung 8 kann dann die erwartete Anzahl von benötigten Ressourcen (die effektiv die Nutzung widerspiegelt) mit dem Schwellwert vergleichen. Die Steuerung 8 kann die zweite nicht null betragende Teilmenge der Ressourcen basierend wenigstens auf dem Vergleich der erwarteten Anzahl von benötigten Ressourcen mit diesem Schwellwert einschalten. In ähnlicher Weise kann die Steuerung 8 fortfahren, die Nutzung im Laufe der Zeit zu bestimmen oder anderweitig zu erhalten, und kann diesen Nutzungswert mit dem Schwellwert vergleichen, nachdem die zweite nicht null betragende Teilmenge der Ressourcen eingeschaltet oder, anders ausgedrückt, aktiviert worden ist. Ist die Nutzung geringer als aufgrund des Schwellwerts zulässig, kann die Steuerung 8 die zweite nicht null betragende Teilmenge der Ressourcen abschalten.
  • ein konzeptionelles, schematisches Blockschaltbild, das beispielhafte Einzelheiten der Steuerung 8 veranschaulicht. In einigen Beispielen kann die Steuerung 8 ein Adressübersetzungsmodul 22, ein Schreibmodul 24, ein Wartungsmodul 26, ein Lesemodul 28, ein Planungsmodul 30 und eine Mehrzahl von Kanalsteuerungen 32A-32N (zusammenfassend „Kanalsteuerungen 32“) aufweisen. In anderen Beispielen kann die Steuerung 8 zusätzliche Module oder Hardwareeinheiten aufweisen oder kann weniger Module oder Hardwareeinheiten aufweisen. Die Steuerung 8 kann einen Mikroprozessor, einen Digitalsignalprozessor (Digital Signal Processor, DSP), eine anwendungsspezifische integrierte Schaltung (Application Specific Integrated Circuit, ASIC), eine feldprogrammierbare Gatteranordnung (Field Programmable Gate Array, FPGA) oder andere digitale Logikschaltungen aufweisen. In einigen Beispielen kann die Steuerung 8 ein Ein-Chip-System (System on a Chip, SoC) sein.
  • Die Steuerung 8 kann mit der Host-Vorrichtung 4 über die Schnittstelle 14 zusammenwirken und die Speicherung von Daten auf sowie den Abruf von Daten von Datenspeichervorrichtungen 16 verwalten. Beispielsweise kann das Schreibmodul 24 von Steuerung 8 Schreibvorgänge auf Datenspeichervorrichtungen 16 verwalten. Beispielsweise kann das Schreibmodul 24 eine Nachricht von der Host-Vorrichtung 4 über die Schnittstelle 14 empfangen, die die Speichervorrichtung 6 anweist, Daten im Zusammenhang mit einer logischen Adresse und den Daten zu speichern. Das Schreibmodul 24 kann das Schreiben von Daten in Datenspeichervorrichtungen 16 verwalten.
  • Beispielsweise kann das Schreibmodul 24 mit dem Adressübersetzungsmodul 22 kommunizieren, das die Übersetzung zwischen logischen Adressen, die von der Host-Vorrichtung 4 zum Verwalten der Speicherplätze für Daten verwendet werden, und den physischen Blockadressen, die vom Schreibmodul 24 zum direkten Schreiben von Daten in Datenspeichervorrichtungen verwendet werden, verwaltet. Das Adressübersetzungsmodul 22 der Steuerung 8 kann eine Flash Translation Layer oder Table (Flash-Übersetzungsschicht bzw. -tabelle) nutzen, die logische Adressen (oder logische Blockadressen) der von den Datenspeichervorrichtungen 16 gespeicherten Daten in physische Blockadressen der von den Datenspeichervorrichtungen 16 gespeicherten Daten übersetzt. Beispielsweise kann die Host-Vorrichtung 4 die logischen Blockadressen der von den Datenspeichervorrichtungen 16 gespeicherten Daten in Anweisungen oder Nachrichten an die Speichervorrichtung 6 verwenden, während das Schreibmodul 24 physische Blockadressen der Daten verwendet, um das Schreiben der Daten in Datenspeichervorrichtungen 16 zu steuern. (In ähnlicher Weise kann das Lesemodul 28 physische Blockadressen verwenden, um das Auslesen von Daten aus Datenspeichervorrichtungen 16 zu steuern.) Die physischen Blockadressen entsprechen tatsächlichen, physischen Blöcken von Datenspeichervorrichtungen 16. In einigen Beispielen kann das Adressübersetzungsmodul 22 die Flash Translation Layer oder Table im flüchtigen Datenspeicher 12 speichern, wie etwa in zwischengespeicherten Informationen 13.
  • Auf diese Weise kann der Host-Vorrichtung 4 gestattet werden, eine statische logische Blockadresse für einen bestimmten Satz von Daten zu verwenden, während sich die physische Blockadresse, an der die Daten tatsächlich gespeichert werden, ändern kann. Das Adressübersetzungsmodul 22 kann die Flash Translation Layer oder Table pflegen, um die logischen Blockadressen den physischen Blockadressen zuzuordnen, um die Verwendung von statischen logischen Blockadressen durch die Host-Vorrichtung 4 zu ermöglichen, während sich die physische Blockadresse der Daten ändern kann, z. B. aufgrund von Wear Leveling, Garbage Collection und dergleichen.
  • Wie vorstehend erörtert, kann das Schreibmodul 24 der Steuerung 8 eine oder mehrere Operation(en) ausführen, um das Schreiben von Daten in Datenspeichervorrichtungen 16 zu verwalten. Beispielsweise kann das Schreibmodul 24 das Schreiben von Daten in Datenspeichervorrichtungen 16 verwalten, indem ein Block oder mehrere Blöcke in den Datenspeichervorrichtungen 16 zum Speichern der Daten ausgewählt wird/werden und diejenigen Datenspeichervorrichtungen der Datenspeichervorrichtungen 16, die die ausgewählten Blöcke enthalten, veranlasst werden, die Daten tatsächlich zu speichern. Wie vorstehend erörtert, kann das Schreibmodul 24 das Adressumsetzungsmodul 22 veranlassen, die Flash Translation Layer oder Table basierend auf den ausgewählten Blöcken zu aktualisieren. Beispielsweise kann das Schreibmodul 24 eine Nachricht von der Host-Vorrichtung 4 erhalten, die eine Dateneinheit und eine logische Blockadresse enthält, einen Block innerhalb einer bestimmten Datenspeichervorrichtung der Datenspeichervorrichtungen 16 zum Speichern der Daten auswählen, die betreffende Datenspeichervorrichtung der Datenspeichervorrichtungen 16 veranlassen, die Daten tatsächlich zu speichern (z. B. über eine Kanalsteuerung der Kanalsteuerungen 32, die der betreffenden Datenspeichervorrichtung entspricht), und das Adressübersetzungsmodul 22 veranlassen, die Flash Translation Layer oder Table zu aktualisieren, um anzuzeigen, dass die logische Blockadresse dem ausgewählten Block innerhalb der betreffenden Datenspeichervorrichtung entspricht.
  • In einigen Beispielen kann, nach Empfangen der Dateneinheit von der Host-Vorrichtung 4, das Schreibmodul 24 den flüchtigen Datenspeicher 12 nutzen, um die Dateneinheit vorübergehend zu speichern, bevor eine oder mehrere der Datenspeichervorrichtungen 16 veranlasst wird/werden, die Daten tatsächlich zu speichern. In einigen Beispielen kann das Schreibmodul 24 ausgelegt sein, an die Host-Vorrichtung 4 eine Nachricht zu senden, ob die Daten erfolgreich gespeichert wurden. Allerdings kann in einigen Beispielen das Schreibmodul 24 die Nachricht, die die erfolgreiche Speicherung der Daten bestätigt, an die Host-Vorrichtung 4 senden, bevor die Daten tatsächlich gespeichert werden. Beispielsweise kann das Schreibmodul 24 die Nachricht, die die erfolgreiche Speicherung der Daten bestätigt, an die Host-Vorrichtung 4 senden, wenn die Daten im flüchtigen Datenspeicher 12 abgelegt wurden.
  • In einigen Beispielen kann, zusätzlich zum Bewirken des Speicherns der Daten durch Datenspeichervorrichtungen 16, das Schreibmodul 24 Datenspeichervorrichtungen 16 veranlassen, Informationen zu speichern, die zum Wiederherstellen der Dateneinheit herangezogen werden können, falls einer oder mehrere der Blöcke ausfällt/ausfallen oder beschädigt wird/werden. Die Paritätsinformation kann verwendet werden, um die von anderen Blöcken gespeicherten Daten wiederherzustellen. In einigen Beispielen kann die Paritätsinformation ein XOR der von den anderen Blöcken gespeicherten Daten sein.
  • Um ein Bit mit einem logischen Wert 0 (geladen) auf ein Bit zu schreiben, dessen vorheriger Logikwert 1 (ungeladen) war, wird ein großer Strom verwendet. Dieser Strom kann groß genug sein, um unbeabsichtigte Änderungen an der Ladung benachbarter Flash-Datenspeicherzellen zu verursachen. Zum Schutz gegen derartige unbeabsichtigte Änderungen kann ein vollständiger Block von Flash-Datenspeicherzellen auf einen Logikwert 1 (ungeladen) gelöscht werden, bevor Daten in Zellen innerhalb des Blocks geschrieben werden. Aus diesem Grund können Flash-Datenspeicherzellen auf Blockebene gelöscht und auf Seitenebene beschrieben werden.
  • Somit könnte, selbst um eine Datenmenge zu schreiben, die weniger als eine Seite belegen würde, die Steuerung 8 veranlassen, dass ein vollständiger Block gelöscht wird. Dies kann zu einer Schreibverstärkung führen, was sich auf das Verhältnis zwischen der Datenmenge, die von der Host-Vorrichtung 4 empfangen wurde und in Datenspeichervorrichtungen 16 geschrieben werden soll, und der Datenmenge, die tatsächlich in die Datenspeichervorrichtungen 16 geschrieben wird. Schreibverstärkung trägt zu einer schnelleren Abnutzung der Flash-Datenspeicherzellen bei, als dies ohne Schreibverstärkung der Fall wäre. Zu einer Abnutzung von Flash-Datenspeicherzellen kann es beim Löschen von Flash-Datenspeicherzellen kommen, bedingt durch die relativ hohen Spannungen, die zum Löschen von Flash-Datenspeicherzellen eingesetzt werden. Über eine Mehrzahl von Löschzyklen können die relativ hohen Spannungen zu Veränderungen in den Flash-Datenspeicherzellen führen. Schließlich können die Flash-Datenspeicherzellen aufgrund dieser Abnutzung unbrauchbar werden, wobei die Flash-Datenspeicherzellen unfähig sein können, Daten mit ausreichender Genauigkeit so zu speichern, dass die Daten wieder abrufbar sind.
  • Ein Verfahren, das die Steuerung 8 implementieren kann, um die Schreibverstärkung und die Abnutzung von Flash-Datenspeicherzellen zu verringern, beinhaltet das Schreiben der von der Host-Vorrichtung 4 empfangenen Daten in nicht genutzte Blöcke oder teilweise genutzte Blöcke. Beispielsweise kann, falls die Host-Vorrichtung 4 Daten an die Speichervorrichtung 6 sendet, die nur eine geringfügige Änderung von bereits durch die Speichervorrichtung 6 gespeicherten Daten beinhalten, dann kann die Steuerung die alten Daten als abgelaufen oder nicht mehr gültig markieren. Mit der Zeit kann dies eine Anzahl von Löschvorgängen, der Blöcke ausgesetzt werden, verglichen mit dem Löschen des Blocks, der die alten Daten enthält, und dem Schreiben der aktualisierten Daten in denselben Block reduzieren.
  • In Reaktion auf das Empfangen eines Schreibbefehls von der Host-Vorrichtung 4 kann das Schreibmodul 24 bestimmen, an welchen physischen Orten (z. B. Blöcken) der Datenspeichervorrichtungen 16 die Daten geschrieben werden sollen. Beispielsweise kann das Schreibmodul 24 vom Adressübersetzungsmodul 22 oder vom Wartungsmodul 26 eine oder mehrere physische Blockadresse(n) anfordern, die leer (z. B. keine Speicherdaten enthaltend) oder teilweise leer (z. B. nur einige Seiten des Blocks mit Speicherdaten enthaltend) sind oder wenigstens einige ungültige (oder abgelaufene) Daten enthalten. Nach Empfang der einen oder mehreren physischen Blockadresse(n) kann das Schreibmodul 24 einen Block oder mehrere Blöcke auswählen wie vorstehend erörtert und eine Nachricht übermitteln, die die Kanalsteuerungen 32A-32N (zusammenfassend „Kanalsteuerungen 32“) veranlasst, die Daten in die ausgewählten Blöcke zu schreiben.
  • Das Lesemodul 28 kann in ähnlicher Weise das Auslesen von Daten aus Datenspeichervorrichtungen 16 steuern. Beispielsweise kann das Lesemodul 28 eine Nachricht von der Host-Vorrichtung 4 empfangen, die Daten mit einer zugehörigen logischen Blockadresse anfordert. Das Adressübersetzungsmodul 22 kann die logische Blockadresse mithilfe der Flash Translation Layer oder Table in eine physische Blockadresse umwandeln. Das Lesemodul 28 kann dann eine oder mehrere Kanalsteuerungen 32 derart steuern, dass sie die Daten von den physischen Blockadressen abrufen. Ähnlich dem Schreibmodul 24 kann das Lesemodul 28 einen Block oder mehrere Blöcke auswählen und eine Nachricht übermitteln, die die Kanalsteuerungen 32 veranlasst, die Daten aus den ausgewählten Blöcken auszulesen.
  • Jede Kanalsteuerung der Kanalsteuerungen 32 kann mit einem jeweiligen Kanal der Kanäle 18 verbunden sein. In einigen Beispielen kann die Steuerung 8 dieselbe Anzahl Kanalsteuerungen 32 aufweisen wie die Anzahl der Kanäle 18 der Speichervorrichtung 2. Kanalsteuerungen 32 können die exakte Steuerung der Adressierung, der Programmierung, des Löschens und des Lesens von Datenspeichervorrichtungen 16, die mit jeweiligen Kanälen verbunden sind, z. B. unter Kontrolle des Schreibmoduls 24, des Lesemoduls 28 und/oder des Wartungsmoduls 26 ausführen.
  • Das Wartungsmodul 26 kann ausgelegt sein, Operationen in Bezug auf die Erhaltung der Leistung und die Verlängerung der Lebensdauer der Datenspeichervorrichtung 6 (z. B. der Datenspeichervorrichtungen 16) auszuführen. Beispielsweise kann das Wartungsmodul 26 wenigstens eines von Wear Leveling und Garbage Collection ausführen.
  • Wie vorstehend beschrieben, können Flash-Datenspeicherzellen relativ hohe Spannungen verwenden, die über eine Mehrzahl von Löschvorgängen Veränderungen an den Flash-Datenspeicherzellen verursachen können. Nach einer gewissen Anzahl von Löschvorgängen können Flash-Datenspeicherzellen in einem Maß abbauen, dass keine Daten mehr in die Flash-Datenspeicherzellen geschrieben werden können, und ein Block, der diese Zellen enthält, kann außer Betrieb genommen (von der Steuerung 8 nicht mehr zum Speichern von Daten genutzt) werden. Um die Datenmenge zu erhöhen, die in Datenspeichervorrichtungen 16 geschrieben werden kann, bevor Blöcke abnutzen und außer Betrieb genommen werden, kann das Wartungsmodul 26 das Wear Leveling implementieren.
  • Beim Wear Leveling kann das Wartungsmodul 26 eine Anzahl von Lösch- oder Schreibvorgängen an einem Block oder einer Gruppe von Blöcken für jeden Block bzw. jede Gruppe von Blöcken verfolgen. Das Wartungsmodul 26 kann bewirken, dass ankommende Daten von der Host-Vorrichtung 4 in einen Block bzw. eine Gruppe von Blöcken geschrieben werden, der/die im Verhältnis weniger Schreib- oder Löschvorgänge durchlaufen hat, um zu versuchen, die Anzahl der Schreib- oder Löschvorgänge an jedem Block bzw. jeder Gruppe von Blöcken annähernd gleich zu halten. Dies kann dazu führen, dass alle Blöcke der Datenspeichervorrichtungen 16 in etwa mit gleicher Geschwindigkeit abnutzen, und kann die Lebensdauer der Speichervorrichtung 6 verlängern.
  • Auch wenn dies Schreibverstärkung und Abnutzung der Flash-Datenspeicherzellen verringern kann, indem eine Anzahl von Lösch- und Schreibvorgängen von Daten in verschiedenen Blöcken reduziert wird, kann dies auch dazu führen, dass manche Blöcke gültige (neue) Daten und manche ungültige (abgelaufene) Daten enthalten. Um diesen Zustand von neuen Daten/abgelaufenen Daten zu überwinden, kann das Wartungsmodul 26 die Garbage-Collection-Funktion implementieren. In einer Garbage-Collection-Operation kann das Wartungsmodul 26 den Inhalt der Blöcke der Datenspeichervorrichtungen 16 analysieren, um einen Block zu bestimmen, der einen hohen Prozentsatz ungültiger (abgelaufener) Daten enthält. Anschließend kann das Wartungsmodul 26 die gültigen Daten aus dem Block in einen anderen Block schreiben und dann den Block löschen. Dies kann die Menge an ungültigen (abgelaufenen) Daten, die von den Datenspeichervorrichtungen 16 gespeichert werden, verringern und eine Anzahl von freien Blöcken erhöhen, kann jedoch auch die Schreibverstärkung und die Abnutzung der Datenspeichervorrichtungen 16 verstärken.
  • Das Planungsmodul 30 von Steuerung 8 kann eine oder mehrere Operation(en) ausführen, um von den Datenspeichervorrichtungen 16 auszuführende Aktivitäten zu planen. Beispielsweise kann das Planungsmodul 30 Anforderungen planen, die von anderen Komponenten der Steuerung 8 empfangen wurden, um eine oder mehrere Datenspeichervorrichtung(en) 16 anzuweisen, in Laufzeit eine oder mehrere Aktivität(en) auszuführen. In einigen Beispielen kann das Planungsmodul 30 die Anforderungen so planen, dass sie in der Reihenfolge ausgeführt werden, in der sie empfangen wurden (z. B. First-In First-Out oder FIFO). In einigen Beispielen kann das Planungsmodul 30 die Anforderungen basierend auf einem oder mehreren Faktor(en) planen, einschließlich, jedoch nicht beschränkt auf die Art der Anforderung (z. B. Leseanforderung, Schreibanforderung, Löschanforderung, Garbage-Collection-Anforderung etc.), eine Menge Zeit, die seit Empfang der Anforderung verstrichen ist, eine Menge Strom, die für die Ausführung der Anforderung verbraucht würde, Bandbreitenüberlegungen und dergleichen.
  • In einigen Beispielen, etwa um ein Stromverbrauchbudget einzuhalten, kann das Planungsmodul 30 die Ausführung von Aktivitäten derart planen, dass die Leistung gedrosselt wird. Beispielsweise kann, wo das Stromverbrauchbudget den Datenspeichervorrichtungen 16 eine Menge an Strom zuteilt, die geringer ist als eine Menge an Strom, die verbraucht würde, wenn alle Datenspeichervorrichtungen 16 gleichzeitig aktiv wären, das Planungsmodul 30 die Ausführung von Aktivitäten derart planen, dass die von den Datenspeichervorrichtungen 16 verbrauchte Menge an Strom nicht die den Datenspeichervorrichtungen 16 zugeteilte Menge an Strom übersteigt.
  • Als ein Beispiel kann, wo die Speichervorrichtung 6 einen Soll-Stromverbrauch von 25 W hat, das Stromverbrauchbudget einen Teil des Soll-Stromverbrauchs (z. B. 16 W) den Datenspeichervorrichtungen 16 zuteilen. Falls die Strommenge, die verbraucht würde, wenn alle Datenspeichervorrichtungen 16 gleichzeitig aktiv wären, größer wäre als der zugeteilte Anteil am Soll-Stromverbrauch (z. B. 16 W), kann das Planungsmodul 30 eine Anzahl von Datenspeichervorrichtungen 16 bestimmen, die gleichzeitig aktiv sein können, ohne mehr als den zugeteilten Anteil Strom zu verbrauchen. Beispielsweise kann, wo Datenspeichervorrichtungen 16 X Einheiten eines Stromverbrauchsbudgets zugeteilt sind und jede Datenspeichervorrichtung der Datenspeichervorrichtungen 16, wenn sie aktiv ist, eine Einheit Strom verbraucht, das Planungsmodul 30 bestimmen, dass X Datenspeichervorrichtungen der Datenspeichervorrichtungen 16 gleichzeitig aktiv sein können.
  • In einigen Beispielen kann das Planungsmodul 30 ausgelegt sein, selektiv die Drosselung der Leistung zu aktivieren. Beispielsweise kann das Planungsmodul 30 die Drosselung aktivieren, wenn es in einem ersten Modus arbeitet, und die Drosselung deaktivieren, wenn es in einem zweiten Modus arbeitet. In einigen Beispielen, etwa wo die Drosselung die Anzahl der Datenspeichervorrichtungen 16 reduziert, die gleichzeitig aktiv sein können, kann die Geschwindigkeit, mit der das Planungsmodul 30 das Schreiben von Daten in Datenspeichervorrichtungen 16 bewirken kann, vergleichsweise niedriger sein, wenn die Drosselung aktiviert ist, als wenn die Drosselung deaktiviert ist.
  • Wie weiter in dem Beispiel von gezeigt, kann die Steuerung 8 eine Anzahl von Puffern 34 aufweisen. Puffer 34 können in einigen Beispielen als „Rohdatenpuffer 34“ bezeichnet sein. Rohdatenpuffer 34 können Puffer repräsentieren, die zum Speichern von Daten dienen, die an Kanalsteuerungen 32 weitergeleitet und/oder von diesen empfangen werden sollen. Rohdatenpuffer 34 können eine der Ressourcen darstellen, die vorstehend erwähnt werden und die von so genannten Anforderern, etwa dem Schreibmodul 24 und dem Lesemodul 28, angefordert werden können.
  • Ferner kann, auch wenn der Übersichtlichkeit halber die Darstellung nur mit Bezug auf die Kanalsteuerung 32A erfolgt, jede der Kanalsteuerungen 32 eine Anzahl beispielhafter Ressourcen in Form von ECC-Codierern 36, Lesepuffern 38 und ECC-Decodierern 40 ähnlich den mit Bezug auf Kanalsteuerung 32A gezeigten aufweisen. ECC-Codierer 36 können eine Einheit oder ein Modul repräsentieren, die/das ausgelegt ist, die ECC-Codierung von Daten auszuführen, die zum Schreiben in den nichtflüchtigen Datenspeicherbereich 10 anstehen. Lesepuffer 38 repräsentieren eine Einheit oder ein Modul, die/das ausgelegt ist, die aus dem nichtflüchtigen Datenspeicherbereich 10 ausgelesenen Daten zu speichern. Lesepuffer 38 können ausgelegt sein, Lesecodewörter zu speichern. ECC-Decodierer 40 können eine Einheit oder ein Modul repräsentieren, die/das ausgelegt ist, die ECC-Decodierung bezogen auf in Lesepuffern 38 gespeicherte Daten durchzuführen.
  • Gemäß einem oder mehreren Verfahren der vorliegenden Offenbarung kann die Kanalsteuerung 32A ein Ressourcenzuteilungsmodul 42 aufweisen, das die Zuteilung und Freigabe eines oder mehrerer von ECC-Codierern 36, Lesepuffern 38 und ECC-Decodierern 40 wenigstens teilweise unter Verwendung einer Thermometer-Datenstruktur ausführt, die die Zuteilung und Freigabe von Ressourcen in einer, als ein Beispiel, festen Abfolge in der nachstehend noch ausführlicher beschriebenen Weise zulässt. Auch wenn sie als nur ein einziges Ressourcenzuteilungsmodul 42 aufweisend dargestellt ist, kann die Kanalsteuerung 32A mehrere verschiedene Ressourcenzuteilungsmodule 42 aufweisen, die jedes für die Zuteilung einer einzelnen der Ressourcen 36-40 zuständig sein können. Obwohl dies in dem Beispiel von der Übersichtlichkeit halber nicht dargestellt ist, kann jede der Kanalsteuerungen 32 bzw. kann/können in manchen Fällen eine oder mehrere der Kanalsteuerungen 32 ein oder mehrere Ressourcenzuteilungsmodul(e) 42 ähnlich dem Ressourcenzuteilungsmodul 42 der Kanalsteuerung 32A aufweisen. Darüber hinaus kann die Steuerung 8, auch wenn dies in dem Beispiel von wiederum aus Gründen der Übersichtlichkeit nicht dargestellt ist, eine weitere Instanz des Ressourcenzuteilungsmoduls 42 als ein von den Kanalsteuerungen 32 getrenntes Modul aufweisen, welches die in der vorliegenden Offenbarung beschriebenen Verfahren zum Zuteilen/Freigeben von Puffern 34 ausführen kann, um so ein ausgewogenes Verhältnis zwischen Betriebseffizienz und Leistung zu erzielen.
  • In jedem Fall kann das Ressourcenzuteilungsmodul 42 die Thermometer-Datenstruktur analysieren, um die Nutzung einer oder mehrerer der vorstehend identifizierten Ressourcen 34-40 festzustellen und um einen Schwellwert zu bestimmen. Dieser Schwellwert kann anfänglich vordefiniert und in der Steuerung 8 konfiguriert sein, basierend auf einer vorangegangenen statistischen Analyse oder anderen Kriterien. Das Ressourcenzuteilungsmodul 42 kann, wie vorstehend angemerkt, anfänglich beim Einschalten lediglich eine erste nicht null betragende Teilmenge mit einer oder mehreren der Ressourcen 34-40 einschalten und im Laufe der Zeit die Nutzung dieser Ressourcen bestimmen, und diese Nutzung mit dem Schwellwert vergleichen. Das Ressourcenzuteilungsmodul 42 kann dann auf Basis dieses Vergleichs eine zweite nicht null betragende Teilmenge mit einer oder mehreren der Ressourcen 34-40 einschalten, wobei diese zweite nicht null betragende Teilmenge keine der Ressourcen 34-40 der ersten nicht null betragenden Teilmenge entsprechender Ressourcen 34-40 beinhalten darf.
  • ist ein Diagramm, das ein allgemeines Ressourcenzuteilungsmodul 42, welches in dem Beispiel von gezeigt ist, detaillierter darstellt. Wie in dem Beispiel von gezeigt, kann das Ressourcenzuteilungsmodul 42 ein Arbitermodul 50 (das auch als „Ressourcenarbiter 50“ bezeichnet sein kann) und ein Zuteilungs- und Leistungskontrollmodul 52 (das auch als „Ressourcenzuteiler 52“ bezeichnet sein kann) aufweisen. Das Ressourcenzuteilungsmodul 42 kann mit Ressourcen 54A-54M („Ressourcen 54“) zusammenwirken, die eine oder mehrere beliebige der vorstehend beschriebenen Ressourcen, z. B. Puffer 34, ECC-Codierer 36, Lesepuffer 38 und ECC-Decodierer 40, sowie jegliche andere Ressource, wie sie üblicherweise in Speichervorrichtungen oder Computervorrichtungen allgemein vorkommt, repräsentieren.
  • Das Ressourcenzuteilungsmodul 42 kann auch mit Anforderern 56A-56N („Anforderer 56“) zusammenwirken in dem Bestreben, über den Zugriff auf Ressourcen 54 zu entscheiden und gleichzeitig Ressourcen 54 verschiedener nicht null betragender Teilmengen von Ressourcen 54 zuzuteilen, um die Leistungskontrolle gemäß den in der vorliegenden Offenbarung beschriebenen Verfahren zu ermöglichen. Ressourcen 56 können verschiedene Programmfäden repräsentieren, die von einem Universalprozessor (etwa einer zentralen Verarbeitungseinheit oder CPU), dedizierten Prozessoren, dedizierter Hardware, verschiedenen Rechenkernen oder anderen Arten von Software- oder Hardware-Anforderer ausgeführt werden.
  • Allgemein können die Verfahren der vorliegenden Offenbarung den Zugriff auf Ressourcen 54 ermöglichen, wenn die Anzahl der Anforderer 56 die Anzahl der Ressourcen 54 übersteigt (z. B. wo N größer ist als M). In diesen Fällen kann das Ressourcenzuteilungsmodul 42 mehrere Schnittstellen bereitstellen:
    1. 1) eine Gruppe von N konkurrierenden Anfordererports, die ausgelegt sind, mit einer aus einer Gruppe von M Ressourcen verbunden zu werden, wobei M < N ist;
    2. 2) eine Gruppe von Leistungssteuerungsausgängen, die mit jeder Instanz der Ressource verbunden sind,
    3. 3) eine Gruppe von Energiestatus-Anzeigeeingängen von den Ressourcen an die Vorrichtung, die den aktuellen Energiestatus der zugehörigen Ressource anzeigen; und
    4. 4) einen CPU-Speicher oder eine Eingang/Ausgang (EA) -basierte Schnittstelle.
  • Das Arbitermodul 50 kann eine Einheit repräsentieren, die ausgelegt ist, ein Arbitrationsschema auszuführen. Ein beispielhaftes Arbitrationsschema ist ein Arbitrationsschema mit rotierender Prioritätenzuteilung (Round-Robin-Arbitration). In dem Round-Robin-Arbitrationsschema hat einer der Anforderer 56, dem zuletzt Zugriff auf eine der Ressourcen 54 gewährt wurde, die im Verhältnis niedrigste Priorität unter den Anforderern 56 hinsichtlich des Erhaltens der nächsten Zugriffserlaubnis; stattdessen erhält der in der numerischen Reihenfolge nächste der Anforderer 56 die nächste Zugriffserlaubnis. Das bedeutet, dass jedem der Anforderer 56 ein Anfordererkennzeichner (Requestor Identifier, ID) zugewiesen ist, der die numerische Reihenfolge der Anforderer 56 definieren kann. Ein Ressourcenkennzeichner kann ebenfalls jeder der Ressourcen 54 zugewiesen sein. In einigen Beispielen können jeder der Ressourcen 54 mehrere Ressourcenkennzeichner zugewiesen sein, je nach den Fähigkeiten der betreffenden einen der Ressourcen 54. In diesen Beispielen, wo mehrere Ressourcenkennzeichner einer einzigen der Ressourcen 54 zugewiesen sein können, können die Ressourcenkennzeichner als „Ressourcenelement-Kennzeichner“ oder „Zuteilungskennzeichner“ bezeichnet werden. Selbst in Fällen, wo ein einzelner Ressourcenkennzeichner einer einzelnen der Ressourcen 54 zugewiesen ist, können die Ressourcenkennzeichner als „Ressourcenelement-Kennzeichner“ oder „Zuteilungskennzeichner“ bezeichnet werden. Von daher können diese Begriffe austauschbar verwendet werden und sollten nicht notwendigerweise angeben, ob mehrere Ressourcenkennzeichner einer oder mehreren der Ressourcen 54 zugewiesen wurden.
  • Das von dem Arbitermodul 50 implementierte Round-Robin-Arbitrationsschema kann dazu führen, dass das Arbitermodul 50 jedem der Anforderer 56 einen Anfordererkennzeichner sowie jeder der Ressourcen 54 einen oder mehrere Ressourcenkennzeichner zuweist. Das Arbitermodul 50 kann dann die ausstehenden Anforderungen von Zugriff auf Ressourcen 54 in der numerischen Reihenfolge der Anfordererkennzeichner, die jeder der Anforderungen zugeordnet sind, in aufsteigender Reihenfolge durchlaufen. Das Arbitermodul 50 kann einige der Anforderungen zurückstufen in Anhängigkeit davon, ob eine bestimmte Anforderung von demselben der Anforderer 56 die zuletzt gewährte Anforderung war, wodurch effektiv die Anforderungen derjenigen Anforderer 56, die zuletzt bedient wurden, zurückgestuft werden in dem Bemühen, den Zugriff auf Ressourcen 54 gleichmäßig auf die Anforderer 56 zu verteilen. Die Anforderungen von den Anforderern 56 sind durch Pfeile gekennzeichnet und können als „Anforderungen 58A-58N“ oder zusammenfassend als „Anforderungen 58“ bezeichnet sein.
  • In dem Beispiel von weist das Zuteilungs- und Leistungskontrollmodul 52 ein Zuteilungsmodul 60 und ein Leistungskontrollmodul 62 auf. Bei der Arbitration zwischen Anforderungen 58 von Anforderern 56 kann das Zuteilungsmodul 60 mit dem Arbitermodul 50 kommunizieren oder auf andere Weise Daten teilen, um die Gewährung von Anforderungen 58 zu ermöglichen. Beispielsweise kann, wenn das Zuteilungsmodul 60 anzeigt, dass alle Ressourcen 54 dem Arbitermodul 50 zugeteilt sind, das Arbitermodul 50 eine der anhängigen Anforderungen 58 nicht gewähren. Als weiteres Beispiel kann, wenn das Zuteilungsmodul 60 anzeigt, dass alle verfügbaren Ressourcen (was sich auf eine nicht null betragende Teilmenge von Ressourcen 54 beziehen kann, die eingeschaltet sind) dem Arbitermodul 50 zugeteilt sind, das Arbitermodul 50 eine der anhängigen Anforderungen 58 nicht gewähren. Als noch ein weiteres Beispiel kann, wenn das Zuteilungsmodul 60 dem Arbitermodul 50 anzeigt, dass alle Ressourcen 54 ausgeschaltet sind, das Arbitermodul 50 eine der anhängigen Anforderungen 58 nicht gewähren. In manchen Beispielen kann/können eine oder mehrere der Ressourcen 54 für die Gewährung durch eine externe CPU oder eine andere Steuervorrichtung aktiviert werden (was in einigen Beispielen über eine Registerschnittstelle erfolgen kann). Das Zuteilungsmodul 60 kann gleichermaßen ausschließlich dem Arbitermodul 50 mitteilen, dass diese kontrollierten Ressourcen 54 für eine Zuteilung zur Verfügung stehen, sobald die CPU oder andere Steuervorrichtung diese Ressourcen 54 zur Gewährung aktiviert.
  • Anfänglich, wenn die Speichervorrichtung 6 erstmals eingeschaltet wird, kann die Speichervorrichtung 6 in einem Zustand mit niedrigem Stromverbrauch arbeiten, in dem einige, wenn nicht alle Ressourcen 54 ausgeschaltet (oder nicht eingeschaltet) sind. Anforderer 56 können beginnen, eine oder mehrere Anforderung(en) 58 auszugeben, und die CPU oder andere Steuerlogik kann dann das Zuteilungsmodul 60 aktivieren, so dass es mit dem Leistungskontrollmodul 62 zusammenwirkt, um so eine nicht null betragende Teilmenge der Ressourcen 54 einzuschalten. Das bedeutet, dass das Zuteilungsmodul 60 mit dem Leistungskontrollmodul 62 zusammenwirken kann, um ausschließlich diese nicht null betragende Teilmenge der Ressourcen 54 einzuschalten, ohne die übrigen Ressourcen 54 einzuschalten. Diese nicht null betragende Teilmenge der Ressourcen 54 kann auch als ein Anteil von Ressourcen 54 oder eine Bank von Ressourcen 54 bezeichnet werden. Darüber hinaus kann diese nicht null betragende Teilmenge der Ressourcen 54 eine, zwei oder mehr der Ressourcen 54, jedoch nicht alle Ressourcen 54 beinhalten.
  • In Reaktion auf das Einschalten dieser nicht null betragenden Teilmenge von Ressourcen 54 kann das Zuteilungsmodul 60 dann die Thermometer-Datenstruktur 61 („Thermometer-Datenstruktur 61“) initialisieren, wobei aufsteigende Ressourcenkennzeichner den eingeschalteten Ressourcen 54 der nicht null betragenden Teilmenge sequenziell zugewiesen werden und die Thermometer-Datenstruktur 61 aktualisiert wird, so dass sie die Zuweisung der Ressourcenkennzeichner zu bestimmten der eingeschalteten Ressourcen 54 der nicht null betragenden Teilmenge widerspiegeln. Diese Thermometer-Datenstruktur 61 kann einen Knoten für jede der eingeschalteten Ressourcen 54 der nicht null betragenden Teilmenge aufweisen, wobei jeder Knoten einen der sequenziell und möglicherweise monoton aufsteigenden Ressourcenkennzeichner sowie eine Anzeige speichert, ob die betreffende Ressource der nicht null betragenden Teilmenge verfügbar oder belegt ist. Das Zuteilungsmodul 60 kann dann die Ressourcenkennzeichner an das Arbitermodul 50 weiterleiten, wo sie zur Gewährung einer oder mehrerer der Anforderungen 58 verwendet werden. Wie im Beispiel von gezeigt, kann das Zuteilungsmodul 60 die Ressourcenkennzeichner weiterleiten, indem es die Thermometer-Datenstruktur 61 an das Arbitermodul 50 bereitstellt. Obwohl hier dargestellt ist, dass sowohl das Arbitermodul 50 als auch das Zuteilungsmodul 60 jeweils eine eigene Kopie der Thermometer-Datenstruktur 61 besitzen, können beide auch auf dieselbe Thermometer-Datenstruktur 61 zugreifen, die an einem einzelnen Speicher ort gespeichert sein kann, auf den sowohl das Arbitermodul 50 als auch das Zuteilungsmodul 60 zugreifen können.
  • Das Arbitermodul 50 kann dann fortfahren, Anforderungen 58 gemäß dem Arbitrationsschema zu gewähren, und dadurch Anforderern 56 den Zugriff auf die von den Ressourcenkennzeichnern identifizierten Ressourcen bereitstellen. Das Arbitermodul 50 kann die Thermometer-Datenstruktur 61 aktualisieren, um diejenigen Ressourcen 54 der nicht null betragenden Teilmenge anzuzeigen, die als in Gebrauch durch einen der Anforderer 56 befindlich zugeteilt sind. Mit fortschreitender Zeit können Anforderer 56 eine steigende Anzahl Anforderungen 58 ausgeben, was dazu führen kann, dass Anforderer 56 durchschnittlich längere Zeit warten, ehe der Zugriff auf eine der Ressourcen 54 gewährt wird. Das Zuteilungsmodul 60 kann diese Verzögerung identifizieren (z. B. im Hinblick auf die durchschnittliche Zeitdauer von der Ausgabe einer der Anforderungen 58 bis zur Gewährung der betreffenden der Anforderungen 58) und diese Verzögerung in eine erwartete Anzahl Ressourcen umrechnen, die benötigt werden, um die Verzögerung zu reduzieren. Diese erwartete Anzahl Ressourcen kann dahingehend prädiktiver Natur sein, dass die Konvertierung den Versuch unternehmen kann, Nutzungsverhalten auf Grundlage eines vergangenen Nutzungsverhaltens zu prognostizieren, um diese Ressourcen einzuschalten, bevor diese Ressourcen erwartungsgemäß gebraucht werden. Diese Nutzungsprognose kann es dem Zuteilungsmodul 60 ermöglichen, mit dem Leistungskontrollmodul 62 zusammenzuwirken, um so Ressourcen 54 einzuschalten, so dass diese Ressourcen 54 zur Verfügung stehen, wenn die Information zur tatsächlichen Nutzung (anstelle der Information zur voraussichtlichen Nutzung) anzeigt, dass diese zusätzlichen Ressourcen 54 benötigt werden.
  • Beim Initialisieren der Thermometer-Datenstruktur 61 kann das Zuteilungsmodul 60 einen Schwellwert bestimmen, der die nicht null betragende Teilmenge von Ressourcen 54, die eingeschaltet werden sollen, von den übrigen der Ressourcen 54 abgrenzt, die nicht eingeschaltet werden sollen. Dieser Schwellwert kann von der CPU oder anderen Steuerlogik definiert werden, im Zuteilungsmodul 60 vorprogrammiert oder vorkonfiguriert sein, anhand des vorherigen Betriebs der Speichervorrichtung 6 erlernt (über Computerlernalgorithmen) werden, oder eine Kombination davon. Auch wenn die Verfahren in der vorliegenden Offenbarung in Bezug auf einen einzelnen Schwellwert beschrieben werden, können sie auf mehrere Schwellwerte erweitert werden, die jeweils einen anderen Abgrenzungspunkt zwischen eingeschalteten und ausgeschalteten nicht null betragenden Teilmengen definieren.
  • In jedem Fall kann, wenn die erwartete Anzahl Ressourcen 54 gleich dem Schwellwert ist oder diesen übersteigt (oder in einigen Beispielen nur übersteigt), das Zuteilungsmodul 60 mit dem Leistungskontrollmodul 62 zusammenwirken, um die verbleibenden der Ressourcen 54 einzuschalten. In einigen Beispielen kann das Zuteilungsmodul 60 zunächst mit der CPU oder anderen Steuerlogik zusammenwirken, um zu bestätigen, dass die verbleibenden der Ressourcen 54 eingeschaltet werden sollen, bevor diese Ressourcen 54 eingeschaltet werden. Sobald sie eingeschaltet sind wie von dem Leistungskontrollmodul 62 gemeldet, kann das Zuteilungsmodul 60 die Thermometer-Datenstruktur 61 so aktualisieren, dass sie die neu eingeschalteten der Ressourcen 54 widerspiegelt. Das Arbitermodul 50 kann dann, nachdem die Thermometer-Datenstruktur 61 aktualisiert wurde, beginnen, die neu eingeschalteten der Ressourcen 54 Anforderern 56 zuzuweisen, um Anforderungen 58 von diesen Anforderern 56 zu gewähren. Durch Verwendung der Thermometer-Datenstruktur 61 kann das Zuteilungsmodul 60 Ressourcen 54 in einer festen Abfolge oder mit einer spezifischen Progression einschalten.
  • Anders ausgedrückt arbeitet das Zuteilungsmodul 60 gemäß einem Algorithmus, der die Ressourcenkennzeichner auf die niedrigsten Zahlenwerte konzentriert, welche diejenigen sind, die den Ressourcen 54 mit den niedrigsten Nummern zugeordnet sind. Wenn eine erste der Anforderungen 58 vom Arbitermodul 50 empfangen wird, kann das Arbitermodul 50 ausgelegt sein, den niedrigsten der gespeicherten Ressourcenkennzeichner der Thermometer-Datenstruktur 61 zuzuteilen und die Thermometer-Datenstruktur 61 so zu aktualisieren, dass sie anzeigt, dass die entsprechende eine der Ressourcen 54 belegt ist (oder anders ausgedrückt, in Gebrauch oder nicht verfügbar ist). Wird eine zweite der Anforderungen 58 vom Arbitermodul 50 empfangen, bevor die erste Anforderung von der entsprechenden der Ressourcen 54 vollständig verarbeitet worden ist, kann das Arbitermodul 50 den zweitniedrigsten verfügbaren der gespeicherten Ressourcenkennzeichner der Thermometer-Datenstruktur 61 zuweisen. Nach der Zuweisung dieses zweitniedrigsten verfügbaren der Ressourcenkennzeichner kann das Arbitermodul 50 die Thermometer-Datenstruktur 61 so aktualisieren, dass sie anzeigt, dass diese entsprechende Ressource belegt ist. Sobald die erste der Anforderungen 58 abgearbeitet ist, kann das Arbitermodul 50 die Thermometer-Datenstruktur 61 aktualisieren, um anzuzeigen, dass die eine der Ressourcen 54, die diese erste der Anforderungen 58 verarbeitet, verfügbar ist. Vorausgesetzt, dass diese eine der Ressourcen 54 den niedrigsten verfügbaren Ressourcenkennzeichner (aller verfügbaren Ressourcenkennzeichner) hat, kann das Arbitermodul 50 diesen Ressourcenkennzeichner erneut in Reaktion auf irgendwelche weiteren der Anforderungen 58 zuweisen und dadurch möglicherweise vermeiden, die übrigen der Ressourcen 54 einschalten zu müssen.
  • Im Laufe der Zeit kann das Zuteilungsmodul 60 bestimmen, dass die Anzahl der Anforderungen pro gegebenem Zeitintervall abgenommen hat. Diese Abnahme kann effektiv dazu führen, dass ein Teil der verfügbaren Ressourcen 54 über Zeiträume inaktiv ist. Das Zuteilungsmodul 60 kann diese Inaktivität erkennen, indem die Anzahl der Anforderungen pro gegebenem Zeitintervall in eine erwartete Anzahl Ressourcen umgewandelt wird. Das Zuteilungsmodul 60 kann diese erwartete Anzahl Ressourcen mit dem vorstehend erwähnten Schwellwert vergleichen und basierend auf diesem Vergleich (z. B. wenn die erwartete Anzahl Ressourcen unter oder gleich oder einfach nur unter dem Schwellwert ist) die verbleibende nicht null betragende Teilmenge von Ressourcen 54, die zuvor eingeschaltet waren, ausschalten.
  • Das Zuteilungsmodul 60 kann im Laufe der Zeit die Zahl der Schwellwerte erhöhen, um eine feiner abgestimmte Leistungskontrolle bereitzustellen, oder andernfalls vorhandene Schwellwerte anpassen, damit nur inkrementelle Mengen von Ressourcen 54 ein- oder ausgeschaltet werden. Anders ausgedrückt können die Verfahren, auch wenn sie vorstehend mit einem statischen Schwellwert beschrieben werden, mit einem dynamischen Schwellwert implementiert sein, der sich mit der Zeit ändert, basierend auf der erwarteten Anzahl Ressourcen, einer Tageszeit oder einer beliebigen anderen Bedingung, etwa Wärme, verbrauchte Verarbeitungszyklen, Speichernutzung etc. Mit der dynamischen Anpassung des Schwellwerts kann das Zuteilungsmodul 60 zusätzliche Ressourcen außer der nicht null betragenden Teilmenge von Ressourcen 54 ein- oder ausschalten und so die Zahl der in dieser nicht null betragenden Teilmenge der Ressourcen 54 erhöhen oder verringern. Die dynamische Anpassung des Schwellwerts kann noch eine weitere Möglichkeit bereitstellen, Leistung und Stromverbrauch auszubalancieren.
  • ist ein Blockschaltbild, das den ECC-Decodierer 40 aus detaillierter darstellt. In dem Beispiel von weist der ECC-Decodierer 40 ein integriertes Ressourcenzuteilungsmodul 42 (nicht dargestellt) in Form des Arbitermoduls 50 und des Zuteilungs- und Leistungskontrollmoduls 52 auf (die jeweils ähnlich oder identisch mit dem Arbitermodul 50 und/oder Zuteilungs- und Leistungskontrollmodul 52 wie im Beispiel von gezeigt sind). Der ECC-Decodierer 40 kann ferner ein oder mehrere Ressourcenanforderungsmodul(e), das/die effektiv die Anforderer 56 repräsentieren, sowie einen Lesedatenmultiplexer 72 („Lesedatenmux 72“) aufweisen. Die Anforderer 56 können eine Schnittstelle repräsentieren, die ausgelegt ist, mit der CPU 70 zusammenzuwirken und Anforderungen 58 zu generieren. Der Lesedatenmux 72 kann eine Einheit repräsentieren, die ausgelegt ist, zwischen Daten aus einer der als Ressourcen 54 bezeichneten Speicherbänke zu multiplexen oder diese anderweit auszuwählen.
  • Im Beispiel von können Anforderer 56 eine Vorrichtung, eine Einheit oder ein Modul repräsentieren, die/das einen Speicherpuffer anfordert, um Daten hineinzukopieren. Ressourcen 54 können Speicherpuffer repräsentieren, die in Speicherbänken 0-3 angeordnet sind (welche, als ein Beispiel, jeweils einen Speichertyp aufweisen, der als SRAM bezeichnet wird). Wenn man annimmt, dass jede Speicherbank vier Puffer bereitstellen kann und dass die Durchschnittszeit zwischen ankommenden Anforderungen ein solche ist, dass maximal vier Anforderer 56 während der Lebensdauer der Puffer aktiv sind, kann lediglich eine der Speicherbänke 54 eingeschaltet sein, um die Nachfrage zu erfüllen. Wenn jedoch die Zeit zwischen ankommenden Anforderungen abnimmt, oder wenn die durchschnittliche Lebensdauer der Puffer zunimmt, kann das Zuteilungs- und Leistungskontrollmodul 52 eine zusätzliche der Speicherbänke 54 (z. B. Speicherbank 1 zusätzlich zu Speicherbank 0) einschalten und dadurch vier weitere Ressourcenkennzeichner bereitstellen. Das Zuteilungs- und Leistungskontrollmodul 52 kann dann den verfügbaren Pool von Pufferslots von vier auf acht erhöhen, aber erst nachdem Speicherbank 1 über den Steuerkanal PWR IS ON (bzw. was als Einschaltstatus-Kontrollleitung bezeichnet wird) angezeigt hat, dass sie sich in einem eingeschalteten Zustand befindet.
  • und sind Flussdiagramme, die beispielhaft den Betrieb einer Speichervorrichtung bei Durchführung der in dieser Offenbarung beschriebenen Verfahren zur Ressourcenzuteilung und -freigabe darstellen. Es wird zunächst auf Bezug genommen; wenn eine Speichervorrichtung, etwa die in gezeigte Speichervorrichtung 6, erstmals eingeschaltet wird, kann die Speichervorrichtung 6 in einem Zustand mit niedrigem Stromverbrauch arbeiten, in dem einige, wenn nicht alle Ressourcen 54 (in den Beispielen der und dargestellt) ausgeschaltet (oder nicht eingeschaltet) sind (90). Anforderer 56 können beginnen, eine oder mehrere Anforderung(en) 58 auszugeben, und die CPU oder andere Steuerlogik kann dann das Zuteilungsmodul 60 aktivieren, so dass es mit dem Leistungskontrollmodul 62 zusammenwirkt, um so eine nicht null betragende Teilmenge der Ressourcen 54 einzuschalten (94).
  • In Reaktion auf das Einschalten dieser nicht null betragenden Teilmenge von Ressourcen 54 kann das Zuteilungsmodul 60 dann die Thermometer-Datenstruktur 61 („temp. Datenstruktur 61“) initialisieren, wobei aufsteigende Ressourcenkennzeichner den eingeschalteten Ressourcen 54 der nicht null betragenden Teilmenge sequenziell zugewiesen werden und die Thermometer-Datenstruktur 61 aktualisiert wird, so dass sie die Zuweisung der Ressourcenkennzeichner zu bestimmten der eingeschalteten Ressourcen 54 der nicht null betragenden Teilmenge widerspiegelt (96). Das Arbitermodul 50 kann dann fortfahren, Anforderungen 58 gemäß dem Arbitrationsschema zu gewähren (98), und dadurch Anforderern 56 den Zugriff auf die von den Ressourcenkennzeichnern identifizierten Ressourcen bereitstellen. Das Arbitermodul 50 kann die Thermometer-Datenstruktur 61 aktualisieren, um diejenigen Ressourcen 54 der nicht null betragenden Teilmenge anzuzeigen, die als in Gebrauch durch einen der Anforderer 56 befindlich zugeteilt sind (100).
  • Mit fortschreitender Zeit können Anforderer 56 eine steigende Anzahl Anfragen 58 ausgeben, was dazu führen kann, dass Anforderer 56 durchschnittlich längere Zeit warten, ehe der Zugriff auf eine der Ressourcen 54 gewährt wird. Das Zuteilungsmodul 60 kann diese Verzögerung von der Anforderung bis zur Gewährung bestimmen (z. B. im Hinblick auf die durchschnittliche Zeitdauer von der Ausgabe einer der Anforderungen 58 bis zur Gewährung der betreffenden der Anforderungen 58) und diese Verzögerung (im Hinblick auf eine erwartete Anzahl Ressourcen) wie vorstehend beschrieben mit einem Schwellwert vergleichen (102, 104). Wenn die erwartete Anzahl Ressourcen 54 (die effektiv die Verzögerung repräsentiert) kleiner oder gleich dem Schwellwert ist („NEIN“ 106), kann das Zuteilungsmodul 60 fortfahren, die Verzögerung von der Anforderung bis zur Gewährung zu beobachten oder anderweitig zu bestimmen und diese Verzögerung mit dem Schwellwert zu vergleichen (102, 104). Wenn die erwartete Anzahl Ressourcen 54 den Schwellwert übersteigt („JA“ 106), kann das Zuteilungsmodul 60 mit dem Leistungskontrollmodul 62 zusammenwirken, um die übrigen der Ressourcen 54 einzuschalten (108).
  • Wie vorstehend angemerkt, können, auch wenn sie hier mit Bezug auf eine nicht null betragende Teilmenge der Mehrzahl von Ressourcen und verbleibende der Mehrzahl von Ressourcen beschrieben werden, die Verfahren auf jede beliebige Zahl von Teilmengen von Ressourcen ausgeweitet werden, wobei ein entsprechender Schwellwert definiert wird, um jede zusammenhängende nicht null betragende Teilmenge von Ressourcen abzugrenzen. In dieser Hinsicht kann die Mehrzahl von Ressourcen derart verstanden werden, dass sie eine Teilmenge einer größeren Mehrzahl von Ressourcen bildet. Daher können die verbleibenden der Mehrzahl von Ressourcen eine zweite nicht null betragende Teilmenge der Mehrzahl von Ressourcen innerhalb der größeren Mehrzahl von Ressourcen repräsentieren.
  • In jedem Fall kann, einmal eingeschaltet wie vom Leistungskontrollmodul 62 gemeldet, das Zuteilungsmodul 60 die Thermometer-Datenstruktur 61 aktualisieren, um die neu eingeschalteten der Ressourcen 54 widerzuspiegeln (110). Mit Bezug auf das Beispiel von , kann das Arbitermodul 50 dann, nachdem die Thermometer-Datenstruktur 61 aktualisiert wurde, beginnen, die neu eingeschalteten der Ressourcen 54 den Anforderern 56 zuzuweisen, um so Anforderungen 58 von diesen Anforderern 56 zu gewähren, während gleichzeitig die Thermometer-Datenstruktur 61 aktualisiert wird, um die Zuweisung und Freigabe dieser Ressourcen 56 widerzuspiegeln (112, 114).
  • Im Laufe der Zeit kann das Zuteilungsmodul 60 bestimmen, dass die Anzahl der Anforderungen pro gegebenem Zeitintervall abgenommen hat. Diese Abnahme kann effektiv dazu führen, dass ein Teil der verfügbaren Ressourcen 54 über Zeiträume inaktiv ist. Das Zuteilungsmodul 60 kann erneut die Verzögerung von der Anforderung bis zur Gewährung bestimmen (116), indem potenziell die Anzahl der Anforderungen pro gegebenem Zeitintervall in eine erwartete Anzahl Ressourcen umgewandelt wird. Das Zuteilungsmodul 60 kann diese erwartete Anzahl Ressourcen mit dem vorstehend erwähnten Schwellwert vergleichen (118) und basierend auf diesem Vergleich (z. B. wenn die erwartete Anzahl Ressourcen unter oder gleich oder einfach nur unter dem Schwellwert ist) die verbleibende nicht null betragende Teilmenge von Ressourcen 54, die zuvor eingeschaltet waren, ausschalten.
  • Wenn beispielsweise die Verzögerung größer ist als der Schwellwert („JA“ 120), kann das Zuteilungsmodul 60 fortfahren, die Verzögerung von der Anforderung bis zur Gewährung zu bestimmen, und diese Verzögerung mit dem Schwellwert vergleichen (116, 118). Wenn die Verzögerung kleiner oder gleich dem Schwellwert ist („NEIN“ 120), kann das Zuteilungsmodul 60 mit dem Leistungskontrollmodul 62 zusammenwirken, um die verbleibende Teilmenge von Ressourcen 54 auszuschalten (122). Das Zuteilungsmodul 60 kann die Thermometer-Datenstruktur 61 aktualisieren, um das Ausschalten dieser Ressourcen 54 widerzuspiegeln (124). Die Speichervorrichtung 6 kann den Betrieb in dieser Art und Weise fortsetzen, indem sie ständig die Verzögerung zwischen Anforderung und Gewährung bestimmt 102, in dem was nun als Betriebskostensenkungsmodus bezeichnet werden kann (102-106, 122, 124), bis die Verzögerung von der Anforderung bis zur Gewährung den Schwellwert übersteigt, an welchem Punkt die Speichervorrichtung 6 in einem Leistungsmodus arbeitet (108-120).
  • ist eine Darstellung, die die Thermometer-Datenstruktur 61 aus detaillierter veranschaulicht. Die Thermometer-Datenstruktur 61 weist Knoten 130A-1301 („Knoten 130“) auf, wobei jeder Knoten einen Ressourcenkennzeichner (Resource ID, RID) sowie ein Verfügbarkeitsbit (available, A) speichert. In dem Beispiel von sind die Ressourcen 54, die den Knoten 130A, 130C-130F und 130H zugeordnet sind, nicht verfügbar wie durch A=0 (und in der Darstellung durch die Schraffierung) gekennzeichnet. Jedem der Knoten 130 ist ein sukzessiver, von links nach rechts ansteigender Ressourcenkennzeichner zugewiesen (z. B. 0 bis 8). Für die Zuteilung freier Ressourcen (wobei die Knoten 130B, 130G und 1301 mit freien oder, anders ausgedrückt, verfügbaren Ressourcen verknüpft sind) beginnt das Arbitermodul 50 die Suche nach einer freien Ressource immer an einer Seite (z. B. der linken Seite). Entsprechend kann das Arbitermodul 50 in Reaktion auf die nächste der Anforderungen 58 diejenige der Ressourcen 54 zuweisen, der ein Ressourcenkennzeichner gleich eins zugeordnet ist (wie durch Knoten 130B identifiziert). Anstelle einer herkömmlichen Zuteilung erlaubt es diese Zuteilung nach Art eines Balkendiagramms/Thermometers, nicht genutzte Ressourcen in der vorstehend beschriebenen Weise auszuschalten. Effektiv kann eine Seite der Thermometer-Datenstruktur 61 in Betrieb bleiben, während die andere weitgehend frei ist.
  • Die in der vorliegenden Offenbarung beschriebenen Verfahren können, zumindest teilweise, in Form von Hardware, Software, Firmware oder einer beliebigen Kombination davon implementiert werden. Beispielsweise können verschiedene Aspekte der beschriebenen Verfahren in einem oder mehreren Prozessor(en) implementiert werden, einschließlich einem oder mehreren Mikroprozessor(en), Digitalsignalprozessor(en) (DSPs), anwendungsspezifischen integrierten Schaltungen (Application Specific Integrated Circuits, ASICs), feldprogrammierbaren Gatteranordnungen (Field Programmable Gate Arrays, FPGAs) oder einer beliebigen anderen, gleichwertigen integrierten oder diskreten Logikschaltung sowie beliebigen Kombinationen derartiger Komponenten. Der Begriff „Prozessor“ oder „Verarbeitungsschaltung“ kann sich allgemein auf eine beliebige der vorstehend erwähnten Logikschaltungen, allein oder in Kombination mit anderen Logikschaltungen, oder eine beliebige andere, gleichwertige Schaltung beziehen. Eine Steuereinheit, die Hardware einschließt, kann ebenfalls eines oder mehrere der Verfahren der vorliegenden Offenbarung ausführen.
  • Derartige Hardware, Software und Firmware kann innerhalb ein und derselben Vorrichtung oder in separaten Vorrichtungen implementiert sein, um die verschiedenen, in der vorliegenden Offenbarung beschriebenen Verfahren zu unterstützen. Darüber hinaus können alle beschriebenen Einheiten, Module oder Komponenten zusammen oder einzeln als einzelne, jedoch zusammenwirkende Logikvorrichtungen implementiert werden. Die Darstellung verschiedener Funktionen als Module oder Einheiten ist dazu gedacht, verschiedene funktionale Aspekte hervorzuheben, und beinhaltet nicht notwendigerweise, dass derlei Module oder Einheiten durch separate Hardware-, Firmware- oder Softwarekomponenten realisiert werden müssen. Vielmehr kann die Funktionalität, die mit einem/einer oder mehreren Modul(en) oder Einheit(en) verknüpft ist, durch separate Hardware-, Firmware- oder Softwarekomponenten ausgeführt werden oder in gemeinsamen oder separaten Hardware-, Firmware- oder Softwarekomponenten integriert werden.
  • Die in der vorliegenden Offenbarung beschriebenen Verfahren können auch in einem Erzeugnis ausgeführt sein, das ein computerlesbares Speichermedium umfasst, auf dem Anweisungen codiert sind. In ein Erzeugnis, das ein codiertes computerlesbares Speichermedium umfasst, eingebettete oder codierte Anweisungen können einen oder mehrere programmierbare Prozessor(en) oder andere Prozessoren veranlassen, eines oder mehrere der hier beschriebenen Verfahren zu implementieren, etwa wenn in dem computerlesbaren Speichermedium enthaltene oder codierte Anweisungen von dem einen oder den mehreren Prozessor(en) ausgeführt werden. Computerlesbare Speichermedien können umfassen: Direktzugriffsspeicher (Random Access Memory, RAM), Festwertspeicher (Read-Only Memory, ROM), programmierbare Festwertspeicher (Programmable Read Only Memory, PROM), löschbare programmierbare Festwertspeicher (Erasable Programmable Read Only Memory, EPROM), elektrisch löschbare programmierbare Festwertspeicher (Electronically Erasable Programmable Read Only Memory, EEPROM), Flash-Datenspeicher, eine Festplatte, eine Kompakt-Disk ROM (CD-ROM), eine Diskette, eine Kassette, magnetische Datenträger, optische Datenträger oder sonstige computerlesbare Datenträger. In einigen Beispielen kann ein Erzeugnis ein oder mehrere computerlesbare(s) Speichermedium/-medien einschließen.
  • In einigen Beispielen kann ein computerlesbares Speichermedium ein nichtflüchtiges Medium einschließen. Der Begriff „nichtflüchtig“ kann anzeigen, dass das Speichermedium nicht in einer Trägerwelle oder einem sich ausbreitenden Signal ausgeführt ist. In bestimmten Beispielen kann ein nichtflüchtiges Speichermedium Daten speichern, die sich im Laufe der Zeit ändern können (z. B. im RAM oder Cache).

Claims (21)

  1. Verfahren, umfassend: Bestimmen, durch eine Steuerung (8) einer Vorrichtung (6), der Nutzung einer ersten nicht null betragenden Teilmenge einer Mehrzahl von Ressourcen (34-40,54) der Vorrichtung, wobei die Mehrzahl von Ressourcen entsprechend einer Thermometer-Datenstruktur zugeteilt bzw. freigegeben wird; Vergleichen (104), durch die Steuerung, der Nutzung der ersten nicht null betragenden Teilmenge der Mehrzahl von Ressourcen mit einem Schwellwert, der die erste nicht null betragende Teilmenge der Mehrzahl von Ressourcen gegen eine zweite nicht null betragende Teilmenge der Mehrzahl von Ressourcen abgrenzt; und Einschalten (108) der zweiten nicht null betragenden Teilmenge der Mehrzahl von Ressourcen basierend wenigstens auf dem Vergleich.
  2. Verfahren nach Anspruch 1, wobei die Vorrichtung eine Festkörperplatte (16) (Solid State Drive, SSD) umfasst und wobei die Mehrzahl von Ressourcen eines oder mehrere von Schreiben von Daten in einen bzw. Auslesen von Daten aus einem nichtflüchtigen Datenspeicher der SSD unterstützt.
  3. Verfahren nach Anspruch 1, ferner umfassend das Bestimmen, durch die Steuerung, der Nutzung der ersten nicht null betragenden Teilmenge der Mehrzahl von Ressourcen basierend auf wenigstens einer Analyse der Thermometer-Datenstruktur.
  4. Verfahren nach Anspruch 1, wobei die Thermometer-Datenstruktur jeweils ein Bit für jede der Mehrzahl von Ressourcen aufweist, wobei jedes der jeweiligen Bits anzeigt, ob die entsprechende eine der Mehrzahl von Ressourcen einer anfordernden Einheit zugeteilt ist oder für die Zuteilung zu einer anfordernden Einheit zur Verfügung steht.
  5. Verfahren nach Anspruch 4, ferner umfassend das Bestimmen der Nutzung der ersten nicht null betragenden Teilmenge der Mehrzahl von Ressourcen basierend auf wenigstens einer statistischen Analyse der jeweiligen Bits der Thermometer-Datenstruktur.
  6. Verfahren nach Anspruch 1, ferner umfassend, die Nutzung der ersten nicht null betragenden Teilmenge der Mehrzahl von Ressourcen in eine prognostizierte Nutzung zu übersetzen, die eine zu erwartende Anzahl der Mehrzahl von Ressourcen anzeigt, welche angefordert werden, wobei das Vergleichen der Nutzung der ersten nicht null betragenden Teilmenge der Mehrzahl von Ressourcen umfasst, die zu erwartende Anzahl der Mehrzahl von Ressourcen, die angefordert werden, mit dem Schwellwert zu vergleichen.
  7. Verfahren nach Anspruch 1, wobei jede der Mehrzahl von Ressourcen einen jeweiligen Datenspeicherplatz umfasst, wobei jeder der jeweiligen Datenspeicherplätze dieselbe Anzahl Bytes aufweist.
  8. Verfahren nach Anspruch 1, wobei jede der Mehrzahl von Ressourcen einen jeweiligen Fehlerprüf- und Korrektur (Error Checking And Correction, ECC) -Decodierer (40) umfasst, der dazu dient, die ECC-Decodierung bezogen auf ECC-codierte Daten durchzuführen, die in einen nichtflüchtigen Datenspeicher einer Festkörperplatte (16) geschrieben wurden.
  9. Verfahren nach Anspruch 1, wobei das Einschalten der zweiten nicht null betragenden Teilmenge der Mehrzahl von Ressourcen umfasst, die zweite nicht null betragende Teilmenge der Mehrzahl von Ressourcen einzuschalten (108), wenn die Nutzung gleich dem Schwellwert ist oder diesen übersteigt, und wobei das Verfahren ferner umfasst, die zweite nicht null betragende Teilmenge der Mehrzahl von Ressourcen auszuschalten (122), wenn die Nutzung niedriger als der Schwellwert ist.
  10. Verfahren nach Anspruch 1, ferner umfassend, den Schwellwert im Laufe der Zeit dynamisch auf verschiedene Werte einzustellen, um den Stromverbrauch zu kontrollieren.
  11. Vorrichtung (6), umfassend: einen oder mehrere Prozessor(en), der/die ausgelegt ist/sind zum Bestimmen der Nutzung einer ersten nicht null betragenden Teilmenge einer Mehrzahl von Ressourcen (34-40,54), wobei die Mehrzahl von Ressourcen entsprechend einer Thermometer-Datenstruktur zugeteilt bzw. freigegeben wird, zum Vergleichen (104) der Nutzung der ersten nicht null betragenden Teilmenge der Mehrzahl von Ressourcen mit einem Schwellwert, der die erste nicht null betragende Teilmenge der Mehrzahl von Ressourcen gegen eine zweite nicht null betragende Teilmenge der Mehrzahl von Ressourcen abgrenzt, und zum Einschalten (108) der zweiten nicht null betragenden Teilmenge der Mehrzahl von Ressourcen basierend wenigstens auf dem Vergleich; und einen Datenspeicher (12), der ausgelegt ist den Schwellwert zu speichern.
  12. Vorrichtung nach Anspruch 11, wobei die Vorrichtung eine Festkörperplatte (16) (Solid State Drive, SSD) umfasst und wobei die Mehrzahl von Ressourcen eines oder mehrere von Schreiben von Daten in einen bzw. Auslesen von Daten aus einem nichtflüchtigen Datenspeicher der SSD unterstützt.
  13. Vorrichtung nach Anspruch 11, wobei der eine oder die mehreren Prozessor(en) ausgelegt ist/sind zum Bestimmen der Nutzung der ersten nicht null betragenden Teilmenge der Mehrzahl von Ressourcen basierend auf wenigstens einer Analyse der Thermometer-Datenstruktur.
  14. Vorrichtung nach Anspruch 11, wobei die Thermometer-Datenstruktur jeweils ein Bit für jede der Mehrzahl von Ressourcen aufweist, wobei jedes der jeweiligen Bits anzeigt, ob die entsprechende eine der Mehrzahl von Ressourcen einer anfordernden Einheit zugeteilt ist oder für die Zuteilung zu einer anfordernden Einheit zur Verfügung steht.
  15. Vorrichtung nach Anspruch 14, wobei der eine oder die mehreren Prozessor(en) ausgelegt ist/sind zum Bestimmen der Nutzung der ersten nicht null betragenden Teilmenge der Mehrzahl von Ressourcen basierend auf wenigstens einer statistischen Analyse der jeweiligen Bits der Thermometer-Datenstruktur.
  16. Vorrichtung nach Anspruch 11, wobei der eine oder die mehreren Prozessor(en) ausgelegt ist/sind, die Nutzung der ersten nicht null betragenden Teilmenge der Mehrzahl von Ressourcen in eine prognostizierte Nutzung zu übersetzen, die eine zu erwartende Anzahl der Mehrzahl von Ressourcen anzeigt, welche angefordert werden, und wobei der eine oder die mehreren Prozessor(en) ausgelegt ist/sind, die zu erwartende Anzahl der Mehrzahl von Ressourcen, die angefordert werden, mit dem Schwellwert zu vergleichen.
  17. Vorrichtung nach Anspruch 11, wobei jede der Mehrzahl von Ressourcen einen jeweiligen Datenspeicherplatz umfasst, wobei jeder der jeweiligen Datenspeicherplätze dieselbe Anzahl Bytes aufweist.
  18. Vorrichtung nach Anspruch 11, wobei jede der Mehrzahl von Ressourcen einen jeweiligen Fehlerprüf- und Korrektur (Error Checking And Correction, ECC) -Decodierer (40) umfasst, der dazu dient, die ECC-Decodierung bezogen auf ECC-codierte Daten durchzuführen, die in einen nichtflüchtigen Datenspeicher einer Festkörperplatte (16) geschrieben wurden.
  19. Vorrichtung nach Anspruch 11, wobei der eine oder die mehreren Prozessor(en) ausgelegt ist/sind, die zweite nicht null betragende Teilmenge der Mehrzahl von Ressourcen einzuschalten (108), wenn die Nutzung gleich dem Schwellwert ist oder diesen übersteigt, und wobei der eine oder die mehreren Prozessor(en) ferner ausgelegt ist/sind, die zweite nicht null betragende Teilmenge der Mehrzahl von Ressourcen auszuschalten (122), wenn die Nutzung niedriger als der Schwellwert ist.
  20. Vorrichtung nach Anspruch 11, wobei der eine oder die mehreren Prozessor(en) ferner ausgelegt ist/sind, den Schwellwert im Laufe der Zeit dynamisch auf verschiedene Werte einzustellen, um den Stromverbrauch zu kontrollieren.
  21. Nichtflüchtiges, computerlesbares Speichermedium mit darauf gespeicherten Anweisungen, deren Ausführung einen oder mehrere Prozessor(en) veranlasst zum: Bestimmen der Nutzung einer ersten nicht null betragenden Teilmenge einer Mehrzahl von Ressourcen(34-40,54), wobei die Mehrzahl von Ressourcen entsprechend einer Thermometer-Datenstruktur zugeteilt bzw. freigegeben wird; Vergleichen (104) der Nutzung der ersten nicht null betragenden Teilmenge der Mehrzahl von Ressourcen mit einem Schwellwert, der die erste nicht null betragende Teilmenge der Mehrzahl von Ressourcen gegen eine zweite nicht null betragende Teilmenge der Mehrzahl von Ressourcen abgrenzt; und Einschalten (108) der zweiten nicht null betragenden Teilmenge der Mehrzahl von Ressourcen basierend wenigstens auf dem Vergleich.
DE102015014851.6A 2014-11-18 2015-11-16 Ressourcenzuteilung und -freigabe für die Energieverwaltung in Vorrichtungen Active DE102015014851B4 (de)

Applications Claiming Priority (2)

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

Publications (2)

Publication Number Publication Date
DE102015014851A1 DE102015014851A1 (de) 2016-05-19
DE102015014851B4 true DE102015014851B4 (de) 2020-07-09

Family

ID=55132624

Family Applications (1)

Application Number Title Priority Date Filing Date
DE102015014851.6A Active DE102015014851B4 (de) 2014-11-18 2015-11-16 Ressourcenzuteilung und -freigabe für die Energieverwaltung in Vorrichtungen

Country Status (10)

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

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
US11237617B2 (en) * 2018-12-31 2022-02-01 Micron Technology, Inc. Arbitration techniques for managed memory
US11687277B2 (en) 2018-12-31 2023-06-27 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
US11558259B2 (en) 2019-12-27 2023-01-17 Arteris, Inc. System and method for generating and using physical roadmaps in network synthesis
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)
US10990724B1 (en) 2019-12-27 2021-04-27 Arteris, Inc. System and method for incremental topology synthesis of a network-on-chip
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
US11693472B2 (en) 2021-08-31 2023-07-04 Apple Inc. Multi-die power management in SoCs
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

Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20110060927A1 (en) 2009-09-09 2011-03-10 Fusion-Io, Inc. Apparatus, system, and method for power reduction in a storage device

Family Cites Families (26)

* 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 株式会社東芝 マルチコアプロセッサシステム
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

Patent Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20110060927A1 (en) 2009-09-09 2011-03-10 Fusion-Io, Inc. Apparatus, system, and method for power reduction in a storage device

Also Published As

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

Similar Documents

Publication Publication Date Title
DE102015014851B4 (de) Ressourcenzuteilung und -freigabe für die Energieverwaltung in Vorrichtungen
DE102017104150B4 (de) Abnutzungsausgleich in Speichervorrichtungen
DE112018000180T5 (de) System und verfahren zum adaptiven senden frühzeitiger beendigung unter verwendung eines steuerungsspeicherpuffers
DE112013003255B4 (de) Managementmechanismus für fehlerhafte Blöcke
DE102015012566A1 (de) Mehrlagenkonzept für logische speicherungsverwaltung
DE102020107659A1 (de) Zonenbildung für gezonte namensräume
DE102019116520A1 (de) Datenspeichersysteme und -verfahren für eine verbesserte datenumlagerung basierend auf lesepegelspannungen, die mit einer fehlerwiederherstellung verbunden sind
DE102017128939A1 (de) System und Verfahren zum dynamischen und adaptiven Zusammenführen von Interrupts
DE112018000233T5 (de) System und Verfahren zur Verarbeitung und Arbitrierung von Übermittlungs- und Beendigungswarteschlangen
DE102018105984A1 (de) Prioritätsbasierte interne Datenverschiebung
US10628081B2 (en) Managing internal command queues in solid state storage drives
JP7353934B2 (ja) メモリシステムおよび制御方法
DE112016003998T5 (de) Technologien für das management eines reservierten hochleistungsspeicherbereichs eines solid-state-laufwerks
DE112020001937T5 (de) Vorausschauender datenvorabruf in einer datenspeicher-vorrichtung
US20200409855A1 (en) Management of Programming Mode Transitions to Accommodate a Constant Size of Data Transfer between a Host System and a Memory Sub-System
CN111065997A (zh) 用于存储介质的协同数据迁移
CN115905057A (zh) 存储器装置中用于媒体管理命令的高效缓冲器管理
DE102022101607A1 (de) Verwaltung der hostspeicherpufferzuweisung
DE102021117355A1 (de) SSD-verwaltete Host-Schreib-Atomizität mit beliebiger Übertragungslänge
US20170003890A1 (en) Device, program, recording medium, and method for extending service life of memory
US10963385B2 (en) Method and apparatus for performing pipeline-based accessing management in a storage server with aid of caching metadata with cache module which is hardware pipeline module during processing object write command
DE102020116192A1 (de) Nand-detektion und -wiederherstellung eines verworfenen befehls
DE102020116190A1 (de) Slc-/qlc-doppelprogrammierung und ressourcenfreigabe
US10872015B2 (en) Data storage system with strategic contention avoidance
CN115427926A (zh) 维持存储器子系统的队列

Legal Events

Date Code Title Description
R082 Change of representative

Representative=s name: MEWBURN ELLIS LLP, DE

R012 Request for examination validly filed
R081 Change of applicant/patentee

Owner name: WESTERN DIGITAL TECHNOLOGIES, INC. (N.D.GES.D., US

Free format text: FORMER OWNER: HGST NETHERLANDS B.V., AMSTERDAM, NL

R082 Change of representative

Representative=s name: MEWBURN ELLIS LLP, DE

R016 Response to examination communication
R018 Grant decision by examination section/examining division
R020 Patent grant now final