-
HINTERGRUND
-
Das
Verringern des Energie- und Leistungsverbrauches von Prozessoren
wird in vielen Situationen zunehmend wichtig. Zum Beispiel können derartige
Leistungs- und Energieeinsparungen die Gesamtkosten für den Verbraucher
herabsetzen. Zusätzlich
können
derartige Leistungs- und Energieverringerungen die Lebensdauer der
Batterie bei mobilen Produkten erhöhen.
-
Prozessoren
können
entsprechend verschiedenen Zuständen
im aktiven Modus arbeiten. Jeder dieser Zustände kann einen bestimmten Grad
des Leistungsverhaltens (z. B. die Geschwindigkeit) zur Verfügung stellen.
Für diese
Zustände
jedoch nimmt der Energieverbrauch mit dem Leistungsverhalten des
Prozessors zu. Zusätzlich
können
Prozessoren in einem Schlafmodus arbeiten. In diesem Modus können eine
oder mehrere Komponenten abgeschaltet werden, um den Energieverbrauch
zu senken.
-
Das
Leistungsverhalten des Prozessors ist oftmals durch externe Geräte oder
Komponenten so wie Speicher oder Eingabe/Ausgabe (I/O – Input/Output)-Baugruppen
begrenzt. Wenn zum Beispiel auf ein externes Gerät wartet, kann er entweder
in den Schlafmodus gehen oder aktiv bleiben. Genauer kann, wenn
eine erwartete Verzögerung
lang ist (beispielsweise, wenn er auf eine Antwort von einem Festplattenlaufwerk
wartet), der Prozessor in den Schlafmodus eintreten. Für kurze
erwartete Verzögerungen
jedoch wird der Prozessor typischerweise in einem aktiven Modus
verbleiben, während
er auf eine Antwort wartet.
-
In
vielen betrieblichen Szenarios werden die meisten solcher Wartezeiten
als kurz betrachtet. Daher ist es während des Betriebes für den Computer üblich, das
er den Großteil
seiner Wartezeit in dem aktiven Modus verbringt. Während solcher
Zeiträume arbeiten
die Prozessoren typischerweise bezüglich der Energie nicht effizient.
-
KURZBESCHREIBUNG DER ZEICHNUNGEN
-
1 veranschaulicht
eine Ausführungsform
einer ersten Vorrichtung.
-
2 veranschaulicht
eine Ausführungsform
einer zweiten Vorrichtung.
-
3 veranschaulicht
eine Ausführungsform
eines beispielhaften logischen Flusses.
-
4 veranschaulicht
eine Ausführungsform
einer grafischen Darstellung des Leistungsverhaltens.
-
5 veranschaulicht
eine Ausführungsform
eines beispielhaften Systems.
-
GENAUE BESCHREIBUNG
-
Verschiedene
Ausführungsformen
stellen Techniken zur Verfügung,
die das Leistungsverhalten eines Prozessors dynamisch anpassen können. Zum Beispiel
können
derartige Techniken die Auslastung des Prozessors identifizieren
und können
das Leistungsverhalten des Prozessors (z. B. seine Geschwindigkeit)
anpassen. Derartige Anpassungen können das Ändern des Betriebszustandes
des Prozessors (z. B. seines P-Zustandes) einbeziehen. Zum Beispiel
können,
wenn erfasst wird, dass ein Prozessor speichergebunden ist oder
auf eine andere Baugruppe wartet (so wie eine Grafikkarte), Techniken
den Betrieb des Prozessors so anpassen, dass er langsamer läuft. Als
ein Ergebnis wird Energie gespart. Im Gegensatz dazu kann, wenn
erfasst wird, dass der Prozessor durch solche Beschränkungen nicht
länger
eingeschränkt
ist, der Prozessor die gesparte Energie neu einbringen, indem ein
verbessertes Leistungsverhalten (z. B. schnellerer Betrieb) durch
Arbeiten bei einer höheren
Frequenz geliefert wird. Solche Anpassungen an den Prozessorbetrieb können verschiedene
Techniken einbeziehen. Beispielhafte Techniken umfassen das Umschalten
des Taktsignals des Prozessors zwischen Ein und Aus und/oder das Ändern der
Betriebsfrequenz des Prozessors mit oder ohne Spannungsänderung.
-
Bei
Ausführungsformen
können
solche Techniken innerhalb des Prozessors implementiert werden.
Bei weiteren Ausführungsformen
jedoch können Implementierungen
externe Software und/oder externe Hardware umfassen.
-
Ausführungsformen
können
ein oder mehrere Elemente umfassen. Ein Element kann irgendeine Struktur
aufweisen, die so ausgerichtet ist, dass sie bestimmte Arbeitsschritte
ausführt.
Jedes Element kann als Hardware, Software oder irgendeine Kombination
aus diesen implementiert werden, wie es für einen gegebenen Satz an Gestaltungsparametern oder
Einschränkungen
des Leistungsverhaltens gewünscht
ist. Obwohl Ausführungsformen
mit bestimmten Elementen in bestimmten Anordnungen beispielhaft
beschrieben werden können,
können Ausführungsformen
andere Kombinationen von Elementen in alternativen Anordnungen umfassen.
-
Es
ist Wert anzumerken, dass jedweder Bezug auf ”eine Ausführungsform” bedeutet, dass ein bestimmtes
Merkmal, eine Struktur oder Eigenschaft, die in Verbindung mit der
Ausführungsform
beschrieben ist, in wenigstens einer Ausführungsform enthalten ist. Das
Auftreten des Ausdruckes ”bei
einer Ausführungsform” an verschiedenen
Stellen in der Beschreibung bezieht sich nicht notwendigerweise
immer auf dieselbe Ausführungsform.
-
1 veranschaulicht
eine beispielhafte Vorrichtung 100, die den Betrieb basierend
auf Feststellungen bezüglich
der Auslastung anpassen kann. Die Vorrichtung 100 kann
verschiedene Elemente umfassen. Zum Beispiel zeigt die 1,
dass die Vorrichtung 100 einen Prozessorkern 102,
eine Steuereinheit 104 und eine externe Schnittstelle 106 umfassen
kann. Außerdem
kann die Vorrichtung 100 einen Temperatursensor 116 umfassen.
Die Elemente der Vorrichtung 100 können innerhalb eines Prozessors
implementiert werden. Beispielhafte Prozessoren umfassen (sind jedoch
nicht beschränkt
auf) zentrale Verarbeitungseinheiten (CPUs – Central Processing Units),
Grafikprozessoren und Digitalsignalprozessoren (DSPs – Digital
Signal Processors).
-
Der
Prozessorkern 102 führt
Arbeitsschritte aus, die bestimmte Ausgaben für einen gegebenen Satz an Eingaben
erzeugen. Solche Eingaben können
Befehle sein, die mit einem Befehlssatz verknüpft sind. Bei Ausführungsformen
kann der Prozessorkern 104 mit einer Vielzahl von logischen
Gattern implementiert werden und kann für universelle Funktionen gestaltet
sein.
-
Der
Prozessorkern 102 kann in verschiedenen Zuständen im
aktiven Modus arbeiten. Zum Beispiel kann die Vorrichtung 100 in
unterschiedlichen Zuständen
des Leistungsverhaltens arbeiten (auch als ”P”-Zustände bezeichnet). Jeder dieser
P-Zustände
hat eine entsprechende Betriebsfrequenz und einen Spannungspegel.
Insbesondere bieten P-Zustände
mit höheren
Spannungen und Frequenzen ein besseres Leistungsverhalten (z. B.
höhere
Geschwindigkeit). Jedoch, wie oben angegeben, erfordern solche Verbesserungen
im Leistungsverhalten einen größeren Energieverbrauch.
-
Die
externe Schnittstelle 106 kann für den Austausch von Information
mit verschiedenen externen Baugruppen/Geräten durch eine oder mehrere Verbindungen
sorgen. Solche Baugruppen/Geräte können Speicher
(z. B. einen dynamischen Speicher mit wahlfreiem Zugriff (DRAM – Dynamic
Random Access Memory)), Grafikchips, I/O-Baugruppen und/oder Plattenlaufwerke
umfassen. Beispielhafte Verbindungen umfassen eine oder mehrere
Busschnittstellen und/oder eine oder mehrere Punkt-zu-Punkt-Schnittstellen.
Die Ausführungsformen
sind jedoch nicht auf diese Beispiele beschränkt. Dementsprechend kann die
externe Schnittstelle 106 Steuerlogik und Elektronik (z.
B. Transceiver) umfassen, um einen derartigen Austausch von Information
zu vereinfachen.
-
Die
externe Schnittstelle 106 kann eine Benutzerpräferenzschnittstelle 128 umfassen.
Die Benutzerpräferenzschnittstelle 128 kann
als eine Schnittstelle arbeiten, um Information für einen
Benutzer der Bediener anzuzeigen, indem verschiedene Elemente einer
Grafikbenutzerschnittstelle (GUI – Graphic User Interface) verwendet
werden. Die Benutzerpräferenzschnittstelle 128 kann
auch so arbeiten, dass sie Information von einem Benutzer empfängt, so
wie Benutzerbefehle, Benutzerpräferenzen und
so weiter. Insbesondere kann die Benutzerpräferenzschnittstelle 128 Steueranweisungen
und Präferenzinformation
für das
Modul 110, das die Auslastung feststellt, für ein Verwaltungsmodul 112 und
ein Strategiemodul 114, neben anderen Elementen der Vorrichtung 100,
empfangen.
-
Bei
Ausführungsformen
kann der Prozessorkern 102 Daten im Hinblick auf bestimmte
Arbeitsschritte erzeugen. Diese Daten können von einem oder mehreren
Zählern
gesammelt werden. Zum Beispiel zeigt die 1 den Prozessorkern 102 mit
einem Ereigniszähler 108,
der das Auftreten von bestimmten Ereignissen zählt. Derartige Ereignisse können solche
umfassen, bei denen der Prozessorkern 102 auf Antwort von
externen Geräten/Baugruppen
wartet. Beispiele solcher Ereignisse umfassen Kommunikation mit
externen Geräten/Baugruppen, so
wie Kommunikation mit externem Speicher, I/O-Kommunikation, Kommunikation
mit Grafikprozessoren/karten und/oder Kommunikation mit Festplattenlaufwerken.
Die Ausführungsformen
sind jedoch nicht auf diese Beispiele beschränkt.
-
Zum
Beispiel können
die Zähler 108 einen oder
mehrere bestimmte Typen von Speicherzugriffen zählen. Beispiele für solche
Zugriffe umfassen (sind jedoch nicht beschränkt auf) lang dauernde Zugriffe,
Zugriffe, die nicht spekulativ sind und/oder Zugriffe, die die Ausführung anderer
Befehle blockieren.
-
Der
Ereigniszähler 108 umfasst
Steuerlogik, um das Auftreten solcher Ereignisse zu identifizieren. Diese
Steuerlogik kann in irgendeiner Kombination aus Hardware, Software
und/oder Firmware implementiert sein. Die Identifikation von Ereignissen
kann basierend auf dem Vorhandensein entsprechender Schnittstellen
(z. B. Bus)-Signale und/oder Befehle geschehen. Auch kann die Identifikation
von Ereignissen aus der Ausführung
von Softwarebefehlen, die mit dem Zugriff auf eine externe Baugruppe/ein externes
Gerät verknüpft sind,
ebenso wie durch das Vorhandensein von tätigen Schleifen, die auf Daten warten,
geschehen. Die Ausführungsformen
sind jedoch nicht auf diese Beispiele beschränkt.
-
Genauer
kann der Ereigniszähler 108 eine Strichliste
solcher Ereignisse erzeugen, die in einem vorangegangenen (z. B.
einem unmittelbar vorangegangenen) Zeitintervall aufgetreten sind.
Somit sammelt der Ereigniszähler 108 Strichlisten
für Ereignisse,
die in einem verschieblichen Zeitfenster geschehen. Verschiedene
Dauern für
das Zeitintervall können
verwendet werden. Eine beispielhafte Dauer ist 1 Millisekunden.
Wie in der 1 gezeigt ist, wird diese Strichliste
an die Steuereinheit 104 als ein Zählwert 120 zur Verfügung gestellt.
Bei Ausführungsformen
kann der Zählwert 120 an
die Steuereinheit 104 durch parallele (z. B. 16 Bit) Signalleitungen geliefert
werden. Jedoch können
andere Techniken als Alternative benutzt werden.
-
Die
Steuereinheit 104 erstellt Leistungskennlinien für den Prozessorkern 102.
Diese erstellten Leistungskennlinien basieren auf einer angenommenen
betrieblichen Auslastung des Prozessorkerns 102. Wie in
der 1 gezeigt ist, umfasst die Steuereinheit 104 ein
Modul 110 zum Feststellen der Auslastung, ein Verwaltungsmodul 102 und
einen Zeitgeber 118.
-
Das
Modul 110 für
das Feststellen der Auslastung bestimmt eine betriebliche Auslastung
für den
Prozessorkern 102 basierend auf seinem Leistungsverhalten.
Zum Beispiel kann das Mo dul 110 für das Feststellen der Auslastung
eine Auslastungsmetrik 122 aus dem Zählwert 120 bestimmen.
-
Wie
oben beschrieben ist, gibt der Zählwert 120 eine
Anzahl von Ereignissen an, die über
ein Zeitintervall (z. B. innerhalb eines verschieblichen Zeitfensters)
aufgetreten sind. Solche Ereignisse können welche sein, bei denen
der Prozessorkern 102 auf Antwort von externen Geräten/Baugruppen
wartet. Somit zeigt der Zählwert 120 eine
niedrigere Auslastung an, wenn er größer ist, und gibt eine größere Auslastung
an, wenn er kleiner ist. Demgemäß kann das
Modul 110 für
das Feststellen der Auslastung die Auslastungsmetrik 122 derart
bestimmen, dass sie umgekehrt proportional zu dem Zählwert 120 ist.
-
Als
ein Zusatz oder als Alternative zum Ableiten der Auslastungsmetrik 122 aus
dem Zählwert 120 kann
das Modul 110 für
das Feststellen der Auslastung die Auslastungsmetrik 122 bestimmen,
indem verschiedene andere Techniken verwendet werden. Bei einer
Ausführungsform
kann das Modul 110 für das
Feststellen der Auslastung die Auslastungsmetrik 122 zum
Beispiel bestimmen, indem sie eine Versuchs- und Irrtumstechnik
verwendet. Zum Beispiel kann ein Bereich von Werten für die Auslastungsmetrik 122 implementiert
werden, bis eine gewünschte gemessene
Ausgabe erreicht worden ist. Die gemessene Ausgabe kann als eine
Geschwindigkeit des Energieverbrauchs, eine mittlere Prozessornutzung, Antwortzeiten
bei Anwendungen und so weiter sein. Bei einer Ausführungsform
kann das Modul 110 für das
Feststellen der Auslastung die Auslastungsmetrik 122 beispielsweise
bestimmen, indem verschiedene Eigenschaften einer Anwendung überwacht und
aufgezeichnet werden, während
sie zuvor von dem Prozessorkern 110 (oder einem anderen
Prozessorkern) ausgeführt
worden sind, um eine Anwendungshistorie zu erzeugen. Das Modul 110 für das Feststellen
der Auslastung kann die Anwendungshistorie und einen Voraussagealgorithmus
verwenden, um einen Wert für
die Auslastungsmetrik 122 vorauszusagen, der zum Einsatz
kommt, wenn die Anwendung tatsächlich
von dem Prozessorkern 102 ausgeführt wird. Weitere Techniken
und Heuristik für
den Prozessorkern kann verwendet werden, um die Auslastungsmetrik 122 zu
erzeugen, und die Ausführungsformen
sind in diesem Zusammenhang nicht eingeschränkt. Das Verwaltungsmodul 112 erstellt betriebliche
Kennlinien für
den Prozessorkern 102. Dies kann das Einrichten von Betriebsfrequenzen und/oder
-spannungen für
den Prozessorkern 102 umfassen. Solche betrieblichen Kennlinien
für den Prozessorkern 102 können basierend
auf der Auslastungsmetrik 122 erstellt werden. Demgemäß zeigt die 1 ein
Verwaltungs modul 112, das die Auslastungsmetrik 122 von
dem Modul 110 für
das Feststellen der Auslastung enthält.
-
Nach
dem Empfang der Auslastungsmetrik 122 kann das Verwaltungsmodul 112 entsprechende betriebliche
Kennlinien auswählen.
Basierend auf dieser Auswahl kann das Verwaltungsmodul 112 eine Anweisung 124 an
den Prozessorkern 102 senden. Diese Anweisung befiehlt
dem Prozessorkern 102, entsprechend der ausgewählten Kennlinie
zu arbeiten. Wie oben ausgeführt,
können
die Kennlinien eine bestimmte Betriebsfrequenz und/oder -spannung
(z. B. einen bestimmten P-Zustand) umfassen. Als Alternative oder
zusätzlich
können
solche Kennlinien Taktumschalteinstellungen für den Prozessorkern 102 umfassen.
-
Diese
Auswahl von betrieblichen Kennlinien für den Prozessorkern 102 kann
in Übereinstimmung mit
einem Schema stehen, das Bereiche der Auslastungsmetrik 122 auf
bestimmte betriebliche Kennlinie(n) abbildet. Wie oben beschrieben
können
solche betrieblichen Kennlinie(n) eine Betriebsfrequenz und/oder
-spannung (z. B. einen P-Zustand) umfassen. Als Alternative oder
zusätzlich
können
solche Kennlinien Taktumschalteinstellungen für den Prozessorkern 102 umfassen.
-
Dieses
Abbilden zwischen Bereichen der Auslastungsmetrik 122 und
betrieblichen Kennlinien kann durch ein Strategiemodul 114 zur
Verfügung
gestellt werden. Wie es in der 1 gezeigt
ist, kann das Strategiemodul 114 in dem Verwaltungsmodul 112 enthalten
sein. Bei Ausführungsformen
kann das Strategiemodul 114 ein Speichermedium (z. B. Speicher)
aufweisen, der diese Entsprechungen enthält. Jedoch können andere
Implementierungstechniken verwendet werden.
-
Das
Zuweisen von betrieblichen Kennlinien kann mit Nachteilen verbunden
sein. Zum Beispiel bringt das Ändern
der Betriebsfrequenz und -spannung das Sperren von PLL und das Ändern der Spannung
mit sich, das einige Zeit brauchen kann. Das häufige Ändern der betrieblichen Kennlinie
kann zu einem tatsächlichen
Verlust und nicht zu einem Gewinn führen. Ein Zeitgeber 118 kann
verwendet werden, um die Änderungen
der betrieblichen Kennlinien auf nicht mehr als vorab definierte Übergänge/Sekunde
zu begrenzen.
-
Wie
oben beschrieben kann die externe Schnittstelle 106 für die Vorrichtung 100 eine
Benutzerpräferenzschnittstelle 128 umfassen.
Die Benutzerpräferenzschnittstelle 128 erlaubt
es ei nem Benutzer oder Bediener, Präferenzen für den Algorithmus hinzuzufügen. Beispiele
solcher Strategien können
das Erhöhen
der Energieeinsparungen, das Bereitstellen verbesserten Leistungsverhaltens
und so weiter umfassen.
-
Wie
oben beschrieben kann die Vorrichtung 100 einen Temperatursensor 116 umfassen.
Dieser Sensor bestimmt eine aktuelle Betriebstemperatur der Vorrichtung 100.
Der Temperatursensor 116 kann in verschiedener Weise implementiert
werden. Zum Beispiel kann der Temperatursensor 116 eine
auf einem Thermistor basierende Schaltung umfassen.
-
Wie
in der 1 gezeigt, kann der Temperatursensor 116 dem
Verwaltungsmodul 112 ein Signal 125 zur Verfügung stellen,
das die aktuelle Betriebstemperatur angibt. Basierend auf diesem
Signal kann das Verwaltungsmodul 112 die Menge an zusätzlichem
Energieverbrauch bestimmen, die die Vorrichtung 100 handhaben
kann, ohne zu bewirken, dass eine maximale Temperatur überschritten
wird. Dieser zusätzliche
Energieverbrauch wird als ”Aussteuerungsreserve
(headroom)” bezeichnet.
-
Das
Verwaltungsmodul 112 kann diese zusätzliche Aussteuerungsreserve
in verschiedener Weise bestimmen. Bei beispielhaften Implementierungen
kann das Verwaltungsmodul 112 eine Nachschlagetabelle umfassen,
die vorab gespeicherte Werte für
die Aussteuerungsreserve für
bestimmte Temperaturwerte (oder Bereiche von Werten) enthält. Bei
weiteren beispielhaften Implementierungen kann das Verwaltungsmodul 112 die
Aussteuerungsreserve in Echtzeit berechnen.
-
Basierend
auf dieser Aussteuerungsreserve kann das Verwaltungsmodul 112 Grenzen
für betriebliche
Kennlinien festlegen, so wie eine maximale Betriebsfrequenz und/oder
-spannung (z. B. einen P-Zustand), ebenso wie Grenzen für das Umschalten des
Taktes. Demgemäß kann beim
Bestimmen solcher Kennlinien für
die Anweisung 124 das Strategiemodul 114 betriebliche
Kennlinien abändern,
die aus der Auslastungsmetrik 122 bestimmt worden sind,
so dass sie nicht bewirken, dass die bestimmte Aussteuerungsreserve überschritten
wird.
-
2 veranschaulicht
eine weitere Vorrichtung 200, die den Betrieb bestimmend
auf Feststellungen der Auslastung anpassen können. Die Vorrichtung 200 kann
verschiedene Elemente umfassen. Zum Beispiel zeigt die 2,
dass die Vorrichtung 200 mehrere Prozessorkerne 202a–b, eine
Steuereinheit 204 und eine externe Schnittstelle 206 umfassen
kann. Außerdem kann
die Vorrichtung 100 einen Temperatursensor 216 umfassen.
Die Elemente der Vorrichtung 200 können innerhalb eines Prozessors (z.
B. einer CPU, einem Grafikprozessor, einem DSP usw.) implementiert
werden. Die Ausführungsformen jedoch
sind auf solche Implementierungen nicht beschränkt.
-
Jeder
der Prozessorkerne 202a–b führt Arbeitsschritte aus, die
für einen
gegebenen Satz von Eingaben bestimmte Ausgaben erzeugen. Solche Eingaben
können
Befehle sein, die mit einem Befehlssatz verknüpft sind. Bei Ausführungsformen kann
jeder der Prozessorkerne 202a–b mit einer Vielzahl logischer
Gatter implementiert werden und kann für universelle Funktionen gestaltet
werden. Zusätzlich
kann jeder der Prozessorkerne 202a–b in verschiedenen Zuständen im
aktiven Modus arbeiten (z. B. in unterschiedlichen P-Zuständen).
-
Die
externe Schnittstelle 206 kann für den Austausch von Information
mit verschiedenen Geräten/Baugruppen über eine
oder mehrere Verbindungen (Busschnittstelle(n) und/oder Punkt-zu-Punkt-Schnittstelle(n))
sorgen. Wie oben beschrieben können
solche Geräte/Baugruppen Speicher
(z. B. DRAM), Grafikchips, I/O-Baugruppen und/oder Plattenlaufwerke
umfassen (sind jedoch nicht darauf beschränkt). Die externe Schnittstelle 206 kann
in der Weise wie die externe Schnittstelle 106 implementiert
werden, wie es oben mit Bezug auf die 1 beschrieben
worden ist.
-
Bei
Ausführungsformen
kann jeder der Prozessorkerne 202a–b Daten im Hinblick auf bestimmte Arbeitsschritte
erzeugen. Diese Daten können
von einem oder mehreren Zählern
gesammelt werden. Zum Beispiel zeigt die 2 den Prozessorkern 202a,
der einen Ereigniszähler 208a umfasst,
und den Prozessorkern 202b, der einen Ereigniszähler 208b umfasst.
Der Ereigniszähler 208a zählt das
Auftreten bestimmter Ereignisse innerhalb des Prozessorkerns 202a.
In ähnlicher
Weise zählt
der Ereigniszähler 208b das
Auftreten bestimmter Ereignisse innerhalb des Prozessorkerns 202b.
-
Wie
es oben mit Bezug auf die 1 beschrieben
ist, können
derartige Ereignisse solche umfassen, bei denen der entsprechende
Prozessorkern 202 auf Antwort von externen Geräten/Baugruppen
wartet. Beispiele solcher Ereignisse umfassen die Kommunikation
mit externen Geräten/Baugruppen,
so wie Kommunikation mit externem Speicher, I/O-Kommunikation, Kommunikation mit Grafikprozessoren/-karten
und/oder Kommunikation mit Festplattenlaufwerken. Die Ausführungsformen
sind jedoch auf diese Beispiele nicht beschränkt.
-
Zum
Beispiel kann jeder der Zähler 208a–b einen
oder mehrere spezielle Typen von Speicherzugriffen zählen. Beispiele
solcher Zugriffe umfassen (sind jedoch nicht darauf beschränkt) Zugriffe
mit langer Dauer, Zugriffe, die nicht spekulativ sind, und/oder
Zugriffe, die das Ausführen
anderer Befehle blockieren.
-
Die
Ereigniszähler 208a–b können jeder Steuerlogik
umfassen, um das Auftreten solcher Ereignisse zu identifizieren.
Diese Steuerlogik kann in irgendeiner Kombination aus Hardware,
Software und/oder Firmware implementiert sein. Die Identifikation
von Ereignissen kann basierend auf dem Vorhandensein entsprechender
Signale und/oder Befehle auf der Schnittstelle (z. B. einem Bus)
geschehen. Auch kann die Identifizierung von Ereignissen durch die
Ausführung
von Softwarebefehl(en) geschehen, die mit einem Zugriff auf externe
Geräte/Baugruppen verknüpft sind,
ebenso wie durch das Vorhandensein tätiger Schleifen, die auf Daten
warten. Die Ausführungsformen
jedoch sind auf diese Beispiele nicht beschränkt.
-
Somit
kann jeder der Ereigniszähler 208a–b eine
Strichliste solcher Ereignisse erzeugen, die in einem vorangegangenen
(z. B. einem unmittelbar vorangegangenen) Zeitintervall geschehen
sind. Verschiedene Dauern für
das Zeitintervall können
verwendet werden. Eine beispielhafte Dauer ist 1 Millisekunde. Wie
es in der 2 gezeigt ist, liefert der Ereigniszähler 208 seine
Strichliste an die Steuereinheit 204 als einen Zählwert 220a und
der Ereigniszähler 208b liefert
seine Strichliste an die Steuereinheit 204 als einen Zählwert 220b.
Bei Ausführungsformen
können
die Zählwerte 220a–b der Steuereinheit 204 jeweils
durch parallele (z. B. mit 16 Bit) Signalleitungen zur Verfügung gestellt
werden. Jedoch können
andere Techniken als Alternative verwendet werden.
-
Die
Steuereinheit 204 erstellt Kennlinien des Leistungsverhaltens
für jeden
der Prozessorkerne 202a–b basierend auf ihrer jeweiligen
bewerteten betrieblichen Auslastung. Wie es in der 2 gezeigt ist,
umfasst die Steuereinheit 204 Module 210a–b für das Feststellen
der Auslastung und ein Verwaltungsmodul 212.
-
Die
Module 210a–b
für das
Feststellen der Auslastung bestimmen jedes eine betriebliche Auslastung
für einen
entsprechenden Prozessorkern. Genauer bestimmt das Modul 210a für das Feststellen
der Auslastung eine betriebliche Auslastung für den Prozessorkern 202a und
das Modul 210b für
das Feststellen der Auslastung bestimmt eine betriebliche Auslastung
für den
Prozessorkern 202b. Jede dieser Auslastungen kann basierend
auf dem Leistungsverhalten des entsprechenden Prozessorkerns bestimmt
werden.
-
Zum
Beispiel kann das Modul 210a für das Feststellen der Auslastung
eine Auslastungsmetrik 202a aus dem Zählwert 220a bestimmen
und das Modul 210b für
das Feststellen der Auslastung kann eine Auslastungsmetrik 222b aus
dem Zählwert 220b bestimmen.
Somit können
in der Weise, die oben mit Bezug auf die 1 beschrieben
ist, die Module 210a–b
zum Feststellen der Auslastung die Auslastungsmetriken 222a und 222b derart
bestimmen, dass sie umgekehrt proportional zu den Zählwerten 220a bzw. 220b sind.
-
Das
Verwaltungsmodul 212 erstellt betriebliche Kennlinien der
Prozessorkerne 202a–b.
Dieses kann das Erstellen von Betriebsfrequenzen und/oder -spannungen
(z. B. P-Zuständen)
für die
Prozessorkerne 202a–b
aufweisen. Als Alternative oder zusätzlich können solche Kennlinien Taktumschalteinstellungen
für die
Prozessorkerne 202 umfassen. Derartige betriebliche Kennlinien
der Prozessorkerne 202a–b können basierend auf den Auslastungsmetriken 222a–b erstellt
werden. Demgemäß zeigt
die 2, dass das Verwaltungsmodul 212 die
Auslastungsmetrik 222a–b
von den Modulen 210a–b
für das Feststellen
der Auslastung erhält.
-
Nach
dem Empfang dieser Auslastungsmetriken kann das Verwaltungsmodul 212 entsprechende
betriebliche Kennlinien für
jeden der Prozessorkerne 202a–b auswählen. Zum Beispiel kann das Verwaltungsmodul 212 eine
Anweisung 224a an den Prozessorkern 202a und eine
Anweisung 224b an den Prozessorkern 202b senden.
Diese Anweisungen befehlen den Prozessorkernen 202a–b, entsprechenden
den betrieblichen Kennlinien zu arbeiten, die für jeden von ihnen ausgewählt worden
sind.
-
Wie
es oben mit Bezug auf die 1 beschrieben
ist, kann die Auswahl der betrieblichen Kennlinien für die Prozessorkerne 202a–b entsprechend
einem Schema sein, das Bereiche der Auslastungsmetrik 222a–b auf (eine)
bestimmte betriebliche Kennlinie(n) abbildet. Dieses Abbilden kann
durch ein Strategiemodul 214 zur Verfügung gestellt werden. Wie in 2 gezeigt,
kann das Strategiemodul 214 in dem Verwaltungsmodul 212 enthalten
sein. Auch kann das Strategiemodul 214 in der Weise implementiert
werden, wie das Strategiemodul 114, wie es oben mit Bezug
auf die 1 beschrieben ist.
-
Als
Alternative oder zusätzlich
kann das Verwaltungsmodul 212 eine Koordination von betrieblichen
Kennlinien für
die Prozessorkerne 202a und 202b durchführen. Ein
Beispiel für
die Koordination kann das Auswählen
einer einzigen Frequenz und Spannung für beide Kerne 202a und 202b sein.
Weiter kann das Verwaltungsmodul 212 verschiedene Budget-Zuweisungen durchführen. Derartige
Techniken für
die Budget-Zuweisung können
das proportionale Zuweisen von Betriebsbedingungen zu jedem der
Prozessorkerne 202a und 202b basierend auf den
entsprechenden Auslastungsmetriken 222a und 222b umfassen.
Jedoch können
weitere Techniken verwendet werden. Somit können die Ausführungsformen
vorteilhaft die Energiekapazität
unter den verschiedenen Komponenten ausgleichen.
-
Wie
oben beschrieben kann die Vorrichtung 200 einen Temperatursensor 216 umfassen.
Dieser Sensor bestimmt eine laufende Betriebstemperatur der Vorrichtung 200.
Der Temperatursensor 216 kann in verschiedener Weise implementiert
werden. Zum Beispiel kann der Temperatursensor 216 eine
Thermistor-basierte Schaltung umfassen.
-
Wie
in der 2 gezeigt, kann der Temperatursensor 216 das
Verwaltungsmodul 212 mit einem Signal 225 versorgen,
das die gegenwärtige
Betriebstemperatur angibt. Basierend auf diesem Signal kann das
Verwaltungsmodul 212 die Menge an zusätzlichem Energieverbrauch bestimmen,
die die Vorrichtung 200 handhaben kann, ohne dass bewirkt wird,
dass eine maximale Temperatur überschritten wird.
Dieser zusätzliche
Energieverbrauch wird als „Aussteuerungsreserve” bezeichnet.
Das Verwaltungsmodul 212 kann diese zusätzliche Aussteuerungsreserve
in verschiedener Weise bestimmen. Bei beispielhaften Implementierungen
kann das Verwaltungsmodul 212 eine Nachschlagetabelle enthalten,
die vorab gespeicherte Werte für
die Aussteuerungsreserve für
bestimmte Temperaturwerte (oder Bereiche von Werten) enthält.
-
Basierend
auf dieser Aussteuerungsreserve kann das Verwaltungsmodul 212 Grenzen
für betriebliche
Kennlinien(n) für
die Prozessorkerne 202a–b festlegen, so wie eine maximale
Betriebsfrequenz und/oder -spannung (z. B. einen P-Zustand). Als
Alternative oder zusätzlich
können
Grenzen für das
Taktumschalten für
die Prozessorkerne 202a–b festgelegt werden. Demgemäß kann beim
Festlegen solcher Kennlinie(n) für
die Anweisungen 224a–b
das Stra tegiemodul 214 betriebliche Kennlinie(n) modifizieren,
die aus Auslastungsmetriken 222a–b bestimmt worden sind, so
dass sie nicht bewirken, dass die festgestellte Aussteuerungsreserve überschritten wird.
-
Im
allgemeinen Betrieb identifizieren die Ausführungsformen der 1 und 2 das
Auftreten eines nicht effizienten Prozessorbetriebes von externen
Beschränkungen
(z. B. Warten auf externe Geräte/Baugruppe(n)).
Wenn daher ein derartiges Auftreten identifiziert wird, können betriebliche
Kennlinien ausgewählt
werden, die für
einen geringen Energieverbrauch (und weniger Leistung) sorgen. Solche
Kennlinien können
einen Zustand im aktiven Modus (z. B. einen niedrigeren P-Zustand)
umfassen. Als Alternative oder zusätzlich können derartige Kennlinien Taktumschaltkennlinien
für den
Kern 102 und/oder die Kerne 202a–b umfassen.
Obwohl weniger Leistungskapazität
zur Verfügung
gestellt wird, verschlechtern die ausgewählten Kennlinien das tatsächliche
Leistungsverhalten nicht. Dies rührt
daher, da zu solchen Zeiten zusätzliche
Leistungsmöglichkeiten
nicht benötigt
werden.
-
Im
Gegensatz dazu, wenn das Auftreten solcher nicht effizienter Arbeitsschritte
abnimmt, können die
betrieblichen Kennlinien so ausgewählt werden, dass sie einen
höheren
Energieverbrauch (und bessere Leistung) verursachen. Solche Kennlinien
können
einen Zustand im aktiven Modus (z. B. einen höheren P-Zustand) umfassen.
Als Alternative oder zusätzlich
können
derartige Kennlinien Taktumschaltkennlinien für den Kern 102 und/oder
die Kerne 202a–b
umfassen. Somit kann durch solche Techniken der Energieverbrauch
vorteilhaft gesenkt werden.
-
Darüber hinaus
können
Ausführungsformen die
verfügbare
Aussteuerungsreserve bestimmen. Solche Feststellungen können von
Temperatursensoren herrühren.
Demgemäß können betriebliche Parameter
basierend auf der Auslastung ausgewählt werden und auch, damit
die verfügbare
Aussteuerungsreserve nicht überschritten
wird.
-
Die
Merkmale der 1 und 2 können durch
irgendeine Kombination aus Hardware, Software und/oder Firmware
implementiert werden. Darüber
hinaus, obwohl die 1 und 2 Prozessorkerne
zeigen, die jeder einen einzelnen Ereigniszähler haben, können Prozessorkerne
mehrere Ereigniszähler
umfassen. Bei solchen Implementierungen können mehrere Zähler das
Auftreten unterschiedlicher Typen von Ereignissen zählen. Somit
können die
Ausführungsformen
Auslastungsmetriken basierend auf mehreren Zählwerten bestimmen.
-
Ausführungsformen
können
weiter mit Bezug auf die folgenden Figuren und die begleitenden Beispiele
beschrieben werden. Einige der Figuren können einen logischen Fluss
umfassen. Obwohl derartige Figuren, wie sie hierin dargestellt sind,
einen bestimmten logischen Fluss umfassen können, kann verstanden werden,
dass der logische Fluss lediglich ein Beispiel dafür zur Verfügung stellt,
wie die allgemeine Funktionalität,
wie sie hierin beschrieben ist, implementiert werden kann. Weiter
muss der gegebene logische Fluss nicht notwendigerweise in der dargestellten
Reihenfolge ausgeführt
werden, wenn dies nicht anders angegeben ist. Zusätzlich kann
der gegebene logische Fluss durch ein Hardwareelement, ein Softwareelement,
das von einem Prozessor ausgeführt
wird, oder irgendeiner Kombination aus diesen implementiert werden.
Die Ausführungsformen
sind in diesem Zusammenhang nicht beschränkt.
-
3 ist
ein Schaubild eines beispielhaften logischen Flusses 300,
der die Bestimmung der betrieblichen Kennlinien basierend auf der
Auslastung umfasst. Obwohl dieses Diagramm eine bestimmte Abfolge
zeigt, können
andere Abfolgen eingesetzt werden. Auch können die dargestellten Arbeitsschritte
in verschiedenen parallelen und/oder sequentiellen Kombinationen
ausgeführt
werden.
-
Wie
es in der 3 gezeigt ist, umfasst der logische
Fluss 300 einen Block 302, bei dem Ereignisdaten
im Hinblick auf eine oder mehrere Prozessorkomponenten (z. B. einen
oder mehrere Prozessorkerne) erzeugt werden. Zum Beispiel kann dieses für jede Prozessorkomponente
das Erfassen einer Anzahl von Ereignisauftritten umfassen, bei denen die
Prozessorkomponente auf eine Antwort von einem Gerät/einer
Baugruppe wartet.
-
In
einem Block 304 wird/werden die Auslastungsmetrik(en) für die Prozessorkomponente(n)
aus den Ereignisdaten bestimmt. Mit Bezug auf 1 kann
dies das Erzeugen der Auslastungsmetrik 122 durch das Modul 110 für das Feststellen
der Auslastung umfassen. Auch kann dies in dem Kontext der 2 das
Erzeugen von Auslastungsmetriken 222a und 222b durch
die Module 210a bzw. 210b für das Feststellen der Auslastung
umfassen.
-
Basierend
auf der/den Auslastungsmetrik(en) werden für jede Prozessorkomponente
in einem Block 306 betriebliche Kennlinien ausgewählt. Wie
es oben mit Bezug auf die 1 und 2 beschrieben
ist, können
solche Kennlinien eine Betriebsfrequenz und/oder Spannung (z. B. einen
P-Zustand) für
jede der einen oder der mehreren Prozessorkomponenten umfassen.
Als Alternative oder zusätzlich
können
derartige Kennlinien Taktumschalteinstellungen für jede der einen oder der mehreren Prozessorkomponenten
umfassen. Durch derartige Auswahl(en) kann die eine oder können die
mehreren Prozessorkomponenten in einem Block 308 angewiesen
werden, die betrieblichen Kennlinien zu nutzen.
-
4 ist
eine grafische Darstellung 400, die Auftragungen des Leistungsverhaltens
(z. B. Geschwindigkeit) als eine Funktion der Betriebsfrequenz umfasst.
Diese Auftragungen sind zum Zwecke der Veranschaulichung und nicht
als Beschränkung
angegeben. Zum Beispiel umfasst die grafische Darstellung 400 eine
Auftragung 402, die ein ideales Leistungsprofil zeigt,
bei der das Leistungsverhalten eines Prozessors sich linear mit
seiner Betriebsfrequenz verbessert (und somit sein Energieverbrauch steigt).
In ähnlicher
Weise zeigt eine Auftragung 404 ein Profil, bei dem sich
wesentliche Verbesserungen im Leistungsverhalten des Prozessors
zeigen, wenn die Betriebsfrequenz erhöht wird.
-
Im
Gegensatz dazu zeigt eine Auftragung 406 ein Leistungsprofil
für einen
Prozessor, der durch externe Geräte/Baugruppen
eingeschränkt
ist. Wie hierin beschrieben ist, kann dies umfassen, dass eine beträchtliche
Anzahl an Ereignissen bewirkt, dass der Prozessor auf Antwort von
den externen Geräten/Baugruppen
wartet. Somit liefern bei der Auftragung 406 Erhöhungen der
Frequenz minimale (wenn überhaupt)
Verbesserung beim Leistungsverhalten. Somit ist es bei diesem Leistungsprofil
im Allgemeinen nicht wünschenswert,
die Frequenz zu erhöhen. Dies
ist der Fall, da wesentlicher zusätzlicher Energieverbrauch erforderlich
ist, um kleine Verbesserungen im Leistungsverhalten zu erreichen.
-
5 ist
ein Schaubild einer beispielhaften Ausführungsform eines Systems. Insbesondere
ist die 5 ein Schaubild, das ein System 500 zeigt, welches
verschiedene Elemente umfassen kann. Zum Beispiel zeigt die 5,
dass das System 500 einen Prozessor 502, einen
Chipsatz 504, eine Eingabe/Ausgabe (I/O – Input/Output)-Baugruppe 506, einen
Speicher mit wahlfreiem Zugriff (RAM – Random Access Memory) (so
wie einen dynamischen RAM (DRAM)) 508 und einen Nur-Lese-Speicher (ROM – Read Only
Memory) 510 umfassen. Diese Elemente können in Hardware, Software,
Firmware oder irgendeiner Kombination aus diesen implementiert werden.
Die Ausführungsformen
sind jedoch nicht auf diese Elemente beschränkt.
-
Wie
es in der 5 gezeigt ist, sind die I/O-Baugruppe 506,
der RAM 508 und der ROM 510 über den Chipsatz 504 an
den Prozessor 502 gekoppelt. Der Chipsatz 504 kann
an den Prozessor 502 mit einem Bus 512 gekoppelt
sein. Demgemäß kann der
Bus 512 mehrere Leitungen umfassen.
-
Der
Prozessor 502 kann eine zentrale Verarbeitungseinheit sein,
die einen oder mehrere Kerne aufweist. Demgemäß kann der Prozessor 502 in
verschiedene Betriebszustände
eintreten, so wie in einen oder in mehrere P-Zustände im aktiven
Modus. Somit kann der Prozessor 502 Merkmale umfassen, die
oben mit Bezug auf die 1–3 beschrieben sind.
Zum Beispiel kann der Prozessor 502 die Elemente der Vorrichtung 100 und/oder
die Elemente der Vorrichtung 200 umfassen.
-
Daher
können
bei den Ausführungsformen betriebliche
Kennlinien für
den Prozessor 504 (z. B. ein P-Zustand oder mehrere P-Zustände) basierend auf
Ereignissen erstellt werden, bei denen er auf Antworten von externen
Geräten/Baugruppen
wartet. Beispiele solcher externen Geräte/Baugruppen umfassen (sind
jedoch nicht beschränkt
auf) den Chipsatz 504, die I/O-Baugruppe 506, den RAM 508 und den
ROM 510.
-
Zahlreiche
bestimmte Einzelheiten sind hierin aufgeführt worden, um für ein gründliches
Verständnis
der Ausführungsformen
zu sorgen. Es wird jedoch von den Fachleuten verstanden werden,
dass die Ausführungsformen
ohne diese bestimmten Einzelheiten in die Praxis umgesetzt werden
können.
In anderen Fällen
sind gut bekannte Arbeitsschritte, Komponenten und Schaltungen nicht
in Einzelheiten beschrieben worden, um die Ausführungsformen nicht zu verschleiern.
Es kann verstanden werden, dass die bestimmten strukturellen und
funktionalen Einzelheiten, die hierin offenbart sind, repräsentativ sein
können
und nicht notwendigerweise den Umfang der Ausführungsformen beschränken.
-
Die
verschiedenen Ausführungsformen
können
implementiert werden, indem Hardwareelemente, Softwareelemente oder
eine Kombination aus beiden verwendet wird. Beispiele für Hardwareelemente können Prozessoren,
Mikroprozessoren, Schaltungen, Schaltungselemente (z. B. Transistoren,
Widerstände,
Kondensatoren, Induktoren usw.), integrierte Schaltunge, anwendungsspezifische
integrierte Schaltungen (ASIC – Application
Specific Integrated Circuits), programmierbare Logikbaugruppen (PLD – Programmable
Logic Devices), Digitalsignalprozessoren (DSP – Digital Signal Processors),
ein vor Ort modifizierbarer Logikbaustein (FPGA – Field Programmable Gate Array),
logische Gatter, Register, Halbleiterbausteine, Chips, Mikrochips,
Chipsätze usw.
umfassen. Beispiele für
Software können
Softwarekomponenten, Programme, Anwendungen, Computerprogramme,
Anwendungsprogramme, Systemprogramme, Maschinenprogramme, Betriebssystemsoftware,
Middleware, Firmware, Softwaremodule, Routinen, Unterroutinen, Funktionen, Verfahren,
Prozeduren, Softwareschnittstellen, Anwendungsprogrammschnittstellen
(API – Application Programm
Interfaces), Befehlssätze,
Rechencode, Computercode, Codesegmente, Computercodesegmente, Wörter, Werte,
Symbole oder irgendeine Kombination aus diesen umfassen. Das Festlegen, ob
eine Ausführungsform
implementiert wird, indem Hardwareelemente und/oder Softwareelemente
verwendet werden, kann entsprechend irgendeiner Anzahl von Faktoren
variieren, so wie der gewünschten Rechengeschwindigkeit,
Leistungspegeln, Wärmetoleranzen,
Vorgaben für
den Verarbeitungszyklus, Eingangsdatengeschwindigkeiten, Ausgangsdatengeschwindigkeiten,
Speicherressourcen, Datenbusgeschwindigkeiten oder anderen Einschränkungen für die Gestaltung
oder das Leistungsverhalten.
-
Einige
Ausführungsformen
können
beschrieben werden, indem der Ausdruck „gekoppelt” und „verbunden” zusammen mit ihren Ableitungen
verwendet werden. Diese Ausdrücke
sind nicht als Synonyme füreinander
gedacht. Zum Beispiel können manche
Ausführungsformen
beschrieben werden, indem die Ausdrücke „verbunden” und/oder „gekoppelt” benutzt werden, um anzugeben,
dass zwei oder mehr Elemente in direktem physikalischen oder elektrischen
Kontakt miteinander sind. Der Ausdruck „gekoppelt” kann jedoch außerdem bedeuten,
dass zwei oder mehr Elemente nicht in direktem Kontakt miteinander
sind, jedoch weiterhin zusammen arbeiten oder miteinander Wechselwirken.
-
Einige
Ausführungsformen
können
implementiert werden, indem zum Beispiel ein maschinenlesbares Medium
oder ein Gegenstand verwendet wird, der einen Befehl oder einen
Satz aus Befehlen speichern kann, die, wenn sie von einer Maschine ausgeführt werden,
bewirken können,
dass die Maschine ein Verfahren und/oder Arbeitsschritte gemäß den Ausführungsformen
ausführt.
Eine solche Maschine kann zum Beispiel irgendeine geeignete Verarbeitungsplattform,
Rechenplattform, Rechenbaugruppe, Verarbeitungsbaugruppe, ein Rechensystem,
ein Verarbeitungssystem, einen Computer, einen Prozessor oder dergleichen
umfassen und kann implementiert werden, indem irgendeine geeignete Kombination
aus Hardware und/oder Software verwendet wird. Das maschinenlesbare
Medium oder der Gegenstand kann zum Beispiel irgendeinen geeigneten
Typ einer Speichereinheit, einer Speicherbaugruppe, eines Speichergegenstandes,
eines Speichermediums, einer Ablagebaugruppe, eines Ablagegegenstandes,
eines Ablagemediums und/oder einer Ablageeinheit umfassen, zum Beispiel
Speicher, entfernbare oder nicht entfernbare Medien, löschbare
oder nicht löschbare
Medien, beschreibbare oder wiederbeschreibbare Medien, digitale
oder analoge Medien, Festplatte, Floppy-Disk, Compact-Disk, Nur-Lese-Speicher
(CD-ROM), eine Compact-Disk zum Aufzeichnen (CD-R – Compact Disk
Recordable), eine wiederbeschreibbare Compact-Disk (CD-RW – Compact
Disk Rewriteable), eine optische Platte, magnetische Medien, magnetooptische
Medien, entfernbare Speicherkarten oder -platten, verschiedene Typen
einer digitalen Mehrzweckplatte (DVD – Digital Versatile Disk),
ein Band, eine Kassette oder dergleichen. Die Befehle können irgendeinen
geeigneten Typ eines Codes umfassen, so wie Quellencode, kompilierter
Code, interpretierter Code, ausführbarer
Code, statischer Code, dynamischer Code, verschlüsselter Code und dergleichen,
implementiert wird, indem irgendeine geeignete hochwertige, niederwertige,
objektorientierte, visuelle, kompilierte und/oder interpretierte
Programmiersprache verwendet wird.
-
Obwohl
der Gegenstand in einer Sprache beschrieben worden ist, die für strukturelle
Merkmale und/oder methodologische Vorgänge spezifisch ist, soll verstanden
werden, dass der in den angehängten
Ansprüchen
definierte Gegenstand nicht notwendigerweise auf die bestimmten
Merkmale oder Vorgänge
beschränkt
ist, die oben beschrieben sind. Statt dessen sind die oben beschrieben
bestimmten Merkmale und Vorgänge
als beispielhafte Formen des Implementierens der Ansprüche offenbart.