DE102020118005A1 - Verfahren und einrichtung zum dynamischen drosseln von rechenengines - Google Patents

Verfahren und einrichtung zum dynamischen drosseln von rechenengines Download PDF

Info

Publication number
DE102020118005A1
DE102020118005A1 DE102020118005.5A DE102020118005A DE102020118005A1 DE 102020118005 A1 DE102020118005 A1 DE 102020118005A1 DE 102020118005 A DE102020118005 A DE 102020118005A DE 102020118005 A1 DE102020118005 A1 DE 102020118005A1
Authority
DE
Germany
Prior art keywords
performance
power
request
throttle
computing engines
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.)
Pending
Application number
DE102020118005.5A
Other languages
English (en)
Inventor
Israel Diamand
Avital Paz
Eran Nevet
Zigi Walter
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.)
Intel Corp
Original Assignee
Intel Corp
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 Intel Corp filed Critical Intel Corp
Publication of DE102020118005A1 publication Critical patent/DE102020118005A1/de
Pending legal-status Critical Current

Links

Images

Classifications

    • 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/324Power saving characterised by the action undertaken by lowering clock frequency
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F1/00Details not covered by groups G06F3/00 - G06F13/00 and G06F21/00
    • G06F1/04Generating or distributing clock signals or signals derived directly therefrom
    • G06F1/08Clock generators with changeable or programmable clock frequency
    • 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
    • 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)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Power Sources (AREA)

Abstract

Es werden Verfahren und Einrichtungen zum dynamischen Drosseln von Rechen-Engines offenbart. Eine offenbarte Beispieleinrichtung enthält eine oder mehrere Rechen-Engines zum Ausführen von Berechnungen, wobei die eine oder die mehreren Rechen-Engines dazu dienen zu veranlassen, dass eine Gesamtleistungsanforderung basierend auf den Berechnungen ausgegeben wird. Die Beispieleinrichtung enthält außerdem eine Leistungsmanagementeinheit zum Empfangen der Gesamtleistungsanforderung und Antworten auf die Gesamtleistungsanforderung. Die Einrichtung enthält außerdem einen Drosselmanager zum Anpassen einer Drosselgeschwindigkeit wenigstens einer aus der einen oder den mehreren Rechen-Engines basierend auf dem Vergleichen eines Minimums der Leistungsanforderung und einer genehmigten Leistung mit einer gesamten genutzten Leistung der einen oder mehreren Rechen-Engines, bevor die Leistungsmanagementeinheit auf die Gesamtleistungsanforderung antwortet.

Description

  • GEBIET DER OFFENBARUNG
  • Diese Offenbarung bezieht sich allgemein auf Rechen-Engine-Leistungsmanagement und insbesondere auf Verfahren und Einrichtungen zum dynamischen Drosseln von Rechen-Engines.
  • HINTERGRUND
  • In den letzten Jahren sind Rechen-Engines oder Kerne zugeordneter Mikroprozessoren eingesetzt worden, um zahlreiche parallele Berechnungsoperationen auszuführen. Insbesondere können diese Operationen zu Anwendungen für maschinelles Lernen und künstliche Intelligenz (AI) gehören und werden typischerweise auf mehreren Rechen-Engines (d. h. Verarbeitungskernen) als parallele Rechen-Threads ausgeführt.
  • Hinsichtlich des Leistungsbedarfs zum Ausführen der vorstehend genannten Berechnungen kann eine Rechen-Engine eine Leistungsanforderung (z. B. eine Lizenzanforderung, eine Leistungslizenzanforderung) zu einer Leistungsmanagementeinheit eines Mikroprozessors senden, so dass ausreichend Strom für die anfordernde Rechen-Engine zur Verfügung gestellt werden kann. Die Leistungsmanagementeinheit wiederum kann die Leistungsanforderung basierend auf einem gewünschten Energieverbrauch, der Verfügbarkeit der Leistung und/oder thermischen Erwägungen genehmigen oder zurückweisen.
  • Figurenliste
    • 1 ist eine schematische Darstellung eines beispielhaften verteilten Berechnungssystems, in dem hier offenbarte Beispiele implementiert sein können.
    • 2 stellt ein beispielhaftes Drosselungssystem in Übereinstimmung mit Lehren dieser Offenbarung dar.
    • 3A stellt eine Beispielimplementierung ohne aktiviertes Drosseln dar.
    • 3B stellt die Beispielimplementierung von 3A mit aktiviertem Drosseln dar.
    • 4 stellt ein/e beispielhafte/s Drosselungsprotokoll und/oder -sequenz dar, das/die in hier offenbarten Beispielen implementiert sein kann.
    • 5 ist ein Ablaufplan, der für maschinenlesbare Anweisungen, die ausgeführt werden können, um das beispielhafte Drosselungssystem von 2 zu implementieren, repräsentativ ist.
    • 6 stellt den Betrieb eines beispielhaften Leistungspegelrechners des Drosselungssystems von 2 dar.
    • 7 stellt eine schematische Übersicht einer Leistungspegelumsetzung dar, die in hier offenbarten Beispielen implementiert sein kann.
    • 8 stellt einen Beispielprozess zum Umsetzen einer Leistung in eine Repräsentation der Leistung dar.
    • 9 ist ein Blockdiagramm einer beispielhaften Verarbeitungsplattform, die strukturiert ist, die Anweisungen von 5 auszuführen, um das beispielhafte Drosselungssystem von 2 zu implementieren.
  • Die Figuren sind nicht maßstabsgerecht. Vielmehr kann die Dicke der Schichten oder Gebiete in den Zeichnungen vergrößert sein. Im Allgemeinen werden die gleichen Bezugszeichen durchgehend durch die Zeichnung(en) und begleitenden schriftlichen Beschreibung verwendet, um die gleichen oder ähnliche Teile zu referenzieren.
  • Die Deskriptoren „erster“, „zweiter“, „dritter“ usw. sind hier verwendet, wenn mehrere Elemente oder Komponenten, auf die separat Bezug genommen werden kann, identifiziert werden. Sofern nicht anderweitig spezifiziert oder basierend auf dem Kontext ihrer Verwendung verstanden wird, sind solche Deskriptoren nicht dafür vorgesehen, irgendeine Bedeutung einer Priorität, physikalischen Reihenfolge oder Anordnung in einer Liste oder zeitlichen Reihenfolge zuzuschreiben, sondern sind lediglich als Kennzeichnungen zum separaten Referenzieren mehrerer Elemente oder Komponenten zur Erleichterung des Verstehens der offenbarten Beispiele verwendet. In einigen Beispielen kann der Deskriptor „erstes“ verwendet sein, um ein Element in der ausführlichen Beschreibung zu referenzieren, während dasselbe Element in einem Anspruch mit einem unterschiedlichen Deskriptor wie z. B. „zweites“ oder „drittes“ referenziert sein kann. In solchen Fällen ist zu verstehen, dass solche Deskriptoren lediglich zur Erleichterung des Referenzierens auf mehrere Elemente oder Komponenten verwendet sind.
  • Ausführliche Beschreibung
  • Verfahren und Einrichtungen zum dynamischen Drosseln von Rechen-Engines sind offenbart. In einigen bekannten Systemen sendet, damit eine Rechen-Engine oder ein Verarbeitungskern eines Mikroprozessors (z. B. eine zentrale Verarbeitungseinheit (CPU)) Berechnungen ausführen kann, die Rechen-Engine eine Lizenzleistungsanforderung zu einer Leistungsmanagementeinheit des Mikroprozessors, damit ausreichend Strom für die Rechen-Engine bereitgestellt wird. In Reaktion darauf kann die Leistungsmanagementeinheit die Leistungsanforderung basierend auf einem gewünschten Energieverbrauch, der Verfügbarkeit der Leistung und/oder thermischen Erwägungen genehmigen oder zurückweisen. Dementsprechend kann der Prozess zum Senden, Empfangen, Verarbeiten und Verteilung der Leistungsanforderung eine relativ lange Zeitspanne bedingen. Als ein Ergebnis dieser relativ langen Zeitspanne kann die Rechen-Engine übermäßigem Energieverbrauch und/oder unerwünschter thermischer Aktivität ausgesetzt sein.
  • Hier offenbarte Beispiele ermöglichen relativ schnelles Drosseln von Mikroprozessor-Rechen-Engines (z. B. Rechen-Engines für künstliche Intelligenz, Rechenkerne) und ermöglichen dadurch sowohl effektives Leistungsmanagement, Stromschutz als auch Steuerung der thermischen Leistung. Das Drosseln kann ausgeführt werden, während eine Leistungsanforderung (z. B. eine Lizenzleistungsanforderung), die für eine Leistungsmanagementeinheit vorgesehen ist, verarbeitet wird. Als ein Ergebnis können die entsprechenden Rechen-Engines gedrosselt werden, bevor eine Lizenzanforderungsantwort zu einer anfordernden Rechen-Engine zurück gesendet wird (z. B. gleichzeitig mit dem Verarbeiten der Leistungsanforderung). Mit anderen Worten ermöglichen hier offenbarte Beispiele dynamisches Drosseln der Rechen-Engines und können somit die Gesamtleistung und Zuverlässigkeit eines Mikroprozessors dadurch verbessern, dass sie ermöglichen, dass Rechen-Kerne/-Engines unabhängig von einem Leistungsanforderungsüberprüfungsprozess gedrosselt werden. Hier offenbarte Beispiele können außerdem Stromschutz der Rechen-Engines durch Verhindern, dass ihnen eine übermäßige Strommenge zugeführt wird, ermöglichen.
  • Gemäß hier offenbarten Beispielen berechnet ein Leistungspegelrechner eine Gesamtleistungsanforderung, die einer oder mehreren Rechen-Engines entspricht. Die Gesamtleistungsanforderung wird wiederum für die vorstehend genannte Leistungsmanagementeinheit bereitgestellt, so dass die Leistungsmanagementeinheit die Gesamtleistungsanforderung bestätigen oder ablehnen kann. Bevor die Leistungsmanagementeinheit auf die Leistungsanforderung antwortet, drosselt ein Drosselungsmanager die Rechen-Engine(s) für ein gewünschtes Niveau der Leistungsnutzung basierend auf einem Vergleich eines Minimums der Leistungsanforderung und einem garantierten Leistungspegel (z. B. einen vorher durch die Leistungsmanagementeinheit genehmigten Leistungspegel) auf eine gesamte genutzt Leistung der Rechen-Engine(e), so dass entsprechende Taktgeschwindigkeiten der Rechen-Engine(s) schnell angepasst werden können, um Fehlfunktionen und/oder nicht korrekten Betrieb zu verhindern. Ferner können in Beispielen mit mehreren Rechen-Engines die Rechen-Engines gleichzeitig gedrosselt werden (z. B. auf denselben Leistungspegel), um die Rechen-Engines insgesamt genauer zu steuern.
  • In einigen Beispielen wird das Drosseln der Rechen-Engine(en) verhindert, falls die Leistungsanforderung kleiner als der oder gleich dem genehmigten Leistungspegel ist (z. B. eine minimaler oder maximaler vorher genehmigter Leistungspegel). In einigen Beispielen berechnet der Leistungspegelrechner die Leistungsanforderung basierend auf individuellen Leistungsbedürfnissen der Rechen-Engine(s). In einigen Beispielen werden die Rechen-Engine(s) basierend auf einem Drosselverhältnis, das durch Teilen des genehmigten Leistungspegels durch die Leistungsanforderung berechnet wird, gedrosselt. Zusätzlich oder alternativ wird ein/e Hysterese-Mechanismus, Vorrichtung und/oder Analyse verwendet, um zu bestimmen, ob die Leistungsanforderung zu der Leistungsmanagementeinheit weitergeleitet wird, basierend auf einem Grad der Ähnlichkeit zwischen der Leistungsanforderung und vorher genehmigten Leistungspegel(n).
  • Wie sie hier verwendet sind, beziehen sich die Begriffe „Rechen-Engine“ und „Inferenz-Rechen-Engine“ auf einen Computer-Verarbeitungskern und/oder einen Rechen-Engine-Kern, der Teil eines Mehrkernprozessors, eines Mehrprozessorsystems und/oder eines verteilten Berechnungssystems sein kann. Wie sie hier verwendet sind, beziehen sich die Begriffe „Leistungsanforderung“, „Gesamtleistungsanforderung“, „Leistungslizenz“ und „Leistungslizenzanforderung“ auf eine Anforderungen für eine/n bereitgestellten Strom und/oder Leistung für eine entsprechende Rechen-Engine, einen Prozessor, einen Mehrkernprozessor und/oder einen Verarbeitungskern. Wie sie hier verwendet sind, beziehen sich die Begriffe „genehmigter Leistungspegel“ und „genehmigte Leistung“ auf eine bestätigte Leistungskonfiguration, die durch einen Wert, einen Bereich und/oder eine Repräsentation (z. B. eine Leistungspegelnummer, einen Leistungspegelindikator usw.) definiert sein kann.
  • 1 ist eine schematische Darstellung eines beispielhaften verteilten Berechnungssystems 100, in dem hier offenbarte Beispiele implementiert sein können. Das verteilte Berechnungssystem 100 des dargestellten Beispiels enthält ein Beispielnetz 102, das mit einem beispielhaften Arbeitsplatzrechner 104 (nachstehend 104a, 104b usw.) kommunikationstechnisch gekoppelt ist. Ferner ist das Beispielnetz 102 mit einem Computer-Knoten 106 kommunikationstechnisch gekoppelt, der wiederum mehrere Beispiel-Server 108 (nachstehend 108a, 108b, 108c usw.) enthält. In diesem Beispiel enthalten die Server 108a, 108b, 108c jeweils wenigstens einen Berechnungsabschnitt (z. B. eine Computer-Hauptplatine, eine modulare Recheneinheit, einen Rechenbereich usw.) 110. Der Berechnungsabschnitt 110 kann als ein Prozessorknoten, eine Platine, eine Hauptplatine, eine verdrahtete Schaltung usw. des jeweiligen Servers 108 implementiert sein.
  • Der Berechnungsabschnitt 110 des dargestellten Beispiels enthält Systemspeicher 112, einen Host-Prozessor 114 und wenigstens einen Beschleuniger (z. B. eine Beschleunigerplatine, eine modulare Beschleunigerplatine, einen Beschleunigerbereich usw.) 116 (nachstehend 116a, 116b, 116c usw.). In diesem Beispiel enthält jeder der Beschleuniger 116 eine Lern-Engine 120, eine Drossel-Engine 122, Speicher (z. B. lokalen Speicher) 124, eine Speichermanagementeinheit (MMU) 126, einen digitalen Signalprozessor (DSP) 128 und eine Steuereinheit (z. B. eine lokale Steuereinheit) 130. Die beispielhafte Hardware und Netztopologie ist nur ein Beispiel, und irgendeine geeignete Hardware und Netztopologie können stattdessen implementiert sein.
  • Im Betrieb sind die beispielhaften Beschleuniger 116a, 116b, 116c zum Behandeln von Berechnungsaufgaben, die sich auf Anwendungen für künstliche Intelligenz (AI) (z. B. maschinelles Lernen, tiefes Lernen, neuronale Netze, tiefe neuronale Netze, rekurrente neuronale Netze usw.) beziehen. Die Beschleuniger 116a, 116b, 116c können jedoch für irgendwelche anderen geeigneten Berechnungsaufgaben implementiert sein. In dem dargestellten Beispiel nutzt der Host-Prozessor 114 den Systemspeicher 112, um die Verwendung der Beschleuniger 116a, 116b, 116c zu managen oder zu leiten. Insbesondere managt der Host-Prozessor 114 Berechnungsaufgaben, die durch jeden der Beschleuniger 116a, 116b, 116c auszuführen sind. Insbesondere weist der Host-Prozessor 114 einzelnen Beschleunigern 116a, 116b, 116c basierend auf Arbeitslastverteilungsanweisungen Berechnungsaufgaben zu, entlädt sie zu ihnen oder leitet sie zu ihnen weiter.
  • Um die vorstehend genannten Berechnungsaufgaben wie z. B. maschinelles Lernen über mehrere Schichten usw. auszuführen, enthalten die Beschleuniger 116a, 116b, 116c die Lern-Engine 120. In dem dargestellten Beispiel steuert die Drossel-Engine 122 die Geschwindigkeiten (z. B. Taktgeschwindigkeiten usw.) von Berechnungskernen der Lern-Engine 120. In diesem Beispiel wird der Speicher 124 durch die MMU 126 gemanagt und von mehreren Komponenten/Vorrichtungen des entsprechenden Beschleunigers 116 genutzt. Ferner wird der Beispiel-DSP 128 verwendet, um Signale zu verarbeiten wie z. B. Operationen, die mit der Lern-Engine 120 zusammenfallen, und/oder irgendeine andere geeignete Signalverarbeitung (z. B. Filtern von Signalen, Messen von Signalen, Komprimieren von Signalen usw.), die durch den Beschleuniger 116 auszuführen ist. In diesem Beispiel koordiniert die Steuereinheit 130 Aufgaben zwischen dem Host-Prozessor 114, der Lern-Engine 120, der Drossel-Engine 122 und/oder der MMU 126. Es kann jedoch stattdessen irgendeine andere geeignete Hardware-Architektur eingesetzt sein.
  • 2 stellt ein beispielhaftes Drosselungssystem 200 in Übereinstimmung mit Lehren dieser Offenbarung dar. Das beispielhafte Drosselungssystem 200 kann in dem Berechnungsabschnitt 110, der Lern-Engine 120, der Drossel-Engine 122 und/oder den Beschleunigern 116a, 116b, 116c von 1 implementiert sein. Das Drosselungssystem 200 des dargestellten Beispiels enthält Inferenz-Rechen-Engines (ICEs) 202 (nachstehend 202a, 202b usw.), die in 1 als „ICEO“ und „ICE1“ bezeichnet sind. Insbesondere weisen die ICEs 202a, 202b des dargestellten Beispiels jeweilige Taktgeschwindigkeiten auf, die durch hier offenbarte Beispiele gemanagt und dynamisch angepasst werden. Das beispielhafte Drosselungssystem 200 enthält außerdem ICE-Schnittstellen (z. B. ein vorderseitiges Modul (FSM), ICE-Drosselsteuereinheiten usw.) 204 (nachstehend 204a, 204b usw.), die den jeweiligen ICEs 202a, 202b entsprechen. Ferner enthält das Drosselungssystem 200 einen Leistungspegelrechner 206 und eine Drosselanpassungseinheit (z. B. einen Beschleuniger auf kohärentem Fabric (ACF)) 208. Die beispielhafte Drosselanpassungseinheit 208 enthält einen Drosselrechner 210 und eine Drosselsteuereinheit 212, die eine dynamische Taktfrequenz und einen Phasenregelschleifen- (PLL-) Takt enthält. Das Drosselungssystem 200 enthält außerdem einen Leistungspegelumsetzer 214, eine Pegelanforderungseinheit 216, einen Hystereseanalysator 218 und eine Leistungsmanagementeinheit 220, die in 2 als eine „Punit“ bezeichnet ist.
  • Um Rechnungen und/oder Berechnungen auszuführen, werden die ICEs 202a, 202b des dargestellten Beispiels mit Leistung aus einer Stromquelle versorgt. Die Leistung, die aus der Stromquelle für die ICEs 202a, 202b bereitgestellt wird, wird durch die Leistungsmanagementeinheit 220 gemanagt und/oder reguliert, um Beschädigung zu vermeiden und übermäßige Leistungsnutzung zu reduzieren. In diesem Beispiel sind die ICEs 202a, 202b als Berechnungskerne (z. B. Kerne eines Mehrkernprozessors und/oder Systems) implementiert und ziehen Strom, wenn sie Mehr-Thread-Berechnungen ausführen. Insbesondere sind die ICEs 202a, 202b des dargestellten Beispiels als Berechnungskerne für tiefes Lernen für Beschleuniger für künstliche Intelligenz (AI) implementiert und arbeiten in Abstimmung zusammen. Die ICEs 202a, 202b können jedoch für irgendeine geeignete Anwendung implementiert sein, die sich auf maschinelles Lernen beziehen kann oder nicht.
  • Um eine Schnittstelle der ICEs 202a, 202b mit der Leistungsmanagement 202 zu bilden, stellen die jeweiligen Schnittstellen 204a, 204b einen Kommunikationspfad zwischen ihnen bereit oder definieren ihn. In dem dargestellten Beispiel erzeugen und/oder formatieren die Schnittstellen 204a, 204b Daten, die Leistungsanforderungen zugeordnet sind, und/oder leiten sie von den individuellen ICEs 202a, 202b zu der Leistungsmanagementeinheit 220 weiter. In diesem Beispiel stellen die Schnittstellen 204a, 204b erste und zweite Leistungsanforderungen (z. B. Leistungslizenzanforderungen) für den Leistungspegelrechner 206 bereit.
  • Um eine kombinierte Gesamtleistungsanforderung der ICEs 202a, 202b zu berechnen, empfängt der Leistungspegelrechner 206 des dargestellten Beispiels jeweils erste und zweite Leistungsanforderungen von den ICEs 202a, 202b und berechnet wiederum eine aggregierte Gesamtleistungsanforderung (z. B. eine summierte Leistungsanforderung usw.) basierend auf den ersten und zweiten Leistungsanforderungen. In einigen Beispielen werden die ersten und zweiten Leistungsanforderungen summiert. Alternativ werden die ersten und zweiten Leistungsanforderungen als Leistungspegel (z. B. ganzzahlbasierte Leistungspegel usw.) summiert. In diesem Beispiel berechnet der Leistungspegelrechner 206 die vorstehend genannte Gesamtleistungsanforderung basierend auf dem Empfangen der ersten und zweiten Leistungsanforderungen innerhalb einer vordefinierten Zeitspanne. Mit anderen Worten berechnet der Leistungspegelrechner 206 die Gesamtleistungsanforderung, wenn die ersten und zweiten Leistungsanforderungen innerhalb der vordefinierten Zeitspanne oder innerhalb einer notwendigen Zeitdifferenz voneinander empfangen werden. In einigen anderen Beispielen werden die ersten und zweiten Leistungsanforderungen gewichtet, und die Gesamtleistungsanforderung wird basierend auf dem unterschiedlichen Gewichten der ICEs 202a, 202b berechnet. Das Gewichten kann auf der Priorität der ICEs 202a, 202b und/oder Prioritäten, die auszuführenden Berechnungsaufgaben zugeordnet sind, basieren.
  • In diesem Beispiel bestimmt der Leistungspegelrechner 206 außerdem eine Gesamtleistungsnutzung (z. B. eine aktuelle Leistungsnutzung, eine momentane Leistungsnutzung, einen aktuellen Leistungsverlust oder -bezug usw.) der ICEs 202a, 202b. In dem dargestellten Beispiel repräsentiert die Gesamtleistungsnutzung einen derzeitigen momentanen Leistungsbezug und/oder einen Leistungsbezug innerhalb einer notwendigen Zeitspanne (z. B. innerhalb einer vordefinierten Zeitspanne oder Abtastzeitspanne, momentan). In einigen Beispielen berechnet der Leistungspegelrechner 206 die Gesamtleistungsnutzung und/oder die Gesamtleistungsanforderung bezüglich einer dynamischen Kapazität (Cdyn), die eine Repräsentation einer Menge und/oder Größe der Hardware ist, die beispielsweise derzeit durch die ICEs 202a, 202b und/oder den Beschleuniger 116 benutzt wird.
  • In dem dargestellten Beispiel setzt der beispielhafte Pegelumsetzer 214, um die Gesamtleistungsanforderung in eine einzige Anforderung, einen Leistungspegel und/oder Leistungswert (z. B. eine numerische Leistungseinstellung) umzusetzen, die Gesamtleistungsanforderung aus dem Leistungspegelrechner 206 in einen angeforderten Leistungspegel (z. B. einen ganzzahligen Leistungspegel, eine Repräsentation der Leistung, eine Repräsentation des Leistungsbereichs usw.) um. In Beispielen, in denen die Gesamtleistungsanforderung durch einen Leistungspegel repräsentiert ist, kann der Leistungspegel einen Leistungsbereich umfassen, der linear oder nichtlinear sein kann. In einigen Beispielen wird die Gesamtleistungsanforderung als ein Pegel oder Wert der dynamischen Kapazität (Cdyn) weitergeleitet. Zusätzlich oder alternativ werden Tabellen durch den Pegelumsetzer 214 verwendet, so dass ein Nachschlagen in einer Tabelle ausgeführt werden kann, um Leistungswerte oder -bereiche in Leistungspegel umzusetzen, oder umgekehrt, wie nachstehend in Verbindung mit den 7 und 8 gezeigt ist.
  • In einigen Beispielen leitet die Pegelanforderungseinheit 216 den angeforderten Leistungspegel zu der Leistungsmanagementeinheit 220 weiter. In einigen solcher Beispiele wird der angeforderte Leistungspegel zu der Leistungsmanagementeinheit 220 als ein ganzzahliger Wert und/oder eine Ganzzahl, die eine Leistungsausgabe und/oder einen Leistungsausgabemodus wenigstens einer der ICEs 202a, 202b repräsentiert, weitergeleitet. In einigen Beispielen wird der angeforderte Leistungspegel nicht gesendet, falls der angefordert Pegel gleich dem oder kleiner als der genehmigte Leistungspegel ist.
  • Um einen Grad zu berechnen, bis zu dem eine oder mehrere Taktgeschwindigkeiten der ICEs 202a, 202b anzupassen sind, während eine Leistungsanforderung von den ICEs 202a, 202b zu der Leistungsmanagement 220 weitergeleitet oder durch sie verarbeitet wird, bestimmt der Drosselrechner 210 des dargestellten Beispiels, ob eine Gesamtmenge der Leistung, die durch die ICEs 202a, 202b genutzt wird, eine Leistungsmenge (z. B. eine maximale Leistungsmenge) übersteigt, die vorher durch die Leistungsmanagementeinheit 220 genehmigt wurde. Zusätzlich oder alternativ wird die Leistungsanforderung mit der Gesamtmenge der Leistung, die durch die ICEs 202a, 202b genutzt wird, verglichen. In diesem Beispiel werden, falls die Gesamtmenge der Leistung, die durch die ICEs 202a, 202b genutzt wird, ein Minimum der vorher genehmigten Leistung und die angeforderte Leistung übersteigt, die ICEs 202a, 202b basierend auf einem Drosselverhältnis gedrosselt. Beispielsweise kann dieses Drosselverhältnis einen prozentualen Anteil und/oder ein Verhältnis einer maximalen Taktgeschwindigkeit (z. B. 0,2, 0,50, 0,75, 1,0 usw. der maximalen Taktgeschwindigkeit oder höchsten zugewiesenen Taktgeschwindigkeit) der ICEs 202a, 202b angeben. In einigen Beispielen wird das Drosselverhältnis durch Teilen der maximal zulässigen Leistung durch die Gesamtmenge der Leistung, die durch die ICEs 202a, 202b genutzt wird, berechnet. Es kann jedoch irgendeine geeignete Berechnungs- und/oder Anpassungstechnologie stattdessen implementiert sein. In einigen Beispielen empfängt der Drosselrechner 210 eine zulässige dynamische Kapazität (z. B. eine maximale zulässige dynamische Kapazität), die benutzt wird, um einen Grad zu definieren, bis zu dem die ICEs 202a, 202b zu drosseln sind.
  • In dem dargestellten Beispiel steuert die Drosselsteuereinheit 212 die Taktgeschwindigkeit der ICEs 202a, 202b. Insbesondere lenkt die beispielhafte Drosselsteuereinheit 212 das Drosseln beider ICEs 202a, 202b in Abstimmung (z. B. gleichzeitig) durch Bereitstellen einer/einer einzigen Taktgeschwindigkeitsanweisung/befehls (z. B. eines Geschwindigkeitsbefehls, eines Drosselbefehls usw.) für beide ICEs 202a, 202b, die wiederum ihre jeweiligen Taktgeschwindigkeiten dementsprechend anpassen. Mit anderen Worten wird in diesem Beispiel den ICEs 202a, 202b die gleiche Taktgeschwindigkeit und/oder das gleiche Drosselverhältnis vorgeschrieben und/oder angewiesen, In einigen anderen Beispielen steuert die Drosselsteuereinheit 212 jedoch die Taktgeschwindigkeiten der ICEs 202a, 202b auf unterschiedliche Werte.
  • In einigen Beispielen wird ein Hystereseanalysator 218 verwendet, um eine Differenz zwischen der Leistungsanforderung und einem vorher genehmigten Leistungspegel (z. B. genehmigten Leistungswertebereich, genehmigten Leistungswert usw.), der durch die Leistungsmanagementeinheit 220 ausgegeben ist, zu analysieren und/oder zu verifizieren. Insbesondere kann der Hystereseanalysator 218 verwendet werden, um zu bestimmen, ob eine relativ neue Leistungsanforderung von der Pegelanforderungseinheit 216 ausreichend nahe dem (z. B. niedriger als der) genehmigten Leistungspegel ist, so dass die Leistungsanforderung nicht zu der Leistungsmanagementeinheit 220 weitergeleitet werden muss. Als ein Ergebnis kann der beispielhafte Hystereseanalysator 218 das Senden der Leistungsanforderung(en) zu der Leistungsmanagementeinheit 220 verzögern oder verhindern, bis die Leistungsanforderung(en) für eine gewünschte Zeitdauer stabil sind. Obwohl in dem Beispiel von 2 zwei der ICEs 202 gezeigt sind, kann stattdessen irgendeine geeignete Anzahl von ICEs 292 implementiert sein (z. B. eine, drei, fünf, zehn, fünfzig, einhundert usw.).
  • 3A stellt eine Implementierung 300 dar, in der Leistungsanforderungen (z. B. Leistungslizenzanforderungen) zu der Leistungsmanagementeinheit 220 gesendet werden, während die Drosselanpassungseinheit 208 deaktiviert ist oder verhindert wird, dass sie eine oder mehrere der ICEs 202a, 202b in diesem Beispiel drosselt. In diesem Beispiel wird verhindert, dass die Drosselanpassungseinheit 208 die ICEs 202a, 202b drosselt, wenn durch den Leistungspegelrechner 206 und/oder den Drosselrechner 210 bestimmt wird, dass eine Leistungsanforderung kleiner ist als ein Schwellenwert. Wie in der dargestellten Ansicht von 3A zu sehen ist, sind die ICEs 202a, 202b mit der Leistungsmanagementeinheit 220 kommunikationstechnisch gekoppelt und fordern bereitgestellte Leistung von ihr an. Insbesondere werden die Lizenzanforderungen (z. B. Leistungsanforderungen, Leistungslizenzanforderungen usw.) 301, 303, die jeweils einer der ICEs 202a, 202b entsprechen können, zu der Leistungsmanagementeinheit 220 über ein Zwischenglied 306 (z. B. eine Zwischenschaltung, eine diskrete Zwischenkomponente, Speicherabgebildete I/O (MMIO) usw.) und die Drosselanpassungseinheit 208 weitergeleitet. In diesem Beispiel definieren das Zwischenglied 306 und die Drosselanpassungseinheit 208 einen Kommunikations- und/oder Autorisierungs-Pfad zwischen den ICEs 202a, 202b und der Leistungsmanagementeinheit 220.
  • Wie vorstehend erwähnt senden die ICEs 202a, 202b eine Leistungsanforderung (z. B. eine Gesamtleistungsanforderung) zu der Leistungsmanagementeinheit 220 über einen Kommunikationspfad, der durch das Zwischenglied 306 und die Drosselanpassungseinheit 208 definiert ist. Die Leistungsmanagementeinheit 220 bestätigt oder verweigert wiederum die Leistungsanforderung über den Kommunikationspfad. Dementsprechend wird, wenn die Leistungsmanagementeinheit 220 die Leistungsanforderung bestätigt, die Bestätigung (z. B. Bestätigungsnachricht, Berechtigung(en), Lizenz usw.) dann über das Zwischenglied 306 und die Drosselanpassungseinheit 208 zurück zu den ICEs 202a, 202b gesendet. Wegen des Hin- und Zurück-Kommunikationspfads dazwischen und potentieller Verarbeitungszeit der Leistungsmanagementeinheit 220 kann die Zeit zum Verarbeiten der Leistungsanforderung signifikant sein.
  • 3B stellt die Beispielimplementierung 300 dar, wenn Drosseln in Übereinstimmung mit den Lehren dieser Offenbarung aktiviert worden ist. In dem dargestellten Beispiel sind die ICEs 202a, 202b, die Leistungsmanagementeinheit 220, das Zwischenglied 306 und die Drosselanpassungseinheit 208 gezeigt.
  • Im Betrieb stellen die ICEs 202a, 202b eine kombinierte Leistungsanforderung für die Leistungsmanagementeinheit 220 bereit. Insbesondere wird die Leistungsanforderung durch die Leistungsmanagementeinheit 220 betätigt oder abgelehnt. Ähnlich der in 3A gezeigten Beispielkonfiguration kommuniziert die Leistungsmanagementeinheit 220 die Bestätigung oder Ablehnung der Leistungsanforderungen 301, 303 zu den ICEs 202a, 202b. In diesem Beispiel drosselt jedoch, während die Leistungsanforderungen 301, 303 gesendet oder durch die Leistungsmanagementeinheit 220 verarbeitet werden, die Drosselanpassungseinheit 208 die ICEs 202a, 202b, wie allgemein durch die Pfeile 316, 320 angegeben ist, und ermöglicht dadurch eine relativ schnelle Anpassung der ICEs 202a, 202b, während die Leistungsanforderung zur Bestätigung durch die Leistungsmanagementeinheit 220 verarbeitet wird. Als ein Ergebnis können die Taktgeschwindigkeiten der ICEs 202a, 202b schneller angepasst werden als die Zeit, die erforderlich ist, damit die Leistungsmanagementeinheit 220 die Leistungsanforderung verarbeitet und eine Antwort zu den ICEs 202a, 202b zurück gibt. Mit anderen Worten werden die ICEs 202a, 202b durch die Drosselanpassungseinheit 208 dynamisch gedrosselt.
  • 4 stellt ein/e beispielhafte/s Drosselungsprotokoll und/oder -sequenz dar, das/die in hier offenbarten Beispielen implementiert sein kann. In dem dargestellten Beispiel repräsentiert ein erstes Diagramm 402 Taktimpulse der ICE 202, ein zweites Diagramm 404 repräsentiert ein Validierungssignal, ein drittes Diagramm 406 repräsentiert Anpassungen (z. B. Drosselungsaktivierung, Leistungspegelanpassungen usw.) der ICE 202, und ein viertes Diagramm 408 repräsentiert ein Signal, das die Leistungsanforderungsbehandlung durch die Drosselanpassungseinheit 208 für die ICE 202 angibt.
  • Im Betrieb wird, sobald eine Leistungsanforderung von der ICE 202 validiert ist, wie allgemein durch ein Signal 412 angegeben ist, die Drosselanpassungseinheit 208 des dargestellten Beispiels aufgefordert, die Leistungsanforderung zu behandeln, wie allgemein durch einen Doppelpfeil 416 angegeben ist. Ferner wird die Leistungsanforderung verifiziert, um validiert und aktiv zu werden, so dass die Drosselanpassungseinheit 208 die Taktgeschwindigkeit der ICE 202 anpassen kann, während das Signal 412 aktiv ist, wie allgemein durch einen Pfeil 418 angegeben ist. Sobald das Signal 412 inaktiv ist, beendet die Drosselanpassungseinheit 208 das Drosseln der ICE 202, wie allgemein durch einen Pfeil 420 angegeben ist. Ferner gibt ein Pfeil 422 des dargestellten Beispiels inaktives Drosseln durch die Drosselanpassungseinheit 208 an, bis das Signal 412 aktiviert wird und das Drosseln durch die Drosselanpassungseinheit 208 angefordert worden ist.
  • Obwohl eine beispielhafte Art und Weise zum Implementieren des Drosselungssystems 200 von 2 in 2 dargestellt ist, können eines oder mehrere aus den Elementen, Prozessen und/oder Vorrichtungen, die in 2 dargestellt sind, kombiniert, aufgeteilt, umgeordnet, weggelassen, eliminiert und/oder auf andere Weise implementiert sein. Ferner können der beispielhafte Leistungspegelrechner 206, der beispielhafte Drosselrechner 210, die beispielhafte Drosselsteuereinheit 212, der beispielhafte Leistungspegelumsetzer 214, die beispielhafte Pegelanforderungseinheit 216, die beispielhafte Leistungsmanagementeinheit 220 und/oder allgemeiner das beispielhafte Drosselungssystem 200 von 2 durch Hardware, Software, Firmware und/oder irgendeine Kombination aus Hardware, Software und/oder Firmware implementiert sein. Somit könnte irgendeines aus dem beispielhaften Leistungspegelrechner 206, dem beispielhaften Drosselrechner 210, der beispielhaften Drosselsteuereinheit 212, dem beispielhaften Leistungspegelumsetzer 214, der beispielhaften Pegelanforderungseinheit 216, der beispielhaften Leistungsmanagementeinheit 220 und/oder allgemeiner dem beispielhaften Drosselungssystem 200 von 2 durch eine oder mehrere analoge oder digitale Schaltung(en), Logikschaltungen, programmierbare Prozessor(en), programmierbare Steuereinheit(en), Grafikverarbeitungseinheit(en) (GPU(s)), digitale Signalprozessor(en) (DSP(s)), anwendungsspezifische integrierte Schaltung(en) (ASIC(s)), programmierbare Logikvorrichtung(en) (PLD(s)) und/oder im Feld programmierbare Logikvorrichtung(en) (FPLD(s)) implementiert sein. Wenn irgendeiner der Einrichtungs- oder System-Ansprüche dieses Patents gelesen wird, um eine reine Software- und/oder Firmware-Implementierung abzudecken, ist/sind wenigstens eines aus dem beispielhaften Leistungspegelrechner 206, dem beispielhaften Drosselrechner 210, der beispielhaften Drosselsteuereinheit 212, dem beispielhaften Leistungspegelumsetzer 214, der beispielhaften Pegelanforderungseinheit 216 und/oder der beispielhaften Leistungsmanagementeinheit 220 hierdurch ausdrücklich so definiert, dass sie eine nicht-transitorische computerlesbare Speichervorrichtung oder eine Speicherplatte enthalten, wie z. B. einen Speicher, eine „Digital Versatile Disk“ (DVD), eine Compact-Disk (CD), eine Blu-Ray-Disk usw., die die Software und/oder die Firmware enthält. Des Weiteren kann das beispielhafte Drosselungssystem 200 von 2 ein oder mehrere Elemente, Prozesse und/oder Vorrichtungen zusätzlich zu den oder anstelle der in 2 dargestellten enthalten und/oder kann mehr als eines irgendeines der oder aller dargestellten Elemente, Prozesse und Vorrichtungen enthalten. Wie er hier verwendet ist, beinhaltet der Ausdruck „in Kommunikation“, einschließlich seiner Variationen, direkte Kommunikation und/oder indirekte Kommunikation über eine oder mehrere dazwischenliegende Komponenten und erfordert keine direkte physikalische (z. B. drahtgebundene) Kommunikation und/oder konstante Kommunikation, sondern enthält vielmehr zusätzlich selektive Kommunikation in periodischen Zeitabständen, geplanten Zeitabständen, aperiodischen Zeitabständen und/oder einmalige Ereignisse.
  • Ein Ablaufplan, der für beispielhafte Hardware-Logik, maschinenlesbare Anweisungen, in Hardware implementierte Zustandsautomaten und/oder irgendeine Kombination daraus zum Implementieren des Drosselungssystems 200 von 2 repräsentativ ist, ist in 5 gezeigt. Die maschinenlesbaren Anweisungen können ein oder mehrere ausführbare Programme oder Abschnitt(e) eines ausführbaren Programms zur Ausführung durch einen Computer-Prozessor sein, wie z. B. den Prozessor 912, der in der beispielhaften Prozessorplattform 900 gezeigt ist, die nachstehend in Verbindung mit 9 diskutiert ist. Das Programm kann in Software verwirklicht sein, die auf einem nicht-transitorischen computerlesbaren Speichermedium wie z. B. einer CD-ROM, einer Floppy-Disk, einem Festplattenlaufwerk, einer DVD, einer Blu-Ray-Disk oder einem Speicher, der dem Prozessor 912 zugeordnet ist, gespeichert ist, alternativ könnte jedoch das gesamte Programm und/oder Teile davon durch eine Vorrichtung ausgeführt werden, die nicht der Prozessor 912 ist, und/oder in Firmware oder dedizierter Hardware verwirklicht sein. Ferner können, obwohl das beispielhafte Programm mit Bezug auf den in 5 dargestellten Ablaufplan beschrieben ist, alternativ viele andere Verfahren zum Implementieren des beispielhaften Drosselungssystems 200 verwendet sein. Beispielsweise kann die Reihenfolge der Ausführung der Blöcke verändert sein, und/oder einige der beschriebenen Blöcke können verändert, eliminiert oder kombiniert sein. Zusätzlich oder alternativ können irgendwelche der oder alle Blöcke durch eine oder mehrere Hardware-Schaltungen (z. B. diskrete und/oder integrierte analoge und/oder digitale Schaltungsanordnung, eine FPGA, eine ASIC, einen Komparator, einen Operationsverstärker (Op-Amp), eine Logikschaltung usw.), die strukturiert sind, die entsprechende Operation ohne Ausführung von Software oder Firmware auszuführen, implementiert sein.
  • Die hier beschriebenen maschinenlesbaren Anweisungen können in einem oder mehreren aus einem komprimierten Format, einem verschlüsselten Format, einem fragmentierten Format, einem kompilierten Format, einem ausführbaren Format, einem gepackten Format usw. gespeichert sein. Maschinenlesbare Anweisungen, wie sie hier beschrieben sind, können als Daten (z. B. Abschnitte von Anweisungen, Code, Repräsentationen von Code usw.) gespeichert sein, die benutzt werden können, um maschinenlesbare Anweisungen zu erzeugen, herzustellen und/oder zu produzieren. Beispielsweise können die maschinenlesbaren Anweisungen fragmentiert und auf einer oder mehreren Speichervorrichtungen und/oder Berechnungsvorrichtungen (z. B. Servern) gespeichert sein. Die maschinenlesbaren Anweisungen können eines oder mehrere aus Installation, Modifikation, Anpassung, Aktualisieren, Kombinieren, Ergänzen, Konfigurieren, Entschlüsseln, Dekomprimieren, Entpacken, Verteilen, Neuzuweisung, Kompilierung usw. erfordern, um sie durch eine Berechnungsvorrichtung und/oder andere Maschine direkt lesbar, interpretierbar und/oder ausführbar zu machen. Beispielsweise können die maschinenlesbaren Anweisungen in mehreren Teilen gespeichert sein, die einzeln komprimiert, verschlüsselt und auf separaten Berechnungsvorrichtungen gespeichert sind, wobei die Teile, wenn sie entschlüsselt, dekomprimiert und kombiniert sind, eine Gruppe ausführbarer Anweisungen bilden, die ein Programm wie z. B. das hier beschriebene implementieren.
  • In einem weiteren Beispiel können die maschinenlesbaren Anweisungen in einem Zustand gespeichert sein, in dem sie durch einen Computer gelesen werden können, jedoch das Hinzufügen einer Bibliothek (z. B. einer dynamischen Link-Bibliothek (DLL)), eines Software-Entwicklungs-Kit (SKD), einer Anwendungsprogrammierschnittstelle (API) usw. erfordern, um die Anweisungen auf einer speziellen Berechnungsvorrichtung oder anderen Vorrichtung auszuführen. In einem weiteren Beispiel kann es notwendig sein, die maschinenlesbaren Anweisungen zu konfigurieren (z. B. Einstellungen zu speichern, Daten einzugeben, Netzadressen aufzuzeichnen usw.), bevor die maschinenlesbaren Anweisungen und/oder die entsprechenden Programm(e) insgesamt oder teilweise ausgeführt werden können. Somit sind die offenbarten maschinenlesbaren Anweisungen und/oder entsprechenden Programm(e) dafür vorgesehen, solche maschinenlesbaren Anweisungen und/oder Programm(e) einzuschließen, ungeachtet des speziellen Formats oder Zustands der maschinenlesbaren Anweisungen und/oder Programm(e), wenn sie gespeichert oder anderweitig in Ruhe oder in der Übertragung sind.
  • Die hier beschriebenen maschinenlesbaren Anweisungen können durch irgendeine vergangene, gegenwärtige oder zukünftige Anweisungssprache, Skriptsprache, Programmiersprache usw. repräsentiert sein. Beispielsweise können die maschinenlesbaren Anweisungen unter Verwendung irgendeiner der folgenden Sprachen repräsentiert sein: C, C++, Java, C#, Perl, Python, JavaScript, „HyperText Markup Language“ (HTML), „Structured Query Language“ (SQL), Swift usw.
  • Wie vorstehend erwähnt können die beispielhaften Prozesse von 5 unter Verwendung ausführbarer Anweisungen (z. B. computer- und/oder maschinenlesbarer Anweisungen), die auf einem nicht-transitorischen computer- oder maschinenlesbaren Medium gespeichert sind, wie z. B. einem Festplattenlaufwerk, einem Flash-Speicher, einem Festwertspeicher, einer Compact-Disk, einer „Digital Versatile Disk“, einem Cache, einem Direktzugriffsspeicher und/oder irgendeiner anderen Speichervorrichtung oder Speicherplatte, in der Informationen für irgendeine Dauer (z. B. für längere Zeiträume, permanent, für kurze Zeiträume, zum temporären Puffern und/oder zum Zwischenspeichern der Informationen) gespeichert sind, implementiert sein. Wie er hier verwendet ist, ist der Begriff nicht-transitorisches computerlesbares Medium ausdrücklich so definiert, dass es irgendeinen Typ einer computerlesbaren Speichervorrichtung und/oder Speicherplatte enthält und sich ausbreitende Signale ausschließt und Übertragungsmedien ausschließt.
  • „Enthalten‟ und „umfassen“ (und alle Formen und Zeiten davon) sind hier als offene Begriffe verwendet. Somit ist, wann immer ein Anspruch irgendeine Form von „enthalten“ oder „umfassen“ (z. B. umfasst, enthält, umfassend, enthaltend, aufweisend usw.) als eine Präambel oder innerhalb eines Anspruchsvortrags irgendeiner Art einsetzt, zu verstehen, dass zusätzliche Elemente, Begriffe usw. vorhanden sein können, ohne aus dem Schutzbereich des entsprechenden Anspruchs oder Vortrags herauszufallen. Wie er hier verwendet ist, ist, wenn der Ausdruck „wenigstens“ als der Überleitungsbegriff in beispielsweise der Präambel eines Anspruchs verwendet ist, er auf die gleiche Weise offen wie der Begriff „umfassen“ und „enthalten“ offen sind. Der Begriff „und/oder“, wenn er beispielsweise in einer Form wie z. B. A, B und/oder C verwendet ist, bezieht sich auf irgendeine Kombination oder Teilmenge von A, B, C, wie z. B. (1) allein A, (2) allein B, (3) allein C, (4) A mit B, (5) A mit C, (6) B mit C und (7) A mit B und mit C. Wie er hier im Kontext der Beschreibung von Strukturen, Komponenten, Elementen, Objekten und/oder Dingen verwendet ist, ist der Ausdruck „wenigstens eines aus A und B“ dafür vorgesehen, dass er sich auf Implementierungen bezieht, die irgendeines aus (1) wenigstens ein A, (2) wenigstens ein B und (3) wenigstens ein A und wenigstens ein B enthalten. Ähnlich ist, wie er hier im Kontext der Beschreibung von Strukturen, Komponenten, Elementen, Objekten und/oder Dingen verwendet, der Ausdruck „wenigstens eines aus A oder B“ dafür vorgesehen, dass er sich auf Implementierungen bezieht, die irgendeines aus (1) wenigstens ein A, (2) wenigstens ein B und (3) wenigstens ein A und wenigstens ein B enthalten. Wie er hier im Kontext der Beschreibung der Leistungsfähigkeit oder Ausführung von Prozessen, Anweisungen, Aktionen, Aktivitäten und/oder Schritten verwendet ist, ist der Ausdruck „wenigstens eines aus A und B“ dafür vorgesehen, dass er sich auf Implementierungen bezieht, die irgendeines aus (1) wenigstens ein A, (2) wenigstens ein B und (3) wenigstens ein A und wenigstens ein B enthalten. Ähnlich ist, wie er hier im Kontext der Beschreibung der Leistungsfähigkeit oder Ausführung von Prozessen, Anweisungen, Aktionen, Aktivitäten und/oder Schritten verwendet ist, der Ausdruck „wenigstens eines aus A oder B“ dafür vorgesehen, dass er sich auf Implementierungen bezieht, die irgendeines aus (1) wenigstens ein A, (2) wenigstens ein B und (3) wenigstens ein A und wenigstens ein B enthalten.
  • Wie sie hier verwendet sind, schließen Bezugnahmen im Singular (z. B. „ein“, „erstes“, „zweites“ usw.) mehrere nicht aus. Der Begriff „eine“ Entität, wie er hier verwendet ist, bezieht sich auf eine oder mehrere dieser Entität. Die Begriffe „ein“, „ein oder mehrere“ und „wenigstens ein“ können hier austauschbar verwendet sein. Darüber hinaus können, obwohl sie individuell aufgelistet sind, mehrere Mittel, Elemente oder Verfahrensaktionen z. B. durch eine/n einzige/n Einheit oder Prozessor implementiert sein. Zusätzlich können, obwohl einzelne Merkmale in unterschiedlichen Beispielen oder Ansprüchen enthalten sein können, dies möglicherweise kombiniert sein, und das Aufnehmen in unterschiedliche Beispiele oder Ansprüche impliziert nicht, dass eine Kombination aus Merkmalen nicht machbar und/oder vorteilhaft ist.
  • Das Beispielverfahren 500 von 5 beginnt, wenn die ICEs 202a, 202b betrieben werden, um Berechnungen auszuführen (z. B. Berechnungen für maschinelles Lernen usw.). Insbesondere fordern die ICEs 202a, 202b Leistung, die für die vorstehend genannten Berechnungen benötigt wird, von der Leistungsmanagementeinheit 220 über die Schnittstellen 204a, 294b an. Die Drosselanpassungseinheit 208 ist jedoch implementiert, um sicherzustellen, dass die Leistungsnutzung der ICEs 202a, 202b die Leistungsbudgets und/oder gewünschte Leistungsnutzung nicht übersteigt. Zusätzlich oder alternativ wird die Drosselanpassungseinheit 208 betrieben, um die Temperaturen der ICEs 202a, 202b aufrechtzuerhalten, um Beschädigung und/oder übermäßigen Verschleiß daran zu vermeiden.
  • Bei Block 502 senden in dem dargestellten Beispiel die ICEs 202a, 202b eine Leistungsanforderung zu den Schnittstellen 204a, 204b und/oder stellen sie dafür bereit. In diesem speziellen Beispiel stellen die ICEs 202a, 202b jeweils individuelle Leistungsanforderungen für die jeweiligen Schnittstellen 204a, 204b bereit. Die Leistungsanforderungen von jeder der ICEs 202a, 202b können unterschiedlich oder gleich sein. In einigen anderen Beispielen wird nur eine einzige Leistungsanforderung von einer der ICEs 202a, 202b für eine der entsprechenden Schnittstellen 204a, 204b bereitgestellt.
  • Bei Block 504 berechnet und/oder bestimmt der Leistungspegelrechner 206 des dargestellten Beispiels eine Gesamtleistungsanforderung (z. B. eine Gesamtleistungspegelanforderung, eine summierte Leistungspegelanforderung, eine aggregierte Leistungsanforderung usw.) basierend auf den Leistungsanforderungen, die von jeder der ICEs 202a, 202b empfangen werden. Ferner berechnet der beispielhafte Leistungspegelrechner 206 außerdem eine Gesamtleistungsnutzung und/oder einen Gesamtleistungsnutzungspegel der ICEs 202a, 202b.
  • Bei Block 506 bestimmt der beispielhafte Leistungspegelrechner 206, ob sich die Leistungsanforderung auf einen Anstieg der Leistung und/oder Leistungsnutzung bezieht. Falls sich die Leistungsanforderung auf einen Leistungsanstieg bezieht (Block 506), fährt die Steuerung des Prozesses zu den Blöcken 508, 510 fort. Andernfalls kehrt der Prozess zu Block 509 zurück. In einigen anderen Beispielen analysiert der Leistungspegelrechner 206 zusätzlich oder alternativ die Leistungsanforderung zu einem Schwellenwert (z. B. unterhalb eines Maximalleistungsschwellenwerts usw.), um diese Bestimmung vorzunehmen.
  • Bei Block 509 wird, wenn sich die Leistungsanforderung nicht auf einen Anstieg der Leistung bezieht, eine Quittung/Genehmigung zu den ICEs 202a, 202b gesendet, und parallel dazu wird die Leistungsanforderung zu der Leistungsmanagementeinheit 220 weitergeleitet. Beispielsweise kann die Leistungsmanagementeinheit 220 diese Quittung/Genehmigung zum Managen der Leistung und/oder eines Gesamtleistungsbudgets mehrerer der ICEs 202a, 202b nutzen. Der Prozess wiederum endet.
  • Bei Block 508 wird die Leistungsanforderung zu der Leistungsmanagementeinheit 220 über die Pegelanforderungseinheit 216 gesendet. In einigen Beispielen wird eine Hystereseanalyse durch den Hystereseanalysator 218 ausgeführt, bevor die Leistungsanforderung zu der Leistungsmanagementeinheit 220 weitergeleitet wird. In der dargestellten Ansicht von 5 ist ein Pfad, der Block 508 zugeordnet ist, als gestrichelte Linien abgebildet, um darzustellen, dass spezielle Operationen des Beispielverfahrens 500 parallel und/oder gleichzeitig ausgeführt werden können.
  • Bei Block 510 werden ein Schwellenwert, der als ein Minimum eines genehmigten Leistungspegels aus der Leistungsmanagementeinheit 220 (z. B. eine frühere Leistungsgenehmigung durch die Leistungsmanagementeinheit) definiert ist, und die Leistungsanforderung mit einer Leistungspegelnutzung (z. B. kombinierte und/oder gesamte Leistungsnutzung) der ICEs 202a, 202b verglichen. Es kann jedoch stattdessen irgendein anderer geeigneter Schwellenwert analysiert werden.
  • Bei Block 512 bestimmt der Drosselrechner 210 des dargestellten Beispiels, ob Drosseln aktiviert werden soll. In diesem Beispiel nimmt der Drosselrechner 210 diese Bestimmung basierend auf dem Vergleichen des Schwellenwerts, der als das Minimum der letzten Leistungsgenehmigung und der angeforderten Leistung definiert ist, mit der aktuellen Leistungsnutzung vor. Insbesondere wird, wenn die Leistungspegelnutzung größer ist als der vorstehend genannte Schwellenwert, Drosseln aktiviert, und der Prozess fährt zu Block 514 fort. Andernfalls fährt, wenn die Leistungspegelnutzung kleiner als der oder gleich dem Schwellenwert ist, die Steuerung des Prozesses zu Block 518 fort. In einigen Beispielen ist der Schwellenwert in Form einer maximalen dynamischen Kapazität definiert. Stattdessen kann jedoch irgendein/e andere/r geeignete/r Methodik, Vergleich und/oder Bestimmung implementiert sein.
  • Bei Block 514 berechnet der beispielhafte Drosselrechner 210 ein Drosselverhältnis. Beispielsweise kann das Drosselverhältnis berechnet werden durch Dividieren der genehmigten Leistung (z. B. der maximalen genehmigten Leistung, des maximalen erlaubten Cdyn, des maximalen erlaubten Leistungspegels usw.) durch die gesamte genutzte Leistung der ICEs 202a, 202b. Zusätzlich oder alternativ wird das Drosselverhältnis auf 1 2 n
    Figure DE102020118005A1_0001
    gerundet, wobei n basierend auf dem Subtrahieren eines höchsten Bitmenge der maximal erlaubten Leistung (B) von einer höchsten Bitmenge der gesamten genutzten Leistung (A) definiert ist, so dass beispielsweise n = a - B ist.
  • Bei Block 516 passt die Drosselsteuereinheit 212 die Taktgeschwindigkeit der ICEs 202a, 202b an. In dem dargestellten Beispiel nutzt die Drosselsteuereinheit 212 das vorstehend genannte Drosselverhältnis, um entsprechende Taktgeschwindigkeiten der ICEs 202a, 202b anzupassen.
  • Bei Block 518 werden die ICEs 202a, 202b durch den Leistungspegelrechner 206 und/oder den Drosselrechner 210 gesperrt und/oder Drosseln wird verhindert. Zusätzlich oder alternativ wird die Leistungsanforderung gesperrt. In einigen Beispielen wird eine Quittungsnachricht für die gesperrte Anforderung zu den ICEs 202a, 202b gesendet.
  • Bei Block 520 sendet die Leistungsmanagementeinheit 220 eine Leistungsgenehmigung oder -ablehnung zu den ICEs 202a, 202b und/oder den Schnittstellen 204a, 204b. In einigen Beispielen kann die Leistungsmanagementeinheit 220 die Genehmigung verzögern, bis gewünschte Operationen ausgeführt sind, um den Energieverbrauch anderer Systemkomponenten zu reduzieren, oder alternativ bis die Leistungsmanagementeinheit 220 die gewünschten Operationen ausgeführt und/oder fertiggestellt hat, was einen gesamten erlaubten Energieverbrauch des Systems steigern kann.
  • Bei Block 522 gibt die Leistungsmanagementeinheit 220 eine Quittungs- (ACK-) Nachricht zu den ICEs 202a, 202b über die Schnittstellen 204a, 204b zurück, und der Prozess endet.
  • 6 stellt den Betrieb des beispielhaften Leistungspegelrechners 206 zum Berechnen einer Gesamtleistungsanforderung und -nutzung, die den ICEs 202a, 202b zugeordnet sind, dar. In dem dargestellten Beispiel werden die Eingaben 602 summiert und/oder kombiniert, um Leistungsanforderungen/bedürfnisse 604 der ICEs 202a, 202b zu definieren. Ferner bestimmt der beispielhafte Leistungspegelrechner 206 eine Größe der benutzten Leistung (z. B. der aktuell genutzten Leistung) 606 der ICEs 202a, 202b. Eine gesamte genutzte Leistung (z. B. Cdyn) 608 und eine gesamte angeforderte Leistung 610 werden wiederum als Ausgabe aus dem beispielhaften Leistungspegelrechner 206 gesendet.
  • 7 stellt eine schematische Übersicht einer Leistungspegelumsetzung dar, die in hier offenbarten Beispielen implementiert sein kann. Insbesondere stellt das Beispiel von 7 dar, wie angeforderte Leistungspegel in Pegel umgesetzt werden können. In dem dargestellten Beispiel können der Pegelumsetzer 214 und/oder der Leistungspegelrechner 206 Leistungsanforderungswerte 700 in festgelegte Leistungspegel 702 umsetzen. Die beispielhaften Leistungspegel 702 können durch Ganzzahlen repräsentiert sein, die Leistungswertebereiche und/oder vordefinierte Leistungsinkremente angeben. In dem dargestellten Beispiel repräsentiert ein Block 704 einen Decodierer, der einen Leistungspegel (z. B. einen Leistungspegelwert, eine Leistungspegelrepräsentation) 706, die zu dem Betrieb der ICEs 202a, 202b gehört, ausgibt. In diesem Beispiel sind die Leistungspegel 702 als eine Nachschlagetabelle organisiert und/oder zugänglich, so dass dynamische Kapazität in Leistungspegel übersetzt werden kann und umgekehrt.
  • Weiter zu 8 ist ein Beispielprozess dargestellt, in dem eine Leistung (z. B. ein Leistungswert) in eine Leistungsrepräsentation (z. B. einen Leistungspegel, einen Leistungsindex usw.) umgesetzt wird. Die Leistungsrepräsentation kann beispielsweise als eine maximale dynamische Kapazität (Max_Cdyn) repräsentiert sein. In der dargestellten Ansicht von 8 ist die genehmigte Leistung 801 für einen Block 802 bereitgestellt und wiederum in einen Leistungspegel (z. B. eine Leistungsrepräsentation, eine Leistungsbereichsrepräsentation usw.) 804 umgesetzt.
  • 9 ist ein Blockdiagramm einer beispielhaften Prozessorplattform 900, die strukturiert ist, die Anweisungen von 5 auszuführen, um das Drosselungssystem 200 von 2 zu implementieren. Die Prozessorplattform 600 kann beispielsweise ein Server, ein Personalcomputer, ein Arbeitsplatzrechner, eine selbstlernende Maschine (z. B. ein neuronales Netz), eine mobile Vorrichtung (z. B. ein Mobiltelefon, ein Smartphone, ein Tablet wie z. B. ein iPadTM), ein persönlicher digitaler Assistent (PDA), eine Internet-Einrichtung, ein DVD-Player, ein CD-Player, ein digitaler Videorecorder, ein Blu-Ray-Player, eine Spielekonsole, ein persönlicher Videorecorder, eine Set-Top-Box, ein Kopfhörer oder eine andere am Körper tragbare Vorrichtung oder irgendein anderer Typ einer Berechnungsvorrichtung sein.
  • Die Prozessorplattform 900 des dargestellten Beispiels enthält einen Prozessor 912. Der Prozessor 912 des dargestellten Beispiels ist Hardware. Beispielsweise kann der Prozessor 912 durch eine oder mehrere integrierte Schaltungen, Logikschaltungen, Mikroprozessoren, GPUs, DSPs oder Steuereinheiten aus irgendeiner/irgendeinem gewünschten Familie oder Hersteller implementiert sein. Der Hardware-Prozessor kann eine halbleiterbasierte (z. B. Silizium-basierte) Vorrichtung sein. In diesem Beispiel implementiert der Prozessor den beispielhaften Leistungspegelrechner 206, den beispielhaften Drosselrechner 210, die beispielhafte Drosselsteuereinheit 212, den beispielhaften Leistungspegelumsetzer 214, die beispielhafte Pegelanforderungseinheit 216 und die beispielhafte Leistungsmanagementeinheit 220.
  • Der Prozessor 912 des dargestellten Beispiels enthält einen lokalen Speicher 913 (z. B. einen Cache). Der Prozessor 912 des dargestellten Beispiels ist über einen Bus 918 in Kommunikation mit einem Hauptspeicher, der einen flüchtigen Speicher 914 und einen nichtflüchtigen Speicher 916 enthält. Der flüchtige Speicher 914 kann durch synchronen dynamischen Direktzugriffsspeicher (SDRAM), dynamischen Direktzugriffsspeicher (DRAM), dynamischen RAMBUS®-Direktzugriffsspeicher (RDRAM@) und/oder irgendeinen anderen Typ einer Direktzugriffsspeichervorrichtung implementiert sein. Der nichtflüchtige Speicher 916 kann durch Flash-Speicher und/oder irgendeinen anderen gewünschten Typ einer Speichervorrichtung implementiert sein. Der Zugriff auf den Hauptspeicher 914, 916 wird durch eine Speichersteuereinheit gesteuert.
  • Die Prozessorplattform 900 des dargestellten Beispiels enthält außerdem eine Schnittstellenschaltung 920. Die Schnittstellenschaltung 920 kann durch irgendeinen Typ eines Schnittstellenstandards implementiert sein, wie z. B. eine Ethernet-Schnittstelle, einen universellen seriellen Bus (USB), eine Bluetooth®-Schnittstelle, eine Nahfeldkommunikations- (NFC-) Schnittstelle und/oder eine PCI-Express-Schnittstelle.
  • In dem dargestellten Beispiel sind eine oder mehrere Eingabevorrichtungen 922 mit der Schnittstellenschaltung 920 verbunden. Die Eingabevorrichtung(en) 922 ermöglichen einem Anwender, Daten und/oder Befehle in den Prozessor 912 einzugeben. Die Eingabevorrichtung(en) können beispielsweise durch einen Audiosensor, ein Mikrofon, eine Kamera (Standbild oder Video), eine Tastatur, eine Taste, eine Maus, einen berührungssensitiven Bildschirm, ein Track-Pad, einen Trackball, Isopoint und/oder ein Spracherkennungssystem implementiert sein.
  • Eine oder mehrere Ausgabevorrichtungen 924 sind ebenfalls mit der Schnittstellenschaltung 920 des dargestellten Beispiels verbunden. Die Ausgabevorrichtungen 924 können beispielsweise durch Anzeigevorrichtungen (z. B. eine Leuchtdiode (LED), eine organische Leuchtdiode (OLED), eine Flüssigkristallanzeigevorrichtung (LCD), eine Kathodenstrahlröhrenanzeigevorrichtung (CRT), eine „In-Place-Switching“-(IPS-) Anzeigevorrichtung, einen berührungssensitiven Bildschirm usw.), eine tastbare Ausgabevorrichtung, einen Drucker und/oder Lautsprecher implementiert sein. Die Schnittstellenschaltung 920 des dargestellten Beispiels enthält somit typischerweise eine Grafiktreiberkarte, einen Grafiktreiber-Chip und/oder einen Grafiktreiberprozessor.
  • Die Schnittstellenschaltung 920 des dargestellten Beispiels enthält außerdem eine Kommunikationsvorrichtung wie z. B. einen Sender, einen Empfänger, einen Sender/Empfänger, ein Modem, ein stationäres Gateway, einen drahtlosen Zugangspunkt und/oder eine Netzschnittstelle, um den Austausch von Daten mit externen Maschinen (z. B. Berechnungsvorrichtungen irgendeiner Art) über ein Netz 926 zu unterstützen. Die Kommunikation kann beispielsweise über eine Ethernet-Verbindung, eine Verbindung über eine digitale Teilnehmerleitung (DSL), eine Telefonleitungsverbindung, ein Koaxialkabelsystem, ein Satellitensystem, ein drahtloses Sichtliniensystem, ein Mobiltelefonsystem usw. stattfinden.
  • Die Prozessorplattform 900 des dargestellten Beispiels enthält außerdem ein oder mehrere Massenspeichervorrichtungen 928 zum Speichern von Software und/oder Daten. Beispiele für solche Massenspeichervorrichtungen 928 enthalten Floppy-Disk-Laufwerke, Festplattenlaufwerke, Compact-Disk-Laufwerke, Blu-Ray-Disk-Laufwerke, Systeme mit redundanter Anordnung unabhängiger Platten (RAID) und Laufwerke für „Digitale Versatile Disk“ (DVD).
  • Die durch eine Maschine ausführbaren Anweisungen 932 von 5 können in der Massenspeichervorrichtung 928, in dem flüchtigen Speicher 914, in dem nichtflüchtigen Speicher 916 und/oder auf einem herausnehmbaren nicht-transitorischen computerlesbaren Speichermedium wie z. B. einer CD oder DVD gespeichert sein.
  • Beispiel 1 enthält eine Einrichtung, die eine oder mehrere Rechen-Engines zum Ausführung von Berechnungen, wobei die einen oder mehreren Rechen-Engines dazu dienen zu veranlassen, dass eine Gesamtleistungsanforderung basierend auf den Berechnungen ausgegeben wird, und eine Leistungsmanagementeinheit zum Empfangen der Gesamtleistungsanforderung und Antworten auf die Gesamtleistungsanforderung aufweist. Die Einrichtung enthält außerdem einen Drosselmanager zum Anpassen einer Drosselgeschwindigkeit wenigstens einer aus der einen oder den mehreren Rechen-Engines basierend auf dem Vergleichen eines Minimum der Leistungsanforderung und einer genehmigten Leistung mit einer gesamten genutzten Leistung der einen oder mehreren Rechen-Engines, bevor die Leistungsmanagementeinheit auf die Gesamtleistungsanforderung antwortet.
  • Beispiel 2 enthält die Einrichtung wie in Beispiel 1 definiert, die ferner einen Leistungspegelrechner zum Berechnen der Gesamtleistungsanforderung basierend auf ersten und zweiten Leistungsanforderungen jeweils der einen oder mehreren Rechen-Engines enthält.
  • Beispiel 3 enthält die Einrichtung wie in Beispiel 2 definiert, wobei die Gesamtleistungsanforderung basierend auf einer größten aus den ersten und zweiten Leistungsanforderungen berechnet wird.
  • Beispiel 4 enthält die Einrichtung wie in Beispiel 1 definiert, wobei die genehmigte Leistung einer früher von der Leistungseinheit ausgegebenen Leistungsgenehmigung entspricht.
  • Beispiel 5 enthält die Einrichtung wie in Beispiel 1 definiert, wobei der Drosselmanager zum Sperren der Gesamtleistungsanforderung dient, falls die Gesamtleistungsanforderung kleiner als die oder gleich der genehmigten Leistung ist.
  • Beispiel 6 enthält die Einrichtung wie in Beispiel 1 definiert, wobei der Drosselmanager die Drosselgeschwindigkeit durch Berechnen eines Drosselverhältnisses der genehmigten Leistung zu der Gesamtleistungsanforderung anpasst.
  • Beispiel 7 enthält die Einrichtung wie in Beispiel 1 definiert, die ferner einen Hystereseanalysator zum Bestimmen, ob die Leistungsanforderung zu der Leistungsmanagementeinheit weiterzuleiten ist, basierend auf einem Grad der Ähnlichkeit zwischen der Leistungsanforderung und früher genehmigten Leistungen enthält.
  • Beispiel 8 enthält ein nicht-transitorisches maschinenlesbares Medium, das Anweisungen umfasst, die dann, wenn sie ausgeführt werden, einen Prozessor veranlassen, wenigstens zu bestimmen, dass eine oder mehrere Rechen-Engines, die veranlassten, dass eine Gesamtleistungsanforderung zu einer Leistungsmanagementeinheit ausgegeben wird, bei Bestimmen, dass die eine oder die mehreren Rechen-Engines veranlassten, dass die Gesamtleistungsanforderung ausgegeben wird, ein Minimum der Gesamtleistungsanforderung und einer genehmigten Leistung mit einer gesamten genutzten Leistung der einen oder der mehreren Rechen-Engines zu vergleichen und basierend auf dem Vergleich eine Drosselgeschwindigkeit wenigstens einer aus der einen oder den mehreren Rechen-Engines anzupassen, bevor die Leistungsmanagementeinheit auf die Gesamtleistungsanforderung antwortet.
  • Beispiel 9 enthält das nicht-transitorische maschinenlesbare Medium wie in Beispiel 8 definiert, wobei die Anweisungen ferner den Prozessor veranlassen, die Gesamtleistungsanforderung basierend auf ersten und zweiten Leistungsanforderungen des ersten bzw. zweiten Rechenkerns zu berechnen.
  • Beispiel 10 enthält das nicht-transitorische maschinenlesbare Medium wie in Beispiel 9 definiert, wobei die Gesamtleistungsanforderung basierend auf einer größten aus den ersten und zweiten Leistungsanforderungen berechnet wird.
  • Beispiel 11 enthält das nicht-transitorische maschinenlesbare Medium wie in Beispiel 8 definiert, wobei die Anweisungen ferner den Prozessor veranlassen, die Gesamtleistungsanforderung basierend auf einem Nachschlagen einer Tabelle zugeordneter Leistungspegel der ersten und zweiten Rechen-Engines zu bestimmen.
  • Beispiel 12 enthält das nicht-transitorische maschinenlesbare Medium wie in Beispiel 8 definiert, wobei die Anweisungen den Prozessor ferner veranlassen, die Gesamtleistungsanforderung zu sperren, falls die Gesamtleistungsanforderung kleiner als die oder gleich der genehmigten Leistung ist.
  • Beispiel 13 enthält das nicht-transitorische maschinenlesbare Medium wie in Beispiel 8 definiert, wobei die Drosselgeschwindigkeit durch Berechnen eines Drosselverhältnisses der genehmigten Leistung zu der Leistungsanforderung angepasst wird.
  • Beispiel 14 enthält das nicht-transitorische maschinenlesbare Medium wie in Beispiel 8 definiert, wobei die Anweisungen ferner den Prozessor veranlassen, eine Hystereseanalyse auszuführen, um zu bestimmen, ob die Leistungsanforderung zu der Leistungsmanagementeinheit weiterzuleiten ist.
  • Beispiel 15 enthält ein Verfahren. Das Verfahren enthält das Bestimmen durch Ausführen einer Anweisung mit wenigstens einem Prozessor, dass eine oder mehrere Rechen-Engines eine Gesamtleistungsanforderung zu einer Leistungsmanagementeinheit ausgegeben haben, bei der Bestimmung, dass die eine oder die mehreren Rechen-Engines veranlassten, dass die Gesamtleistungsanforderung ausgegeben wird, Vergleichen durch Ausführen einer Anweisung mit dem wenigstens einen Prozessor eines Minimums der Gesamtleistungsanforderung und einer genehmigten Leistung mit einer gesamten genutzten Leistung der einen oder mehreren Rechen-Engines und Anpassen durch Ausführen einer Anweisung mit dem wenigstens einen Prozessor einer Drosselgeschwindigkeit wenigstens einer aus der einen oder mehreren Rechen-Engines basierend auf dem Vergleich, bevor die Leistungsmanagementeinheit auf die Gesamtleistungsanforderung antwortet.
  • Beispiel 16 enthält das Verfahren wie in Beispiel 15 definiert, das ferner Berechnen durch Ausführen einer Anweisung mit dem wenigstens einen Prozessor der Gesamtleistungsanforderung basierend auf ersten und zweiten Leistungsanforderungen jeweils der einen oder mehreren Rechen-Engines enthält.
  • Beispiel 17 enthält das Verfahren wie in Beispiel 16 definiert, wobei die Gesamtleistungsanforderung basierend auf einer größten aus den ersten und zweiten Leistungsanforderungen berechnet wird.
  • Beispiel 18 enthält das Verfahren wie in Beispiel 16 definiert, wobei die Gesamtleistungsanforderung basierend auf einem Tabellennachschlagen zugeordneter Leistungspegel der einen oder mehreren Rechen-Engines berechnet wird.
  • Beispiel 19 enthält das Verfahren wie in Beispiel 15 definiert, das ferner das Sperren durch Ausführen einer Anweisung mit dem wenigstens einen Prozessor der Gesamtleistungsanforderung, falls die Gesamtleistungsanforderung kleiner als die oder gleich der genehmigten Leistung ist, enthält.
  • Beispiel 20 enthält das Verfahren wie in Beispiel 15 definiert, das ferner Anpassen durch Ausführen einer Anweisung mit dem wenigstens einen Prozessor der Drosselgeschwindigkeit durch Berechnen eines Drosselverhältnisses der genehmigten Leistung zu der Gesamtleistungsanforderung enthält.
  • Aus dem Vorstehenden ist zu erkennen, dass beispielhafte Verfahren, Einrichtungen und Herstellungsgegenstände offenbart worden sind, die schnelles und effizientes Kerngeschwindigkeitsmanagement von Berechnungskernen ermöglichen. Die offenbarten Verfahren, Einrichtungen und Herstellungsgegenstände verbessern die Effizienz der Verwendung einer Berechnungsvorrichtung durch Ermöglichen relativ schneller Anpassung von Berechnungskernen und außerdem Ermöglichen von thermischem Schutz der Berechnungskerne vor dem und/oder parallel zu dem Management von Leistungspegelanforderungen. Die offenbarten Verfahren, Einrichtungen und Herstellungsgegenstände richten sich dementsprechend auf eine oder mehrere Verbesserung(en) der Funktionsweise eines Computers.
  • Obwohl spezielle beispielhafte Verfahren, Einrichtungen und Herstellungsgegenstände hier offenbart worden sind, ist der Umfang der Abdeckung dieses Patents nicht darauf eingeschränkt. Im Gegenteil deckt dieses Patent alle Verfahren, Einrichtungen und Herstellungsgegenstände ab, die gerechterweise in den Schutzbereich der Ansprüche dieses Patents fallen.
  • Die folgenden Ansprüche sind hierdurch in diese ausführliche Beschreibung durch diese Bezugnahme mit aufgenommen, wobei jeder Anspruch für sich als eine separate Ausführungsform der vorliegenden Offenbarung steht.

Claims (20)

  1. Einrichtung, die Folgendes umfasst: eine oder mehrere Rechen-Engines zum Ausführen von Berechnungen, wobei die eine oder die mehreren Rechen-Engines dazu dienen, zu veranlassen, dass eine Gesamtleistungsanforderung basierend auf den Berechnungen ausgegeben wird; eine Leistungsmanagementeinheit zum Empfangen der Gesamtleistungsanforderung und Antworten auf die Gesamtleistungsanforderung; und einen Drosselmanager zum Anpassen der Drosselgeschwindigkeit wenigstens einer aus der einen oder den mehreren Rechen-Engines basierend auf dem Vergleichen eines Minimums der Leistungsanforderung und einer genehmigten Leistung mit einer gesamten genutzten Leistung der einen oder mehreren Rechen-Engines bevor die Leistungsmanagementeinheit auf die Gesamtleistungsanforderung antwortet.
  2. Einrichtung nach Anspruch 1, die ferner einen Leistungspegelrechner zum Berechnen der Gesamtleistungsanforderung basierend auf ersten und zweiten Leistungsanforderungen jeweils der einen oder mehreren Rechen-Engines enthält.
  3. Einrichtung nach Anspruch 2, wobei die Gesamtleistungsanforderung basierend auf einer größten aus den ersten und zweiten Leistungsanforderungen berechnet wird.
  4. Einrichtung nach einem der Ansprüche 1 bis 3, wobei die genehmigte Leistung einer früher ausgegebenen Leistungsgenehmigung von der Leistungseinheit entspricht.
  5. Einrichtung nach einem der Ansprüche 1 bis 4, wobei der Drosselmanager zum Sperren der Gesamtleistungsanforderung dient, falls die Gesamtleistungsanforderung kleiner als die oder gleich der genehmigten Leistung ist.
  6. Einrichtung nach einem der Ansprüche 1 bis 5, wobei der Drosselmanager die Drosselgeschwindigkeit durch Berechnen eines Drosselverhältnisses der genehmigten Leistung zu der Gesamtleistungsanforderung anpasst.
  7. Einrichtung nach einem der Ansprüche 1 bis 6, die ferner einen Hystereseanalysator zum Bestimmen, ob die Leistungsanforderung zu der Leistungsmanagementeinheit weiterzuleiten ist, basierend auf einem Grad der Ähnlichkeit zwischen der Leistungsanforderung und früher genehmigten Leistungen enthält.
  8. Nicht-transitorisches maschinenlesbares Medium, das Anweisungen umfasst, die dann, wenn sie ausgeführt werden, einen Prozessor zu wenigstens dem Folgenden veranlassen: Bestimmen, das eine oder mehrere Rechen-Engines veranlassten, dass eine Gesamtleistungsanforderung zu einer Leistungsmanagementeinheit ausgegeben wurde; bei Bestimmen, dass die eine oder die mehreren Rechen-Engines veranlassten, dass die Gesamtleistungsanforderung ausgegeben wurde, Vergleichen eines Minimums der Gesamtleistungsanforderung und einer genehmigten Leistung mit einer insgesamt genutzten Leistung der einen oder mehreren Rechen-Engines; und Anpassen basierend auf dem Vergleich einer Drosselgeschwindigkeit wenigstens einer aus der einen oder den mehreren Rechen-Engines, bevor die Leistungsmanagementeinheit auf die Gesamtleistungsanforderung antwortet.
  9. Nicht-transitorisches maschinenlesbares Medium nach Anspruch 8, wobei die Anweisungen den Prozessor ferner veranlassen, die Gesamtleistungsanforderung basierend auf ersten und zweiten Leistungsanforderungen des ersten bzw. zweiten Rechenkerns zu berechnen.
  10. Nicht-transitorisches maschinenlesbares Medium nach Anspruch 9, wobei die Gesamtleistungsanforderung basierend auf einer größten aus den ersten und zweiten Leistungsanforderungen berechnet wird.
  11. Nicht-transitorisches maschinenlesbares Medium nach einem der Ansprüche 8 bis 10, wobei die Anweisungen den Prozessor ferner veranlassen, die Gesamtleistungsanforderung basierend auf einem Tabellennachschlagen zugeordneter Leistungspegel der einen oder mehreren Rechen-Engines zu bestimmen.
  12. Nicht-transitorisches maschinenlesbares Medium nach einem der Ansprüche 8 bis 11, wobei die Anweisungen den Prozessor ferner veranlassen, die Gesamtleistungsanforderung zu sperren, falls die Gesamtleistungsanforderung kleiner als die oder gleich der genehmigten Leistung ist.
  13. Nicht-transitorisches maschinenlesbares Medium nach einem der Ansprüche 8 bis 12, wobei die Drosselgeschwindigkeit durch Berechnen eines Drosselverhältnisses der genehmigten Leistung zu der Leistungsanforderung angepasst wird.
  14. Nicht-transitorisches maschinenlesbares Medium nach einem der Ansprüche 8 bis 13, wobei die Anweisungen den Prozessor ferner veranlassen, eine Hystereseanalyse auszuführen, um zu bestimmen, ob die Leistungsanforderung zu der Leistungsmanagementeinheit weiterzuleiten ist.
  15. Verfahren, das Folgendes umfasst: Bestimmen durch Ausführen einer Anweisung mit wenigstens einem Prozessor, dass eine oder mehrere Rechen-Engines eine Gesamtleistungsanforderung zu einer Leistungsmanagementeinheit ausgegeben haben; bei der Bestimmung, dass die eine oder die mehreren Rechen-Engines veranlassten, dass die Gesamtleistungsanforderung ausgegeben wird, Vergleichen durch Ausführen einer Anweisung mit dem wenigstens einen Prozessor eines Minimums der Gesamtleistungsanforderung und einer genehmigten Leistung mit einer insgesamt genutzten Leistung der einen oder der mehreren Rechen-Engines; und Anpassen durch Ausführen einer Anweisung mit dem wenigstens einen Prozessor einer Drosselgeschwindigkeit wenigstens einer aus der einen oder den mehreren Rechen-Engines basierend auf dem Vergleich, bevor die Leistungsmanagementeinheit auf die Gesamtleistungsanforderung antwortet.
  16. Verfahren nach Anspruch 15, das ferner Berechnen durch Ausführen einer Anweisung mit dem wenigstens einen Prozessor der Gesamtleistungsanforderung basierend auf ersten und zweiten Leistungsanforderungen jeweils der einen oder mehreren Rechen-Engines enthält.
  17. Verfahren nach Anspruch 16, wobei die Gesamtleistungsanforderung basierend auf einer größten aus den ersten und zweiten Leistungsanforderungen berechnet wird.
  18. Verfahren nach einem der Ansprüche 16 oder 17, wobei die Gesamtleistungsanforderung basierend auf einem Tabellennachschlagen zugeordneter Leistungspegel der einen oder mehreren Rechen-Engines berechnet wird.
  19. Verfahren nach einem der Ansprüche 15 bis 18, das ferner das Sperren durch Ausführen einer Anweisung mit dem wenigstens einen Prozessor der Gesamtleistungsanforderung, falls die Gesamtleistungsanforderung kleiner als die oder gleich der genehmigten Leistung ist, enthält.
  20. Verfahren nach einem der Ansprüche 15 bis 19, das ferner Anpassen durch Ausführen einer Anweisung mit dem wenigstens einen Prozessor der Drosselgeschwindigkeit durch Berechnen eines Drosselverhältnisses der genehmigten Leistung zu der Gesamtleistungsanforderung enthält.
DE102020118005.5A 2019-08-15 2020-07-08 Verfahren und einrichtung zum dynamischen drosseln von rechenengines Pending DE102020118005A1 (de)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US16/541,674 2019-08-15
US16/541,674 US11036277B2 (en) 2019-08-15 2019-08-15 Methods and apparatus to dynamically throttle compute engines

Publications (1)

Publication Number Publication Date
DE102020118005A1 true DE102020118005A1 (de) 2021-02-18

Family

ID=68694764

Family Applications (1)

Application Number Title Priority Date Filing Date
DE102020118005.5A Pending DE102020118005A1 (de) 2019-08-15 2020-07-08 Verfahren und einrichtung zum dynamischen drosseln von rechenengines

Country Status (3)

Country Link
US (1) US11036277B2 (de)
KR (1) KR20210021260A (de)
DE (1) DE102020118005A1 (de)

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11962455B2 (en) 2021-11-29 2024-04-16 T-Mobile Usa, Inc. Prioritizing multiple issues associated with a wireless telecommunication network
US12039471B2 (en) 2021-11-29 2024-07-16 T-Mobile Usa, Inc. Tracking issues and resolution of same in a wireless communication network

Families Citing this family (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11625087B2 (en) 2021-08-28 2023-04-11 International Business Machines Corporation Current prediction-based instruction throttling control
US11966786B2 (en) 2021-08-28 2024-04-23 International Business Machines Corporation Proxy-based instruction throttling control

Family Cites Families (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7467311B2 (en) * 2005-06-09 2008-12-16 International Business Machines Corporation Distributed system and method for managing power usage among server data processing systems
US20080201595A1 (en) * 2007-01-11 2008-08-21 Pacific Star Communications, Inc. Intelligent power control
US7996690B2 (en) * 2008-01-24 2011-08-09 Dell Products L.P. System and method for dynamic utilization-based power allocation in a modular information handling system
US11523857B2 (en) * 2016-12-22 2022-12-13 Medtronic, Inc. Multiplexing algorithm with power allocation

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11962455B2 (en) 2021-11-29 2024-04-16 T-Mobile Usa, Inc. Prioritizing multiple issues associated with a wireless telecommunication network
US12039471B2 (en) 2021-11-29 2024-07-16 T-Mobile Usa, Inc. Tracking issues and resolution of same in a wireless communication network

Also Published As

Publication number Publication date
KR20210021260A (ko) 2021-02-25
US11036277B2 (en) 2021-06-15
US20190369694A1 (en) 2019-12-05

Similar Documents

Publication Publication Date Title
DE102020118005A1 (de) Verfahren und einrichtung zum dynamischen drosseln von rechenengines
DE102020119621A1 (de) Verfahren und vorrichtungen zum verwalten der leistungsversorgung von deep-learning-beschleunigersystemen
DE102019122935A1 (de) Verfahren und vorrichtungen zum zuweisen einer arbeitslast an einen beschleuniger unter verwendung von maschinenlernen
DE102014014301B4 (de) Verfahren und Einrichtung zum Verwalten globaler Chip-Energie auf einem Chip-internen Mehrkernsystem
DE102020203877A1 (de) Verfahren und einrichtungen zum steuern einer verarbeitung von telemetriedaten auf einer edge-plattform
DE202012013432U1 (de) Speichern von Daten auf Speicherknoten
DE102013204186B4 (de) Ermitteln von Prioritäten für zwischengespeicherte Objekte zum Ordnen des Übertragens von Änderungen an zwischengespeicherten Objekten beruhend auf gemessener Netzwerkbandbreite
DE102020102783A1 (de) Verfahren und einrichtungen zum verbessern einer leistungsdatensammlung einer hochleistungsberechnungsanwendung
DE202015009254U1 (de) Automatisch erzeugende ausführungssequenzen für workflows
DE102011014681A1 (de) Power-Management basierend auf automatischer Arbeitslasterkennung
DE202017106604U1 (de) Benutzerdefinierte digitale Komponenten
DE202016008054U1 (de) Leistungsüberwachung in einem verteilten Speichersystem
DE112013000865T5 (de) Konsolidieren von unterschiedlichen Cloud-Dienst-Daten und -Verhaltensweisen auf der Grundlage von Vertrauensbeziehungen zwischen Cloud-Diensten
DE112018004142T5 (de) Proaktive verringerung und/oder minderung eines spannungseinbruchs in einem prozessorkern
DE102009060267A1 (de) Leerlaufzeit-Bericht für ein Power-Management
DE202017107393U1 (de) Vorhersagen eines Suchmaschinen-Einordnungssignalwerts
DE102020119519A1 (de) Verfahren und einrichtungen zum ermöglichen einer "out-of-order"-pipeline-ausführung der statischen abbildung einer arbeitslast
DE102018213549A1 (de) Verfahren und vorrichtungen zum breitstellen von zugriffsautorisierung auf benutzerebene für cloud-basierte feldprogrammierbare gate-arrays
DE102020110655A1 (de) Verfahren und vorrichtung zum verbessern der verwendung eines heterogenen systems, das software ausführt
DE202016107437U1 (de) Daten-Caching
DE202015009292U1 (de) Erzeugung eines Aktivitätsflusses
DE112021000338B4 (de) Auslagern der statistikerfassung
DE102022105725A1 (de) Verfahren und einrichtungen zur durchführung von gewichtungs- und aktivierungskomprimierung und -dekomprimierung
DE112017001376T5 (de) Erkennen und Vorhersagen von Engpässen in komplexen Systemen
DE202014010924U1 (de) Nichtflüchtiges Shuffle-System