DE102019120689A1 - TECHNIQUES FOR THE EFFICIENT OPERATION OF A PROCESSING SYSTEM BASED ON THE ENERGY CHARACTERISTICS OF INSTRUCTIONS AND MACHINE LEARNING - Google Patents

TECHNIQUES FOR THE EFFICIENT OPERATION OF A PROCESSING SYSTEM BASED ON THE ENERGY CHARACTERISTICS OF INSTRUCTIONS AND MACHINE LEARNING Download PDF

Info

Publication number
DE102019120689A1
DE102019120689A1 DE102019120689.8A DE102019120689A DE102019120689A1 DE 102019120689 A1 DE102019120689 A1 DE 102019120689A1 DE 102019120689 A DE102019120689 A DE 102019120689A DE 102019120689 A1 DE102019120689 A1 DE 102019120689A1
Authority
DE
Germany
Prior art keywords
power
performance
processors
learning
controller
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
DE102019120689.8A
Other languages
German (de)
Inventor
Sachin Idgunji
Michael Siu
Alex Gu
James REILLEY
Manan Patel
Raj Selvanesan
Ewa Kubalska
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.)
Nvidia Corp
Original Assignee
Nvidia 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
Priority claimed from US16/514,078 external-priority patent/US11379708B2/en
Application filed by Nvidia Corp filed Critical Nvidia Corp
Publication of DE102019120689A1 publication Critical patent/DE102019120689A1/en
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/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/3296Power saving characterised by the action undertaken by lowering the supply or operating voltage
    • 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

Eine integrierte Schaltung, wie beispielsweise eine Graphikverarbeitungseinheit (GPU), umfasst einen dynamischen Leistungscontroller zum Einstellen der Betriebsspannung und/oder Frequenz. Der Controller kann die aktuelle Leistung, die von der integrierten Schaltung verwendet wird, und eine vorhergesagte Leistung basierend auf Anweisungen empfangen, die in einer Mehrzahl von Prozessoren anhängig sind. Der Controller bestimmt Einstellungen, die an der Betriebsspannung und/oder Frequenz durchgeführt werden müssen, um den Unterschied zwischen der aktuellen Leistung und der vorhergesagten Leistung zu minimieren. Ein bestärkender In-System-Lernmechanismus ist enthalten, um Parameter des Controllers selber abzustimmen.An integrated circuit, such as a graphics processing unit (GPU), comprises a dynamic power controller for setting the operating voltage and / or frequency. The controller can receive the current power used by the integrated circuit and a predicted power based on instructions pending in a plurality of processors. The controller determines settings that must be made to the operating voltage and / or frequency to minimize the difference between the current power and the predicted power. A reinforcing in-system learning mechanism is included to adjust the parameters of the controller yourself.

Description

GEBIETTERRITORY

Diese Technologie betrifft die Leistungsverwaltung einer integrierten Schaltung und weiter insbesondere eine dynamische Spannung- und/oder Frequenzeinstellung zur Leistungsverwaltung in einer integrierten Schaltung. Noch weiter betrifft diese Technologie insbesondere das Verwalten von Leistung basierend auf dem Abfühlen bevorstehender Prozessoranweisungen und Vorhersagen/Verfeinern von Leistungssteuersystemparametern mit einem bestärkenden In-System-Lernmechanismus. Anwendungsfälle umfassen die Leistungsverwaltung von massiven Parallelprozessoren einer GPU.This technology relates to the power management of an integrated circuit and, more particularly, to a dynamic voltage and / or frequency setting for power management in an integrated circuit. Even more particularly, this technology relates to managing performance based on sensing upcoming processor instructions and predicting / refining performance control system parameters with an empowering in-system learning mechanism. Use cases include the performance management of massive parallel processors of a GPU.

HINTERGRUNDBACKGROUND

Graphikprozessoren (GPUs) sind allgegenwärtig geworden. Nicht länger nur für Graphik, werden GPUs nun für einen weiten Bereich von Anwendungen verwendet, die von intensiven Rechenoperationen profitieren, die beispielsweise künstliche Intelligenz, Echtzeit-Mustererkennung und autonome Fahrzeugsteuerung und zahllose andere Anwendungen umfassen.Graphics processors (GPUs) have become ubiquitous. No longer just for graphics, GPUs are now used for a wide range of applications that benefit from intensive computing operations that include artificial intelligence, real-time pattern recognition and autonomous vehicle control, and countless other applications.

Viele GPUs sind massiv parallel - was bedeutet, dass sie viele Rechenelemente enthalten (z.B. programmierbare Streaming-Multiprozessoren (streaming multi-processors; SMs)), die parallel arbeiten. Diese massive Parallelarchitektur erlaubt Entwicklern, eine komplexe Berechnung in parallele Stücke aufzugliedern, die, weil sie gleichläufig durchgeführt werden, viel schneller abgeschlossen werden. Obwohl übermäßig schnell, kann eine derartig Anordnung von parallelen Rechenelementen viel Leistung verbrauchen und viel Wärme erzeugen. Daher ist die Leistungsverwaltung ein bedeutender Aspekt des Designs und Betriebs der GPU (und anderen) komplexen integrierten Schaltung geworden.Many GPUs are massively parallel - which means that they contain many computing elements (e.g. programmable streaming multi-processors (SMs)) that work in parallel. This massive parallel architecture allows developers to break down a complex calculation into parallel pieces, which because they are performed in parallel, are completed much faster. Although overly fast, such an arrangement of parallel computing elements can consume a lot of power and generate a lot of heat. Therefore, power management has become an important aspect of the design and operation of the GPU (and other) complex integrated circuits.

Genauso wie ein Tänzer mehr Energie beim schnellen Tanzen als beim langsamen Tanzen verbraucht, verbraucht eine Digitalschaltung gewöhnlicherweise mehr Leistung, wenn sie schneller arbeitet. In den meisten integrierten Schaltungen wird die Betriebsgeschwindigkeit durch eine Taktschaltung gesteuert. Die Taktschaltung sendet eine „Schwebung“ (Taktsignal) an verschiedenen Schaltungen auf dem Chip aus. Die Schaltungen synchronisieren ihren Betrieb mit der „Schwebung“ des Metronom-ähnlichen Taktsignals. Je schneller die Schwebung, desto schneller arbeiten die Schaltungen und desto mehr Leistung verbrauchen sie. Je schneller die Schwebung, desto mehr „Bewegungen“ können die Schaltungen jedoch auch in einer gegebenen Zeit durchführen.Just as a dancer uses more energy in fast dancing than in slow dancing, a digital circuit usually consumes more power when it works faster. In most integrated circuits, the operating speed is controlled by a clock circuit. The clock circuit sends out a "beat" (clock signal) to various circuits on the chip. The circuits synchronize their operation with the "beat" of the metronome-like clock signal. The faster the beat, the faster the circuits work and the more power they consume. However, the faster the beat, the more “movements” the circuits can perform in a given time.

Die Leistungsversorgungsspannung weist auch eine Wirkung auf Geschwindigkeit und Leistungsverbrauch auf. Transistoren (z.B. MOSFETs) werden verwendet, um die digitalen Logikschaltungen aufzubauen, die der Baukasten von modernen Hochgeschwindigkeitsprozessoren sind. Die Transistoren arbeiten (schalten) schneller, wenn die Leistungsversorgungsspannung erhöht wird. Eine Weise, darüber nachzudenken, ist: Das Schalten eines MOSFET-Transistors beinhaltet Laden und Entladen seiner Kapazität. Eine ansteigende Gleichspannung, die dem MOSFET Leistung zuführt, ermöglicht schnelleres Laden der Kapazität des MOSFET, um somit die Schaltgeschwindigkeit des Transistors zu erhöhen. Dies ist der Verwendung höheren Wasserdrucks ähnlich, um einen Eimer schneller zu füllen. Die schnellste Geschwindigkeit, bei welcher der MOSFET getaktet werden kann, kann somit von der Leistungsversorgungsspannung abhängen.The power supply voltage also has an effect on speed and power consumption. Transistors (e.g. MOSFETs) are used to build the digital logic circuits that are the building blocks of modern high-speed processors. The transistors operate (switch) faster when the power supply voltage is increased. One way to think about it is this: Switching a MOSFET transistor involves charging and discharging its capacitance. A rising DC voltage that supplies power to the MOSFET enables the capacitance of the MOSFET to be charged faster, thus increasing the switching speed of the transistor. This is similar to using higher water pressure to fill a bucket faster. The fastest speed at which the MOSFET can be clocked can thus depend on the power supply voltage.

Jedoch bewirkt das Betreiben von Schaltungen bei höherer Spannung, dass diese mehr Leistung verbrauchen, während ihre potentielle Betriebsgeschwindigkeit erhöht wird. Allgemein gesagt, je mehr Leistung die Schaltung verbraucht, desto mehr Wärme erzeugt sie. Während Lüfter oder Kühlkörper typischerweise verwendet werden, um übermäßige Wärme zu entfernen, verschwendet die unzulässige Erwärmung Leistung, die sonst zur Berechnung verwendet werden könnte. Für mobile Anwendungen, wie beispielsweise autonome Fahrzeuge, tragbare Vorrichtungen und dergleichen, verringert verschwendete Leistung unnötigerweise Batterielebensdauer. Sogar für stationäre Anwendungen, wie beispielsweise Server und Desktop-Computer, ist die Verschwendung von Leistung schlecht für die Umwelt und erhöht die Betriebskosten.However, operating circuits at higher voltages causes them to consume more power while increasing their potential operating speed. Generally speaking, the more power the circuit consumes, the more heat it generates. While fans or heat sinks are typically used to remove excessive heat, undue heating wastes power that could otherwise be used in the calculation. For mobile applications such as autonomous vehicles, portable devices, and the like, wasted power unnecessarily reduces battery life. Even for stationary applications such as servers and desktop computers, wasting power is bad for the environment and increases operating costs.

Während die unkomplizierteste Lösung ist, die Betriebsgeschwindigkeit der Schaltung zu verlangsamen, um Leistung einzusparen, wird dies die Anzahl von Operationen pro Sekunde nachteilig beeinflussen, welche die Schaltung durchführen kann, und somit die Geschwindigkeiten, bei der sie komplexe Berechnungen durchführen kann. In vielen anspruchsvollen Anwendungen, einschließlich, jedoch nicht begrenzt auf, autonome Fahrzeuge und benutzerinteraktive Server und andere Rechenvorrichtungen, ist eine hohe Geschwindigkeit-Performance für sicherheitskritische und andere Berechnungen bedeutender, die in Echtzeit oder nahe Echtzeit durchgeführt werden müssen.While the simplest solution is to slow down the circuit's operating speed to save power, this will adversely affect the number of operations per second the circuit can perform, and thus the speed at which it can perform complex calculations. In many demanding applications, including, but not limited to, autonomous vehicles and user interactive servers and other computing devices, high speed performance is more important for safety-critical and other calculations that need to be performed in real time or near real time.

Es gibt somit einen Kompromiss zwischen Betriebsgeschwindigkeit und Leistungsverbrauch. Um die Anzahl von Operationen pro Sekunde zu erhöhen, kann man die Rate (Frequenz) des Taktsignals (und wenn zur Unterstützung der höheren Taktrate, auch die Leistungsversorgungsspannung) auf Kosten von zusätzlichem Leistungsverbrauch erhöhen. Um Leistung einzusparen, kann man die Taktsignalrate (und wenn erwünscht, auch die Leistungsversorgungsspannung) auf Kosten langsamerer Verarbeitung verringern.There is therefore a compromise between operating speed and power consumption. In order to increase the number of operations per second, one can change the rate (frequency) of the clock signal (and if to support the higher clock rate, also the power supply voltage) at the expense of additional power consumption increase. To save power, one can reduce the clock signal rate (and, if desired, the power supply voltage) at the expense of slower processing.

Um diesen Kompromiss zu schaffen, stellen einige GPUs und andere Prozessoren eine dynamische Steuerung über die Taktrate (und in einigen Fällen auch die Leistungsversorgungsspannung, um die höhere Taktrate zu unterstützen) abhängig von der Rechenlast bereit, die den Schaltungen ermöglicht, „langsam zu tanzen“ wenn Verarbeitungsanforderungen geringer sind, und ihnen ermöglicht, „schnell zu tanzen“, wenn mehr Rechengeschwindigkeit gefordert wird. Eine derartige dynamische Steuerung kann den Gesamtleistungsverbrauch und eine entsprechende Wärmeabgabe verringern, während die Geschwindigkeit-Performance maximiert wird.To achieve this compromise, some GPUs and other processors provide dynamic control over the clock rate (and in some cases, the power supply voltage to support the higher clock rate) depending on the computational load that enables the circuits to "dance slowly" when processing requirements are lower and allows them to "dance fast" when more computing speed is required. Such dynamic control can reduce overall power consumption and heat dissipation while maximizing speed performance.

Während viel Arbeit in der Vergangenheit durchgeführt wurde, gibt es einen Bedarf für weitere verbesserte Lösungen, die ein anpassbares, jedoch abstimmbares System bereitstellen, das einen plötzlichen Lastschritt und eine plötzliche Lastfreigabe handhaben kann, ohne sich auf die Gesamt-Performance auszuwirken.While much work has been done in the past, there is a need for further improved solutions that provide a customizable but tunable system that can handle a sudden load step and load release without affecting overall performance.

Figurenlistelist of figures

Die folgende ausführliche Beschreibung von beispielhaften, nicht einschränkenden veranschaulichenden Ausführungsformen ist in Verbindung mit den Zeichnungen zu lesen, in denen:

  • 1 und 2 veranschaulichen schematisch ein Beispielsystem einschließlich einer proaktiven Leistungsverwaltungssteuerung gemäß bestimmter Beispielausführungsformen.
  • 3 veranschaulicht ein Ablaufdiagramm einer Leistungssteuertechnik unter Verwendung aktueller und prädiktiver GPU-Leistung gemäß bestimmter Beispielausführungsformen.
  • 4 und 5 veranschaulichen schematisch eine Schaltung, die eine proaktive Leistungsverwaltungstechnik mit einem Lernmechanismus gemäß bestimmter Beispielausführungsformen implementiert.
  • 6 ist ein schematisches Diagramm eines skalierten, bestärkenden Lernens basierten Proportional-Integral-Derivative-Systems.
  • 7 ist ein schematisches Diagramm eines skalierten, bestärkenden Lernens basierten Proportional-Integral-Derivative-Systems.
  • 8 ist ein schematisches Diagramm eines skalierten, bestärkenden Lernens basierten Proportional-Integral-Derivative-Systems, das zwei PID-Controller und zwei Lernsysteme umfasst.
  • 9 veranschaulicht ein bestärkendes Lernen-basiertes Rückkopplungssteuerverfahren gemäß bestimmter Beispielausführungsformen.
The following detailed description of exemplary, non-limiting, illustrative embodiments is to be read in conjunction with the drawings, in which:
  • 1 and 2 schematically illustrate an example system including proactive performance management control in accordance with certain example embodiments.
  • 3 illustrates a flow diagram of a power control technique using current and predictive GPU performance according to certain example embodiments.
  • 4 and 5 schematically illustrate a circuit that implements a proactive power management technique with a learning mechanism according to certain example embodiments.
  • 6 Figure 11 is a schematic diagram of a scaled, reinforcing learning based proportional-integral-derivative system.
  • 7 Figure 11 is a schematic diagram of a scaled, reinforcing learning based proportional-integral-derivative system.
  • 8th FIG. 11 is a schematic diagram of a scaled, reinforcing learning based proportional integral derivative system that includes two PID controllers and two learning systems.
  • 9 illustrates an encouraging learning-based feedback control method according to certain example embodiments.

AUSFÜHRLICHE BESCHREIBUNG VON BEISPIELAUSFÜHRUNGSFORMENDETAILED DESCRIPTION OF EXAMPLE EMBODIMENTS

Viele GPUs engagieren während der Laufzeit eine dynamische Spannung-Frequenz-Skalierung (dynamic voltage frequency scaling; DVFS), die eine Last-basierte Einstellung der Spannung und Frequenz der GPU einsetzt, um die höchste Performance unter einer Leistungshüllkurve zu bekommen. In diesem Kontext wird Last als die Energieintensität der Arbeit definiert, die auf der GPU ausgeführt wird. Math-dominierende Arbeitslasten bilden eine große Last, weil die Math-Operationen, die auf Streaming-Multiprozessoren (SMs) innerhalb der GPU laufen, hohe Energie in einem Taktzyklus verbrauchen können. Im Gegensatz dazu wird, wenn die Arbeit Speicher-dominierend ist und nicht so viele Math-Operationen in den SMs verwendet, die Arbeit als moderat oder Niedriglast angesehen (in derartigen Fällen, können die SMs viel von ihrer Zeit verbrauchen, um auf das Speichersystem zu warten, um Daten aus dem Speicher abzurufen).Many GPUs engage dynamic voltage frequency scaling (DVFS) during runtime, which uses a load-based adjustment of the voltage and frequency of the GPU to get the best performance under a power envelope. In this context, load is defined as the energy intensity of the work performed on the GPU. Math-dominating workloads are a huge burden because the math operations that run on streaming multiprocessors (SMs) within the GPU can consume high energy in one clock cycle. In contrast, if the work is memory-dominant and does not use as many math operations in the SMs, the work is considered moderate or low load (in such cases, the SMs can consume much of their time to go to the storage system wait to retrieve data from memory).

Seiner Natur entsprechend, ist die Last-basierte DVFS reaktiv in Natur. Diese Last-basierte DVFS kann jedoch zu einem nachteiligen Verhalten führen, wobei ein Arbeitspunkt bei hoher Spannung/hoher Frequenz plötzlich einen Lastschritt auf der GPU erfahren könnte. Dies tritt prinzipiell auf, weil sich die auf der GPU gestartete Arbeit schnell von einem Math-dominierenden Regime in ein Speicher-dominierendes Regime und umgekehrt innerhalb kurzer Zeitskalen ändern kann, wo die DVFS nicht arbeiten kann. Ein Lastschritt ist, wenn die in der GPU verbrauchte Energie ansteigt, weil bei einer gegebenen Spannung und Frequenz Operationen hoher Energie auftreten können. Für die GPU ist dies dann, wenn sie Hochleistung-Math-Anweisungen ausführt. Dieser Zustand kann zu Überschreitung von Spitzenleistung bei kurzen Zeitskalen führen, dass wiederum das elektrische/Leistung-Liefersystem für die GPU beansprucht und zu Spannungsabfällen oder Zuverlässigkeitsproblemen führen kann.By nature, load-based DVFS is reactive in nature. However, this load-based DVFS can lead to disadvantageous behavior, where an operating point at high voltage / high frequency could suddenly experience a load step on the GPU. This occurs in principle because the work started on the GPU can quickly change from a math-dominating regime to a memory-dominating regime and vice versa within short time scales where the DVFS cannot work. A load step is when the energy consumed in the GPU increases because high energy operations can occur at a given voltage and frequency. For the GPU, this is when it executes high performance math instructions. This condition can cause peak power to be exceeded on short time scales, which in turn can stress the electrical / power delivery system for the GPU and lead to voltage drops or reliability issues.

Hochenergieanweisungen (wie beispielsweise mathematische Matrixanweisungen (matrix math instructions; MMA) oder Tensorkernanweisungen, welche die Beschleunigung von großen Matrixoperationen im Herzen von künstlicher Intelligenz ermöglichen) erhöhen die in einem Taktzyklus verbrauchte Energie erheblich und können eine Auswirkung auf Leistungsliefernetzwerke aufweisen, um Zuverlässigkeits- oder Zeiteinstellungsprobleme zu verursachen. Dies kann dazu führen, dass die GPU Margen unterhalten muss, die sich in die Performance fressen. Um sich diesen Problemen zu widmen, benötigen wir ein adaptives jedoch abstimmbares System, um zu gewährleisten, dass wir den Energieverbrauch modulieren können, um diese nachteiligen Wirkungen abzuschwächen, ohne die Gesamt-Performance zu beeinträchtigen. Grundsätzlich erreichen die aktuellen Vorgehensweisen, um derartige Wirkungen zu handhaben, nicht die optimale Arbeitspunktverwaltung, wie nachstehend beschrieben.High energy instructions (such as matrix math instructions (MMA) or tensor core instructions that enable the acceleration of large matrix operations in the heart of artificial intelligence) significantly increase the energy consumed in a clock cycle and can have an impact on power delivery networks to avoid reliability or timing issues to cause. This can lead to GPU margins must entertain who eat their way into performance. To address these issues, we need an adaptive but tunable system to ensure that we can modulate energy consumption to mitigate these adverse effects without compromising overall performance. Basically, the current procedures for handling such effects do not achieve the optimal working point management, as described below.

Aktuelle Vorgehensweisen, um Leistungsausschläge in kurzen Zeitskalen zu verhindern, umfassen:

  1. 1) Präventiv - Deckeln der betriebliche Höchstfrequenz, um derartige Ausschläge zu verhindern oder zu begrenzen; und
  2. 2) Reaktiv - Durch Einsetzen von Sensoren, welche die erhöhte Leistung/Strom abfühlen und dann mittels Verringerns der Betriebsspannung und Frequenz durch adaptive Spannung-Frequenz-Skalierung tätig werden.
Current practices to prevent performance spikes in short time scales include:
  1. 1) Preventive - capping the maximum operational frequency to prevent or limit such rashes; and
  2. 2) Reactive - By using sensors that sense the increased power / current and then operate by reducing the operating voltage and frequency through adaptive voltage-frequency scaling.

Diese Vorgehensweisen können wirksam sein, jedoch ihre Vorbehalte/Einschränkungen aufweisen.These practices can be effective, but have their reservations / limitations.

Die erste Vorgehensweise begrenzt die maximale Frequenz, bei der die GPU zuverlässig arbeiten kann, und schränkt Performance ein. Diese Vorgehensweise stellt ausgestaltungsbedingt sicher, dass die Spitzenleistung bei kurzen Zeitskalen begrenzt ist, wobei die gedeckelte maximale Betriebsfrequenz jedoch wahrscheinlich die Performance bei längeren Zeitskalen begrenzt, was zum Messen des Energieeffizienz der GPU bedeutsam sein kann.The first approach limits the maximum frequency at which the GPU can operate reliably and limits performance. This approach ensures, by design, that peak power is limited on short time scales, but the capped maximum operating frequency is likely to limit performance on longer time scales, which can be important for measuring the GPU's energy efficiency.

Die zweite Vorgehensweise ist eine reaktive Vorgehensweise und hängt von der Zeit zum Abzufühlen und Aktivieren, die Latenzen aufweisen kann, damit sie wirksam sind, wobei sich jedoch die Zeitskalen der Wirksamkeit typischerweise nicht unter 100 psec erstrecken.The second approach is a reactive approach and depends on the time to sense and activate that latencies can have to be effective, but the timescales of effectiveness typically do not extend below 100 psec.

Der Grund dafür ist, weil es Kosten gibt, um die Änderung in der Last auf eine reaktive Art und Weise zu messen, da sich diese Änderung in der Last als eine Änderung in der Leistung/Strom-Abnahme manifestiert, die der Abfühllatenz zugeordnet ist. Wenn ein Systementwickler versucht, zu immer niedrigeren Zeitskalen zum Verwalten der Spitzenleistung zu gehen, läuft er gegen einige Grenzen von externen Komponenten (z.B. Kanalmultiplexierung), die der Flaschenhals beim Beschleunigen des Abfühlens sein kann.The reason for this is because there is a cost to measure the change in the load in a reactive manner, since this change in the load manifests itself as a change in the power / current decrease associated with the sensing latency. When a system designer tries to go to ever lower timescales to manage peak performance, he runs up against some limits of external components (e.g. channel multiplexing) that can be the bottleneck in speeding up sensing.

Eine alternative Vorgehensweise würde sein, dass an Ort und Stelle ein Hinweis über die Änderung in der Arbeitslast (Lastschritt/Freigabe) gegeben wird, so dass diese proaktive Vorgehensweise die Leistungsverwaltung leiten kann, die Lieferung einzustellen, um Zuverlässigkeitsprobleme zu verhindern. Das Erfassen einer plötzlichen und großen Änderung in der Arbeitslast ist jedoch in den Frontendstufen der GPU-Pipeline bestimmt schwierig, insbesondere in Rechenarbeitslasten, wo die Programmsemantik an dem vorderen Ende der GPU-Pipeline nicht sichtbar ist. Stufen später in der GPU-Pipeline (z.B. im Streaming-Multiprozessor (SM) von NVIDIA GPUs) gibt es jedoch einen idealen Ort für die Erfassung, da die Semantik sichtbar ist, weil die Anweisungen in dem Programm decodiert werden können, um derartige Änderungen in der Last zu kennzeichnen.An alternative approach would be to provide an on-the-spot notice of the change in workload (load step / release) so that this proactive approach can guide performance management to discontinue delivery to prevent reliability issues. However, detecting a sudden and large change in the workload is certainly difficult in the front end stages of the GPU pipeline, especially in computing workloads where the program semantics are not visible at the front end of the GPU pipeline. However, stages later in the GPU pipeline (e.g. in the streaming multiprocessor (SM) of NVIDIA GPUs) there is an ideal location for the acquisition since the semantics are visible because the instructions in the program can be decoded to reflect such changes in the load.

Die Laständerungsverwaltung ist nicht nur auf den Lastschritt begrenzt (d.h. eine Zunahme in Strom/Leistung), sondern es gibt außerdem auch einen Bedarf, plötzliche Verringerungen in der Leistung (Lastfreigabe) zu verwalten. Eine plötzliche Lastfreigabe kann bewirken, dass die Leistungsversorgung aufgrund der in den reaktiven Komponenten gespeicherten Energie überschwingt, was einen induktiven Rückschlag verursacht und die ebenfalls Auslösung des Leistungsregulierungssystems verursachen kann.The load change management is not only limited to the load step (i.e. an increase in current / power), but there is also a need to manage sudden decreases in power (load release). A sudden load release can cause the power supply to overshoot due to the energy stored in the reactive components, causing an inductive kickback, which can also cause the power regulation system to trip.

Das Erfassen einer plötzlichen und großen Änderung in der Arbeitslast ist in den Frontendstufen der GPU-Pipeline besonders schwierig, wobei die mittleren Stufen der GPU (wie beispielsweise SMs in NVIDIA GPUs) jedoch Anweisungen in den Programmen, die wahrscheinlich zu Lastschritt/FreigabeVerhalten führen, wirksam vor der Ausführung der Anweisungen erfassen können.Detecting a sudden and large change in workload is particularly difficult in the front end stages of the GPU pipeline, but the middle stages of the GPU (such as SMs in NVIDIA GPUs), however, have instructions in the programs that are likely to result in load step / release behavior can understand before executing the instructions.

Anweisungsvordecodierung, um zukünftige Leistungsbedürfnisse zu schätzenInstruction predecoding to estimate future performance needs

Beispielausführungsformen stellen ein proaktives Abtastverfahren bereit, durch das ein potentielles oder wahrscheinliches Lastschrittereignis (wie beispielsweise durch einen SM) mittels einer Anweisungsvordecodierung gekennzeichnet werden kann. Die Anweisungsvordecodierung durch einen Anweisungsvorausschau-Vordecodierer, der an einer Warteschlange oder einem Puffer von abgerufenen Anweisungen arbeitet, bevor sie ausgeführt werden, macht es möglich, dass die Anweisung markiert/gekennzeichnet wird, bevor die Anweisung zur Ausführung gesendet wird. Derartige Anweisungsvorausschau-Vordecodierer können zusätzlich zu dem typischen Anweisungsdecodierer verwendet werden, um die Anweisung zur Ausführung zu decodieren. Die Anweisungsvorausschau-Vordecodierung ermöglicht die Benachrichtigung eines bevorstehenden Lastschritt/Freigabe-Ereignis, bevor das Ereignis einige Taktzyklen später tatsächlich auftritt. Diese Vorausbenachrichtigung des Ereignisses an die Leistungsverwaltungseinheit ermöglicht, Änderungen durchzuführen, um Spitzenleistungsüberschreitungsszenarien zu verhindern.Sample embodiments provide a proactive sampling technique that can be used to identify a potential or likely load step event (such as an SM) using instruction predecoding. Instruction predecoding by an instruction look-ahead predecoder that works on a queue or buffer of instructions fetched before they are executed enables the instruction to be marked / flagged before the instruction is sent for execution. Such instruction look-ahead predecoders can be used in addition to the typical instruction decoder to decode the instruction for execution. Instruction preview predecoding enables notification of an upcoming load step / enable event before the event actually occurs a few clock cycles later. This advance notification of the event to the power management unit enables Make changes to prevent peak performance scenarios.

Eine Leistungsverwaltungseinheit verfolgt die Betriebsspannung und Frequenz und kann diese Benachrichtigung verwenden, um Aktionen vorzunehmen, um die Spannung und/oder Frequenz zu dem Betriebsregime hin zu bewegen, um Hochleistungsereignisse aufzuhalten. Das Bewegen von entweder Spannung und/oder Frequenz, um die Leistung auf diese Art und Weise zu verringern, kann elektrische Zuverlässigkeitsprobleme in kürzeren Zeitskalen als andere Vorgehensweisen verringern, jedoch ohne die Performance zu gefährden.A power management unit tracks the operating voltage and frequency and can use this notification to take action to move the voltage and / or frequency towards the operating regime to stop high performance events. Moving either voltage and / or frequency to reduce performance in this way can reduce electrical reliability problems in shorter time scales than other approaches, but without compromising performance.

Aus einer Analyse der Architektur können Beispielausführungsformen die Anweisungen klar kennzeichnen, die bei Ausführung zu hoher Energie führen können, die in einem Taktzyklus verbraucht wird, die zu höherer Leistung führen. Die Anweisung-Vordecodierung kann diese Anweisungen klassifizieren, wenn sie beispielsweise durch das Frontend der SM-Pipeline gehen und diese Ereignisse einer GPU-Ebenen-Leistungsverwaltungseinheit (PMU) mitteilen. Sobald Anweisungen hoher Energie gekennzeichnet sind (z.B. im SM), wird die Information verbraucht, um Änderungen in Hardware und/oder Software auszulösen, um den Schritt oder Freigabe der Spitzenleistung zu verwalten.From an analysis of the architecture, example embodiments can clearly identify the instructions that, when executed, can result in high power consumption in a clock cycle, which can result in higher performance. The instruction predecoding can classify these instructions, for example, if they pass through the front end of the SM pipeline and report these events to a GPU level power management unit (PMU). Once high energy instructions are flagged (e.g. in the SM), the information is consumed to trigger changes in hardware and / or software to manage the pace or release of peak performance.

Auf der GPU-Ebene aggregiert die PMU diese Benachrichtigungen beispielsweise von allen SMs in der GPU und kann dann basierend auf den zeitlichen und räumlichen Eigenschaften dieser Ereignisauftritte das Potential für die Größe der plötzlichen Arbeitszunahme oder -verringerung berechnen. Dies ermöglicht der PMU, eine proportionale Änderung abhängig von der vollen GPU-Arbeitslast durchzuführen, da es eine Variation in der auf jedem SM laufenden Arbeitslast geben könnte. Die PMU führt Änderungen an der passenden Zeitskala durch, um lediglich eine Taktfrequenz oder eine Spannung/Frequenz-Änderung zu implementieren, um die Spitzenleistung in Erwartung des Hochleistungsereignisses zu begrenzen, um dadurch eine Überschreitung zu vermeiden und den Betrieb auf Systemebene zu verbessern.At the GPU level, the PMU aggregates these notifications, for example, from all SMs in the GPU and can then calculate the potential for the size of the sudden increase or decrease in work based on the temporal and spatial properties of these event occurrences. This enables the PMU to make a proportional change depending on the full GPU workload, as there could be a variation in the workload running on each SM. The PMU makes changes to the appropriate time scale to implement only a clock frequency or a voltage / frequency change to limit the peak power in anticipation of the high-performance event, thereby avoiding overshoot and improving system-level operation.

In einer nicht einschränkenden Beispielausführungsform umfasst jeder SM einen Vordecodierer, der einen digitalen Code ausgibt, der codiert ist, um die Energie von Anweisungen zu kennzeichnen, die in der Zukunft auszuführen sind. Die digitalen Codes der verschiedenen SMs werden akkumuliert, gefiltert und durch digitale Verarbeitung geglättet, um ein Steuersystem zu speisen. Da es einschränkend sein würde, die Parameter für das Steuersystem mit einem überwachten Offline-Trainingssystem herzuleiten, verfeinern Beispielausführungsformen kontinuierlich die Steuersystemparameter mit einem Lernmechanismus im System. Beispielausführungsformen ermöglichen eine verbesserte Performance innerhalb einer Leistungshüllkurve (Perf/W) mit robustem Betrieb auf Systemebene in kurzen Zeitskalen; beispielsweise bei Server-basierten Systemen, die wünschenswerterweise den höchsten Wirkungsgrad (Performance bei einer Leistungshüllkurve) mit hoher Zuverlässigkeit des Systembetriebs aufweisen.In one non-limiting example embodiment, each SM includes a predecoder that outputs a digital code that is encoded to identify the power of instructions to be executed in the future. The digital codes of the various SMs are accumulated, filtered, and smoothed through digital processing to feed a control system. Since it would be restrictive to derive the parameters for the control system with a monitored offline training system, sample embodiments continuously refine the control system parameters with a learning mechanism in the system. Example embodiments enable improved performance within a performance envelope (Perf / W) with robust operation at the system level in short time scales; for example in server-based systems that desirably have the highest efficiency (performance with a performance envelope) with high reliability of system operation.

Aktivierungactivation

In nicht einschränkenden Beispielausführungsformen wird das Abfühlen von Hochenergieanweisungsänderungen von dem SM verwendet, um Änderungen in Hardware oder Software zu aktivieren, um einen Schritt oder eine Freigabe der Spitzenleistung zu verwalten. Auf der GPU-Ebene aggregiert die PMU diese Benachrichtigungen von allen SMs in der GPU und kann dann basierend auf den zeitlichen und räumlichen Eigenschaften dieser Ereignisauftritte das Potential für die Größe der Erhöhung oder Verringerung der plötzlichen Arbeit berechnen.In non-limiting example embodiments, sensing high energy instruction changes from the SM is used to activate changes in hardware or software to manage a step or release of peak performance. At the GPU level, the PMU aggregates these notifications from all SMs in the GPU and can then calculate the potential for increasing or decreasing the sudden work based on the temporal and spatial characteristics of these event occurrences.

Eine Vorgehensweise gemäß Beispielausführungsformen ist, einen „PID“ (proportional-integral-derivative) Proportional-Integral-Derivative (PID)-Controller zu verwenden, der feste oder selbstabgestimmte Parameter für die Controller ermöglicht. Die PID-Controllerausgabe kann lediglich eine Frequenz ändern, lediglich eine Spannung ändern, oder eine Spannung/FrequenzÄnderung basierend auf der Zeitskala durchführen, bei der die Leistung zu verwalten ist.One approach according to example embodiments is to use a “PID” (proportional-integral-derivative) proportional-integral-derivative (PID) controller that enables fixed or self-defined parameters for the controllers. The PID controller output can only change a frequency, only change a voltage, or perform a voltage / frequency change based on the time scale at which the power is to be managed.

In einer nicht einschränkenden Beispielausführungsform werden die Hochenergieanweisungsbenachrichtigungen von den SMs in einem IIR (infinite impulse response)-Filter aggregiert, dessen Ausgabe eine wirksame Änderung in der Rechenenergie der GPU bereitstellt. Die Rechenenergie zusammen mit der eingestellten Spannung und Frequenz geben eine Nahe-Zukunft-Leistungsschätzung. Beispielausführungsformen nehmen den Unterschied von dieser zukünftigen Leistungsschätzung gegenüber der aktuellen gemessenen Leistung. Dieser Unterschied, auch bekannt als Fehler oder Delta, wird in einen PID-Controller gespeist. Beispielausführungsformen stellen einen adaptiven PID-Controller bereit, wo die PID-Steuerparameter nicht statisch sind, sondern basierend auf einer Vorgehensweise des tiefen bestärkenden Lernens (reinforcement learning; RL) aktualisiert werden. Der Ansatz des maschinellen Lernens kann eine unterschiedliche Zeitskala als der Betrieb des PID aufweisen, was beispielsweise dem PID ermöglicht, viel schneller zu arbeiten, als die Anpassbarkeit der Lernvorgehensweise vorsieht.In a non-limiting example embodiment, the high energy instruction notifications from the SMs are aggregated in an IIR (infinite impulse response) filter, the output of which provides an effective change in the computing power of the GPU. The computing energy together with the set voltage and frequency give a near future performance estimate. Example embodiments take the difference from this future performance estimate versus the current measured performance. This difference, also known as error or delta, is fed into a PID controller. Sample embodiments provide an adaptive PID controller where the PID control parameters are not static but are updated based on a reinforcement learning (RL) approach. The machine learning approach can have a different time scale than the operation of the PID, which, for example, enables the PID to work much faster than the adaptability of the learning approach.

Da die Arbeitslasten divers und in kurzen Zeitskalen variieren können, verwenden einige nicht einschränkende Beispielausführungsformen eine Vorgehensweise des bestärkenden Lernens (reinforcement learning; RL) unter Verwendung eines Actor-Critic oder Q-Maschinenlernens (ML), um die PID-Parameter zu aktualisieren. Das bestärkende Lernen kann die Wirkung bestimmter Betriebsparameter der PID auf Schritt und Freigabe der Spitzenleistung beobachten und diese Betriebsparameter abstimmen, um die Leistungsverwaltung-Performance zu optimieren.Because workloads can vary widely and in short time scales, some use Non-limiting example embodiments, a reinforcement learning (RL) approach using an actor-critical or Q-machine learning (ML) to update the PID parameters. The empowering learning can observe the effect of certain operating parameters of the PID on the step and release of the peak performance and can adjust these operating parameters in order to optimize the performance management performance.

In nicht einschränkenden Beispielausführungsformen bewegt der PID-Controller die Frequenz und/oder Spannung, um den Fehler auf 0 zu verringern (oder ihn zumindest minimieren) und parallel werden die Eingaben (Fehler, gemessene Leistung und vorhergesagte Leistung) in einen Prozessor oder Controller der PMU gespeist. Der PMU-Prozessor/Controller lässt einen selbstabstimmenden Lernalgorithmus laufen, der die Controllerparameter beispielsweise basierend auf den Eigenschaften des Fehlers periodisch aktualisieren kann.In non-limiting example embodiments, the PID controller moves the frequency and / or voltage to reduce (or at least minimize) the error to 0 and, in parallel, inputs (errors, measured performance and predicted performance) into a processor or controller of the PMU fed. The PMU processor / controller runs a self-tuning learning algorithm that can periodically update the controller parameters based, for example, on the properties of the error.

Die Vorgehensweise, Hardware (HW) zu betätigen und Software (SW) abzustimmen, macht ein höherwertiges Steuersystem möglich, das die Leistungsabdeckung vorhersagt, um nur eine Frequenz- oder eine Spannung/Frequenz-Änderung zu implementieren, um die Spitzenleistung in Erwartung des Hochleistungsereignisses zu begrenzen, um dadurch den Betrieb auf Systemebene und die Zuverlässigkeit zu verbessern, wenn unter dem maximalen Wirkungsgrad (Perf@W) gearbeitet wird. Wenn das bestärkende maschinelle Lernen weitere Erfahrung mit Leistungsverwaltungsergebnissen auf der bestimmten GPU erlangt, an der es arbeitet, wird es die Performance wirksamer abstimmen, um Überleistung(Schritt und Freigabe)-Szenarien zu vermeiden, die der PID-Controller sonst basierend auf der erwarteten Rechenlast anordnen würde. In einigen Ausführungsformen ist das bestärkende maschinelle Lernen imstande, die SMs zu befehlen, ihre Anweisungsausführung zu ändern (z.B. durch Verzögern der Ausführung von Hochleistungsanwendungen oder andernfalls der Lastenausgleichleistung, die für die Anweisungsausführung zwischen unterschiedlichen Zeitintervallen erforderlich ist), um Überschritte und Überfreigaben des Systems weiter zu vermeiden.The process of operating hardware (HW) and tuning software (SW) enables a higher quality control system that predicts power coverage to implement only a frequency or a voltage / frequency change to increase the peak power in anticipation of the high performance event limit to improve system level operation and reliability when working at maximum efficiency (Perf @ W). As reinforcing machine learning gains more experience with performance management results on the particular GPU it is working on, it will tune performance more effectively to avoid over-performance (step and release) scenarios that the PID controller would otherwise have based on the expected computational load would order. In some embodiments, reinforcing machine learning is able to command SMs to change their instruction execution (e.g., by delaying the execution of high performance applications or otherwise the load balancing performance required for instruction execution between different time intervals) by system overruns and over-releases to avoid.

Betrachtung auf hohem Niveau der LeistungsverwaltungssteuerungConsideration at a high level of performance management control

1 und 2 veranschaulichen schematisch ein Beispielsystem 100, das eine proaktive, prädiktive z.B. Maschinenlernenbasiertes Leistungsverwaltungssteuerung gemäß bestimmter Beispielausführungsformen umfasst. 1 and 2 schematically illustrate an example system 100 that includes a proactive, predictive, for example, machine learning-based, performance management control in accordance with certain example embodiments.

Das System 100 kann ein oder mehrere GPUs 102(0), ... 102 (N) umfassen, die miteinander über ein oder mehrere PCI-Busse oder anderen digitalen Kommunikationsbuskomplex kommunizieren. GPUs 102 können mit zugeordneten Speichern 104(0), 104(N) verbunden sein. In einigen Ausführungsformen kann das System 100 ein oder mehrere CPUs (nicht gezeigt) oder andere Steuerprozessoren umfassen, die mit der einen oder mehreren GPUs 102 über den digitalen Kommunikationsbuskomplex kommunizieren, und die Steuerprozessoren und GPUs können auf ihre jeweiligen zugeordneten Speicher und/oder einen vereinigten Speicher zugreifen.System 100 can have one or more GPUs 102 (0), ... 102 (N) that communicate with one another via one or more PCI buses or other digital communication bus complex. GPUs 102 can with assigned memories 104 (0) 104 (N) connected. In some embodiments, the system 100 include one or more CPUs (not shown) or other control processors associated with the one or more GPUs 102 communicate over the digital communication bus complex, and the control processors and GPUs can access their respective associated memories and / or a merged memory.

Die GPUs 102 können jede Art von GPUs sein, wie beispielsweise eine Architektur mit einer großen Anzahl von Parallelprozessoren 116. Beispielsweise kann jede GPU 102 einen Verarbeitungskomplex einer großen Anzahl von Streaming-Multiprozessoren (SMs) 116(0), ... 116 (M) umfassen, die für hochparallelen Betrieb konfiguriert sind.The GPUs 102 can be any type of GPU, such as an architecture with a large number of parallel processors 116 , For example, any GPU 102 a processing complex of a large number of streaming multiprocessors (SMs) 116 (0), ... 116 (M), which are configured for highly parallel operation.

1 veranschaulicht das System 100, das zeigt, wie der GPU 102 Leistung durch ein Leistungsverteilungsnetzwerk 110 zugeführt wird. Eine Leistungsverwaltungseinheit („PMU“ oder „Leistungsverwaltung“) 140 überwacht die Betriebsspannung und/oder den Strom der an die GPU durch das Leistungsverteilungsnetzwerk 110 zugeführten Leistung und/oder die Betriebsfrequenz der GPU 102. Die Leistungsverwaltungseinheit 140 empfängt auch Signale 142 von einem oder mehreren Parallelprozessoren 116, die Leistung angeben, die benötigt wird, um Anweisungen durchzuführen, die noch nicht ausgeführt wurden. Beispielsweise können die Prozessoren 116 in Verbindung mit der Leistungsverwaltung 140 durch Anweisungsvorausschau-Vordecodierung bestimmen, welche Leistung von den Prozessoren benötigt werden wird, um anhängige oder zukünftige Anweisungen durchzuführen, bevor die Anweisungen zur Ausführung durch die Prozessoren verschickt werden (z.B. durch einen Planer oder eine ähnliche Struktur). Basierend auf der aktuellen Betriebsspannung und/oder Frequenz der GPU 102 und der Signale von den Prozessoren 116 vorhersagt oder schätzt die Leistungsverwaltungseinheit 140 den Betrag der Leistung, die Prozessoren in der nahen Zukunft benötigen werden, und steuert die der GPU zugeführte Spannung und/oder die Betriebsfrequenz des GPU-Taktsignals, so dass der GPU 102 geeignete Leistungsniveaus zu der Zeit zugeführt werden, wenn die Anweisungen von den Prozessoren 116 ausgeführt werden. 1 illustrates the system 100 that shows how the GPU 102 Performance through a power distribution network 110 is fed. A performance management unit ("PMU" or "performance management") 140 monitors the operating voltage and / or the current to the GPU through the power distribution network 110 supplied power and / or the operating frequency of the GPU 102 , The performance management unit 140 also receives signals 142 of one or more parallel processors 116 , indicate the performance required to complete instructions that have not yet been executed. For example, the processors 116 in connection with the service management 140 use instruction look-up predecode to determine what power the processors will need to execute pending or future instructions before the instructions are dispatched for execution by the processors (e.g., by a scheduler or similar structure). Based on the current operating voltage and / or frequency of the GPU 102 and the signals from the processors 116 predicts or estimates the performance management unit 140 the amount of power that processors will need in the near future and controls the voltage applied to the GPU and / or the operating frequency of the GPU clock signal so that the GPU 102 appropriate levels of power are supplied at the time when the instructions are from the processors 116 be carried out.

Als Beispiel wird, wenn eine Math-dominante Arbeitslast, die hohe Energie in einem Taktzyklus verbraucht, dabei ist, zur Ausführung durch die Prozessoren 116 geplant zu werden, die Leistungsverwaltung 140 eine Signalisierung von den Prozessoren 116 empfangen, die angibt, dass sie dabei sind, eine Mathematik-dominante Arbeitslast auszuführen. Als Antwort vorhersagt die Leistungsverwaltung 140, dass die Prozessoren 116 eine höhere Leistung einige Taktzyklen in der Zukunft, d.h., einige Zyklen später als die Zyklen benötigen wird, die aktuell von den Prozessoren ausgeführt werden. Basierend auf der vorhergesagten Leistung und der aktuell von der GPU 102 gezogenen Leistung kann die Leistungsverwaltung 140 die Betriebsfrequenz und/oder die Spannung ändern, die der GPU 102 bereitgestellt wird, so dass die GPU bei einer optimalen Leistung arbeitet (nicht zu hoch und nicht zu niedrig), um die Anweisungen schnell und effizient auszuführen. Wenn eine Speicher-dominante Arbeitslast, die niedrigere Energie in einem Taktzyklus verbraucht, dabei ist, zur Ausführung durch die Prozessoren 116 geplant zu werden, wird die Leistungsverwaltung 140 Signale empfangen, die angeben, dass Anweisungen, die eine niedrigere Leistung einige Taktzyklen später benötigen, ausgeführt werden. Basierend auf der vorhergesagten Leistung und der von der GPU 102 gezogenen aktuellen Leistung kann die Leistungsverwaltung 140 die Betriebsfrequenz und/oder die Spannung verringern, die der GPU 102 bereitgestellt wird, so dass die GPU die Speicher-dominante Arbeitslast weiterhin effizient ausführen kann, ohne mehr Leistung als notwendig zu verwenden.As an example, if there is a math dominant workload that consumes high energy in one clock cycle, it will be executed by the processors 116 to be planned, the performance management 140 signaling from the processors 116 received, indicating that they are about to perform a math-dominant workload. In response, service management predicts 140 that the processors 116 higher performance will take a few clock cycles in the future, that is, a few cycles later than the cycles currently being executed by the processors. Based on the predicted performance and current from the GPU 102 drawn performance can the performance management 140 change the operating frequency and / or voltage that the GPU 102 is provided so that the GPU operates at optimal performance (not too high and not too low) to execute the instructions quickly and efficiently. When a memory-dominant workload that consumes lower energy in one clock cycle is about to be executed by the processors 116 to be planned is the performance management 140 Receive signals indicating that instructions that require lower performance are executed a few clock cycles later. Based on the predicted performance and that of the GPU 102 drawn current performance can the performance management 140 reduce the operating frequency and / or voltage that the GPU 102 is provided so that the GPU can continue to run the memory-dominant workload efficiently without using more power than necessary.

In einigen beispielhaften Ausführungsformen kann, wenn die Anweisung-Vordecodierung die Leistungsverwaltung 140 alarmiert, dass viele Hochleistungsanwendungen, wie beispielsweise Tensor- oder andere intensive Rechenanweisungen, dabei sind, von einer Anzahl unterschiedlichen Prozessoren 116 ausgeführt zu werden, und die Leistungsverwaltung 140 vorhersagt, dass eine derartige Ausführung wahrscheinlich einen unannehmbaren hohen Spitzenleistungsverbrauch, z.B. aufgrund Überschreitung, verursachen wird, kann die Leistungsverwaltung die Taktfrequenz, die Leistungsversorgungsspannung oder sowohl die Spannung als auch die Frequenz verringern, um die Leistung in Erwartung des Hochleistungsereignisses zu begrenzen. Das Begrenzen der Leistung durch Verringern der Frequenz und/oder der Spannung in Erwartung des Hochleistungsereignisses kann Überstromsituationen vermeiden, die zu Schaltungsschäden, Leistungsversorgungsschwankungen oder übermäßiger Erwärmung führen können.In some exemplary embodiments, if the instruction predecode, performance management may 140 alarms that many high performance applications, such as tensor or other intensive computing instructions, are included from a number of different processors 116 to be run and performance management 140 predicts that such an implementation is likely to cause unacceptably high peak power consumption, e.g. due to overshoot, the power manager may reduce the clock frequency, the power supply voltage, or both the voltage and the frequency to limit the power in anticipation of the high power event. Limiting the power by lowering the frequency and / or voltage in anticipation of the high performance event can avoid overcurrent situations that can lead to circuit damage, power supply fluctuations, or excessive heating.

Wie in 1 gezeigt, überwacht die Leistungsverwaltung 140 ein Signal 114 der Strom- und/oder Spannungsabtastinformation, die ein Signalaufbereiter und Multiplexer (MUX) 112 empfangen wird, der ein oder mehrere Leistungsschienen des Leistungsverteilungsnetzwerks 110 abtastet. Das Signal 114 gibt die aktuelle Leistung an, die der GPU 102 bereitgestellt wird. In einigen Ausführungsformen kann die GPU 102 über ein Signal 115 bestimmte Leistungsschienen zum Überwachen auswählen. Die Leistungsverwaltung 140 empfängt auch Signale 142 von einem oder mehreren Parallelprozessoren 116. Die GPU 102 steuert die Leistung, die sie empfängt, durch Steuern des Leistungsverteilungsnetzwerks 110 über ein Signal 125 basierend auf einem Unterschied zwischen der durch das Signal 115 dargestellten aktuellen Leistung und der basierend auf Signalen 142 bestimmten prädiktiven Leistung.As in 1 shown, monitors performance management 140 a signal 114 the current and / or voltage sampling information that a signal conditioner and multiplexer (MUX) 112 is received, the one or more power rails of the power distribution network 110 scans. The signal 114 indicates the current performance of the GPU 102 provided. In some embodiments, the GPU 102 about a signal 115 select certain power rails for monitoring. Service management 140 also receives signals 142 of one or more parallel processors 116 , The GPU 102 controls the power it receives by controlling the power distribution network 110 about a signal 125 based on a difference between that by the signal 115 shown current performance and based on signals 142 certain predictive performance.

Wie nachstehend ausführlicher erläutert wird, kann die Leistungsverwaltung 140 Selbstlernen und Selbsteinstellen von Parametern umfassen, die verwendet werden, um die Einstellungen für die Betriebsspannung und/oder Frequenz vorherzusagen und einzustellen. In einigen Ausführungsformen kann das Selbstlernen teilweise durch einen Warp von einem der Parallelprozessoren 116 unter Verwendung eines oder mehrerer tiefer neuronaler Netzwerke durchgeführt werden, die durch einem Hardware-basierten Beschleuniger für tiefes Lernen (deep learning accelerator; DLA) 141 beschleunigt werden, der als Teil der GPU 102 enthalten ist.As explained in more detail below, performance management can 140 Self-learning and self-tuning include parameters that are used to predict and adjust the operating voltage and / or frequency settings. In some embodiments, self-learning may be partially through a warp from one of the parallel processors 116 performed using one or more deep neural networks created by a hardware-based deep learning accelerator (DLA) 141 be accelerated as part of the GPU 102 is included.

In einigen Ausführungsformen kann die Leistungsverwaltung 140 auf dem gleichen Substrat oder Die wie die Parallelprozessoren 116 angeordnet sein. In einigen Ausführungsformen können eine oder mehrere Komponenten der Leistungsverwaltung 140 auf einem Substrat oder Die bereitgestellt werden, das von dem Substrat oder Die unterschiedlich ist, auf dem die Parallelprozessoren 116 angeordnet sind.In some embodiments, performance management 140 on the same substrate or die as the parallel processors 116 be arranged. In some embodiments, one or more components of performance management 140 be provided on a substrate or die that is different from the substrate or die on which the parallel processors 116 are arranged.

Gemäß Beispielausführungsformen kann das System 100 ein Bord sein, das ein oder mehrere GPUs, ein oder mehrere Steuerprozessoren, wie beispielsweise CPUs, und zugeordnete Speicher- und/oder Speicherverwaltung-Schaltungen umfasst. In einigen Beispielausführungsformen kann die GPU 102 ein Systemon-Chip (SoC) sein, das eine GPU umfasst. In noch anderen Ausführungsformen kann das System 100 statt der GPU 102 eine integrierte Schaltung mit einer anderen Art von Prozessor, das Frequenz-Spannung-Steuersystem und einen ADC auf dem gleichen oder unterschiedlichen Substrat umfassen. Ausführungsformen dieser Anwendung sind nicht auf das Zuführen Leistung an die GPU und das Überwachen der von der GPU verwendeten Leistung in der veranschaulichten Art und Weise begrenzt. Andere Ausführungsformen, die einem Fachmann bekannt sind, können verwendet werden, um Leistung an die GPU zu liefern und/oder von der GPU verwendete Leistung zu überwachen.According to example embodiments, the system can 100 be a board that includes one or more GPUs, one or more control processors, such as CPUs, and associated memory and / or memory management circuitry. In some example embodiments, the GPU 102 be a Systemon Chip (SoC) that includes a GPU. In still other embodiments, the system can 100 instead of the GPU 102 an integrated circuit with a different type of processor, the frequency-voltage control system and an ADC on the same or different substrate. Embodiments of this application are not limited to supplying power to the GPU and monitoring the power used by the GPU in the manner illustrated. Other embodiments known to those skilled in the art can be used to deliver power to the GPU and / or to monitor power used by the GPU.

Ausführlicheres schematisches BlockdiagrammMore detailed schematic block diagram

2 veranschaulicht das System 100 ausführlicher, die das Leistungsverteilungsnetzwerk 110 und Beispielkomponenten der Leistungsverwaltung 140 zeigen, die auf der GPU 102 bereitgestellt werden. Die GPU 102 umfasst ein Maschinenlernenbasiertes System (z.B. einschließlich eines oder mehrerer neuronaler Netzwerke) 150, das konfiguriert ist, um die von der GPU verwendete Leistung zu überwachen, die Leistung vorherzusagen, die von der GPU 102 benötigt werden wird, wenn sie bestimmte, bald auszuführende Anweisungen ausführt, und die Spannung- und/oder Frequenzleistungseinstellungen eines Leistungssteuersystem 122 zu steuern. 2 illustrates the system 100 in more detail that the power distribution network 110 and sample components of performance management 140 show that on the GPU 102 to be provided. The GPU 102 includes a Machine learning based system (e.g. including one or more neural networks) 150 configured to monitor the power used by the GPU to predict the power used by the GPU 102 will be needed if it executes certain instructions to be executed soon, and the voltage and / or frequency power settings of a power control system 122 to control.

Wie oben erläutert, kann die von der GPU 102 verbrauchte Leistung basierend auf Verarbeitungsarbeitslasten variieren, die zur Verarbeitung durch die Prozessoren 116 verschickt (zu verschicken) sind. Beispielsweise kann, wenn alle (oder die meisten) einer großen Anzahl von Parallelprozessoren 116 (z.B. SMs) der GPUs 102 beschäftigt sind, einen Strom von Rechenanweisungen bei hohen Versorgungsspannungen und Taktraten zu verarbeiten, die GPU 102 einen hohen Strombetrag von dem Bord und/oder durch den Spannungsregler 105 ziehen. Im Gegensatz dazu kann, wenn ein Strom von Speicher-dominierenden Anweisungen verarbeitet wird, die GPU 102 wesentlich niedrigere Leistungsbeträge ziehen, wenn bei den gleichen Taktraten gearbeitet wird, weil beispielsweise viele ihrer Parallelprozessoren 116 einen Großteil der Zeit aufgrund der Latenzen des Speicherzugriffs leerlaufen können. Wie Lebensmittelservierer bei einem Fußballfeld-Imbissstand auf den Halbzeitansturm warten, können die Prozessoren 116 nicht viel anderes zu tun haben, als zu warten, während die GPU 102 auf den Speicher 170 zugreift. In den Beispielausführungsformen können die Speicher-dominierende Anweisungen bei niedrigeren Leistungsversorgungsspannungen und Taktgeschwindigkeiten verarbeitet werden, um dadurch Leistungsverbrauch und Wärmeerzeugung zu verringern. Andererseits arbeiten, wenn die GPU 102 befohlen wird (z.B. durch einen CPU, nicht gezeigt), komplexe Berechnungen an den von dem Speicher abgerufenen Daten durchzuführen, die Streaming-Multiprozessoren 116 der GPU (ähnlich wie die Hotdogstand-Arbeiter des Fußballfelds, wenn Halbzeit beginnt und hungrige Fans nur einige Minuten vor dem Start der zweiten Hälfte haben, um einen Hotdog oder eine Brezel zu bekommen und zu ihren Sitzen zurückzukehren) so schnell, wie sie können, um ihre Aufgaben durchzuführen.As explained above, the GPU 102 Power consumed varies based on processing workloads that are processed by the processors 116 sent (to be sent). For example, if all (or most) of a large number of parallel processors 116 (e.g. SMs) of the GPUs 102 are busy processing a stream of arithmetic instructions at high supply voltages and clock speeds, the GPU 102 a high amount of current from the board and / or through the voltage regulator 105 pull. In contrast, when a stream of memory-dominant instructions are processed, the GPU can 102 draw significantly lower amounts of power when working at the same clock rates, for example because many of their parallel processors 116 Much of the time may be idle due to memory access latencies. The processors can do the same thing as food servers waiting for the rush at a football field snack bar 116 don't have much to do other than wait while the GPU 102 to the store 170 accesses. In the example embodiments, the memory dominant instructions can be processed at lower power supply voltages and clock speeds, thereby reducing power consumption and heat generation. On the other hand, if the GPU 102 is ordered (e.g., by a CPU, not shown) to perform complex calculations on the data retrieved from the memory, the streaming multiprocessors 116 the GPU (similar to the soccer field hotdog stand workers when halftime begins and hungry fans only a few minutes before the start of the second half to get a hotdog or pretzel and return to their seats) as fast as they can, to perform their tasks.

In den offenbarten Ausführungsformen umfasst die GPU 102 eine dynamische Spannung-Frequenz-Skalierung (DVFS), um die der GPU zugeführte Spannung und/oder die Frequenz der internen Kerntakte der GPU basierend auf der von der GPU 102 gezogenen aktuellen Leistung und der vorhergesagten Leistung zu skalieren, die basierend auf Anweisungen bestimmt wird, die in der nahen Zukunft von den Parallelprozessoren 116 auszuführen sind. In grober Analogie dazu behalten Beispielausführungsformen ein Auge auf das Fußballfeld und die Menge und versuchen vorherzusagen, wann der Halbzeitansturm beginnen wird, wie lange die Imbissstandschlangen sein werden und was die Kunden wahrscheinlich bestellen werden, wenn sie den Kopf der Schlange erreichen. Diese Vorhersage ermöglicht den Imbissstandarbeitern, eine ausreichende Anzahl von Hotdogs und Brezeln rechtzeitig vorzubereiten, ohne zu viele vorzubereiten.In the disclosed embodiments, the GPU includes 102 dynamic voltage-frequency scaling (DVFS) to determine the voltage supplied to the GPU and / or the frequency of the GPU's internal core clocks based on that from the GPU 102 drawn current power and the predicted power that will be determined based on instructions in the near future from the parallel processors 116 are to be carried out. In rough analogy, sample embodiments keep an eye on the soccer field and the crowd and try to predict when the halftime rush will begin, how long the snack stands will be, and what customers are likely to order when they reach the head of the queue. This prediction enables snack stand workers to prepare a sufficient number of hot dogs and pretzels in time without having to prepare too many.

Leistungsversorgungpower supply

2 zeigt ausführlicher eine oder mehrere Leistungsversorgungseinheiten (power supply units; PSUs) 108, die Leistung verschiedenen Teile des Systems 100 direkt und auch über Leistungsschienen oder Verbindungen zuführt, die von einem PCI-Bus 106 bereitgestellt werden. Beispielsweise kann(können) GPU(s) 102 primär oder exklusiv durch Leistung versorgt werden, den ein Spannungsregler 105 von der PSU 108 direkt und/oder über die Leistungsschiene des PCI-Bus 106 erhält. Der Spannungsregler 105 stuft die Niveaus der Leistungsversorgungsspannung von dem PCI-Bus 106 und/oder der PSU 108 auf (programmierbare) Spannungsniveau(s) herunter, die benötigt werden, um die GPUs 102 zu betreiben, und liefert die herabgestufte(n) Spannung(en) an die GPUs 102 über GPU-Leistungsschienen 127. In einigen Ausführungsformen kann die PSU 108 alternativ oder zusätzlich den GPUs 102 Leistung direkt über Leistungsschienen 111 zuführen. 2 shows one or more power supply units (PSUs) in more detail 108 , performance different parts of the system 100 feeds directly and also via power rails or connections from a PCI bus 106 to be provided. For example, GPU (s) 102 be supplied primarily or exclusively by power that a voltage regulator 105 from the PSU 108 directly and / or via the power bus of the PCI bus 106 receives. The voltage regulator 105 levels the power supply voltage levels from the PCI bus 106 and / or the PSU 108 down to (programmable) voltage level (s) required to power the GPUs 102 to operate, and supplies the downgraded voltage (s) to the GPUs 102 via GPU power rails 127 , In some embodiments, the PSU 108 alternatively or in addition to the GPUs 102 Performance directly over performance tracks 111 respectively.

In einigen Ausführungsformen führt der Spannungsregler (VR) 105 eine Gleichstrom-in-Gleichstrom-Umwandlung von einer hohen Spannung in eine niedrigere Spannung durch. Diese Umwandlung wird in einigen Beispielausführungsformen verwendet, weil Verarbeitungschips, wie beispielsweise die GPU 102, ausgestaltet sind, um bei niedrigeren Spannungen (z.B. 1VDC-2VDC) als die standardmäßigen 12VDC oder 5VDC Leistungsversorgungsspannungen zu arbeiten, die für den PCI-Bus oder PCIe-Bus 106 und/oder die Leistungsversorgungseinheit 108 typisch sind, die Leistung auf dem bordseitigen Leistungsverteilungsnetzwerk verteilen. Der Spannungsregler 105 ist auch ausgestaltet, um die Ausgangsgleichspannung zu regeln, die er an die GPU liefert. Der Ausgang 127 des Spannungsreglers liefert Strom an die GPU-Leistungsschienen 127 zur Verteilung an die verschiedenen Teile der GPU 102 und ihre zugeordneten unterstützenden Komponenten und Schaltungen.In some embodiments, the voltage regulator (VR) performs 105 a DC-to-DC conversion from a high voltage to a lower voltage. This conversion is used in some example embodiments because of processing chips such as the GPU 102 , are designed to operate at lower voltages (e.g. 1VDC-2VDC) than the standard 12VDC or 5VDC power supply voltages required for the PCI bus or PCIe bus 106 and / or the power supply unit 108 are typical that distribute power on the onboard power distribution network. The voltage regulator 105 is also designed to regulate the DC output voltage that it supplies to the GPU. The exit 127 of the voltage regulator supplies current to the GPU power rails 127 for distribution to the different parts of the GPU 102 and their associated supporting components and circuits.

Wie oben beschrieben, führen mehrere Eingangsleistungsschienen 127 der GPU 102 Leistung zu. Somit kann, obwohl nicht spezifisch veranschaulicht, der Spannungsregler 105 eine getrennte Instanz für jede Schiene umfassen. Das heißt, dass in einigen Ausführungsformen der Spannungsregler 105 mehrere Spannungsregler umfassen kann, von denen jeder getrennt und/oder unabhängig gesteuert werden kann, um eine jeweilige Bezugsspannung usw. für eine jeweilige er mehreren Leistungsschienen an der GPU 102 einzustellen.As described above, there are multiple input power rails 127 the GPU 102 Performance too. Thus, although not specifically illustrated, the voltage regulator 105 include a separate instance for each rail. That is, in some embodiments, the voltage regulator 105 can include multiple voltage regulators, each of which can be controlled separately and / or independently, around a respective reference voltage etc. for a respective he multiple power rails on the GPU 102 adjust.

Leistungsmonitorperformance monitor

Die GPU 102 kann einen Analog-Digital-Wandler (ADC) 118 umfassen, den sie verwendet, um ein „power monitor in“ Analogsignal 114 zu überwachen (z.B. digital abzutasten). Das Analogsignal 114 kann beispielsweise die aktuellen Strom- und/oder Spannungsniveaus darstellen, die an bordseitigen Eingangsleistungsschienen 111 und GPU-Leistungsschienen 127 bereitgestellt werden.The GPU 102 can use an analog-to-digital converter (ADC) 118 include that it uses to produce a "power monitor in" analog signal 114 to be monitored (e.g. digitally sampled). The analog signal 114 can represent, for example, the current current and / or voltage levels that are present on the onboard input power rails 111 and GPU power rails 127 to be provided.

Die GPU 102 verwendet eine Schnittstelle 115, um einen Analogmultiplexer (MUX) 112 zu steuern, um eine bestimmte der mehreren Leistungsschienen auszuwählen, die für einen bestimmten zeitgemultiplexten (time division multiplex; TDM)-Zeitschlitz abzutasten ist. Somit kann in einigen Beispielausführungsformen die GPU 102 den MUX 112 steuern, um eine „Round-Robin“-Sequenz von unterschiedlichen analogen Signalniveaus auszuwählen, die der die GPU ermöglichen, verschiedene Leistungsversorgung-Signalniveaus periodisch zu überwachen, die Leistungsniveaus umfassen, die aktuell der GPU 102 selber zugeführt werden. In anderen Ausführungsformen steuert die GPU 102 den MUX 112, um Eingaben auszuwählen, um auf einer Bedarfsbasis zu überwachen.The GPU 102 uses an interface 115 to an analog multiplexer (MUX) 112 control to select a particular one of the multiple power rails to be scanned for a particular time division multiplex (TDM) time slot. Thus, in some example embodiments, the GPU 102 the MUX 112 control to select a "round robin" sequence of different analog signal levels that allow the GPU to periodically monitor different power supply signal levels that include power levels that are currently the GPU 102 be fed yourself. In other embodiments, the GPU controls 102 the MUX 112 to select inputs to monitor on an as-needed basis.

Die Signalaufbereitung- und MUX-Schaltungsanordnung 112 wählt somit zwischen den mehreren Eingangsleistungsschienen 127 aus, welche die GPU 102 versorgen, und multiplext die ausgewählte Schiene an dem ADC 118 über die MUX-ADC Schnittstelle 114, um mit deren Auswahl zu signalisieren, die GPU zu einer bestimmten Zeit zu versorgen, die von der GPU selbst in nicht einschränkenden Beispielausführungsformen ausgeführt wird. Die Schaltungsanordnung 112 kann auch eine Signalaufbereitung an dem der GPU zugeführten Signal durchführen. Beispielsweise kann die Schaltungsanordnung 112 einen Spannungsteiler oder andere Schaltungen benutzen, um Spannungsniveaus zu skalieren und/oder Stromniveaus in Spannungsniveaus umzuwandeln, die für die Stromniveaus repräsentativ sind. Das „power monitor in“ Signal 114 kann somit in einigen Ausführungsformen (1) eine Analogspannung, deren Niveau den Betrag des Stroms darstellt oder angibt, den die GPU 102 zieht; und (2) als Antwort auf eine unterschiedliche Auswahl durch den MUX 114, eine Analogspannung umfassen (die herunterskaliert werden kann), die das der GPU zugeführte Spannungsniveau repräsentiert. Von diesen beiden Werten kann die GPU 102 den Betrag der Leistung (in Watt) bestimmen, die sie aktuell verbraucht.The signal conditioning and MUX circuitry 112 thus selects between the several input power rails 127 from which the GPU 102 supply and multiplexes the selected rail on the ADC 118 via the MUX-ADC interface 114 to signal with their selection to supply the GPU at a certain time, which is executed by the GPU itself in non-restrictive example embodiments. The circuit arrangement 112 can also perform signal processing on the signal supplied to the GPU. For example, the circuit arrangement 112 use a voltage divider or other circuitry to scale voltage levels and / or convert current levels to voltage levels representative of the current levels. The "power monitor in" signal 114 in some embodiments ( 1 ) an analog voltage whose level represents or indicates the amount of current that the GPU 102 draws; and (2) in response to a different selection by the MUX 114 , include an analog voltage (which can be scaled down) that represents the voltage level applied to the GPU. The GPU can use these two values 102 determine the amount of power (in watts) that she is currently consuming.

Die externe Signalaufbereitung und die MUX-Schaltungsanordnung 112 ermöglicht mittels Multiplexierung zwischen den mehreren Eingangsleistungsschienen 127 die Überwachung mehrerer Eingangsniveaus unter Verwendung einer einzigen „Leistung monitor in“ analogen Eingabe in die GPU 102 und den ADC 118 und verringert somit die E/A-Pinzahl der GPU 102. Die MUX-ADC-Schnittstelle 114 kann auf die Besonderheiten von MUX 112 und ADC 118 hochempfindlich sein. Die Schnittstelle 114 ist mit dem MUX und ADC konfiguriert, die miteinander in Bezug auf Impedanz, Signalbereich usw. übereinstimmen. Andere Anordnungen sind jedoch möglich. Beispielsweise könnte die GPU 102 mit mehrere ADCs 118 ausgestattet sein, um ihr zu ermöglichen, mehrere Leistungsüberwachungseingaben gleichzeitig zu verarbeiten.The external signal processing and the MUX circuit arrangement 112 made possible by means of multiplexing between the several input power rails 127 Monitor multiple input levels using a single “performance monitor in” analog input to the GPU 102 and the ADC 118 thus reducing the GPU's I / O pin count 102 , The MUX-ADC interface 114 can refer to the special features of MUX 112 and ADC 118 be highly sensitive. the interface 114 is configured with the MUX and ADC, which match each other in terms of impedance, signal range, etc. However, other arrangements are possible. For example, the GPU 102 with multiple ADCs 118 be equipped to enable it to process multiple performance monitoring inputs simultaneously.

In einer Beispielausführungsform kann der Analog-Digital-Wandler (ADC) 118 konfiguriert sein, um die Leistungsversorgungsspannung und Stromniveaus zu überwachen, die der GPU 102 aktuell bereitgestellt werden. Wie in 2 gezeigt, empfängt in einer Ausführungsform der analoge Off-Chip-Multiplexer (MUX) 112 als Eingaben Niveaus von Leistungsversorgungsspannungen und Strömen, die verwendet werden, um der GPU 102 Leistung zuzuführen. Eine Signalaufbereitung, wie beispielsweise Spannungsteiler/Skalierer-Schaltungen und dergleichen in dem MUX 112, stellt Signale bereit, die für Spannungsniveaus und Stromniveaus repräsentativ sind, welche die PSU 108 entweder direkt oder über den Spannungsregler 105 zuführt. Die GPU 102 steuert den MUX 112 über das Signal 115, um bestimmte Niveausignale auszuwählen, um der GPU eine „monitor in“ Eingabe zuzuführen. Die U.S. Patentanmeldung 16/046,916 (eingereicht am 31. Juli 2018 mit dem Titel „Voltage/Frequency Scaling for Overcurrent Protection with On-Chip ADC“) offenbart zusätzliche Einzelheiten zur Verwendung eines On-Chip-ADC, um die GPU-Leistung zu überwachen und die der GPU zugeführten Leistung zu steuern.In an example embodiment, the analog-to-digital converter (ADC) 118 configured to monitor the power supply voltage and current levels that the GPU 102 are currently provided. As in 2 shown, receives the analog off-chip multiplexer (MUX) in one embodiment 112 as inputs levels of power supply voltages and currents that are used to power the GPU 102 To perform. Signal conditioning such as voltage divider / scaler circuits and the like in the MUX 112 , provides signals representative of voltage levels and current levels that the PSU 108 either directly or via the voltage regulator 105 supplies. The GPU 102 controls the MUX 112 about the signal 115 to select certain level signals to feed the GPU a “monitor in” input. The U.S. Patent Application 16 / 046,916 (filed July 31, 2018, entitled "Voltage / Frequency Scaling for Overcurrent Protection with On-Chip ADC") discloses additional details on using an on-chip ADC to monitor GPU performance and the power delivered to the GPU to control.

In einer anderen Ausführungsform kann der ADC 118 „power in“ überwachen, die von dem Spannungsregler 105 bereitgestellt wird, um die aktuelle Leistung zu bestimmen, die von der GPU 102 verwendet wird.In another embodiment, the ADC 118 Monitor "power in" by the voltage regulator 105 is provided to determine current performance by the GPU 102 is used.

Prozessor-Vordecodierung und AggregationProcessor pre-decoding and aggregation

Die Prozessoren 116 sind konfiguriert, um Signale zu erzeugen, die basierend auf Anweisungsart ein Leistungsniveau angeben, die von bald auszuführenden Anweisungen benötigt werden. Die Prozessoren 116 erzeugen derartige Signale für bald auszuführende Anweisungen vor ihrer Ausführung dieser Anweisungen. Jeder der Prozessoren 116 kann (beispielsweise der Op-Code von) einer jeweiligen anhängigen Anweisung für einen gegebenen Zyklus (z.B. teilweise) decodieren, um zu bestimmen, ob diese Anweisung eine Niedrigleistungsanweisung oder eine Hochleistungsanweisung ist. In einer Ausführungsform kann jeder Prozessor 116 ein Binärsignal oder ein Flag erzeugen, um anzugeben, ob ein hohes oder niedriges Leistungsniveau von dem jeweiligen Prozessor verwendet werden wird (z.B. Setzen eines Flag, wenn eine Prozessoreinheit Anweisungen ausführen wird, die ein hohes Niveau an Leistung benötigen). In anderen Ausführungsformen kann das Signal voraussichtlichen oder zukünftigen Leistungsverbrauch während eines gegebenen Zyklus durch einen Bereich (z.B. einen Wert zwischen 0 und n, wobei n eine ganze Zahl ist) angeben. Die Prozessoren 116 können kontinuierlich Anweisungen syntaktisch analysieren, die zur Nahe-Zukunft-Ausführung empfangen werden, und stellen Leistungsschätzungen zum Ausführen anhängiger Anweisungen einige Zyklen vorher bereit, bevor sie ausgeführt werden.The processors 116 are configured to generate signals that, based on the type of instruction, indicate a level of performance required by instructions to be executed soon. The processors 116 generate such signals for instructions to be executed soon before executing these instructions. Each of the processors 116 may decode (e.g., the op code of) a respective pending instruction for a given cycle (e.g., partially) to determine whether that instruction is a low power instruction or is a high performance instruction. In one embodiment, any processor 116 generate a binary signal or flag to indicate whether a high or low level of performance will be used by the respective processor (e.g., setting a flag when a processor unit will execute instructions that require a high level of performance). In other embodiments, the signal may indicate expected or future power consumption during a given cycle through a range (e.g., a value between 0 and n, where n is an integer). The processors 116 can continuously parse instructions received for near future execution, and provide performance estimates for executing pending instructions a few cycles before they are executed.

In einer Beispielausführungsform empfängt ein Filter/Skalierer 420 ein Aggregat der Leistungsschätzsignale von mehreren Prozessoren 116, filtert das Aggregat, um bestimmte Arten von Rauschen zu entfernen, und skaliert das Ergebnis. Der Filter/Skalierer 420 kombiniert oder vergleicht das skalierte Ergebnis mit dem aktuell von der GPU verwendeten Leistungsniveau, wie von dem ADC 118 abgefühlt/erfasst. Das Ergebnis der Kombination oder des Vergleichs bildet ein Fehler- oder Delta-Signal, das verwendet wird, um die Steuersignale zu ändern, die den Frequenz-Spannung-Controller 122 steuern.In an example embodiment, a filter / scaler receives 420 an aggregate of the performance estimation signals from multiple processors 116 , filters the aggregate to remove certain types of noise and scales the result. The filter / scaler 420 combines or compares the scaled result with the performance level currently used by the GPU, such as by the ADC 118 sensed / detected. The result of the combination or comparison forms an error or delta signal, which is used to change the control signals sent to the frequency-voltage controller 122 Taxes.

Die Leistungsverwaltung 140 empfängt somit Signale von dem ADC 118, welche die von der GPU 102 verwendete aktuelle Leistung angibt, und Signale, welche geschätzte zukünftige Leistungsbedürfnisse von dem Prozessor 116 angeben, und bestimmt, ob die Betriebsspannung und/oder Frequenz zu ändern ist. Genauer gesagt kann die Leistungsverwaltung 140 eine Schaltungsanordnung umfassen, wie beispielsweise den Filter/Skalierer 420, um die Signale von den Prozessoren 116 zu akkumulieren, eine Leistungsanforderung für die GPU 102 bei einem gegebenen zukünftigen Zyklus zu schätzen, einen Fehler zwischen der für die GPU 102 geschätzten Leistung und der von der GPU 102 verwendeten aktuellen Leistung zu bestimmen und Steuersignale auszugeben, um die Betriebsfrequenz und/oder Spannung rechtzeitig zu ändern, um der geänderten Leistungsanforderung zu entsprechen. Die Leistungsverwaltung 140 kann die aktuellen Einstellungen beibehalten, wenn der Fehler beispielsweise unter einer bestimmten Schwelle ist, was angibt, dass sich die Leistungsanforderung nicht stark ändert.Service management 140 thus receives signals from the ADC 118 which are those of the GPU 102 indicates current power used, and signals indicating estimated future power needs from the processor 116 specify and determines whether to change the operating voltage and / or frequency. More specifically, performance management 140 include circuitry, such as the filter / scaler 420 to the signals from the processors 116 to accumulate, a performance requirement for the GPU 102 for a given future cycle, estimate an error between that for the GPU 102 estimated performance and that of the GPU 102 Determine current power used and output control signals to change the operating frequency and / or voltage in time to meet the changed power requirement. Service management 140 can keep the current settings if, for example, the error is below a certain threshold, indicating that the power requirement does not change much.

Frequenz- und/oder Spannungscontroller und Lernsystem Wie nachstehend ausführlicher erläutert wird, kann das Frequenz/Spannung-Steuersystem 122 einen Proportional-Integral-Derivative (PID)-Controller umfassen, der konfiguriert ist, um ein Signal, dass den Fehler angibt, und Signale zum Bewegen der Frequenz und/oder Spannung nach oben oder unten zu empfangen, um den Fehler auf null zu verringern. Ein Lernsystem 150, das in Software und/oder Hardware implementiert sein kann, kann konfiguriert sein, um den Betrieb des Frequenz/Spannung-Steuersystems 122 zu überwachen und Parameter zu aktualisieren (z.B. Konstanten oder Koeffizienten, die von dem PID-Controller benutzt werden), die verwendet werden, um die Ausgangssignale zu bestimmen, um die Performance des Frequenz/Spannung-Steuersystems 122 zu verbessern.Frequency and / or voltage controller and learning system As will be explained in more detail below, the frequency / voltage control system 122 a proportional integral derivative (PID) controller configured to receive a signal indicating the error and signals to move the frequency and / or voltage up or down to reduce the error to zero , A learning system 150 , which may be implemented in software and / or hardware, may be configured to operate the frequency / voltage control system 122 monitor and update parameters (e.g., constants or coefficients used by the PID controller) that are used to determine the output signals to determine the performance of the frequency / voltage control system 122 to improve.

Beispielsweise kann das Lernsystem 150 die Steuerparameter des Frequenz/Spannung-Steuersystems 122 modifizieren, so dass der Fehler schneller verringert wird, und/oder Überschreitungen verringern, wenn die Frequenz und/oder Spannung bewegt wird. Das Lernsystem 150 kann den Fehler, die von der GPU 102 verwendete aktuelle Leistung und/oder die von den Prozessoren 116 vorhergesagte Leistung empfangen und einen selbstabstimmenden Lernalgorithmus ausführen, der die von dem Frequenz/Spannung-Steuersystem 122 modifizierten Parameter verwendet. Das Lernsystem 150 kann den Betrieb des Frequenz/Spannung-Steuersystems 122 über eine vorbestimmte Anzahl von Zyklen überwachen und periodisch Parameter aktualisieren, die von dem Frequenz-Spannung-Controller 122 benutzt werden.For example, the learning system 150 the control parameters of the frequency / voltage control system 122 modify so that the error is reduced faster and / or reduce overshoots when the frequency and / or voltage is moved. The learning system 150 can get the error from the GPU 102 current power used and / or that used by the processors 116 receive predicted power and execute a self-tuning learning algorithm derived from the frequency / voltage control system 122 modified parameters used. The learning system 150 can operate the frequency / voltage control system 122 Monitor over a predetermined number of cycles and periodically update parameters by the frequency voltage controller 122 to be used.

Das Lernsystem 150 kann auf einer unterschiedlichen (z.B. langsameren) Zeitskala verglichen mit dem Frequenz-Spannung-Controller 122 arbeiten und kann in einigen Fällen Software umfassen, die auf einem oder mehreren der Prozessoren 116 läuft, wie durch einen Beschleuniger für tiefes Lernen 141 beschleunigt. In derartigen Ausführungsformen wird das Lernsystem 150 teilweise verwendet, um die Leistung vorherzusagen, die ein Prozessor 116 benötigen wird, um das Lernsystem selbst auszuführen.The learning system 150 can be on a different (e.g. slower) time scale compared to the frequency-voltage controller 122 work and in some cases may include software running on one or more of the processors 116 runs like through an accelerator for deep learning 141 accelerated. In such embodiments, the learning system 150 partially used to predict the performance that a processor 116 will need to run the learning system itself.

Die Ausgangssteuersignale des Frequenz/Spannung-Steuersystems 122 können mindestens einen Spannungsregler 105 steuern (z.B. über GPIO-Pins auf der GPU), der Leistung von dem PCI-Bus oder ähnlichen Bus 106 und/oder der Leistungsversorgungseinheit (PSU) 108 empfängt und Leistung der GPU 102 über Leistungsschienen 127 zuführt. Der Signalaufbereiter und Multiplexer 112 empfängt GPU-Leistungsschienen 127 und auch bordseitige Eingangsleistungsschienen 111. Die ausgegeben Steuersignale des Frequenz/Spannung-Steuersystems 122 können auch interne oder externe Steuersignale erzeugen, welche die Taktrate(n) von Taktsignalen steuern, die ein Taktgenerator 107 erzeugt, um verschiedene GPU-Schaltungen synchron zu triggern („takten“).The output control signals of the frequency / voltage control system 122 can have at least one voltage regulator 105 control (e.g. via GPIO pins on the GPU), the performance of the PCI bus or similar bus 106 and / or the power supply unit (PSU) 108 receives and performance of the GPU 102 over power rails 127 supplies. The signal conditioner and multiplexer 112 receives GPU power rails 127 and also onboard input power rails 111 , The output control signals of the frequency / voltage control system 122 can also generate internal or external control signals that control the clock rate (s) of clock signals that a clock generator 107 generated to trigger different GPU circuits synchronously ("clocking").

Als Beispiel kann, wenn die Aktivitätsniveaus in den Prozessoren 116 niedrig sind, das Frequenz/Spannung-Steuersystem 122 arbeiten, um ein oder mehrere Versorgungsspannungen zu verringern, um den Betrag der der GPU zugeführten Leistung zu verringern. Wenn die Aktivitätsniveaus hoch sind, kann das Frequenz/Spannung-Steuersystem 122 ein oder mehrere Versorgungsspannungen erhöhen, um der GPU mehr Leistung zuzuführen, um den Anforderungen der erhöhten Verarbeitungsarbeitslast gerecht zu werden.As an example, if the activity levels in the processors 116 are low, the frequency / Voltage control system 122 work to decrease one or more supply voltages to reduce the amount of power supplied to the GPU. If the activity levels are high, the frequency / voltage control system can 122 Increase one or more supply voltages to provide more power to the GPU to meet the requirements of the increased processing workload.

Verwalten von LeistungManage performance

3 ist ein Ablaufdiagramm einer beispielhaften Leistungssteuertechnik unter Verwendung aktueller und prädiktiver GPU-Leistung gemäß bestimmter Beispielausführungsformen. In einigen Beispielausführungsformen wird der Prozess 300 (d.h., Operationen 302-312) in Hardwareschaltungsanordnung-Komponenten auf der GPU 102 durchgeführt. In einigen anderen Beispielausführungsformen kann, zusätzlich zu auf der Hardware der GPU 102 durchgeführten Operationen, der Prozess 300 Operationen umfassen, die von anderen Hardwarekomponenten extern zu der GPU 102 durchgeführt werden. In noch anderen Beispielausführungsformen kann der Prozess 300, zusätzlich zu durch Hardware durchgeführte Operationen, Operationen umfassen, die in Software durchgeführt werden, die auf der GPU 102 und/oder anderen Teilen des Systems 100 läuft. Im Allgemeinen werden jedoch, um eine angemessene Geschwindigkeit-Performance bereitzustellen, die in 3 gezeigten Operationen in Hardware mit der Ausnahme des tiefen Lernens 312 durchgeführt, das in Software mit Hardwarebeschleunigung durchgeführt werden kann. 3 FIG. 14 is a flow diagram of an example performance control technique using current and predictive GPU performance in accordance with certain example embodiments. In some sample embodiments, the process 300 (ie, operations 302 - 312 ) in hardware circuitry components on the GPU 102 carried out. In some other sample embodiments, in addition to on the hardware of the GPU 102 performed operations, the process 300 Operations include that of other hardware components external to the GPU 102 be performed. In yet other example embodiments, the process can 300 , in addition to operations performed by hardware, include operations performed in software running on the GPU 102 and / or other parts of the system 100 running. In general, however, in order to provide adequate speed performance, the 3 operations shown in hardware with the exception of deep learning 312 that can be done in software with hardware acceleration.

Der Prozess 300 kann während Betrieb eines Computersystems stetig bzw. kontinuierlich sein, bei dem ein System, wie beispielsweise das System 100 und/oder eine GPU, wie beispielsweise die GPU 102, verwendet wird.The process 300 may be continuous during the operation of a computer system in which a system such as the system 100 and / or a GPU, such as the GPU 102 , is used.

Die Operation 302 überwacht die von der GPU verwendete aktuelle Leistung. In Ausführungsformen benutzt die Überwachung der Eingangsleistung einen ADC 118, der die der GPU 102 zugeführte Leistung abtastet. Die Überwachung kann den ADC 118 umfassen, der Eingangsstrom und/oder -spannung in den Spannungsregler abtastet und die Abtastergebnisse in eine digitale Ausgabe jeder gewünschten Auflösung umwandelt.The operation 302 monitors the current performance used by the GPU. In embodiments, monitoring input power uses an ADC 118 that of the GPU 102 input power samples. Monitoring can be done by the ADC 118 comprise, the input current and / or voltage samples into the voltage regulator and converts the sampling results into a digital output of any desired resolution.

Bei Operation 304 kann jeder der Parallelprozessoren 116 empfangene Anweisungen verarbeiten, um prädiktive Leistungssignale 142 für anhängige (bald auszuführende) Anweisungen bereitzustellen. Die anhängigen Anweisungen von den verschiedenen Parallelprozessoren 116 können aggregiert und verwendet werden, um die GPU-Leistung für einen bevorstehenden Verarbeitungszyklus vorherzusagen, während desselben die anhängigen Anweisungen ausgeführt werden (siehe Block 304).During surgery 304 can each of the parallel processors 116 received instructions process to predictive power signals 142 for pending instructions (to be issued soon). The pending instructions from the various parallel processors 116 can be aggregated and used to predict GPU performance for an upcoming processing cycle while the pending instructions are executing (see block 304 ).

Bei Operation 306 wird der Unterschied (Fehler) zwischen der vorhergesagten GPU-Leistung und der aktuellen Leistung bestimmt. Vor dem Bestimmen des Fehlers kann die vorhergesagte Leistung skaliert werden, so dass sie in der gleichen Skala wie die bestimmte aktuelle Leistung ist.During surgery 306 the difference (error) between the predicted GPU performance and the current performance is determined. Before determining the error, the predicted performance can be scaled so that it is on the same scale as the determined current performance.

Bei Operation 308 bestimmt die GPU 102 Frequenz- und/oder Spannungseinstellungen, um den Fehler zu verringern. Die Bestimmung kann die Verwendung eines adaptiven Proportional-Integral-Derivative (Drei-Term)-Controllers („PID-Controller“) 440 (siehe nachstehend) umfassen, um die Einstellungen zu bestimmen.During surgery 308 determines the GPU 102 Frequency and / or voltage settings to reduce the error. The determination can be made using an adaptive proportional-integral-derivative (three-term) controller (“PID controller”) 440 (see below) to determine the settings.

Bei Operation 310 kann die GPU 102 basierend auf der bei Operation 308 durchgeführten Bestimmung die Taktfrequenz (d.h. eine neue programmieren) und/oder eine Leistungsspannung ändern, um die von der GPU gezogene Leistung zu erhöhen oder zu verringern. Wenn die GPU 102 beispielsweise bestimmt, dass eine Taktfrequenzeinstellung allein die erforderliche Änderung in Leistung bewirken kann, dann kann sie die Frequenz (oder Rate) für einen oder mehrere Takte einstellen. Eine Spannung kann durch Versetzen der an den Spannungsregler gesendeten Spannung eingestellt werden, um die aktuelle Leistung entweder unter die Grenze zurück zu bringen oder zu erhöhen.During surgery 310 can the GPU 102 based on that during surgery 308 determination performed, change the clock frequency (ie, program a new one) and / or change a power voltage to increase or decrease the power drawn by the GPU. If the GPU 102 For example, if a clock frequency setting alone can effect the required change in power, then it can set the frequency (or rate) for one or more clocks. A voltage can be adjusted by offsetting the voltage sent to the voltage regulator to either bring the current power back below the limit or to increase it.

In einigen Ausführungsformen werden Parameter der Operation 306, die unter Verwendung eines adaptiven PID-Controllers (der in Hardware implementiert sein kann, wie Fachleuten wohlbekannt ist) basierend auf einer Vorgehensweise des maschinellen Lernens aktualisiert (Block 312). Weil die Arbeitslasten in den Parallelprozessoren 116 divers sein und bei kurzen Zeitskalen variieren können, kann eine Vorgehensweise des bestärkenden Lernens unter Verwendung eines Actor-Critic-Lernens verwendet werden, um die PID-Parameter bei einer unterschiedlichen Zeitskala als dem Prozess von 3 zu aktualisieren. Beispielsweise kann der Prozess von 3 von Block 302-310 schnell zwischen einzelnen Verarbeitungszyklen von Prozessoren 116 basierend auf Hardware-aufrechterhaltenen Spannungs- und/oder Frequenzparametern durchgeführt werden, wohingegen der tiefe Lernblock 312 über eine Anzahl von derartigen einzelnen Verarbeitungszyklen durchgeführt werden kann und Ausgaben erzeugt, die verwendet werden, um die Hardware-aufrechterhaltenen Spannungs- und/oder Frequenzparameter gelegentlicherer zu aktualisieren.In some embodiments, parameters are the operation 306 updated using an adaptive PID controller (which may be implemented in hardware as is well known to those skilled in the art) based on a machine learning approach (block 312 ). Because the workloads in the parallel processors 116 Diverse and may vary on short time scales, a reinforcement learning approach using actor-critical learning can be used to measure the PID parameters on a different time scale than the process of 3 to update. For example, the process of 3 from block 302 - 310 quickly between individual processing cycles of processors 116 based on hardware-maintained voltage and / or frequency parameters, whereas the deep learning block 312 can be performed over a number of such individual processing cycles and generates outputs that are used to update the hardware-maintained voltage and / or frequency parameters more occasionally.

Auf diese Art und Weise kann der Prozess 300 den Leistungseingang in die GPU 102 gemäß den Arbeitslasten in den Parallelprozessoren proaktiv steuern, um Verarbeitung-Performance und Leistungsverbrauch zu optimieren. Das Lernen 312 wird hinzugefügt, um eine zweite Ebene einer dynamischen Steuerung bereitzustellen, um die Parameter zu aktualisieren, die verwendet werden, um die leistungsbezogene Einstellung für die GPU 102 zu bestimmen.That way the process can 300 the power input into the GPU 102 according to the workloads in the parallel processors proactively control to optimize processing performance and power consumption. Learning 312 is added to provide a second level of dynamic control to update the parameters used to adjust the performance setting for the GPU 102 to determine.

Bestärkendes maschinelles LernenEmpowering machine learning

4 und 5 veranschaulichen schematisch eine Schaltung 400, die eine proaktive Leistungsverwaltungstechnik mit einem Lernmechanismus 150 gemäß bestimmter Beispielausführungsformen implementiert. Die Schaltung 400 umfasst einen ADC 118, Filter- und Skaliererschaltungen 420, einen Komparator oder Summierer 422, ein Zustandsvektorregister 430, einen PID-Controller 440, einen Frequenz/Spannung-Controller 450 und ein Lernsystem 460. 4 and 5 schematically illustrate a circuit 400 using a proactive performance management technique with a learning mechanism 150 implemented according to certain example embodiments. The circuit 400 includes an ADC 118 , Filter and scaling circuits 420 , a comparator or totalizer 422 , a state vector register 430 , a PID controller 440 , a frequency / voltage controller 450 and a learning system 460 ,

Die Schaltung 400 kann auf dem gleichen Substrat angefertigt werden, welches das Verarbeitungssystem (z.B. GPU 102) umfasst. Das Einschließen der Schaltung 400 auf dem Substrat von GPU 102 sieht eine direkte, schnelle Rückkopplung und Ansprechempfindlichkeit vor. Im Gegensatz zu reaktiven Systemen, die auf Änderungen in aktuellen Leistungsmessungen antworten, ermöglichen Systeme von Beispielausführungsformen, dass Einstellungen proaktiv durch das Verarbeitungssystem durchzuführen sind, weil das Leistungssteuersystem eine Verlangsamung oder Zunahme in der Verarbeitung zwischen der Zeit, wenn Anweisungen zur Ausführung präsentiert werden, und der Zeit, wenn sie sind tatsächlich ausgeführt, vorhersagen kann.The circuit 400 can be made on the same substrate as the processing system (e.g. GPU 102 ) includes. Including the circuit 400 on the substrate of GPU 102 provides direct, fast feedback and responsiveness. Unlike reactive systems that respond to changes in current performance measurements, systems of example embodiments allow adjustments to be made proactively by the processing system because the performance control system experiences a slowdown or increase in processing between times when instructions for execution are presented and of the time when they are actually executed can predict.

Der ADC 118 kann konfiguriert sein, um die Leistungsversorgungsspannung und Stromniveaus zu überwachen, die von einem Verarbeitungssystem (z.B. einer GPU 102) verwendet werden, das mehrere Prozessoren 116 (z.B. programmierbare Streaming-Multiprozessoren) umfasst. Der ADC 118 ist konfiguriert, um Eingangssignale zu empfangen, die Spannungen und/oder Ströme darstellen, die dem Verarbeitungssystem zugeführt werden, und um ein digitales Ausgangssignal zu erzeugen, das die von dem Verarbeitungssystem aktuell verwendete Leistung darstellt.The ADC 118 can be configured to monitor the power supply voltage and current levels generated by a processing system (e.g., a GPU 102 ) that use multiple processors 116 (eg programmable streaming multiprocessors). The ADC 118 is configured to receive input signals representing voltages and / or currents supplied to the processing system and to produce a digital output signal representing the power currently used by the processing system.

Die Filter- und Skaliererschaltungen 420 können Vorhersagesignale von jedem der Prozessoren 116 empfangen, die angeben, wie viel Leistung Anweisungen, die in der nahen Zukunft auszuführen sind, erfordern werden oder wahrscheinlich erfordern werden. Beispielsweise können die Prozessoren 116 melden, ob anhängige Anweisungen zu hohem Energieverbrauch oder niedrigem Energieverbrauch in einem Taktzyklus führen werden. Das Signal von jedem Prozessor 116 kann ein binäres Hochleistung/Niedrigleistung-Flagsignal sein oder es kann einen Bereich von unterschiedlichen Werten bereitstellen, die angeben, zu jedem gewünschten Grad der Auflösung, wie viel Leistung in der nahen Zukunft erforderlich sein kann, um Anweisungen auszuführen, die in der Anweisung-Pipeline sind, jedoch noch nicht ausgeführt wurden, jedoch bald ausgeführt werden (oder können, wenn spekulative Ausführung erlaubt ist).The filter and scaler circuits 420 can use prediction signals from each of the processors 116 received, indicating how much performance instructions to perform in the near future will or will likely require. For example, the processors 116 report whether pending instructions will result in high energy consumption or low energy consumption in one clock cycle. The signal from each processor 116 may be a high performance / low performance binary flag signal, or it may provide a range of different values that, at any desired level of resolution, indicate how much power may be required in the near future to execute instructions in the instruction pipeline are, but have not yet been executed, but will soon be executed (or may, if speculative execution is allowed).

Wie 5 zeigt, können die Prozessoren 116 jeweils einen Vordecodierer 117 umfassen, der konfiguriert ist, um die wahrscheinliche Energie von Anweisungen zu signalisieren, die in der Zukunft auszuführen sind. Die Filterschaltung 420a kann konfiguriert sein, um ein aggregiertes Leistungssignal von allen Prozessoren 116 zu empfangen. Ein derartiges aggregiertes Signal kann durch einen Aggregator 422 erzeugt werden, der in einer Beispielausführungsform kombinatorische Logik umfasst, die ein aggregiertes Signal abstimmt oder anderweitig zur Präsentation an das Filter 420a schnell berechnet. Die Signale stellen dar, wie viel Leistung anhängige Anweisungen, die eine vorbestimmte Anzahl von Taktzyklen später durch die Bank von Prozessoren 116 ausgeführt werden, wahrscheinlich erfordern werden, wenn ausgeführt. In einer nicht einschränkenden Beispielausführungsform vorhersagen diese Signale nicht, wie viel Leistung tatsächlich erforderlich sein wird, sondern lediglich, dass die Anweisungen wahrscheinlich mehr oder weniger Leistung basierend auf ihrer Komplexität oder anderen Anweisungseigenschaften verbrauchen werden. Beispielsweise kann in einer Beispielausführungsform ein Prozessor 116, der eine Speicheradeanweisung syntaktisch analysiert, signalisieren, dass die bevorstehende Anweisung wahrscheinlich eine niedrige (re) Leistung erfordern wird. Der gleiche Prozessor 116, der eine Rechenanweisung syntaktisch analysiert, kann signalisieren, dass die bevorstehende Anweisung wahrscheinliche eine hohe(höhere) Leistung erfordern wird.How 5 shows the processors 116 one predecoder each 117 configured to signal the likely power of instructions to be executed in the future. The filter circuit 420a can be configured to provide an aggregate power signal from all processors 116 to recieve. Such an aggregated signal can be generated by an aggregator 422 are generated that, in one example embodiment, include combinatorial logic that tunes an aggregated signal or otherwise for presentation to the filter 420a calculated quickly. The signals represent how much power pending instructions a predetermined number of clock cycles later through the bank of processors 116 are likely to require execution when executed. In a non-limiting example embodiment, these signals do not predict how much power will actually be required, but only that the instructions are likely to consume more or less power based on their complexity or other instructional properties. For example, in one example embodiment, a processor 116 , which parses a memory load instruction, signal that the upcoming instruction is likely to require low (re) performance. The same processor 116 Parsing an arithmetic instruction may signal that the upcoming instruction is likely to require high (higher) performance.

In vielen Ausführungsformen kann der Prozessor 116 nicht selber „wissen“, wie viel Leistung er tatsächlich durch das Ausführen einer gegebenen Anweisung verbrauchen wird. Dies ist wie ein Langstreckenläufer, der eine ungefähre Vorstellung aufweisen kann, wie viel Energie in Kalorien er wahrscheinlich beim Laufen eines Halbmarathons verbrauchen wird, jedoch im Allgemeinen nicht imstande sein wird, den Energieverbrauch bis hinunter zu der Kalorie vorherzusagen. Es gibt zu viele Variablen (z.B. Umgebungsbedingungen, wie beispielsweise Temperatur, tatsächliche Geschwindigkeit im Gegensatz zu einer geplanten Geschwindigkeit, genaue Körpermasse usw.), die den tatsächlichen Energieverbrauch beeinflussen. Des Weiteren werden die genauen Leistungsanforderungen eines beliebigen gegebenen Prozessor 116 von Eigenschaften dieses bestimmten Prozessors aufgrund von Herstellungs- und Prozessvariationen abhängen, die zu winzigen strukturellen Unterschieden von GPU zu GPU oder sogar von einem Prozessor zu einem anderen auf der gleichen GPU führen können. Die genaue Leistungsnutzung wird im Allgemeinen auch von der bestimmten Sequenz von Softwareanweisungen abhängen, welche die Prozessoren 116 ausführen.In many embodiments, the processor 116 do not "know" how much power they will actually consume by executing a given instruction. This is like a long-distance runner who can have a rough idea of how much energy in calories he is likely to consume when running a half marathon, but will generally not be able to predict energy consumption down to calories. There are too many variables (e.g. environmental conditions such as temperature, actual speed as opposed to a planned speed, exact body mass etc.) that influence the actual energy consumption. Furthermore, the exact performance requirements of any given processor 116 characteristics of that particular processor due to Manufacturing and process variations that can lead to tiny structural differences from GPU to GPU or even from one processor to another on the same GPU. The exact power usage will generally also depend on the particular sequence of software instructions that the processors 116 To run.

In dem gezeigten Beispiel umfassen die Filter- und Skaliererschaltungen 420 ein oder mehrere Filter 420a (z.B. ein IIR(infinite Impuls response)-Filter), um das Rauschen in dem aggregierten Signal zu verringern, das von den Prozessoren 116 empfangen wird. Die Impulsantwort von einem derartigen Filter ist „unendlich“, weil es eine Rückkopplung in dem Filter gibt; wenn ein Impuls (ein einziger „1“ Abtastwert gefolgt von vielen „0“ Abtastwerten) eingegeben wird, wird theoretisch eine unendliche Anzahl von Werten ungleich Null herauskommen. Andere Implementierungen könnten jedoch ein FIR-Filter, eine Kombination von einem FIR-Filter und einem IIR-Filter oder irgendeine andere geeignete Filterausgestaltung verwenden.In the example shown, the filter and scaler circuits include 420 one or more filters 420a (e.g. an IIR (infinite impulse response) filter) to reduce the noise in the aggregated signal from the processors 116 Will be received. The impulse response from such a filter is "infinite" because there is feedback in the filter; if a pulse (a single "1" sample followed by many "0" samples) is entered, theoretically an infinite number of non-zero values will result. However, other implementations could use an FIR filter, a combination of an FIR filter and an IIR filter, or any other suitable filter design.

Die Ausgabe des Filters 420a ist eine Nahe-Zukunft-Leistungsschätzung. Diese Nahe-Zukunft-Leistungsschätzung wird einem Skalierer 420b bereitgestellt, der die Ausgabe skaliert, damit sie mit der Ausgabe des ADC 118 kombiniert werden kann (der Skalierer kann teilweise durch die Größe der ADC-Ausgabe gesteuert werden).The output of the filter 420a is a near-future performance estimate. This near future performance estimate becomes a scaler 420b provided that scales the output so that it matches the output of the ADC 118 can be combined (the scaler can be controlled in part by the size of the ADC output).

Die Schaltung 400 kann ferner eine Schaltungsanordnung (z.B. einen Summierknoten 422) umfassen, um eine Differenz oder einen Fehler zwischen der Messung des ADC 118 der aktuellen Leistung und der Leistung zu bestimmen, die der Filter/Skalierer 420 schätzt, in einer vorbestimmten Anzahl von Zyklen verwendet zu werden.The circuit 400 can also be a circuit arrangement (for example a summing node 422 ) include a difference or error between the measurement of the ADC 118 to determine the current performance and the performance of the filter / scaler 420 estimates to be used in a predetermined number of cycles.

Das Zustandsvektorregister 430 empfängt/hält den Fehlerwert, um einen Wert X(t) bereitzustellen, der von dem PID-Controller 440 verwendet werden kann, um Frequenz- und/oder Spannungseinstellungen zu bestimmen. In einigen beispielhaften Ausführungsformen berücksichtigt X(t) Fehlerwerte für mehrere Taktzyklen (z.B. Fehler für den aktuellen Zyklus, ein oder mehrere vergangene Zyklen und/oder ein oder mehrere zukünftige Zyklen). Die Ausgabe X(t) der Zustandsvektorschaltung 430 kann mehrere Komponenten umfassen. In einigen Beispielausführungsformen kann die Ausgabe X(t) den Fehler als eine Funktion bereitstellen (z.B. eine Multipliziererfunktion, Skalierungsfunktion oder Einheitsfunktion). In einigen Ausführungsformen kann die Zustandsvektorschaltung 430 einen Fehler nehmen, der in kontinuierlicher Form bereitgestellt wird, und einen diskreten Wert für den PID-Controller 440 bereitstellen. In einer Beispielausführungsform kann die Ausgabe X(t) der Zustandsvektorschaltung 430 durch e(t), Δe (t), Δ2e (t) ... dargestellt werden. Der gesamte Vektor X(t) kann dem Lernsystem 460 und einer Teilmenge der Zustandsvektoren bereitgestellt werden, wie beispielsweise die Komponente e(t) dem PID-Controller 440 bereitgestellt werden kann.The state vector register 430 receives / holds the error value to provide a value X (t) by the PID controller 440 can be used to determine frequency and / or voltage settings. In some exemplary embodiments, X (t) takes into account error values for multiple clock cycles (eg errors for the current cycle, one or more past cycles, and / or one or more future cycles). The output X (t) of the state vector circuit 430 can include several components. In some example embodiments, the output X (t) can provide the error as a function (e.g., a multiplier function, scaling function, or unit function). In some embodiments, the state vector circuit 430 take an error that is provided in continuous form and a discrete value for the PID controller 440 provide. In an example embodiment, the output X (t) of the state vector circuit 430 can be represented by e (t), Δe (t), Δ2e (t) ... The entire vector X (t) can be the learning system 460 and a subset of the state vectors are provided, such as the component e (t) to the PID controller 440 can be provided.

Der PID-Controller 440 empfängt eine Darstellung des Fehlers zwischen der aktuellen Leistung und der vorhergesagten Leistung und berechnet einen Ausgabe W(t) abhängig von spezifischen Parametern, die von dem PID-Controller 440 in einem „Abstimmungskonstanten“-Register 440a gespeichert werden. Wie wohlbekannt ist, kombiniert der PID-Controller 440 die proportionale Steuerung mit zusätzlichen integralen und derivativen Einstellungen, die dem Controller helfen, Änderungen im System automatisch zu kompensieren. Wie wohlbekannt ist, erzwingt der PID-Controller 440 eine Rückkopplung, um mit einem Sollwert übereinzustimmen. Proportionales Abstimmen beinhaltet Korrigieren eines Ziels proportional zu dem Unterschied; es nähert sich null Fehler an, erreicht ihn jedoch nie. Das integrale Abstimmen kumuliert das Fehlerergebnis von der „P“ Aktion, um den Korrekturfaktor zu erhöhen. Da dies manchmal zu einer Überschreitung führt, wird derivative Abstimmung verwendet, um diese Überschreitung durch Verlangsamen des angewendeten Korrekturfaktors zu minimieren, wenn man sich dem Ziel annähert. In der Beispielausführungsform werden die P-I-D Stufen des PID-Controller 440 mit Zuwachswerten oder Abstimmungskonstanten für die proportionalen, integralen und derivativen Terme parametrisiert. Diese Parameter werden in dem Lese/Schreib-Register 440a in der Beispielausführungsform gespeichert und können von dem Lernsystem 150 dynamisch geändert werden, wie nachstehend beschrieben.The PID controller 440 receives a representation of the error between the current power and the predicted power and calculates an output W (t) depending on specific parameters by the PID controller 440 are stored in a "tuning constant" register 440a. As is well known, the PID controller combines 440 proportional control with additional integral and derivative settings that help the controller to automatically compensate for changes in the system. As is well known, the PID controller enforces 440 a feedback to match a setpoint. Proportional tuning involves correcting a target proportional to the difference; it approaches zero errors but never reaches them. The integral tuning accumulates the error result from the "P" action in order to increase the correction factor. As this sometimes leads to an overshoot, derivative tuning is used to minimize this overshoot by slowing the applied correction factor as you approach the goal. In the example embodiment, the PID levels of the PID controller 440 parameterized with increment values or tuning constants for the proportional, integral and derivative terms. These parameters are in the read / write register 440a saved in the sample embodiment and can be from the learning system 150 can be changed dynamically as described below.

Die Ausgabe W(t) des PID-Controllers 440 spezifiziert Änderungen an der Betriebsspannung und/oder Frequenz, so dass der Fehler zwischen aktueller Leistung und vorhergesagter Leistung verringert wird. Die Ausgabe des PID-Controllers 440 wird das Einstellen der Frequenz und Spannung stoppen, wenn der Fehler auf null geht. Der Ausgabe W(t) des PID-Controllers 440 kann zwischen (a) einer Nur-Frequenz-Einstellung, (b) einer Nur-Spannung-Einstellung und (c) einer Spannung- und Frequenzänderung basierend auf der Zeitskala wählen, bei der Leistung verwaltet werden sollte.The output W (t) of the PID controller 440 specifies changes to the operating voltage and / or frequency so that the error between the current power and the predicted power is reduced. The output of the PID controller 440 will stop setting the frequency and voltage when the error goes to zero. The output W (t) of the PID controller 440 can choose between (a) a frequency only setting, (b) a voltage only setting, and (c) a voltage and frequency change based on the time scale at which power should be managed.

Die Ausgabe W(t) des PID-Controllers 440 wird dem Frequenz/Spannung-Controller 122 zum Einstellen der Betriebsfrequenz und/oder Spannung von dem Verarbeitungssystem (z.B. GPU 102) bereitgestellt. Operationen des Frequenz/Spannung-Controllers 450 können in Hardware und/oder Software durchgeführt werden.The output W (t) of the PID controller 440 becomes the frequency / voltage controller 122 for setting the operating frequency and / or voltage of the processing system (eg GPU 102 ) provided. Operations of the frequency / voltage controller 450 can be done in hardware and / or software.

Basierend auf der Ausgabe W(t) stellt der Frequenz/Spannung-Controller 122 die Betriebsfrequenz und/oder Spannung ein, um eine Zunahme oder Verringerung in der von der GPU 102 gezogenen Leistung zu ermöglichen. Wenn beispielsweise bestimmt wird, dass allein eine Frequenzeinstellung die erforderliche Änderung in der Leistung beeinflussen kann, um den Fehler zu verringern, dann kann der Frequenz/Spannung-Controller 450 eine Frequenzänderung auslösen, um die Frequenz (oder Rate) für einen oder mehrere Takte 127 einzustellen. Der PID-Controller 440 kann bestimmen, ob nur die Betriebsfrequenz oder nur die Spannung oder sowohl die Spannung als auch die Frequenz zu ändern ist. In einigen Ausführungsformen kann der Grad des Fehlers bestimmen, welche Betriebseinstellungen geändert werden sollten. Wenn der Fehler beispielsweise oberhalb einer vorbestimmten Schwelle ist, kann der PID-Controller 440 nach Änderungen in der Betriebsspannung rufen. Die Betriebsspannung und Frequenz können geändert werden, um die Spitzenleistung in Erwartung eines Hochleistungsereignisses zu begrenzen, um dadurch den Betrieb auf Systemebene und die Zuverlässigkeit zu verbessern, wenn unter dem maximalen Wirkungsgrad gearbeitet wird. Based on the output W (t) the frequency / voltage controller provides 122 the operating frequency and / or voltage to indicate an increase or decrease in that of the GPU 102 to allow drawn power. For example, if it is determined that frequency adjustment alone can affect the required change in performance to reduce the error, then the frequency / voltage controller can 450 trigger a frequency change to the frequency (or rate) for one or more clocks 127 adjust. The PID controller 440 can determine whether only the operating frequency or only the voltage or both the voltage and the frequency is to be changed. In some embodiments, the level of error can determine which operating settings should be changed. For example, if the error is above a predetermined threshold, the PID controller 440 Call for changes in the operating voltage. The operating voltage and frequency can be changed to limit the peak power in anticipation of a high performance event, thereby improving system level operation and reliability when operating at maximum efficiency.

In einigen Ausführungsformen kann der Frequenz/Spannung-Controller 122 die Spannung durch Versetzen der an den Spannungsregler gesendeten Spannung einstellen, um die aktuelle Leistung entweder zurück unter die Grenze zu bringen oder zu erhöhen.In some embodiments, the frequency / voltage controller 122 adjust the voltage by offsetting the voltage sent to the voltage regulator to either bring the current power back below the limit or increase it.

Wie oben erwähnt, ermöglicht der PID-Controller 440 feste oder selbstabgestimmte Parameter für den Controller. Weil die Arbeitslasten divers sein und in kurzen Zeitskalen variieren können, kann bestärkendes Lernen beispielsweise unter Verwendung von Actor-Critic oder Q-Lernen 150 verwendet werden, um die im Register 440a gespeicherten Parameter des PID-Controllers 440 zu aktualisieren. Das Lernsystem 150 kann auch die Variabilität des Verarbeitungssystems (z.B. Silikonvariabilität) berücksichtigen, die sonst nicht berücksichtigt werden würde, durch Voreinstellen der Parameter des PID-Controllers 440 und durch Verhindern, dass der PID-Controller 440 erwartete Leistungsanforderungen überkompensiert.As mentioned above, the PID controller enables 440 fixed or self-tuned parameters for the controller. Because workloads can be diverse and vary in short time scales, empowering learning can be done using Actor-Critic or Q-Learning, for example 150 used to be in the register 440a saved parameters of the PID controller 440 to update. The learning system 150 can also take into account the variability of the processing system (e.g. silicon variability) that would otherwise not be taken into account by presetting the parameters of the PID controller 440 and by preventing the PID controller 440 expected performance requirements overcompensated.

Das Lernsystem 150 kann kontinuierlich den Fehler X(t) von dem Zustandsvektor 430 und die aktuelle gemessene Leistung von dem ADC 118 empfangen. Das Lernsystem 150 kann in einigen Ausführungsformen auch vorhergesagte Leistung von den Prozessoren 116 und/oder Aggregator 422 empfangen. In der Beispielausführungsform stimmt das Lernsystem 150 die Parameter 440a des PID-Controllers 440 ab. Das Lernsystem 150 gibt K(t) aus, das einen PID-Steuervektor bildet, der aktualisiert wird, um eine dynamische Eigenschaft basierend auf Korrekturwirksamkeit zu geben.The learning system 150 can continuously get the error X (t) from the state vector 430 and the current measured power from the ADC 118 receive. The learning system 150 may also have predicted performance from the processors in some embodiments 116 and / or aggregator 422 receive. In the example embodiment, the learning system is correct 150 the parameters 440a of the PID controller 440 from. The learning system 150 outputs K (t), which forms a PID control vector that is updated to give a dynamic property based on correction effectiveness.

Das Lernsystem 460 umfasst ein oder mehrere tiefe neuronale Netzwerke, welche die Controllerparameter basierend auf der Wirksamkeit der Korrektur des Fehlers im Laufe der Zeit periodisch aktualisieren. Wenn der PID 440 beispielsweise zur Zeit der Herstellung mit Abstimmungskonstanten 440a initialisiert wird, zu denen man basierend auf Simulationen empirisch gelangt ist, werden sie nicht notwendigerweise genau mit den realen Hardwareeigenschaften von einer bestimmten GPU 102 übereinstimmen. Das Lernsystem 150 kann jedoch bestärkendes Lernen implementieren, um die tatsächliche Korrelation zwischen dem Wert X(t) des Zustandsvektors 430, der die aktuelle Abnahme für einen bestimmten Satz von Prozessoranweisungen vorhersagt, und der tatsächliche Strom/Leistung-Abnahme der GPU 102 zu lernen, wenn die GPU diese Anweisungen ausführt. Das Lernsystem 150 kann statistische und Wahrscheinlichkeitsanalyse verwenden, um eine optimalere Abbildung für den PID-Controller 440 zu bestimmen, um zwischen X(t) und W(t) für ein Vielfalt von unterschiedlichen X(t)s zu agieren, trotz der potentiellen Komplexität des Ausgangssignals W(t) und ohne mit irgendeinem vorgefassten Modell des Systems oder der Abbildung programmiert zu sein.The learning system 460 includes one or more deep neural networks that periodically update the controller parameters based on the effectiveness of correcting the error. If the PID 440 for example at the time of manufacture with tuning constants 440a which have been empirically based on simulations are not necessarily initialized with the real hardware properties of a particular GPU 102 to match. The learning system 150 can, however, implement reinforcing learning to the actual correlation between the value X (t) of the state vector 430 that predicts the current decrease for a particular set of processor instructions and the actual current / power decrease of the GPU 102 to learn when the GPU executes these instructions. The learning system 150 can use statistical and probability analysis to provide a more optimal mapping for the PID controller 440 to act between X (t) and W (t) for a variety of different X (t) s, despite the potential complexity of the output signal W (t) and without being programmed with any preconceived model of the system or mapping his.

In Beispielausführungsformen kann das maschinelle Lernen 150 durch einen Hardwarebeschleuniger für tiefes Lernen („DLA“) 141 beschleunigt werden und kann einen tiefen bestärkenden Lernalgorithmus, wie beispielsweise Actor-Critic bestärkendes Lernen oder Q-Lernen, durchführen. Siehe z.B. Konda et al., „Actor-Critic like learning algorithms for Markov decision processes“, SIAM Journal on Control und Optimization, 38(1) :94-123 (1999) ; Sutton et al., Reinforcement Learning: An Introduction (MIT Press Cambridge, MA, 1995) ; and Grondman et al, „A Survey von Actor-Critic Reinforcement Learning: Standard and Natural Richtlinie Gradients“ IEEE TRANSACTIOS ON SYSTEMS, MAN AND CYBERNETICS-PART C: APPLICATIONS AND REVIEWS (2012).In example embodiments, machine learning 150 through a hardware accelerator for deep learning ("DLA") 141 can be accelerated and can carry out a deep reinforcing learning algorithm, such as actor-critical reinforcing learning or Q-learning. See e.g. Konda et al., "Actor-Critic like learning algorithms for Markov decision processes", SIAM Journal on Control and Optimization, 38 (1): 94-123 (1999) ; Sutton et al., Reinforcement Learning: An Introduction (MIT Press Cambridge, MA, 1995) ; and Grondman et al, "A Survey of Actor-Critic Reinforcement Learning: Standard and Natural Guideline Gradients" IEEE TRANSACTIOS ON SYSTEMS, MAN AND CYBERNETICS-PART C: APPLICATIONS AND REVIEWS (2012).

Wie von Grondmon et al. zusammengefasst:

  • Bestärkendes Lernen ist ein Framework, bei dem ein Agent (oder Controller) sein Verhalten durch Wechselwirken mit seiner Umgebung optimiert. Nach Ergreifen einer Aktion in einem Zustand, empfängt der Agent eine skalare Belohnung von der Umgebung, die dem Agent eine Angabe der Qualität dieser Aktion gibt. Die Funktion, welche die Aktion angibt, die in einen bestimmten Zustand vorzunehmen ist, wird die Richtlinie genannt. Das Hauptziel des Agents ist es, eine Richtlinie zu finden, welche die totale akkumulierte Belohnung, auch die Rendite genannt, maximiert. Durch Folgen einer gegebenen Richtlinie und Verarbeitung der Belohnungen, kann der Agent Schätzungen der Rendite erstellen. Die Funktion, die diese geschätzte Rendite darstellt, ist als die Wertfunktion bekannt. Die Verwendung dieser Wertfunktion ermöglicht dem Agent, indirekten Gebrauch von vergangenen Erfahrungen zu machen, um über zukünftige Aktionen Entscheidungen zu treffen, um einen bestimmten Zustand aufzunehmen oder nicht Actor-Critic-Verfahren kombinieren die Vorteile von Nur-Actor- und Nur-Critic-Verfahren. Während der parametrisierte Actor den Vorteil des Berechnens kontinuierlicher Aktionen ohne den Bedarf an Optimierungsprozeduren auf einer Wertfunktion bringt, ist der Verdienst des Critic, dass er den Actor mit Kenntnis niedriger Varianz der Performance beliefert. Genauer gesagt, ermöglicht die Schätzung des Critic der erwarteten Rendite dem Actor, mit Gradienten zu aktualisieren, die eine niedrigere Varianz aufweisen, was den Lernprozess beschleunigt. Die niedrigere Varianz wird für eine größere Ausrichtung am Start des Lernens eingetauscht, wenn die Schätzungen des Critic bei weitem nicht genau genug sind. Actor-Critic-Verfahren weisen gewöhnlicherweise im Gegensatz zu Nur-Critic-Verfahren gute Konvergenzeigenschaften auf.
As described by Grondmon et al. summarized:
  • Empowering learning is a framework in which an agent (or controller) optimizes its behavior by interacting with its environment. After taking an action in a state, the agent receives a scalar reward from the environment that gives the agent an indication of the quality of that action. The function that specifies the action to be taken in a particular state is called the policy. The main goal of the agent is to find a policy that maximizes the total accumulated reward, also called the return. By following one Given the policy and processing of the rewards, the agent can make estimates of the return. The function that represents this estimated return is known as the value function. The use of this value function enables the agent to make indirect use of past experiences to make decisions about future actions, to record a certain state or not Actor-Critic methods combine the advantages of Actor-only and Critic-only methods , While the parameterized actor has the advantage of calculating continuous actions without the need for optimization procedures on a value function, the Critic's merit is that it provides the actor with knowledge of low variance in performance. More specifically, the Critic's estimate of the expected return enables the actor to update with gradients that have lower variance, which speeds up the learning process. The lower variance is exchanged for greater focus at the start of learning when the Critic's estimates are far from accurate. Actor-critical processes usually have good convergence properties in contrast to critical-only processes.

Tiefe neuronale Netzwerke bzw. Deep Neural Networks (DNNs), die auf Prozessoren wie beispielsweise der PPU 200 entwickelt wurden, wurden für verschiedene Anwendungsfälle, von selbstfahrenden Autos bis hin zu schnellerer Medikamentenentwicklung, von der automatischen Bildüberschrift in Online-Bilddatenbanken bis hin zur intelligenten Echtzeit-Sprachübersetzung in Video-Chat-Anwendungen eingesetzt. Deep Learning ist eine Technik, die den neuronalen Lernprozess des menschlichen Gehirns modelliert, kontinuierlich lernt, kontinuierlich intelligenter wird und im Laufe der Zeit schnellere und genauere Ergebnisse liefert. Ein Kind wird zunächst von einem Erwachsenen gelehrt, verschiedene Formen richtig zu identifizieren und zu klassifizieren, um schließlich ohne Coaching Formen identifizieren zu können. Ebenso muss ein tief lernendes oder neuronal lernendes System in der Objekterkennung und -klassifizierung trainiert werden, damit es intelligenter und effizienter grundlegende Objekte, verdeckte Objekte usw. identifizieren und gleichzeitig den Objekten Kontext zuweisen kann. Im Allgemeinen liegt bestärkendes Lernen irgendwo zwischen überwachtem und unüberwachtem Lernen. Wohingegen man bei überwachtem Lernen eine Zielbezeichnung für jedes Trainingsbeispiel und bei unüberwachtem Lernen man überhaupt keine Bezeichnungen aufweist, muss man bei bestärkendem Lernen spärliche und Zeit-verzögerte Bezeichnungen - die Belohnungen- aufweisen. Basierend lediglich auf diesen Belohnungen muss der Agent lernen, sich in der Umgebung zu verhalten. Siehe https://neuro.cs.ut.ee/demystifying-tiefereinforcement-Lernen/ Deep neural networks or deep neural networks (DNNs) based on processors such as the PPU 200 were developed for various applications, from self-driving cars to faster drug development, from automatic image headings in online image databases to intelligent real-time voice translation in video chat applications. Deep learning is a technique that models the neural learning process of the human brain, learns continuously, becomes increasingly intelligent, and delivers faster and more accurate results over time. A child is first taught by an adult to correctly identify and classify different forms in order to finally be able to identify forms without coaching. Likewise, a deep learning or neuronal learning system must be trained in object recognition and classification so that it can identify basic objects, hidden objects, etc. more intelligently and efficiently and at the same time assign context to the objects. In general, empowering learning is somewhere between supervised and unsupervised learning. Whereas with supervised learning you have a target label for each training example and with unsupervised learning you have no labels at all, with reinforcing learning you have to have sparse and time-delayed labels - the rewards. Based on these rewards only, the agent must learn to behave in the area. See https://neuro.cs.ut.ee/demystifying-tiefereinforcement-Learn/

Auf der einfachsten Ebene betrachten Neuronen im menschlichen Gehirn verschiedene Eingaben, die empfangen werden, jedem dieser Eingaben werden Bedeutungsgrade zugewiesen, und eine Ausgabe wird an andere Neuronen weitergeleitet, um darauf zu reagieren. Ein künstliches Neuron oder Perzeptron ist das grundlegendste Modell eines neuronalen Netzwerks. In einem Beispiel kann ein Perzeptron eine oder mehrere Eingaben empfangen, die verschiedene Merkmale eines Objekts darstellen, zu deren Erkennung und Klassifizierung das Perzeptron trainiert ist, und jedem dieser Merkmale wird ein bestimmtes Gewicht zugewiesen, das auf der Bedeutung dieses Merkmals für die Definition der Form eines Objekts basiert.At the simplest level, neurons in the human brain look at various inputs that are received, each of these inputs is assigned levels of meaning, and an output is passed to other neurons to respond to. An artificial neuron or perceptron is the most basic model of a neural network. In one example, a perceptron can receive one or more inputs that represent various features of an object that the perceptron is trained to recognize and classify, and each of these features is assigned a specific weight based on the importance of that feature for defining the shape based on an object.

Ein DNN (Deep Neural Network)-Modell beinhaltet mehrere Schichten vieler verbundener Perzeptronen (beispielsweise Knoten), die mit enormen Mengen an Eingangsdaten trainiert werden können, um komplexe Probleme schnell und mit hoher Genauigkeit zu lösen. In einem Beispiel zerlegt eine erste Schicht des DNN-Modells ein zugeführtes Bild eines Autos in verschiedene Abschnitte und sucht nach Grundmustern, wie beispielsweise Linien und Winkeln. Die zweite Schicht setzt die Linien zusammen, um nach Mustern höherer Ebene, wie beispielsweise Rädern, Windschutzscheiben und Spiegeln zu suchen. Die nächste Schicht gekennzeichnet den Fahrzeugtyp und die letzten paar Schichten erzeugen eine Bezeichnung für das zugeführte Bild, welches das Modell einer bestimmten Automobilmarke gekennzeichnet.A DNN (Deep Neural Network) model contains several layers of many connected perceptrons (e.g. nodes) that can be trained with enormous amounts of input data in order to solve complex problems quickly and with high accuracy. In one example, a first layer of the DNN model breaks down a supplied image of a car into different sections and searches for basic patterns such as lines and angles. The second layer assembles the lines to look for higher level patterns such as wheels, windshields and mirrors. The next layer identifies the type of vehicle and the last few layers create a label for the input image, which identifies the model of a particular automobile brand.

Sobald das DNN trainiert ist, kann das DNN eingesetzt und dazu verwendet werden, Objekte oder Muster in einem Prozess zu identifizieren und zu klassifizieren, der als Inferenz bzw. Folgerung bezeichnet wird. Beispiele für Folgerungen (der Prozess, durch den ein DNN nützliche Informationen aus einem gegebenen Eingang extrahiert) beinhalten das Identifizieren von handschriftlichen Zahlen bei Schecks, die in Geldautomaten hinterlegt sind, das Identifizieren von Bildern von Freunden auf Fotos, das Liefern von Filmempfehlungen an über fünfzig Millionen Benutzer, das Identifizieren und Klassifizieren verschiedener Arten von Autos, Fußgängern und Straßengefahren in fahrerlosen Autos, oder das Übersetzen menschlicher Sprache in Echtzeit.Once the DNN is trained, the DNN can be used and used to identify and classify objects or patterns in a process called inference. Examples of inferences (the process by which a DNN extracts useful information from a given receipt) include identifying handwritten numbers on checks deposited in ATMs, identifying pictures of friends in photos, providing movie recommendations to over fifty Millions of users, identifying and classifying different types of cars, pedestrians and road hazards in driverless cars, or translating human speech in real time.

Während des Trainings fließen die Daten in einer Vorwärtspropagierungsphase durch das DNN, bis eine Vorhersage erzeugt wird, die eine der Eingabe entsprechende Bezeichnung anzeigt. Falls das neuronale Netzwerk die Eingabe nicht korrekt bezeichnet, dann werden Fehler zwischen der korrekten Bezeichnung und der vorhergesagten Bezeichnung analysiert und die Gewichte während einer Rückwärtsausbreitungsphase für jedes Merkmal angepasst, bis das DNN die Eingabe und andere Eingaben in einem Trainingsdatensatz korrekt bezeichnet. Das Training komplexer neuronaler Netze erfordert enorme Mengen an paralleler Rechen-Performance, die Gleitkomma-Multiplikationen und -Additionen umfasst, die von der PPU 200 unterstützt werden. Die Inferenzierung ist weniger rechenintensiv als das Training, da es sich um einen latenzsensitiven Prozess handelt, bei dem ein trainiertes neuronales Netzwerk auf neue Eingaben angewendet wird, die es bisher noch nicht gesehen hat, um Bilder zu klassifizieren, Sprache zu übersetzen und allgemein neue Informationen abzuleiten.During training, the data flows through the DNN in a forward propagation phase until a prediction is generated that indicates a label corresponding to the input. If the neural network does not correctly label the input, then errors will occur between the correct label and the predicted one Label analyzed and weights adjusted for each trait during a backward propagation phase until the DNN correctly identified the inputs and other inputs in a training record. Training complex neural networks requires enormous amounts of parallel computing performance, which includes floating point multiplications and additions, by the PPU 200 get supported. Inferencing is less computationally intensive than training because it is a latency-sensitive process in which a trained neural network is applied to new inputs that it has never seen before to classify images, translate speech, and generally new information derive.

Neuronale Netze sind stark auf Matrix-Mathematik-Operationen angewiesen, und komplexe mehrschichtige Netzwerke erfordern enorme Mengen an Gleitkomma-Perfomance und Bandbreite für sowohl Effizienz als auch Geschwindigkeit. Mit Tausenden von Rechenkernen, die für Matrix-Mathematik-Operationen optimiert sind, und zehn bis hunderte von TFLOPS an Performance liefern, ist die PPU 200 eine Rechenplattform, die in der Lage ist, die für auf tiefen neuronalen Netzwerken basierende künstliche Intelligenz und Anwendungen maschinellen Lernens erforderliche Performance zu liefern.Neural networks rely heavily on matrix math operations, and complex multi-layer networks require enormous amounts of floating point performance and bandwidth for both efficiency and speed. With thousands of cores optimized for matrix math operations and ten to hundreds of TFLOPS in performance, the PPU is 200 a computing platform capable of delivering the performance required for artificial intelligence and machine learning applications based on deep neural networks.

Beispiel eines nicht einschränkenden bestärkenden Lernen-basierten Proportional-Integral-Derivative-Controllers 6 zeigt ein Beispiel einer ausführlicheren Architektur für einen bestärkenden Lernen-basierten PID-Controller 440. In dieser Beispielimplementierung stellt das Eingangssignal y_ref(t) die Bezugsleistung dar, die wir verwalten wollen, und y(t) ist ein Ausgangssignal, das die Summe der aktuellen Sensorleistung + der geschätzten zukünftigen Erhöhung in der Leistung darstellt, die aufgrund der Hochenergieanweisungen beobachtet werden wird. Ein Addierer 422' berechnet die Differenz zwischen y_ref(t) und y(t), um ein Fehlersignal e(t) zur Anwendung auf den Zustandsvektor 430 zu erzeugen. Der Zustandsvektor x(t) ist somit ein von e(t) abgeleiteter Vektor, wobei : x ( t ) = [ x 1 ( t ) ,  x 2 ( t ) ,  x 3 ( t ) xn ( t ) ] = [ e ( t ) ,  delta ( e ( t ) ) , delta 2 ( e ( t ) ) , ] : e ( t ) = y _ ref ( t ) y ( t ) ,  delta ( e ( t ) ) = e ( t ) e ( t 1 ) ,  delta 2 ( e ( t ) ) = e ( t ) 2 e ( t 1 ) + e ( t 2 )

Figure DE102019120689A1_0001
und so weiter.Example of a non-limiting reinforcing learning-based proportional-integral-derivative controller 6 shows an example of a more detailed architecture for a reinforcing learning-based PID controller 440 , In this example implementation, the input signal y_ref (t) represents the reference power that we want to manage, and y (t) is an output signal that represents the sum of the current sensor power + the estimated future increase in power observed due to the high energy instructions becomes. An adder 422 ' calculates the difference between y_ref (t) and y (t) by an error signal e (t) for application to the state vector 430 to create. The state vector x (t) is thus a vector derived from e (t), where : x ( t ) = [ x 1 ( t ) . x 2 ( t ) . x 3 ( t ) ... xn ( t ) ] = [ e ( t ) . delta ( e ( t ) ) . delta 2 ( e ( t ) ) . ... ] : e ( t ) = y _ ref ( t ) - y ( t ) . delta ( e ( t ) ) = e ( t ) - e ( t - 1 ) . delta 2 ( e ( t ) ) = e ( t ) - 2 * e ( t - 1 ) + e ( t - 2 )
Figure DE102019120689A1_0001
and so on.

Der PID-Controller 440 wird ein Element dieses Zustandsvektors, typischerweise beispielsweise e(t), verwenden, das zu dem Block inkrementeller PID-Controller 440 geht. Die Ausgabe des PID-Controllers 440 ist Δu(t), was an den Eingang des Prozesses 472 angelegt wird, der den Frequenz-Spannung-Controller 122 und zugeordneten Leistungseinstellmechanismus darstellt. Ein Z-1 (Speicher) Operator 470 stellt Hysterese bereit, so dass die Ausgabe Δu(t) des PID-Controllers 440 verwendet wird, um das aktuelle u(t) Signal anzupassen, das angewendet wird, um den Prozess 472 zu steuern. Der Z-1 Operator 470 speichert u(t) und liefert sie als u(t-1) zur Eingabe in einen Addierer 474, der Δu(t) zu u(t-1) addiert, um u(t) zu erzeugen.The PID controller 440 will use an element of this state vector, typically e (t), for example, that goes to the block of incremental PID controllers 440 goes. The output of the PID controller 440 is Δu (t), which is at the input of the process 472 is applied to the frequency voltage controller 122 and associated power adjustment mechanism. A Z-1 (memory) operator 470 provides hysteresis so that the output Δu (t) of the PID controller 440 is used to adjust the current u (t) signal that is applied to the process 472 to control. The Z-1 operator 470 stores u (t) and supplies it as u (t-1) for input into an adder 474 , which adds Δu (t) to u (t-1) to produce u (t).

Der Lernblock 150 umfasst einen Actor 476, einen Critic 480 und ein selbstanpassendes Modul („SAM“) 478. Im Allgemeinen ist das System 150 ein neuronales Netzwerk-basiertes Modell, das die aktualisierten Koeffizienten K(t) für den PID-Controller 440 erzeugen wird. Eine Eingabe in den Critic 480 ist r(t), auch bekannt als eine Belohnung als eine Entität bei bestärkenden Lernsystemen. In diesem bestimmten Fall ist r(t) ein skalarer Wert, der von e(t) und e(t-1) hergeleitet wird. Das Objektive des Lernens ist, maximales maximum r(t) zu erzielen.The learning block 150 includes an actor 476 , a critical 480 and a self-adapting module ("SAM") 478 , In general, the system 150 a neural network-based model that uses the updated coefficients K (t) for the PID controller 440 will generate. An entry in the Critic 480 is r (t), also known as a reward as an entity in reinforcing learning systems. In this particular case, r (t) is a scalar value derived from e (t) and e (t-1). The objective of learning is to achieve maximum maximum r (t).

Bei dieser bestimmten Anordnung führt der Actor 476 seine Ausgabe K' (t) dem selbstanpassenden Modul („SAM“) 478 zu, das K(t) erzeugt und dieses Signal als eine Koeffizienteneingabe an den PID-Controller 440 liefert. Die Koeffizienten bilden den Vektor von PID-Parametern in diesem Beispiel.In this particular arrangement, the actor leads 476 its output K '(t) the self-adapting module ("SAM") 478 to, which generates K (t) and this signal as a coefficient input to the PID controller 440 supplies. The coefficients form the vector of PID parameters in this example.

Derweil erzeugt der Critic 480 eine Ausgabe V(t) basierend auf Eingaben x(t) und r(t) und wendet die Ausgabe V(t) auf den SAM 478 an, der sich an die Ausgabe des Critic anpasst und K'(t) in K(t) transformiert.Meanwhile, the Critic creates 480 an output V (t) based on inputs x (t) and r (t) and applies the output V (t) to the SAM 478 which adapts to the edition of the Critic and transforms K '(t) into K (t).

Zwei-Steuerschleifen-ArchitekturTwo control loop architecture

Der PID-Controller 440 und das Lernsystem 150 sehen somit zwei Steuerschleifen vor, wobei die erste den PID-Controller 440 und die zweite das Lernsystem umfasst, das auf oben auf (und auf einer unterschiedlichen Zeitskala) der ersten Schleife läuft. Die beiden Steuerschleifen sehen ein Selbstlernen und Selbsteinstellen von Parametern vor, die von dem PID-Controller 440 verwendet werden, um die Leistungssteuerparameter für die GPU 102 basierend auf zukünftigen Leistungsnutzungsschätzungen einzustellen, die von den Prozessoren 116 als ein Ergebnis dessen bereitgestellt werden, dass die Prozessoren ihre bald auszuführenden Anweisungsformate syntaktisch analysieren.The PID controller 440 and the learning system 150 thus provide two control loops, the first of which is the PID controller 440 and the second comprises the learning system running on top of (and on a different time scale) the first loop. The two control loops provide for self-learning and self-setting of parameters by the PID controller 440 used to control the power control parameters for the GPU 102 based on future power usage estimates made by the processors 116 are provided as a result of the processors parsing their instruction formats to be executed soon.

In nicht einschränkenden Beispielausführungsformen läuft die Schleife des PID-Controllers 440 kontinuierlich und unabhängig von der Schleife des Lernsystems 150, wobei sie jedoch nach Bedarf aktualisiert werden kann, wie durch die Lernsystemschleife bestimmt. Die Lernsystemschleife beobachtet den Betrieb der Schleife des PID-Controllers 440, um zu sehen, wann ein Unterschied (z.B. eine Verringerung im Fehler) durch die aktuell eingestellten Gewichtungskoeffizienten des PID-Controllers 440 gemacht wird. Wenn kein Unterschied gemacht wird oder die Verringerung im Fehler verbessert werden kann, kann die Lernsystemschleife 150 ein oder mehrere Koeffizienten modifizieren, die von dem PID-Controller 440 verwendet werden. Die Schleife des Lernsystems 150 kann die Koeffizienten des PID-Controllers während einer Zeitdauer aktualisieren, wenn der PID-Controller 440 die Frequenz- und/oder Spannungseinstellungen nicht aktualisiert.In non-limiting example embodiments, the loop of the PID controller runs 440 continuously and regardless of the loop of the learning system 150 , but can be updated as needed, as determined by the learning system loop. The learning system loop monitors the operation of the loop of the PID controller 440 to see when a difference (e.g. a reduction in error) due to the currently set Weighting coefficient of the PID controller 440 is made. If no difference is made or the reduction in error can be improved, the learning system loop can 150 modify one or more coefficients by the PID controller 440 be used. The loop of the learning system 150 can update the coefficients of the PID controller during a period of time when the PID controller 440 the frequency and / or voltage settings are not updated.

Wie oben erwähnt, kann in einigen beispielhaften Ausführungsformen das Lernsystem 150 zusätzliche Informationen von anderen Komponenten des Verarbeitungssystems empfangen. Beispielsweise kann das Lernsystem 460 Informationen von den Prozessoren 116 über die zur Ausführung geplanten anhängigen Anweisungen empfangen. Das Lernsystem 460 kann diese zusätzlichen Informationen verwenden, um ihm zu helfen, die Koeffizienten des PID-Controllers 440 zu bestimmen und zu aktualisieren.As mentioned above, in some exemplary embodiments, the learning system 150 receive additional information from other components of the processing system. For example, the learning system 460 Information from the processors 116 received via the pending instructions scheduled to run. The learning system 460 can use this additional information to help him find the coefficients of the PID controller 440 to determine and update.

Beispiel eines nicht einschränkenden, skalierten bestärkenden Lernen-basierten Proportional-Integral-Derivative-Systems In Beispielimplementierungen kann ein bestärkendes Lernen-basiertes PID-System skaliert werden, um ein oder mehrere zusätzliche PID-Controller und/oder ein oder mehrere zusätzliche Lernblöcke zu umfassen, um das System basierend auf getrennten Metriken zu steuern. Im Kontext der prädiktiven Leistungsverwaltung kann das skalierte, bestärkendes Lernenbasierte PID-System verwendet werden, um Performance (getrennte Metrik) und Leistung (getrennte Metrik) zu verwalten, so dass der höchste potentielle Arbeitspunkt erreicht wird. 7 ist ein schematisches Diagramm eines skalierten, bestärkenden Lernen-basierten Proportional-Integral-Derivative-Systems. In 7 werden ein oder mehrere PID-Controller 440 verwendet, um einen Prozess 472 zu steuern, und ein oder mehrere Lernsysteme 150 aktualisieren Koeffizienten für den einen oder mehreren PID-Controller 440.Example of a Non-Restrictive, Scaled, Learning-Based Proportional-Integral-Derivative-System to control the system based on separate metrics. In the context of predictive performance management, the scaled, reinforcing learning-based PID system can be used to manage performance (separate metric) and performance (separate metric), so that the highest potential operating point is reached. 7 Figure 11 is a schematic diagram of a scaled, reinforcing learning-based proportional-integral-derivative system. In 7 become one or more PID controllers 440 used a process 472 to control and one or more learning systems 150 update coefficients for the one or more PID controllers 440 ,

Wie in 7 gezeigt, kann der Prozess 472 basierend auf summierten Ausgaben des PID-Controllers 440 gesteuert werden. Jeder PID-Controller kann eine getrennte Metrik verwalten, die einen oder mehrere gemeinsame Parameter des Prozesses 472 verwalten.As in 7 shown the process 472 based on total PID controller outputs 440 to be controlled. Each PID controller can manage a separate metric that is one or more common parameters of the process 472 manage.

In dem in 7 gezeigten Beispiel ist jeder der PID-Controller 440 ist mit einem jeweiligen Lernsystem 150 gekoppelt, das die Koeffizienten für den gekoppelten PID-Controller bestimmt. Die Lernsysteme 155 bestimmen die Koeffizienten für die PID-Controller 440 basierend auf der einen oder mehreren Ausgaben des Prozesses 472. In anderen Beispielen bestimmen die Lernsysteme 150 die Koeffizienten basierend auf einem oder mehreren Fehlersignalen, die in den PID-Controller 440 eingegeben werden. In einigen Beispielen kann ein einziges Lernsystem (z.B. RL-Agent 1) Koeffizienten für zwei oder mehrere PID-Controller (z.B. PID-Controller 1 und PID-Controller 2) bestimmen.In the in 7 The example shown is each of the PID controllers 440 is with a respective learning system 150 coupled, which determines the coefficients for the coupled PID controller. The learning systems 155 determine the coefficients for the PID controller 440 based on the one or more editions of the process 472 , In other examples, the learning systems determine 150 the coefficients based on one or more error signals that are in the PID controller 440 can be entered. In some examples, a single learning system (e.g. RL agent 1 ) Coefficients for two or more PID controllers (e.g. PID controller 1 and PID controller 2 ) determine.

8 zeigt eine Beispielarchitektur für ein skaliertes, bestärkendes Lernen-basiertes PID-System, das zwei PID-Controller und zwei Lernsysteme umfasst. In dieser Beispielimplementierung werden ein erster PID-Controller 440A und ein zweiter PID-Controller 440B verwendet, um einen Prozess 472 zu steuern, der den Frequenz-Spannung-Controller und zugeordneten Leistungseinstellmechanismus darstellen kann. Eingangssignale θref und xref können getrennten Metriken darstellen, die wir verwalten wollen, und θ(tk) und x(tk) können aktuelle Metrikwerte und die geschätzte zukünftige Erhöhung der Metrikwerte darstellen. Als Beispiel kann x(tk) die Summe der aktuellen Sensorleistung + der geschätzten zukünftigen Erhöhung in der Leistung darstellen, die aufgrund der Hochenergieanweisungen beobachtet werden wird, und θ(tk) kann die Summe der aktuellen Performance + der geschätzten zukünftigen Erhöhung in der Performance darstellen, die aufgrund der Hochenergieanweisungen beobachtet werden wird. In einigen Beispielimplementierungen kann die erste Metrik eine Spannung des Prozesses 472 darstellen und die zweite Metrik eine Frequenz des Prozesses 472 darstellen. 8th shows an example architecture for a scaled, reinforcing learning-based PID system, which comprises two PID controllers and two learning systems. In this example implementation, a first PID controller 440A and a second PID controller 440B used a process 472 to control, which can represent the frequency-voltage controller and associated power adjustment mechanism. Input signals θ ref and x ref can represent separate metrics that we want to manage, and θ (t k ) and x (t k ) can represent current metric values and the estimated future increase in metric values. As an example, x (t k ) may represent the sum of the current sensor power + the estimated future increase in power that will be observed due to the high energy instructions, and θ (t k ) may be the sum of the current performance + the estimated future increase in the Represent performance that will be observed based on the high energy instructions. In some example implementations, the first metric can tension the process 472 represent and the second metric is a frequency of the process 472 represent.

Der erste PID-Controller 440A empfängt ein erstes Metrikfehlersignal ep(tk), das einen Unterschied zwischen θref und θ (tk) darstellt. Der zweite PID-Controller 440B empfängt ein zweites Fehlersignal ec (tk), das einen Unterschied zwischen xref und x (tk) darstellt. Der erste PID-Controller 440A und der zweite PID-Controller 440B geben jeweils Werte up(tk) und uc(tk) aus, die basierend auf den empfangenen Fehlern und den in den Controllern gesetzten Koeffizienten K(t) bestimmt werden. Wie in 8 gezeigt, können die Ausgangswerte up(tk) und uc(tk) summiert und dem Prozess 472 bereitgestellt werden.The first PID controller 440A receives a first metric error signal e p (t k ), which represents a difference between θ ref and θ (t k ). The second PID controller 440B receives a second error signal e c (t k ), which represents a difference between x ref and x (t k ). The first PID controller 440A and the second PID controller 440B output values u p (t k ) and u c (t k ), which are determined based on the received errors and the coefficients K (t) set in the controllers. As in 8th shown, the output values u p (t k ) and u c (t k ) can be summed and the process 472 to be provided.

Die Ausgangswerte up(tk) und uc(tk) werden summiert, wenn getrennte Metriken einen oder mehrere gemeinsame Parameter des Prozesses 472 einstellen. Als Beispiel werden, wenn die Betriebstakte basierend auf Performance und Leistung eingestellt werden (da Takte beides beeinflussen können), die Ausgaben verwendet, um gemeinsame Parameter zu treiben/einzustellen, die den Prozess steuern.The output values u p (t k ) and u c (t k ) are summed if separate metrics have one or more common parameters of the process 472 to adjust. As an example, if the operating clocks are set based on performance and performance (since clocks can affect both), the outputs are used to drive / set common parameters that control the process.

In anderen Beispielen können die Ausgangswerte up(tk) und uc(tk) dem Prozess 472 direkt zum Bestimmen bereitgestellt werden, wie die Ausgangswerte up(tk) und uc(tk) Parameter treiben/einstellen werden, die den Prozess 472 steuern.In other examples, the output values u p (t k ) and u c (t k ) can be the process 472 be provided directly to determine how the output values u p (t k ) and u c (t k ) will drive / set parameters that affect the process 472 Taxes.

Wie in 8 gezeigt, können der erste PID-Controller 440A und der zweite PID-Controller 440B jeweils mit einem jeweiligen Lernsystem zum Aktualisieren von Koeffizienten der Controller gekoppelt sein. Ein erstes Lernsystem 150A erzeugt ein oder mehrere Aktualisierungskoeffizienten KPP, KIP und/oder KDP für den ersten PID-Controller 440A. Ein zweiter Lernblock 150B erzeugt ein oder mehrere Aktualisierungskoeffizienten KPC, KIC und/oder KDC für den zweiten PID-Controller 440B. Der erste Lernblock 150A und der zweite Lernblock 150B empfangen ein oder mehrere Komponenten eines Zustandsvektors (n1(tk), n2(tk), n3(tk), n4(tk)), der die diskreten Werten der Ausgaben des Prozesses 472 darstellt. Die Zustandsvektorwerte n1(tk), n2(tk), n3(tk) und n4(tk) werden von den Ausgaben θ(tk), θ(tk), x(tk) und x(tk) des Prozesses 472 hergeleitet. As in 8th shown, the first PID controller 440A and the second PID controller 440B each be coupled to a respective learning system for updating coefficients of the controller. A first learning system 150A generates one or more update coefficients K PP , K IP and / or K DP for the first PID controller 440A , A second learning block 150B generates one or more update coefficients K PC , K IC and / or K DC for the second PID controller 440B , The first learning block 150A and the second learning block 150B receive one or more components of a state vector (n 1 (t k ), n 2 (t k ), n 3 (t k ), n 4 (t k )) representing the discrete values of the outputs of the process 472 represents. The state vector values n 1 (t k ), n 2 (t k ), n 3 (t k ) and n 4 (t k ) are determined by the outputs θ (t k ), θ (t k ), x (t k ) and x (t k ) of the process 472 derived.

In dem in 8 gezeigten Beispiel empfängt der erste Lernblock 150A Zustandsvektorwerte n1(tk) und n2(tk) und der zweite Lernblock 150B empfängt Zustandsvektorwerte n1(tk), n2(tk), n3(tk) und n4(tk). Während 8 zeigt, dass die Lernblöcke unterschiedliche Sätze von Werten empfangen, können der erste Lernblock 150A und der zweite Lernblock 150B den gleichen Satz von Werten oder unterschiedliche Sätze von Werten empfangen.In the in 8th shown example receives the first learning block 150A State vector values n 1 (t k ) and n 2 (t k ) and the second learning block 150B receives state vector values n 1 (t k ), n 2 (t k ), n 3 (t k ) and n 4 (t k ). While 8th shows that the learning blocks receive different sets of values, the first learning block 150A and the second learning block 150B receive the same set of values or different sets of values.

In anderen Beispielen können die Lernsysteme 150A und/oder 150B ein Element(e) eines Zustandsvektors des Fehlersignals ep(tk) und/oder Fehlersignals ec(tk) verwenden, um die Koeffizienten des ersten und/oder zweiten PID-Controllers zu aktualisieren.In other examples, the learning systems 150A and or 150B use an element (e) of a state vector of the error signal e p (t k ) and / or error signal e c (t k ) to update the coefficients of the first and / or second PID controller.

Beispiel eines nicht einschränkenden bestärkendes Lernenbasierten Rückkopplungsschleifen-Steuerverfahren VerfahrenExample of a non-limiting reinforcing learning-based feedback loop control method

9 ist ein Ablaufdiagramm eines bestärkenden Lernenbasierten Rückkopplungssteuerverfahren gemäß bestimmter Beispielausführungsformen. 9 FIG. 12 is a flow diagram of an encouraging learning-based feedback control method in accordance with certain example embodiments.

Zunächst einmal initialisiert die Operation 510 ein oder mehrere Parameter. Diese Parameter können beispielsweise die Parameter umfassen, die von dem PID-Controller 440 verwendet werden, um die Leistungssteuerparameter für die GPU 102 zu beeinflussen.First of all, the operation is initialized 510 one or more parameters. These parameters can include, for example, the parameters set by the PID controller 440 used to control the power control parameters for the GPU 102 to influence.

Die Operation 520 fühlt einen Fehler z.B. durch Erzeugen eines Fehlersignals e(t) zur Anwendung auf den Zustandsvektor 430 ab, wie beispielsweise durch Berechnen der Differenz zwischen y_ref(t) und y(t) bereitgestellt wird.The operation 520 feels an error, for example, by generating an error signal e (t) for application to the state vector 430 as provided by calculating the difference between y_ref (t) and y (t).

Die Operation 530 verwendet bestärkendes Lernen, um zu erfassen, ob der abgefühlte Fehler ein Systemfehler ist, der eine Korrektur erfordert. Bestärkendes Lernen ist imstande, sofortige Aktionen mit den verzögerten Rückgaben zu korrelieren, die es erzeugt. Ähnlich wie Menschen, müssen bestärkende Lernalgorithmen manchmal etwas warten, um das Ergebnis ihrer Entscheidungen zu sehen. Sie können somit in einer verzögerten Rückgabeumgebung arbeiten, wo es schwierig sein kann, zu verstehen, welche Aktion zu welchem Ergebnis über viele Zeitschritte führt. Es kann somit erwartet werden, dass bestärkende Lernalgorithmen in mehrdeutigen Umgebungen eine bessere Leistung zeigen, wie beispielsweise Leistungssteuerung mit unbekannten Faktoren (z.B. der Grad der Parallelität von bestimmten Anweisungen/Threads/Warps von bestimmten Softwareanwendungen oder Funktionen davon, die Anzahl von GPU Transistoren, die basierend auf einer derartigen parallelen Operation aktiviert und deaktiviert werden usw.), während zwischen einer beliebigen Anzahl von möglichen Aktionen gewählt wird. Im Beispielbetrieb einer nicht einschränkenden Ausführungsform wurde der Critic eines neuronalen Netzwerks von einem bestärkenden maschinellen Lernsystem auf vorherigen Leistungseinstelloperationen als Antwort auf vorherige abgefühlte Fehler trainiert und bewertete eine akkumulierte Belohnung, d.h., eine Werteeinschätzung davon, wie vorteilhaft es ist, in einem bestimmten Zustand zu sein. Wenn das neuronale Netzwerk basierend auf dem abgefühlten Fehler bestimmt, dass die bewertete Belohnung hoch ist, wird der Zustandsvektor nicht geändert und die „senmse error“ (Fehler abfühlen) Operation 520 wird kontinuierlich wiederholt. Wenn jedoch das neuronale Netzwerk basierend auf dem abgefühlten Fehler erfasst, dass die Belohnung niedrig ist, wird eine zusätzliche Verarbeitung aufgerufen, um den Zustandsvektor zu ändern (nachstehend erläutert).The operation 530 uses reinforcement learning to determine whether the sensed error is a system error that requires correction. Empowering learning is able to correlate immediate actions with the delayed returns it generates. Similar to humans, encouraging learning algorithms sometimes have to wait a little to see the result of their decisions. You can thus work in a delayed return environment where it can be difficult to understand which action leads to which result over many time steps. Thus, reinforcing learning algorithms can be expected to perform better in ambiguous environments, such as performance control with unknown factors (e.g., the degree of parallelism of certain instructions / threads / warps from certain software applications or functions thereof, the number of GPU transistors that be activated and deactivated based on such a parallel operation, etc.) while choosing between any number of possible actions. In example operation of a non-limiting embodiment, the critique of a neural network has been trained by an empowering machine learning system on previous performance adjustment operations in response to previous sensed errors and evaluated an accumulated reward, i.e., a value assessment of how advantageous it is to be in a particular state , If the neural network determines that the rated reward is high based on the sensed error, the state vector is not changed and the "senmse error" operation 520 is repeated continuously. However, if the neural network detects that the reward is low based on the sensed error, additional processing is called to change the state vector (discussed below).

Um den Zustandsvektor zu ändern, wenn die bewertete Belohnung niedrig ist, führt die nicht einschränkende Beispielausführungsform eine Operation 540 durch, d.h., eine Zustandsvektor-basierte Parameterberechnung basierend auf dem neuronalen Netzwerk (in anderen Ausführungsformen könnte die Zustandsvektor-basierte Berechnung auf andere Weisen, wie beispielsweise Inkrementieren oder Dekrementieren um einen bestimmten Betrag, durchgeführt werden, usw.). Diese Berechnung kann beispielsweise das Berechnen von Koeffizienten K'(t) für den PID-Controller 440 umfassen. In einer nicht einschränkenden Beispielausführungsform kann die Zustandsvektor-basierte Parameterberechnung durch den Actor 476 basierend auf dem von dem Fehlersignal e(t) hergeleiteten Zustandsvektor x(t) durchgeführt werden.To change the state vector when the rated reward is low, the non-limiting example embodiment performs an operation 540 by, that is, a state vector-based parameter calculation based on the neural network (in other embodiments, the state vector-based calculation could be carried out in other ways, such as incrementing or decrementing by a certain amount, etc.). This calculation can, for example, calculate coefficients K '(t) for the PID controller 440 include. In a non-limiting example embodiment, the state vector-based parameter calculation can be performed by the actor 476 based on the state vector x (t) derived from the error signal e (t).

In einer nicht einschränkenden Beispielausführungsform führt die Operation 550 stochastische Störungen durch, um berechnete Koeffizienten K'(t) in K(t) zu transformieren. Das Transformieren von Koeffizienten K' (t) in K(t) kann durch das selbstanpassende Modul („SAM“) 478 basierend auf der Ausgabe V(t) von dem Critic 480 durchgeführt werden. Bei Operation 560 werden die neuen Koeffizienten K(t), die durch das neuronale Netzwerk hergeleitet wurden, auf den PID-Controller 440 angewandt.In a non-limiting example embodiment, the operation performs 550 stochastic perturbations to transform calculated coefficients K '(t) into K (t). Transforming coefficients K '(t) into K (t) can be done by the self-adapting module ("SAM") 478 based on the output V (t) from the Critic 480 be performed. During surgery 560 the new coefficients K (t) derived through the neural network are applied to the PID controller 440 applied.

Das Anwenden neuer Koeffizienten K(t) auf den PID-Controller 440 bewirkt, dass sich der Arbeitspunkt für die GPU-Leistungseinstellungen bewegt (Block 570). Diese Arbeitspunktbewegung kann das Einstellen der Ausgangsfrequenz des Frequenz-Spannung-Controllers 122 und/oder das Einstellen der Ausgangsspannung unter Verwendung des Leistungseinstellmechanismus umfassen. Das Ergebnis des Prozesses, der von dem Frequenz-Spannung-Controller 122 und dem zugeordneten Leistungseinstellmechanismus durchgeführt wird, stellt den neuen Frequenz- und/oder Spannungsbetriebspunkt der GPU ein. Die GPU verarbeitet dann Anweisungen unter Verwendung des neuen Arbeitspunkts (Block 580). Derweil lernt das neuronale Netzwerk 1 von der Wirkung dieser Operation und verwendet dieses zusätzliche Lernen auf die nächste Iteration des Prozesses von 9.Applying new coefficients K (t) to the PID controller 440 causes the operating point for the GPU power settings to move (block 570 ). This operating point movement can be the setting of the output frequency of the frequency-voltage controller 122 and / or adjusting the output voltage using the power adjustment mechanism. The result of the process by the frequency voltage controller 122 and the associated power adjustment mechanism is performed, sets the GPU's new frequency and / or voltage operating point. The GPU then processes instructions using the new operating point (block 580 ). In the meantime, the neural network is learning 1 of the effect of this operation and uses this additional learning on the next iteration of the process of 9 ,

ÜberstromverhinderungOvercurrent prevention

In einigen beispielhaften Ausführungsformen kann der Frequenz/Spannung-Controller 450 die Ausführung der anhängigen Anweisungen in einem oder mehreren Prozessoren (z.B. SMs) verzögern, ausschließen oder verhindern. Beispielsweise kann der Frequenz/Spannung-Controller 450 und/oder das maschinelle Lernen 150 die Ausgabe von dem PID-Controller 440 empfangen und bestimmen, wann die Ausführung der Anweisungen zu Frequenz- und/oder Spannungseinstellungen führen würde, die vorbestimmte Grenzen (z.B. sichere Grenzen) überschreiten. Basierend auf dieser Bestimmung kann der Frequenz/Spannung-Controller 450 Signale ausgeben, um die Verarbeitung der anhängigen Anweisungen für ein oder mehrere Zyklen zu verzögern oder zu stoppen. Die Signale, um die Verarbeitung der Anweisungen zu verzögern oder zu stoppen, kann an einen oder mehrere der Prozessoren über herkömmliche Bevorrechtigungsmechanismen ausgegeben werden, die Fachleuten bekannt sind. Der Frequenz/Spannung-Controller 450 kann bestimmen, in wie vielen Prozessoren 116 die Verarbeitung von Hochenergieanweisungen verzögert werden müssen, um die Überschreitung vorbestimmter Sicherheitsgrenzen zu vermeiden. Wenn beispielsweise eine Bestimmung durchgeführt wird, dass die Ausführung der anhängigen Anweisungen in den Prozessoren 116 bewirken wird, dass die Leistungseinstellungen vorbestimmte Grenzen überschreiten und somit potentielle Überhitzung, Spannungsabfälle oder andere unerwünschte Wirkungen verursachen werden, kann der Frequenz/Spannung-Controller 450 ein Verzögerungssignal an einen oder mehrere Prozessoren übertragen, so dass alle Hochenergieverbrauchsanweisungen während eines gegebenen Taktzyklus nicht ausgeführt werden. Ein derartiger Lastenausgleich kann die Hochleistungsberechnung im Verlauf der Zeit bei minimaler Auswirkung auf die Gesamtgeschwindigkeit-Performance ausgleichen.In some exemplary embodiments, the frequency / voltage controller 450 delay, exclude or prevent execution of the pending instructions in one or more processors (eg SMs). For example, the frequency / voltage controller 450 and / or machine learning 150 the output from the PID controller 440 receive and determine when the execution of the instructions would result in frequency and / or voltage settings that exceed predetermined limits (eg safe limits). Based on this determination, the frequency / voltage controller can 450 Output signals to delay or stop processing pending instructions for one or more cycles. The signals to delay or stop processing the instructions can be output to one or more of the processors via conventional privilege mechanisms known to those skilled in the art. The frequency / voltage controller 450 can determine in how many processors 116 the processing of high-energy instructions must be delayed in order to avoid exceeding predetermined safety limits. For example, if a determination is made that the execution of the pending instructions in the processors 116 The frequency / voltage controller can cause the power settings to exceed predetermined limits and thus cause potential overheating, voltage drops or other undesirable effects 450 transmit a delay signal to one or more processors so that all high power consumption instructions are not executed during a given clock cycle. Such load balancing can offset the high performance computation over time with minimal impact on overall speed performance.

Beispielhafte Ausführungsformen dieser Offenbarung sind nicht auf die Verwendung eines PID-Controllers und Actor-Critic oder Q-Lernen begrenzt, die in 4 und 5 veranschaulicht ist. Andere Rückkopplungscontroller und Lernsysteme können mit den in dieser Anwendung offenbarten beispielhaften Ausführungsformen verwendet werden. Beispielsweise kann ein PID oder anderer neuronaler Netzwerkcontroller (wenn schnell genug) verwendet werden, um Änderungen zu bestimmen, die auf die Betriebsfrequenz und/oder Spannung der GPU basierend auf dem Fehler zwischen der aktuellen und vorhergesagten Leistung angewandt werden sollten.Exemplary embodiments of this disclosure are not limited to the use of a PID controller and actor-critical or Q-learning described in 4 and 5 is illustrated. Other feedback controllers and learning systems can be used with the exemplary embodiments disclosed in this application. For example, a PID or other neural network controller (if fast enough) can be used to determine changes that should be applied to the operating frequency and / or voltage of the GPU based on the error between current and predicted performance.

Wie oben beschrieben, wurden herkömmliche GPUs auf die Verwendung von reaktiven Mechanismen begrenzt, um die Leistung der GPU zu verwalten. Derartige reaktive Mechanismen lassen jedoch die internen Komponenten der GPU gegenüber elektrischen Zuverlässigkeitsproblemen anfällig (z.B. interne Bauteilschäden und/oder dass die GPU abgeschaltet wird und von den Kommunikationsbussen abfällt). Ausführungsformen dieser Offenbarung sehen proaktives Abfühlen von Anweisungen vor, um ein wahrscheinliches Lastschritt/Freigabeereignis vorherzusagen, was ermöglicht, dass das bevorstehende Lastschritt/Freigabe-Ereignis bekannt wird, bevor das Ereignis tatsächlich einige Taktzyklen später auftritt. Das Vorhersagen des Lastschritt/Freigabe-Ereignis ermöglicht, dass die Leistungseinstellungen der GPU eingestellt werden können (z.B. durch Ändern der Spannung und/oder Frequenz), bevor das Ereignis geschieht, um Spitzenleistungsszenarien zu verhindern. As described above, conventional GPUs have been limited to using reactive mechanisms to manage the performance of the GPU. Such reactive mechanisms, however, leave the internal components of the GPU vulnerable to electrical reliability problems (e.g. internal component damage and / or that the GPU is switched off and falls off the communication buses). Embodiments of this disclosure provide proactive sensing of instructions to predict a probable load step / release event, which enables the upcoming load step / release event to be known before the event actually occurs a few clock cycles later. Predicting the load step / enable event allows the GPU's power settings to be adjusted (e.g., by changing the voltage and / or frequency) before the event happens to prevent peak performance scenarios.

Das Bewegen der Spannung und/oder Frequenz auf diese Art und Weise kann elektrische Zuverlässigkeitsprobleme in kürzeren Zeitskalen als andere Vorgehensweisen verringern, jedoch ohne die Performance zu beeinträchtigen. Außerdem sieht das Lernsystem, das parallel zu dem PID-Controller 440 arbeitet, eine dynamische Einstellung von Parametern vor, die zum Bestimmen der Änderungen verwendet werden, die an der Betriebsspannung und/oder Frequenz durchgeführt werden sollten, um derartige ungewünschte Spitzenleistungsszenarien vorausschauend zu erwarten und zu verhindern.Moving the voltage and / or frequency in this manner can reduce electrical reliability problems in shorter time scales than other approaches, but without sacrificing performance. It also sees the learning system that is parallel to the PID controller 440 operates to dynamically adjust parameters that are used to determine the changes that should be made to the operating voltage and / or frequency to anticipate and prevent such undesired peak power scenarios.

GPUs, die proaktive Leistungsverwaltungssysteme gemäß Ausführungsformen umfassen, stellen eine erhöhte Zuverlässigkeit bei kürzeren Zeitskalen als andere Vorgehensweisen bereit, jedoch ohne die Performance zu beinträchtigen, und sind demgemäß in Rechenumgebungen anwendbar, die hohe Niveaus an Zuverlässigkeit erfordern. GPUs und SoCs, die ein oder mehrere GPUs gemäß Ausführungsformen umfassen, können in Rechenzentren, Serverumgebungen, Spielecomputer, Laptop-Computer und anderen Rechenumgebungen implementiert sein. Ausführungsformen können auch in Umgebungen, wie beispielsweise autonome Fahrzeuge, Roboter und dergleichen, verwendet werden. Beispielsweise können Ausführungsformen die Betriebszuverlässigkeit von autonomen Fahrzeuganwendungen verbessern, in dem sichergestellt wird, dass die GPU sogar nicht momentan von dem Kommunikationsbus aufgrund von Überstromsituationen abfällt. Ausführungsformen können auch den Leistungsverbrauch von autonomen (oder anderen) Fahrzeugen durch Implementieren einer schnelleren Leistungsverwaltungsreaktion verbessern.GPUs, which include proactive performance management systems according to embodiments, provide increased reliability on shorter timescales than other approaches, however without affecting performance, and are therefore applicable in computing environments that require high levels of reliability. GPUs and SoCs that include one or more GPUs according to embodiments may be implemented in data centers, server environments, game computers, laptop computers, and other computing environments. Embodiments can also be used in environments such as autonomous vehicles, robots, and the like. For example, embodiments may improve the operational reliability of autonomous vehicle applications by ensuring that the GPU does not even drop off the communication bus due to overcurrent situations. Embodiments can also improve the power consumption of autonomous (or other) vehicles by implementing a faster power management response.

Ausführungsformen sind jedoch nicht auf GPUs und SoC einschließlich GPUs begrenzt. Andere Ausführungsformen können On-Chip-ADC auf CPU-Chips oder andere Arten von Prozessoren bereitstellen.However, embodiments are not limited to GPUs and SoC including GPUs. Other embodiments may provide on-chip ADC on CPU chips or other types of processors.

Ausführungsformen des Gegenstands und der funktionalen Operationen, die hier beschrieben sind, können in einem der folgenden implementiert sein: digitalen elektronischen Schaltungen, konkret verkörperter Computersoftware oder Firmware, Computerhardware einschließlich der in dieser Anmeldung offenbarten Strukturen und ihrer strukturellen Äquivalente und Kombinationen davon. Derartige Ausführungsformen können als ein oder mehrere Module von Computerprogrammanweisungen, die auf einem konkreten nicht transitorischen Computerspeichermedium codiert sind, um von Datenverarbeitungsvorrichtungen (d.h. einem oder mehreren Computerprogrammen ausgeführt zu werden oder deren Betrieb zu steuern. Das Computerspeichermedium kann eine maschinenlesbare Speichervorrichtung, ein maschinenlesbares Speichersubstrat, eine Speichervorrichtung mit wahlfreiem oder seriellem Zugriff oder eine Kombination aus einem oder mehreren davon sein.Embodiments of the article and functional operations described herein can be implemented in one of the following: digital electronic circuits, specifically embodied computer software or firmware, computer hardware including the structures disclosed in this application and their structural equivalents and combinations thereof. Such embodiments may be implemented as one or more modules of computer program instructions encoded on a specific non-transitory computer storage medium to execute or control data processing devices (ie, one or more computer programs). The computer storage medium may be a machine-readable storage device, a machine-readable storage substrate, a random or serial access storage device or a combination of one or more thereof.

Jedes der oben angeführten Elemente wird durch Bezugnahme für alle Zwecke aufgenommen, als ob sie ausdrücklich aufgeführt wären.Each of the above items is incorporated by reference for all purposes, as if they were expressly listed.

Während die Erfindung in Verbindung mit dem, was gegenwärtig als die praktischsten und bevorzugtesten Ausführungsformen betrachtet wird, beschrieben wurde, sei zu verstehen, dass die Erfindung nicht auf die offenbarten Ausführungsformen zu begrenzen ist, sondern im Gegenteil bestimmt ist, verschiedenen Modifikationen und äquivalente Anordnungen abzudecken, die innerhalb des Wesens und Umfangs der beigefügten Ansprüche umfasst sind.While the invention has been described in connection with what is currently considered the most practical and preferred embodiments, it is to be understood that the invention is not to be limited to the disclosed embodiments, but on the contrary is intended to cover various modifications and equivalent arrangements which are included within the spirit and scope of the appended claims.

ZITATE ENTHALTEN IN DER BESCHREIBUNG QUOTES INCLUDE IN THE DESCRIPTION

Diese Liste der vom Anmelder aufgeführten Dokumente wurde automatisiert erzeugt und ist ausschließlich zur besseren Information des Lesers aufgenommen. Die Liste ist nicht Bestandteil der deutschen Patent- bzw. Gebrauchsmusteranmeldung. Das DPMA übernimmt keinerlei Haftung für etwaige Fehler oder Auslassungen.This list of documents listed by the applicant has been generated automatically and is only included for the better information of the reader. The list is not part of the German patent or utility model application. The DPMA assumes no liability for any errors or omissions.

Zitierte PatentliteraturPatent literature cited

  • US 16046916 [0054]US 16046916 [0054]

Zitierte Nicht-PatentliteraturNon-patent literature cited

  • Konda et al., „Actor-Critic like learning algorithms for Markov decision processes“, SIAM Journal on Control und Optimization, 38(1) :94-123 (1999) [0091]Konda et al., "Actor-Critic like learning algorithms for Markov decision processes", SIAM Journal on Control and Optimization, 38 (1): 94-123 (1999) [0091]
  • Sutton et al., Reinforcement Learning: An Introduction (MIT Press Cambridge, MA, 1995) [0091]Sutton et al., Reinforcement Learning: An Introduction (MIT Press Cambridge, MA, 1995) [0091]

Claims (25)

GPU, umfassend: Parallelprozessoren, die jeweils einen Anweisungsdecodierer umfassen, der Anweisungen vor der Ausführung decodiert und erwartete Leistungsnutzung der Anweisungsausführung signalisiert; einen Leistungscontroller, der Leistung einstellt, die den Prozessoren mindestens teilweise als Antwort auf die signalisierte erwartete Leistungsnutzung zugeführt wurde; und ein neuronales Netzwerk, das die Einstellung der Leistung anpasst, die der Controller durchführt, wobei das neuronale Netzwerk bestärkendes Lernen durchführt, um Spitzenleistungsszenarien abzuschwächen.GPU, comprising: Parallel processors, each comprising an instruction decoder that decodes instructions prior to execution and signals expected performance of instruction execution; a power controller that adjusts power that was at least partially delivered to the processors in response to the signaled expected power usage; and a neural network that adjusts the setting of the power that the controller performs, the neural network performing reinforcement learning to mitigate peak performance scenarios. GPU gemäß Anspruch 1, wobei der Anweisungsdecodierer einen Anweisungsvorausschau-Vordecodierer umfasst, der Anweisungen vordecodiert, die in der Zukunft auszuführen sind, und schätzt, wie viel Leistung verwendet werden wird, um die Anweisungen auszuführen, und die Parallelprozessoren jeweils einen zusätzliche Anweisungsdecodierer umfassen, der die Anweisungen zur Ausführung decodiert.GPU according to Claim 1 , wherein the instruction decoder includes an instruction look-ahead predecoder that predecodes instructions to be executed in the future and estimates how much power will be used to execute the instructions, and the parallel processors each include an additional instruction decoder that executes the instructions decoded. GPU gemäß Anspruch 1 oder 2, wobei der Leistungscontroller konfiguriert ist, um Leistung zu verringern, um Spitzenleistung-Überschreitung zu vermeiden.GPU according to Claim 1 or 2 wherein the power controller is configured to reduce power to avoid peak power overshoot. GPU gemäß einem der vorangehenden Ansprüche, wobei das neuronale Netzwerk die Parallelprozessoren steuert, um ihre Anweisungsausführung zu modifizieren, um Spitzenleistungsanforderungen zu verringern.A GPU according to any preceding claim, wherein the neural network controls the parallel processors to modify their instruction execution to reduce peak performance requirements. Verarbeitungssystem, umfassend: mehrere Prozessoren; und eine Leistungsverwaltung-Schaltungsanordnung, die konfiguriert ist, um: Leistung, die von den mehreren Prozessoren verwendet wird, und vorhergesagte Leistung zu vergleichen, die geschätzt wird, von den mehreren Prozessoren in der Zukunft verwendet zu werden; eine oder mehrere Steuersignale zu erzeugen, um die Betriebsleistung der mehreren Prozessoren als Antwort auf den Vergleich zu ändern; und bestärkendes Lernen durchzuführen, um die Erzeugung des einen oder mehreren Steuersignale anzupassen.Processing system comprising: multiple processors; and power management circuitry configured to: Compare performance used by the multiple processors and predicted performance estimated to be used by the multiple processors in the future; generate one or more control signals to change the performance of the plurality of processors in response to the comparison; and perform reinforcing learning to adjust the generation of the one or more control signals. Verarbeitungssystem gemäß Anspruch 5, wobei das bestärkende Lernen Actor-Critic-basiertes maschinelles Lernen oder Q-Lernen-maschinelles Lernen verwendet.Processing system according to Claim 5 where reinforcing learning uses actor-critical machine learning or Q-learning machine learning. Verarbeitungssystem gemäß Anspruch 5 oder 6, wobei die Leistungsverwaltung-Schaltungsanordnung einen Proportional-Integral-Derivative (PID)-Controller umfasst, der konfiguriert ist, um ein Differenzergebnis des Vergleichs zu empfangen und das eine oder mehrere Signale erzeugen, um die Betriebsfrequenz und/oder Spannung des Verarbeitungssystems zu ändern.Processing system according to Claim 5 or 6 wherein the power management circuitry includes a proportional integral derivative (PID) controller configured to receive a difference result of the comparison and which generate one or more signals to change the operating frequency and / or voltage of the processing system. Verarbeitungssystem gemäß Anspruch 7, wobei das bestärkendes Lernen Betriebskoeffizienten des PID-Controllers modifiziert.Processing system according to Claim 7 , the reinforcing learning modifying operating coefficients of the PID controller. Verarbeitungssystem gemäß Anspruch 7 oder 8, wobei der PID-Controller das eine oder mehrere Signale jeden Taktzyklus erzeugt und das bestärkendes Lernen Betriebskoeffizienten des PID-Controllers in Intervallen modifiziert, die einen Taktzyklus überschreiten.Processing system according to Claim 7 or 8th , wherein the PID controller generates the one or more signals every clock cycle and the reinforcing learning modifies operating coefficients of the PID controller at intervals that exceed a clock cycle. Verarbeitungssystem gemäß einem der Ansprüche 5 bis 9, wobei: jeder Prozessor konfiguriert ist, um Anweisungen vorzudecodieren, die von dem jeweiligen Prozessor empfangen werden, und ein Signal basierend auf den vordecodierten Anweisungen zu erzeugen, welches das Energieverbrauchsniveau von anhängigen Anweisungen schätzt; und die Leistungsverwaltung-Schaltungsanordnung ferner konfiguriert ist, um die Signale zu aggregieren, die das Energieverbrauchsniveau von jedem Prozessor angeben und Leistung basierend auf den aggregierten Signalen vorhersagen.Processing system according to one of the Claims 5 to 9 wherein: each processor is configured to pre-decode instructions received from the respective processor and generate a signal based on the pre-decoded instructions that estimates the energy consumption level of pending instructions; and the power management circuitry is further configured to aggregate the signals that indicate the level of power consumption of each processor and predict performance based on the aggregated signals. Verarbeitungssystem gemäß einem der Ansprüche 5 bis 10, wobei die Leistungsverwaltung-Schaltungsanordnung konfiguriert ist, um basierend auf dem einen oder mehreren erzeugten Steuersignalen die Betriebsfrequenz und Spannung des Verarbeitungssystems einzustellen.Processing system according to one of the Claims 5 to 10 wherein the power management circuitry is configured to adjust the operating frequency and voltage of the processing system based on the one or more generated control signals. Verarbeitungssystem gemäß einem der Ansprüche 5 bis 11, wobei die Leistungsverwaltung-Schaltungsanordnung konfiguriert ist, um basierend auf dem einen oder mehreren erzeugten Steuersignalen ein oder mehrere der Prozessoren zu steuern, um die Ausführung einer oder mehrerer anhängigen Anweisungen zu verzögern.Processing system according to one of the Claims 5 to 11 wherein the power management circuitry is configured to control one or more of the processors based on the one or more generated control signals to delay execution of one or more pending instructions. Verarbeitungssystem gemäß einem der Ansprüche 5 bis 12, wobei die Leistungsverwaltung-Schaltungsanordnung einen Analog-Digital-Wandler (ADC) umfasst, der konfiguriert ist, um Eingangssignale zu empfangen, die Spannungen und/oder Ströme darstellen, die dem Verarbeitungssystem zugeführt werden, und basierend auf den Eingangssignalen ein digitales Ausgangssignal zu erzeugen, das die durch das Verarbeitungssystem verwendete Leistung darstellt.Processing system according to one of the Claims 5 to 12 wherein the power management circuitry includes an analog-to-digital converter (ADC) configured to receive input signals representing voltages and / or currents supplied to the processing system and to generate a digital output signal based on the input signals representing the performance used by the processing system. Verarbeitungssystem gemäß einem der Ansprüche 5 bis 13, wobei die mehreren Prozessoren und die Leistungsverwaltung-Schaltungsanordnung auf einem gleichen Substrat angeordnet sind.Processing system according to one of the Claims 5 to 13 , the multiple processors and the power management circuitry is arranged on a same substrate. Verfahren zum dynamischen Steuern von Spannungs- und Frequenzeinstellungen für mehrere Prozessoren, die konfiguriert sind, um Anweisungen zu empfangen und ausführen, wobei das Verfahren umfasst: Messen der Leistung, die aktuell von den Prozessoren verwendet wird; Vorhersagen von Leistung der Prozessoren durch Prüfen von Anweisungen, die von den Prozessoren auszuführen sind; Bestimmen eines Fehlers zwischen der aktuellen Leistung und der vorhergesagten Leistung; Erzeugen eines oder mehrerer Signale, um die Betriebsfrequenz und/oder Spannung zu ändern, um den Fehler zu verringern; und Durchführen bestärkenden Lernens, um das Erzeugen des einen oder mehrerer Signale anzupassen.A method of dynamically controlling voltage and frequency settings for multiple processors configured to receive and execute instructions, the method comprising: Measuring the power currently used by the processors; Predicting processor performance by examining instructions to be executed by the processors; Determining an error between the current performance and the predicted performance; Generating one or more signals to change the operating frequency and / or voltage to reduce the error; and Perform reinforcing learning to adjust the generation of the one or more signals. Verfahren gemäß Anspruch 15, wobei das Erzeugen des einen oder mehrerer Signale das Verwenden eines Proportional-Integral-Derivative (PID)-Controller umfasst, um basierend auf dem Fehler das eine oder mehrere Signale zu erzeugen, um die Betriebsfrequenz und/oder Spannung zu ändern, die einem oder mehreren der Prozessoren zugeführt wird.Procedure according to Claim 15 wherein generating the one or more signals comprises using a proportional integral derivative (PID) controller to generate the one or more signals based on the error to change the operating frequency and / or voltage that is either is fed to several of the processors. Verfahren gemäß Anspruch 16, wobei der PID-Controller das eine oder mehrere Signale in Intervallen erzeugt, die den Taktzyklen entsprechen, und das bestärkendes Lernen Koeffizienten des PID-Controllers in Intervallen modifiziert, welche die Intervalle überschreiten, die den Taktzyklen entsprechen.Procedure according to Claim 16 wherein the PID controller generates the one or more signals at intervals that correspond to the clock cycles, and the reinforcing learning modifies the PID controller coefficients at intervals that exceed the intervals that correspond to the clock cycles. Verfahren gemäß Anspruch 16 oder 17, wobei das bestärkende Lernen Koeffizienten des PID-Controllers modifiziert.Procedure according to Claim 16 or 17 , whereby the reinforcing learning modifies the coefficients of the PID controller. Verfahren gemäß einem der Ansprüche 15 bis 18, ferner umfassend: Erzeugen eines Signals für jeden Prozessor, welches das Energieverbrauchsniveau von anhängigen Anweisungen darstellt, die bei einem Taktzyklus ausgeführt werden; und Bestimmen der vorhergesagten Leistung durch Aggregieren der Signale, die das Energieverbrauchsniveau von anhängigen Anweisungen für den entsprechenden Taktzyklus darstellen.Method according to one of the Claims 15 to eighteen , further comprising: generating a signal for each processor that represents the power consumption level of pending instructions executed on a clock cycle; and determine the predicted performance by aggregating the signals representing the energy consumption level of pending instructions for the corresponding clock cycle. Controller, umfassend: einen Leistungsmonitor, der konfiguriert ist, um eine Spannung und/oder einen Strom zu überwachen, die/der mehreren Prozessoren zugeführt wird; eine Schaltungsanordnung, die konfiguriert ist, um von den mehreren Prozessoren Signale zu empfangen, welche den geschätzten Energieverbrauch zum Ausführen von Anweisungen in der Zukunft darstellen, und um basierend auf Aggregation der empfangenen Signale Leistung vorherzusagen, die von den Prozessoren in der Zukunft zum Ausführen der Anweisungen verwendet werden wird; und einen selbst-lernenden und selbst-einstellenden Controller, der konfiguriert ist, um die Leistung zu steuern, die den Prozessoren als Antwort auf die überwachte Spannung und/oder Strom und die vorhergesagte Leistung zuzuführen ist.Controller comprising: a performance monitor configured to monitor a voltage and / or a current applied to multiple processors; circuitry configured to receive signals from the plurality of processors representing the estimated power consumption to execute instructions in the future and to predict performance based on aggregation of the received signals to be performed by the processors in the future to execute the instructions Instructions will be used; and a self-learning and self-adjusting controller configured to control the power to be delivered to the processors in response to the monitored voltage and / or current and the predicted power. Controller gemäß Anspruch 20, wobei der selbst-lernende und selbst-einstellende Controller umfasst: einen Proportional-Integral-Derivatve (PID)- Controller, der konfiguriert ist, um Leistung zu bestimmen, die den Prozessoren basierend auf Koeffizienten zuzuführen ist, und mindestens ein neuronales Netzwerk, das konfiguriert ist, um bestärkendes maschinelles Lernen durchzuführen, um die Koeffizienten zu modifizieren.Controller according to Claim 20 , wherein the self-learning and self-tuning controller comprises: a proportional-integral-derivative (PID) controller configured to determine power to be delivered to the processors based on coefficients, and at least one neural network that is configured to perform reinforcing machine learning to modify the coefficients. Controller gemäß Anspruch 20 oder 21, wobei der selbst-lernende und selbst-einstellende Controller auf einem gleichen Substrat wie die Prozessoren angeordnet ist.Controller according to Claim 20 or 21 , wherein the self-learning and self-adjusting controller is arranged on the same substrate as the processors. Controller gemäß einem der Ansprüche 20 bis 22, wobei der selbst-lernende und selbst-einstellende Controller ferner konfiguriert ist, um basierend auf der bestimmten Leistung, die den Prozessoren zuzuführen ist, ein Signal an einen oder mehrere der Prozessoren zu senden, um die Ausführung von mindestens einer Anweisung zu verzögern.Controller according to one of the Claims 20 to 22 , wherein the self-learning and self-adjusting controller is further configured to send a signal to one or more of the processors based on the particular power to be delivered to the processors to delay execution of at least one instruction. Controller gemäß einem der Ansprüche 20 bis 23, wobei der selbst-lernende und selbst-einstellende Controller umfasst: einen Proportional-Integral-Derivative (PID)-Controller, der konfiguriert ist, um Leistung zu bestimmen, die den Prozessoren basierend auf Koeffizienten zuzuführen ist, und mindestens ein neuronales Netzwerk, das konfiguriert ist, um Actor-Critic bestärkendes maschinelles Lernen durchzuführen, um die Koeffizienten basierend auf einem Unterschied zwischen der den mehreren Prozessoren zugeführten Energie und dem zum Ausführen von Anweisungen in der Zukunft geschätzten Energieverbrauch zu modifizieren.Controller according to one of the Claims 20 to 23 , wherein the self-learning and self-tuning controller comprises: a proportional-integral-derivative (PID) controller configured to determine performance to be delivered to the processors based on coefficients, and at least one neural network that is configured to perform actor-critical reinforcement machine learning to modify the coefficients based on a difference between the power applied to the multiple processors and the power consumption estimated to execute instructions in the future. Controller gemäß einem der Ansprüche 20 bis 24, wobei der selbst-lernende und selbst-einstellende Controller umfasst: mehrere Proportional-Integral-Derivative (PID)-Controller, wobei jeder PID-Controller Steuersignale basierend auf einer unterschiedlichen Metrik erzeugt, die den Betrieb der mehreren Prozessoren beeinflusst; und mehrere neuronale Netzwerke, wobei jedes neuronale Netzwerk konfiguriert ist, um bestärkendes maschinelles Lernen durchzuführen, um Koeffizienten eines jeweiligen PID-Controllers zu modifizieren, wobei die den Prozessoren zugeführte Leistung basierend auf einer Summe der Ausgaben der PID-Controller gesteuert wird.Controller according to one of the Claims 20 to 24 , wherein the self-learning and self-tuning controller comprises: a plurality of proportional-integral-derivative (PID) controllers, each PID controller generating control signals based on a different metric that affects the operation of the multiple processors; and multiple neural networks, each neural network configured to perform reinforcing machine learning to modify coefficients of a respective PID controller, wherein the power supplied to the processors is controlled based on a sum of the outputs of the PID controllers.
DE102019120689.8A 2018-08-09 2019-07-31 TECHNIQUES FOR THE EFFICIENT OPERATION OF A PROCESSING SYSTEM BASED ON THE ENERGY CHARACTERISTICS OF INSTRUCTIONS AND MACHINE LEARNING Pending DE102019120689A1 (en)

Applications Claiming Priority (4)

Application Number Priority Date Filing Date Title
US201862716513P 2018-08-09 2018-08-09
US62/716,513 2018-08-09
US16/514,078 US11379708B2 (en) 2018-08-09 2019-07-17 Techniques for efficiently operating a processing system based on energy characteristics of instructions and machine learning
US16/514,078 2019-07-17

Publications (1)

Publication Number Publication Date
DE102019120689A1 true DE102019120689A1 (en) 2020-02-13

Family

ID=69185965

Family Applications (1)

Application Number Title Priority Date Filing Date
DE102019120689.8A Pending DE102019120689A1 (en) 2018-08-09 2019-07-31 TECHNIQUES FOR THE EFFICIENT OPERATION OF A PROCESSING SYSTEM BASED ON THE ENERGY CHARACTERISTICS OF INSTRUCTIONS AND MACHINE LEARNING

Country Status (1)

Country Link
DE (1) DE102019120689A1 (en)

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
DE102020113088A1 (en) 2020-05-14 2021-11-18 Universität Stuttgart Körperschaft des öffentlichen Rechts Method for analog multiplication and / or calculation of a scalar product with a circuit arrangement, in particular for artificial neural networks
CN113671962A (en) * 2021-08-20 2021-11-19 湘潭大学 Transverse control method of unmanned articulated sweeper

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
DE102020113088A1 (en) 2020-05-14 2021-11-18 Universität Stuttgart Körperschaft des öffentlichen Rechts Method for analog multiplication and / or calculation of a scalar product with a circuit arrangement, in particular for artificial neural networks
CN113671962A (en) * 2021-08-20 2021-11-19 湘潭大学 Transverse control method of unmanned articulated sweeper
CN113671962B (en) * 2021-08-20 2023-11-21 湘潭大学 Transverse control method of unmanned articulated sweeper

Similar Documents

Publication Publication Date Title
US11379708B2 (en) Techniques for efficiently operating a processing system based on energy characteristics of instructions and machine learning
Lym et al. Prunetrain: fast neural network training by dynamic sparse model reconfiguration
Louppe et al. Adversarial variational optimization of non-differentiable simulators
Rao Decision making under uncertainty: a neural model based on partially observable markov decision processes
DE102018202497A1 (en) Technologies for optimized machine learning training
US20190243691A1 (en) Predictive model-based intelligent system for automatically scaling and managing provisioned computing resources
DE102018129975A1 (en) Coding of lidar signals to avoid interference
DE102019120689A1 (en) TECHNIQUES FOR THE EFFICIENT OPERATION OF A PROCESSING SYSTEM BASED ON THE ENERGY CHARACTERISTICS OF INSTRUCTIONS AND MACHINE LEARNING
US20220067526A1 (en) Hardware accelerator extension to transfer learning - extending/finishing training to the edge
Guo et al. A fully-pipelined expectation-maximization engine for Gaussian mixture models
Krishnapriya et al. Pre-trained deep learning models for brain MRI image classification
Khalfaoui-Hassani et al. Dilated convolution with learnable spacings
Shen et al. A correspondence between normalization strategies in artificial and biological neural networks
CN114611692A (en) Model training method, electronic device, and storage medium
Sengupta et al. Framework for knowledge driven optimisation based data encoding for brain data modelling using spiking neural network architecture
Pontes-Filho et al. A deep learning-based tool for automatic brain extraction from functional magnetic resonance images of rodents
Prabhakar et al. Mechanical intelligence for learning embodied sensor-object relationships
DE102022119615A1 (en) METHODS, SYSTEMS, DEVICES AND ARTICLES OF MANUFACTURE FOR CAMERA IMAGE CURRENT SELECTION FOR CONSUMER ELECTRONIC EQUIPMENT
Theobald et al. A Bayesian neural network based on dropout regulation
DE102023101265A1 (en) Object detection in image stream processing using optical flow with dynamic regions of interest
Fujimori et al. Modality-specific learning rate control for multimodal classification
Wu et al. Learning compact DNN models for behavior prediction from neural activity of calcium imaging
Lotfi Brain-inspired emotional learning for image classification
Flet-Berliac et al. Only relevant information matters: Filtering out noisy samples to boost rl
Agarwal et al. Reinforcement Explanation Learning

Legal Events

Date Code Title Description
R012 Request for examination validly filed