-
Hintergrund der Erfindung
-
Technisches Gebiet
-
Die
vorliegende Erfindung betrifft Energieversorgungen und insbesondere
Mechanismen zum Simulieren der Geschwindigkeit, mit der sich die
Spannungen in der Energieversorgung in Abhängigkeit des Strombedarfs von
integrierten Schaltungen ändern.
-
Technischer Hintergrund
-
Über die
letzten 25 Jahre ist der Leistungsaufnahme für integrierte Schaltungen,
wie Mikroprozessoren, von weniger als 1 Watt bis über 100
Watt angestiegen. Der drastische Anstieg in der Leistung ist ein
Ergebnis der Transistorgrößen, wodurch
viel mehr Transistoren auf einem Chip hervorgebracht wurden, die
bei viel höheren
Frequenzen betrieben werden. Herkömmlicherweise wurde die Spannung entsprechend
skaliert, um die Leistung auf handhabbare Niveaus herabzusetzen.
Als jedoch die Versorgungsspannungen 1 Volt erreichten, war eine
weitere große
Verringerung der Spannung nicht zu erwarten, um damit für eine zusätzliche
Leistungsverringerung zu sorgen. Die folgende Diskussion bezieht
sich auf Mikroprozessoren. Es ist jedoch zu verstehen, daß jegliche
integrierte Schaltungen, die bei hohen Frequenzen betrieben werden
und die sich verändernden
Arbeitsbelastungen ausgesetzt werden, auch Gegenstand ähnliche
Probleme sind.
-
Ein
Mikroprozessor, der 100 Watt aufnimmt, erfordert eine Energieversorgung,
einen Spannungsregler und ein Energieverteilungsnetzwerk, das in
der Lage ist, 100 Watt zu liefern, sowie ein thermisches Lösungskonzept
(Gehäuse,
Kühlkörper und
Lüfter), das
in der Lage ist, die erzeugte Wärme
abzuführen. Solche
Komponenten sind kostenintensiv und es ist nicht damit zu rechnen,
daß sie
den höheren
Leistungsniveaus so angepaßt
werden können,
wie die Transistorabmessungen schrumpfen.
-
Zusätzlich zu
den absoluten Leistungsniveaus sind Änderungen der Leistungsniveaus
problematisch. Insbesondere können
Stromfluktuationen, die mit schnellen Änderungen in dem Leistungsniveau
verbunden sind, bewirken, daß die
von der Einrichtung gesehene Spannung sich aus dem spezifizierten
Bereich bewegt. Ein hypothetischer 100 Watt-Mikroprozessor, der
bei 1,0 Volt betrieben wird, zieht 100 A. Um einen korrekten Betrieb
der Schaltungen sicherzustellen, muß ein Spannungsregulator und
ein Energieverteilungsnetzwerk eine Versorgungsspannung innerhalb
von ±5%
aufrechterhalten. Das bedeutet, daß eine Peak-to-Peak-Welligkeit von nicht
mehr als 100 mW toleriert werden kann, unabhängig davon, was der Mikroprozessor
(oder die ablaufende Software) macht. Ein ideales Energieverteilungsnetzwerk
besitzt eine ausreichende Kapazität und ausreichend kleine Induktivität und Widerstand, um
die Versorgungsspannung innerhalb von 100 mV aufrechtzuerhalten,
selbst wenn sich der Versorgungsstrom des Mikroprozessors innerhalb
weniger Nanosekunden drastisch ändert.
Dieses letztere Problem wird als di/dt-Problem nach der Definition
der Induktivität
V = L·di/dt
genannt. V ist die Spannung über
einer Induktivität
vom Wert L, wenn diese einer Stromänderung di/dt ausgesetzt ist.
Tatsächliche
Energieverteilungsnetzwerke stellen derzeit diese idealen Eigenschaften
nicht zur Verfügung.
-
Das
Abschwächen
der Effekte von di/dt auf die Spannungsniveaus wurde zunehmend schwieriger,
als Leistungsmanagementtechniken, wie das Clock-Gating, bei den
Mikroprozessorkonstruktionen entwickelt wurden Zum Beispiel kann
eine Einheit mit hohem Leistungsbedarf, wie die Ausführungseinheit für Fließkommaperationen,
mit einer Schaltung ausgestattet sein, welche den Takt anschaltet,
wenn die Einheit aktiv ist und den Takt ausschaltet, wenn die Einheit
inaktiv ist. Clock-Gating kann mit einer extrem feinen Granulierung
implementiert werden – Einheit für Einheit
und Pipeliningstufe für
Pipeliningstufe –, was
zu einer großen
Anzahl von Clock-Gating-Signalen führt. Diese Technik minimiert
die Leistungsaufnahme in inaktiven Einheiten, führt jedoch zu großen Veränderungen
in den Gesamtleistungsniveaus, die von der ablaufenden Software
abhängen.
-
Die
Druckschrift
WO 01/48584
A1 betrifft einen Mikroprozessor mit einer digitalen Leistungsdrossel.
Die Leistungsdrossel arbeitet mit funktionellen Einheiten einer
Prozessorpipeline zusammen. Die Leistungsdrossel überwacht
die Aktivitätszustände dieser
funktionellen Einheiten und passt entsprechend der Aktivität oder Nichtaktivität der jeweiligen Einheit
die Verarbeitungsrate von in der Pipeline bearbeiteten Instruktionen
an. Die Leistungsdrossel weist Gattereinheiten auf. Jede Gattereinheit
ist mit einer funktionellen Einheit assoziiert, um die Leistungszufuhr
an diese Einheit zu regeln. Jede Gattereinheit überträgt ein Signal an einen Überwachungskreis,
um diesem anzuzeigen, ob Leistung an die entsprechende funktionelle
Einheit geliefert wird. Falls dem so ist, d. h., wenn die Gattereinheit
der assoziierten funktionellen Einheit Leistung zuführt, wird
ein entsprechend gewichteter Leistungswert einem geschätzten Leistungsverbrauch
des Prozessors hinzuaddiert. Zur Gewichtung der einzelnen Signale,
die von den einzelnen Gattereinheiten an den Überwachungskreis geliefert
werden, können
Gewichtungseinheiten vorgesehen sein, welche die über die
Signale angezeigten Leistungen gewichten. Die Gewichtungseinheiten
führen
die gewichteten Leistungen einem Addierer zu, der die geschätzte Gesamtleistung durch
Addition der gewichteten Leistungen ermittelt.
-
Das
Dokument
US 5,872,952 beschreibt
ein Verfahren zur Analyse der Leistungsaufnahme eines integrierten
Schaltkreises. Ein Simulator verwendet in einem Stromkreis auftretende
Stromamplituden, um daraus Charakteristika des Schaltkreises zu
berechnen. Die Charakteristika betreffen einen möglichen Spannungsabfall oder
die Stromdichte. Die Ergebnisse der Simulation lassen sich in einer
Visualisierung des Layouts des Schaltkreises graphisch darstellen.
-
Die
vorliegende Erfindung richtet sich an diese und andere Problem,
die mit Energieversorgungsnetzwerken verbunden sind.
-
Es
ist die Aufgabe der vorliegenden Erfindung, eine Vorrichtung und
ein System bereitzustellen, die in einem Prozessor eingesetzt werden
können,
um effektiv den in einem Prozessor auftretenden di/dt-Problem entgegenzuwirken.
-
Kurze Beschreibung der Zeichnungen
-
Die
vorliegende Erfindung kann mit Bezug auf die folgenden Zeichnungen
verstanden werden, in denen gleiche Elemente durch gleiche Nummern gekennzeichnet
sind.
-
1 ist
ein Schaltdiagramm eines elektrischen Modells, welches ein Energieverteilungsnetzwerk
darstellt, das zum Gebrauch mit einem Prozessor geeignet ist.
-
2 stellt
eine Sprungantwort und eine Impulsantwort für ein Energieverteilungsnetzwerk
der 1 dar.
-
3 ist
ein Ablaufdiagramm, das eine Ausführungsform eines Verfahrens
gemäß der vorliegenden
Erfindung darstellt zum Simulieren von Spannungsänderungen in einer integrierten
Schaltung.
-
4 ist
eine schematische Darstellung des Verfahrens, das in 3 gezeigt
ist.
-
5 stellt
den Ausgang eines Leistungssimulators für einen Prozessor dar, der
einen Block eines Codes über
etwa 2000 Taktzyklen ausführt.
-
6 stellt
die Versorgungsspannung des Prozessors, der in 5 simuliert
wird, über
das gleiche Intervall dar, wie es unter Verwendung eines Simulators
gemäß der vorliegenden
Erfindung bestimmt wurde.
-
7 ist
ein Blockdiagramm, welches eine Ausführungsform eines Computersystems
darstellt, bei dem ein di/dt-Steuermechanismus eingesetzt ist.
-
8A ist
ein Blockdiagramm einer Ausführungsform
einer di/dt-Steuerung gemäß der vorliegenden
Erfindung.
-
8B bis 8E sind
Blockdiagramme verschiedener Ausführungsformen der Strom-Spannungs-Berechnungseinheit
der 8A.
-
9 stellt
eine Simulation der Ausgabeleistung des Prozessors der 7 dar,
welcher unter Steuerung der Stromsteuereinheit der 8A betrieben
wird.
-
10 stellt
die Änderung
in der Versorgungsspannung des Prozessors dar, der in 8A simuliert
wird, über
dem gleichen Intervall.
-
11 stellt
eine Simulation der Änderung der
Versorgungsspannung gegenüber
der Leistung dar, wie sie unter Verwendung eines abgeschnittenen
Faltungsintervalls bestimmt wurde.
-
12 stellt
eine Simulation der Änderung der
Versorgungsspannung gegenüber
der Performance dar, wie sie unter Verwendung eines abgeschnittenen
Faltungsintervalls bestimmt wurde.
-
Detaillierte Beschreibung
der Erfindung
-
Ein
Mikroarchitektur-Simulator, wie ein SimpleScalar oder SMTSIM, umfaßt ein Modell
einer Mikroprozessor-Pipeline und einer Steuerlogik, sowie ein Architektur-Simulator,
um den Befehlsfluß durch die
Mikroprozessor-Pipeline zu simulieren. Der Simulator bestimmt, wieviele
Takte benötigt
werden, um einen vorgegebenen Bewertungstest auszuführen, und
erzeugt eine Statistik über
die Vorkommnisse wie Pipelinestalls, Cash-Fehler, falsch vorhergesagte Äste und
dergleichen. Solche Simulatoren sind gut bekannt und intensiv in
der Literatur diskutiert, vgl. z. B. D. Burger und T. M. Austin, „The SimpleScalar Toolset,
Version 2.0", Computer
Architekture News, Band 25, Nr. 3 Juni 1997, Seiten 13–25, oder
D. M. Tullsen, „Simulation
and Modeling of a Simultaneous Multithreading Processor", 22nd Annual Computer Measurement
Group Conference, Dezember 1996.
-
Diese
und andere Simulatoren können
erweitert werden, um die Leistungsaufnahme abzuschätzen, einschließlich dem
Effekt des Clock-Gating. Beispielsweise kann der Simulator auf jedem
Taktintervall bestimmen, welche Einheiten und Pipelinezustände aktiv
sind. Der Simulator kann die Gesamtleistungsaufnahme während des
Takts durch Aufaddieren der Wirkleistung und der Blindleistung der
Einheiten/Pipelinezustände
(„Blöcke"), die angeschaltet
bzw. ausgeschaltet sind, berechnen. Die Wirk- und Blindleistung
für jeden
Block kann auf low-level-Schaltungssimulatoren,
Abschätzungen, die
von Schaltungsdesignern zur Verfügung
gestellt werden, Messungen, die auf tatsächlichen Schaltungen beruhen,
und dgl. basieren.
-
Entsprechend
einer Ausführungsform
der vorliegenden Erfindung wird die Spannung der Energieversorgung,
welche an einen Prozessor abgegeben wird, aus dem Ausgang einer
Leistungssimulation, unter Verwendung eines elektrischen Modells
eines Energieversorgungsnetzwerks für den Prozessor in Verbindung
mit geeigneten Antwortfunktionen für das Verteilungssystem simuliert.
-
1 zeigt
ein elektrisches Modell eines Energieversorgungsnetzwerks 100 für einen
High-Performance-Mikroprozessor.
Das Modell umfaßt
Entkopplungskapazitäten 110(a) bis 110(c) auf
dem Chip, in dem Gehäuse
bzw. in dem Spannungsregler. Außerdem
sind parasitäre
Induktivitäten 120(a) bis 120(d) und
Widerstände 130(a) bis 130(d) gezeigt, die
mit dem Gehäuse,
dem Sockel, der Schaltungsplatine und Einrichtungen in dem Spannungsregulator
verbunden sind. Der Mikroprozessor wird als eine variable Stromsenke 140 nachgebildet
und der Rest des Spannungsregulators wird als eine ideale Spannungsquelle 150 nachgebildet.
Die Werte der Komponenten sind so gewählt, daß sie zu denen in dem speziellen
System, welches nachgebildet wird, repräsentativ sind. Die Konstruktion
solcher Modelle ist beschrieben in D. J. Herrell, B. Beker, „Modelling
of Power Distribution Systems for High-Performance Microprocessors", IEEE Transactions
an Advanced Packing, Band 22, Ausgabe 3, August 1999, Seiten 240–248.
-
2 stellt
die simulierte Antwort des Energieversorgungsnetzwerks 100 auf
das Anlegen eines Stromsprung von 25 A (nicht gezeigt) dar. Ein
fortwährender
Stromzuwachs von 25 A wird auf das Energieversorgungsnetzwerk 100 angewandt
und die Antwort (Sprungantwort 210) der Versorgungsspannung,
wie sie der Mikroprozessor sieht, wird nachgebildet. Die Sprungantwort 210 kann
beispielsweise durch Ablauf eines Spice oder einer vergleichbaren Simulation
auf dem Netzwerk 100 ermittelt werden.
-
Die
horizontale Achse in 2 ist in eine Abfolge von Zeitintervallen
aufgeteilt. Die Intervalle können
beispielsweise den Taktzyklen des Prozessors entsprechen, der durch
das Energieverteilungssystem 100 betrieben wird. Für die offenbarte
Simulation entspricht jedes Intervall einem Taktzyklus von 0,3 Nanosekunden
(ns), um die Antwort auf einen mit 3,3 GHz getak teten Prozessor
darzustellen. Die Sprungantwort 210 bricht ein und „schwingt
nach" aufgrund der
Induktivität
und der Kapazität
des Energieverteilungsnetzwerks 100. Sie erreicht ein lokales
Minimum 220 etwa 30 Takte nach dem Anfang des Stromsprungs.
Zwei exponentiell abklingende sinusförmige Signale sind in der Sprungantwort über dem simulierten
Intervall erkennbar. Ein Hochfrequenzbeitrag ist für das lokale
Minimum 220 verantwortlich. Dieser Beitrag kann RLC-Resonanzen
zugeschrieben werden, die mit den Komponenten 110(a) usw. auf
dem Chip verknüpft
sind. Ein Beitrag mit niedrigerer Frequenz ist für ein zweites lokales Minimum 250 verantwortlich.
Dieser Beitrag kann RLC-Resonanzen zugeordnet werden, die mit dem
Gehäuse und/oder
Verbindungskomponenten 110(b), 120(a), 130(a) usw.
verknüpft
sind. Ein Beitrag mit noch niedrigerer Frequenz, der mit den Energieversorgungskomponenten
verknüpft
ist, kann auftreten, wenn das simulierte Intervall ausgedehnt wird.
-
Eine
Impulsantwort 230 ist auch in 2 gezeigt.
Hier stellt die Impulsantwort 230 die Antwort des Energieversorgungsnetzwerks 100 auf
einen einzelnen 25 A Puls von 0,3 ns Dauer dar. Die Impulsantwort 230 ist
proportional und zur ersten Ableitung der Sprungantwort 210.
Sie kann aus der Sprungantwort 210 berechnet werden, indem
man die Differenz zwischen aneinandergrenzenden Ausführungen
der Stufenfunktion 210 betrachtet. Alternativ kann sie
direkt durch Simulieren der Antwort des Systems 100 auf
einen Puls von 0,3 ns mit einer Amplitude von 25 A berechnet werden.
-
Die
Sprungantwort 210 und die Impulsantwort 230 sind
Beispiele von Antwortfunktionen, die benutzt werden können, um
das Verhalten des Energieversorgungssystems auf eine elektrische Anregung
zu charakterisieren.
-
Eine
Ausführungsform
der vorliegenden Erfindung stellt einen Mechanismus zum Ermitteln
der von dem Prozessor gesehenen Spannung als eine Funktion seiner
unterschiedlichen Aktivität über die Zeit
zur Verfügung.
Die Aktivität
kann als eine Stromwellenform oder als diskrete Strompulse dargestellt werden.
Diese können
durch einen Simulator zur Verfügung
gestellt werden, wie ein SimpleScalar oder SMTSIM, das weiterentwickelt
wurde, um die Effekte der Leistungsaufnahme zu simulieren. Wie nachfolgend
im größeren Detail
beschrieben wird, kann die Aktivität auch durch einen in Betrieb
befindlichen Prozessor zur Verfügung
gestellt werden. Im letzteren Fall ist ein Mechanismus vorgesehen,
um die Effekte der di/dt-induzierten
Spannungsänderungen
zu dämpfen.
-
Der
offenbarte Mechanismus beruht teilweise auf der Beobachtung, daß das Energieversorgungsnetzwerk 100 in
grober Näherung
ein lineares Netzwerk ist. Lineare Systeme sind durch zwei Eigenschaften
charakterisiert: (1) das Skalieren einer Eingabe in das System (Stromstufe
oder Pulsamplitude) um einen bestimmten Betrag bewirkt, daß der Ausgang
sich proportional in der Größe ändert; und (2)
das Anlegen einer Linearkombination von zwei Eingängen an
das System erzeugt den gleichen Ausgang, wie wenn man die Linearkombination
der Ausgänge
nimmt, die von dem System in Reaktion auf jeden einzelnen Eingang
erzeugt werden (Superposition). Die Skalierungseigenschaft kann
mathematisch als f(c·x)
= c·f(x)
dargestellt werden, wobei c eine Konstante ist. Beispielsweise führt eine
Verdoppelung der Amplitude in der Eingangsstromstufe in 2 auf
50 A näherungsweise
zu einer Verdoppelung der Tiefe des lokalen Minimums 220.
Die Superposition kann mathematisch als f(x + y) = f(x) + f(y) dargestellt
werden. In dem Beispiel der 2 bedeutet
dies, daß die
Antwort des Verteilungsnetzwerks 100 auf einen ersten und
einen zweiten Stromimpuls im wesentlichen approximiert wird durch
die Summe der Antworten des Verteilungsnetzwerks 100 auf
den ersten Stromimpuls und seinen Antwort auf den zweiten Stromimpuls,
der einem Intervall folgt, welches den Abstand zwischen dem ersten
und dem zweiten Stromimpuls darstellt.
-
3 ist
ein Ablaufdiagramm, das eine Ausführung eines Verfahrens 300 gemäß der vorliegenden
Erfindung darstellt, um die Spannungsantwort eines Energieverteilungsnetzwerks
auf ein Aktivitätsprofil
eines integrierten Schaltkreises abzuschätzen. Gemäß der vorliegenden Erfindung
wird ein Aktivitätsprofil
für das
System bestimmt 310. Das Aktivitätsprofil kann eine Stromwellenform,
eine Abfolge von Strompulsen oder ein vergleichbarer Ausgang eines
Simulators, wie vorhergehend beschrieben, sein. Wenn ein Prozessor
simuliert wird, kann das Aktivitätsprofil
aus dem Ausgang eines Simulators in Reaktion auf eine bestimme Codesequenz über eine
gegebene Periode genommen werden. Beispielsweise kann eine Abfolge
von Strompulsen (ein Puls pro Takt), welche den Strom darstellen,
der von den aktiven und inaktiven Einheiten eines Prozessors in
einer Abfolgen von Taktzyklen („Intervallen") gezogen wird, in
der oben beschriebenen Weise berechnet werden. Für einen echten Prozessor kann
das Aktivitätsprofil zur
Verfügung
gestellt werden, indem der Stromverbrauch, z. B. auf einer Takt
für Takt-Basis,
verfolgt wird. Eine Stromwellenform, die das Aktivitätsprofil des
Prozessors darstellt, kann in einer Abfolge von Strompulsen aufgelöst werden.
In beiden Fällen
wird das Aktivitätsprofil
in ausgewählten
Intervallen durch eine Größe (Amplitude
des Strompulses) und einen Offset (Zeit des Intervalls gegenüber einer
Referenzzeit) charakteri siert 320. Für einen Mikroprozessor kann
das ausgewählte
Intervall einem oder mehreren Taktintervallen entsprechen. In der
nachfolgenden Diskussion wird für
das Aktivitätsprofil
bei einem ausgewählten
Intervall auf einen Puls Bezug genommen.
-
Die
Impulsantwort eines Zielenergieversorgungsnetzwerks, das eine Einrichtung,
z. B. ein Mikroprozessor, umfaßt,
wird bestimmt 330. In einer Ausführungsform des Verfahrens 300 kann
die Anwendung eines Stromsprungs mit einer bestimmten Größe und einer
bestimmten Dauer auf das Zielnetzwerk simuliert werden und eine
Impulsantwort aus der simulierten Spannungsantwort bestimmt werden. Alternativ
kann die Antwort des Energieversorgungsnetzwerks auf einen Stromimpuls
mit einer Länge, die
einem ausgewählten
Taktintervall (Taktintervallen) entspricht, direkt simuliert werden.
Wenn eine echtes System verfügbar
ist, kann es möglich
sein, die Impulsantwort direkt zu messen.
-
Die
Strompulse des Aktivitätsprofils
werden anschließend
in eine Spannungsantwort des Energienetzwerks unter Verwendung der
Impulsantwort des Netzwerks und einer Filtertechnik umgewandelt 340.
Geeignete Filtertechniken umfassen z. B. Filter mit begrenzter Impulsantwort
(FIR), z. B. Faltung, und Filter mit unbegrenzter Impulsantwort
(IIR).
-
In
einer Ausführungsform
skaliert und verschiebt ein FIR-Filter jeden Strompuls entsprechend seiner
Amplitude und seines Offsets, um eine entsprechend skalierte, verschobene
Impulsantwort zu liefern. Die skalierten/verschobenen Impulsantworten
für jeden
Puls, der eine Antwort in einem gegebenen Intervall erzeugt, werden
anschließend
summiert, um eine Spannungsantwort des Energienetzwerks in dem Intervall
zu liefern. Die skalierten/verschobenen Antworten des Netzwerks
auf die Abfolge von Pulsen über
die Zeitperiode stellen eine Faltung der Aktivitätspulse mit der Antwortfunktion
des Netzwerks dar.
-
In
einer anderen Ausführungsform
werden Koeffizienten für
ein IIR-Filter bestimmt, das die Impulsantwort nachgebildet. Die
Koeffizienten werden auf die Strompulse und rekursiv auf frühere Spannungen,
die aus den Strompulsen bestimmt wurden, angewandt, um ein Spannungsprofil
abzubilden, das von der Einrichtung gesehen wird.
-
4 ist
eine schematische Darstellung eines FIR-Verfahrens, welches in Verbindung
mit 3 beschrieben wird. In dem dargestellten Beispiel
umfaßt
ein Aktivitätsprofil 400 Strompulse 410, 420, 430 mit
Amplituden A1, A2 bzw.
A3. Die Strompulse 410, 420, 430 können beispielsweise
den Strom darstellen, der von einem Prozessor gezogen wird, wenn
er eine Codesequenz in aufeinander abfolgenden Taktzyklen ausführt. Die
Strompulse 410, 420, 430 beginnen bei
Offset-Zeiten T0, T1,
T2, ...
-
Zur
Veranschaulichung ist eine Basisimpulsantwort 490 für eine spezifizierte
Stromamplitude, z. B. 25 A, durch eine Sequenz von Impulsantwortamplituden
R0 bis R7 über acht
Intervalle (t0 bis t7)
dargestellt. Die Impulsantworten 440, 450 und 460 stellen
die Basisimpulsantwort 490 (Impulsantwortamplituden R0 bis R8) im Anschluß an ein Skalieren
durch die Amplituden (A1, A2,
A3, ...) und einem Verschieben durch die
Offsets (T0, T1,
T2, ...) der Pulse 410, 420 bzw. 430 dar.
Hierin stellt Rij die Amplitude Rj der Impulsantwort 490 dar, skaliert
um die Strompulsamplitude Ai. Unter der
Annahme, daß das Leistungsversorgungsnetzwerk,
das durch die Basisimpulsantwort 490 charakterisiert ist,
linear ist, gilt R10 = c·A1·R0, R32 = c·A3·R2 und allgemein Rij =
c·Ai·Rj (Skalierung). Die Verschiebung der Impulsantworten 440, 450, 460 gibt
die unterschiedlichen Zeiten wieder, an denen ihre Quellstrompulse 410, 420 bzw. 430 initiiert
wurde. In dem offenbarten Beispiel wird T0 als
eine Referenzzeit genommen. Die Spannungswellenform 470 stellt
die Summe der Impulsantworten 440, 450 und 460 in
den entsprechenden Intervallen t0, t1, t2, ... dar (Superposition).
-
Zum
Beispiel stellt der Spannungspuls V0 eine
Amplitude der Impulsantwort 440 bei dem Zeitintervall t0 (R10) dar. Die
Spannungsantwort V1 stellt die Summe der
Impulsantwortamplituden R11 und R20 in dem Zeitintervall t1 dar
und die Spannungsantwort V2 stellt die Summe
der Impulsantwortamplituden R12, R21 und R30 in dem
Zeitintervall t2 dar. Durch die Verschiebungen,
die durch die Offsets T1 und T2 angegeben
sind, werden die Impulsantwortamplituden R20 bis
R28 und R30 bis
R38 der Impulsantworten 440 bzw. 450 relativ
zu den Amplituden R10 bis R18 der
Impulsantwort 460 ausgerichtet.
-
Im
Allgemeinen ist die Spannung bei dem Intervall tn die
Summe der Impulsantwortamplituden für alle Strompulse, die eine
von Null verschiedene Amplitude bei tn besitzen.
Wenn der Strompuls bei einer Zeit Tk beginnt,
ist, wie in 4 gezeigt, der Beitrag des Strompulses
zur Spannung bei dem Intervall tn proportional
zu c·Ak·Rn-k. Dabei ist Rn-k die
Amplitude der Impulsantwort 490 in dem Intervall n – k, wobei die
Differenz die Startzeit des Strompulses gegenüber der Referenzzeit T0 wiedergibt.
-
Eine
Stromsimulation für
einen Mikroprozessor und eine Spannungsantwort, die aus der Stromsimulation
gemäß der vorliegenden
Erfindung erzeugt wurde, sind in den 5 bzw. 6 gezeigt. 5 stellt
eine Simulation der Leistungsaufnahme von einem ItaniumTM-Prozessor
von Intel® Corporation
von Santa Clara, Kalifornien, dar. Es wird simuliert, daß der Prozessor
einen Teil eines Apache-Webserver- und gzip-Dateikomprimierungsprogramm
für 2000
Taktzyklen durchläuft.
Die Stromkurve 510 weist verschiedene Phasen einer Programmausführung auf,
wobei jede Phase durch die Effizienz, z. B. Befehle pro Zyklus (IPC),
und Stromniveaus charakterisiert ist. Im Allgemeinen sind jene Taktzyklen,
in denen eine größere Anzahl
von Befehlen parallel ausgeführt
werden (high IPC), durch eine entsprechend höhere Stromaufnahme gekennzeichnet,
da mehrere Einheiten des Prozessors angeschaltet werden. Umgekehrt
besitzen Taktzyklen, in denen weniger Befehle parallel ausgeführt werden (lower
IPC), weniger aktivierte Einheiten und die Stromaufnahme ist entsprechend
geringer. Über
das simulierte Intervall variiert der Versorgungsstrom des Prozessors
von 52 A bis 72 A.
-
Die
Phasen 520, 530, 540, in denen Stromniveaus
schnell und wiederholt zwischen hohen und niedrigen Leistungsniveaus
oszillieren, sind mit Programmschleifen verknüpft. Programmschleifen führen die
gleichen Befehle wiederholt mit höheren und niedrigeren Niveaus
von IPC aus. Diese Phasen sind verschachtelt mit Phasen 524, 534, 544,
in denen eine geringe Schleifenaktivität sichtbar ist und die Stromniveaus
mehr zufällig
variieren. Die peak-to-peak-Stromvariationen
in den Phasen 534, 534, 544 sind erkennbar
höher als
jene, die mit den Schleifenphasen 520, 540, 550 verknüpft sind.
Etwa beginnend mit dem Taktzyklus 1200 befindet sich ein ausgedehntes
Intervall, in dem der Codeabschnitt nur sehr wenige kurze Schleifensegmente
enthält.
In diesem Bereich variiert die Stromaufnahme weit und unvorhersehbar.
-
6 stellt
eine erfindungsgemäße Simulation
der Versorgungsspannungsvariationen 610 dar, welche der
Stromaufnahme des Prozessors entspricht, die in 5 gezeigt
ist. Die Stromkurve 610 gibt in etwa die Ereignisse wieder,
die in der Kurve 510 der 5 gezeigt
sind. Zum Beispiel entsprechen die Phasen 620, 630, 640 den
Schleifenphasen 520, 530 bzw. 540, in
denen der peak-to-peak-Strom regelmäßig variiert. Für die simulierte
Codesequenz und den Prozessor sind Schleifenphasen durch relativ
hohen IPC und eine hohe Stromaufnahme charakterisiert. Das Niveau
der Versorgungsspannung bricht in den Phasen 620, 630 und 640 ein,
was die erhöhten
Stromaufnahme durch den Prozessor wiedergibt. Die Spannungsvariationen
unterhalb des Taktzyklus 900 sind vergleichsweise gering.
Oberhalb des Taktzyklus 1152, bei der die Leistungsaufnahme
unregelmäßiger ist,
sind die Spannungsschwingungen signifikant größer. Da diese Spannungsschwankung
immer noch in den für
Prozessoren tolerierten Bereich fällt, stellt die Apache/gzip-Arbeitsbelastung
nicht den schlimmsten Fall einer di/dt-Verteilung dar.
-
Die
Spannungsvariationen, die in der Kurve 610 sichtbar sind,
können
verschiedene Konsequenzen für
den Betrieb des Prozessors haben. Zum Beispiel benötigen die
Logikschaltungen, die den Prozessor bilden, Energieversorgungsspannungen
innerhalb eines bestimmten Bereichs, um zuverlässig zu arbeiten. Spannungsausreiser
außerhalb
dieses Bereichs können
zu Rechenfehlern oder zu dramatischen Schaltungsfehlern in dem Prozessor
führen. Simulationen,
wie jene, die in der 6 gezeigt sind, ermöglichen
den Konstrukteuren von Prozessoren die Auswirkung auf die Prozessorspannung
für verschiedene
Leistungs/Performance-Kompromisse
zu untersuchen. Wie nachfolgend detaillierter beschrieben wird,
können
Echtzeitbestimmungen der Spannungsprofile auf tatsächlichen
Systemen benutzt werden, um das Ausmaß der Spannungsausreiser zu begrenzen.
-
Ein
Energieversorgungssystem für
Mikroprozessoren ist üblicherweise
für die
schlimmste anzunehmenden Software, die voraussichtlich auf ihnen betrieben
wird, konstruiert. Die schlimmste anzunehmende Software ist normalerweise
ein Programm mit extrem hoher IPC (für eine maximale Leistungsaufnahme)
oder ein Programm, das rasch zwischen extrem hoher IPC und extrem
geringer IPC hin und her wechselt (für ein maximales di/dt). Solche
Programme werden als Leistungsviren bezeichnet, weil sie ein Energieversorungssystem
viel stärker
als eine normale Anwendungssoftware beanspruchen. Clock-gating ermöglicht einem
Prozessor, der eher für eine
typische Leistungsaufnahme als für
eine Worst-Case-Leistungsaufnahme
konstruiert ist, seine Performance zu drosseln, wenn er eine bestimmte Leistungsgrenze
erreicht. Clock-gating verstärkt
aber auch die in di/dt-Effekte auf die Spannung.
-
Das
oben beschriebene Verfahren ermöglicht
die Entwicklung von Hardware zur Leistungsberechnung und Regulation
auf dem Chip („Stromsteuereinheiten") für Prozessoren
und andere befehlsausführende
Vorrichtungen. Zusätzlich
zu Einblicken darin, wie verschiedene Codesequenzen auf eine Prozessorspannung
Einfluß nehmen
können,
ermöglichen
diese Simulationen verschiedene di/dt-Dämpfungsstrategien auszuprobieren
in einem Zustand vor dem Siliziumchip. Der Vorteil von Einblicken,
welche die oben beschriebenen Simulationen ge statten, sind erkennbar
durch Bezugnahme auf eine Prozessorkonstruktion, die eine di/dt-Steuerung enthält. Eine
solche Ausführungsform
wird im größeren Detail
nachfolgend beschrieben.
-
7 ist
ein Blockdiagramm einer Ausführungsform
eines Computersystems 700, bei dem eine di/dt-Steuerung
eingesetzt ist. Beispielsweise umfaßt das Computersystem 700 einen
Prozessor 710, einen Hauptspeicher 740, einen
nicht flüchtigen Speicher 750,
verschiedene Peripheriegeräte 760, eine
Systemlogik 770 und eine Energieversorgung 780.
Die Systemlogik 770 steuert den Datentransfer zwischen
dem Prozessor 710, dem Hauptspeicher 740, dem
nicht flüchtigen
Speicher 750 und den Peripheriegeräten 760. Die Energieversorgung 780 stellt
die Leistung bei einer Referenzspannung für die Logikeinrichtungen in
dem Prozessor 710 zur Verfügung. Das Computersystem 700 dient
zur Illustration verschiedener Merkmale der vorliegenden Erfindung. Der
spezielle gezeigte Aufbau ist zum Einsatz der vorliegenden Erfindung
nicht notwendig. Zum Beispiel kann das System 700 mehrere
Prozessoren 710 oder andere befehlsausführenden Einheiten umfassen,
und die verschiedenen gezeigten Komponenten können kombiniert oder ganz oder
teilweise eliminiert werden. Es ist zu erwarten, daß Systeme, wie
Personal Digital Assistance (PDAs), Smart Phones und dgl., Einrichtungen
und Verbindungen enthalten, die in der offenbarten Ausführungsform
nicht gezeigt sind.
-
Der
Prozessor 710 umfaßt
mehrere Einheiten 724, die eine befehlsausführende Pipeline 720 bilden.
Die Befehle können
an dem Prozessor 710 von dem Hauptspeicher 740,
dem nicht flüchtigen Speicher 750 oder
anderen Speichereinrichtungen (nicht gezeigt) geliefert werden.
Die Stromstärke,
die von dem Prozessor 710 aufgenommen wird, ist durch die
Stärke
der Aktivität
bestimmt, die in verschiedenen Einheiten 724 durch Befehle
(oder dem Ausbleiben davon) in der Pipeline 720 erzeugt
wird. Eine Stromsteuereinheit (CCU) 730 überwacht
den Strombedarf von verschiedenen Einheiten 724 in Reaktion auf
die ausgeführten
Befehle und paßt
das Aktivitätsniveau
des Prozessors 710 entsprechend an. Das System 700 ist
mit einer einzelnen CCU 730 gezeigt. In anderen Ausführungsformen
können
auch mehrere CCUs 730 eingesetzt werden, von denen jede
di/dt lokal für
eine oder mehrere Einheiten 724 steuert.
-
Wenn
ein Befehl entlang der Pipeline 720 ausgeführt wird,
spricht er verschiedene Einheiten 724 an, um eine oder
mehrere Vorgänge
auszuführen,
die zusammen genommen den Befehl implementieren. Zum Beispiel kann
ein Fließkomma-Mehrfachakkumulationsbefehl
(FMAC) verursachen, daß die
folgenden Vorgänge
in den bezeichneten Ressourcen stattfinden: eine Fließkomma-Registerdatei liest
drei Operanden aus, eine FMAC-Ausführungseinheit multipliziert
zwei der Operanden und addiert das Produkt zu dem dritten Operand,
eine Fehlereinheit kontrolliert das Produkt und die Summe auf Fehler
und eine Ausscheideeinheit schreibt das Ergebnis in die Fließkomma-Registerdatei,
wenn keine Fehler ermittelt wurden. Abhängig von der speziellen Prozessorimplementierung
können
diese Ressourcen oder ihre Komponenten in einer oder mehreren Einheiten 724 gruppiert
sein, die an- und ausgeschaltet werden, wenn der Befehl entlang
der Pipeline ausgeführt
wird.
-
Jede
Einheit 724 zieht eine bestimmte Strommenge, wenn sie von
dem Befehl aktiviert wird. Für
das Computersystem 700 stellt die Energieversorgung 780 den
Strom so zur Verfügung,
daß das Referenzspannungsniveau
innerhalb eines spezifizierten Bereichs aufrechterhalten wird. Wenn
die Aktivierung oder Deaktivierung von einer oder mehreren Einheiten 724 eine
signifikante Änderung
in dem Strom hervorruft, den der Prozessor 710 beansprucht,
reagiert die CCU 730, um die Änderungen zu dampfen. Eine
Ausführungsform
der CCU 730 macht sich das Verhalten zu Nutze, das in der
oben beschriebenen Simulation dargestellt ist, um die Effekte von
di/dt auf die Referenzspannung, die von dem Prozessor 710 benutzt
wird, zu dämpfen.
-
Die
aktivierten/deaktivierten Zustände
von ausgewählten
Einheiten 724' können überwacht
werden, um eine Abschätzung
des Stroms zur Verfügung zu
stellen, der von dem Prozessor 710 zu einen gegebenen Taktzyklus
aufgenommen wird. Die ausgewählten
Einheiten 724' können diejenigen
sein, die große
Ströme
ziehen, wenn sie aktiviert werden, weil diese voraussichtlich plötzliche Änderungen
in di/dt erzeugen, wenn diese zwischen ihrem aktiven und inaktiven
Zustand umgeschaltet werden. Die CCU 730 überwacht
die Zustände
von einer oder mehreren ausgewählten
Einheiten 724' an
aufeinanderfolgenden Taktzyklen, um ein resultierendes Strom- oder Spannungsniveau über eine
ausgewählte
Zeitperiode abzuschätzen.
Das abgeschätzte
Niveau wird mit einer oder mehreren Schwellenwerten verglichen, um
zu ermitteln, ob das Aktivitätsniveau
des Prozessors angepaßt
werden sollte. Wenn zum Beispiel ein abgeschätztes Spannungsniveau geringer
als eine erste Schwelle ist, kann der Befehlsfluß durch die Pipeline 720 verringert
werden. Wenn das abgeschätzte
Spannungsniveau größer als
eine zweite Schwelle ist, kann eine Einheit 724' aktiviert bleiben, die
andernfalls deaktiviert wäre,
um den Anstieg der Spannung zu reduzieren.
-
Eine
Ausführungsform
der CCU 730 schätzte
das Spannungsniveau ab, das von dem Prozessor gesehen wird, indem
sie die aktiv/inaktiv-Zustände (z.
B. Aktivitätszustand
= 1/0) einer ausgewählten Einheit 724' in n aufeinanderfolgenden
Taktzyklen (Probeperiode) verfolgt. Die verfolgten Zustande können, wie
nachfolgend beschrieben, gewichtet werden, um eine Aktivitätswellenform
oder Profile für den
Prozessor 710 darzustellen. Strompulse, die das Profil
bilden, können
analysiert werden unter Verwendung einer Impulsantwort, die für das Energieversorgungsnetzwerk
des Systems 700 geeignet ist, um ein Profil der von dem
Prozessor gesehen Spannung zur Verfügung zu stellen. Wenn die Spannung außerhalb
des spezifizierten Bereichs fällt,
kann die CCU 730 das Aktivitätsniveau des Prozessors 710 verändern, um
die zu erwartende Änderung
auszugleichen.
-
In
einer Ausführungsform
der CCU 730 können
die Werte, welche die Amplituden von jedem der n Strompulse darstellen,
in einer Abfolge von Speicherbereichen gespeichert werden. Ein Schieberegister,
das in der Lage ist, Multi-Bit-Amplitudenwerte in jedem Eintrag
zu speichern, kann für
diesen Zweck benutzt werden. Wie nachfolgend detaillierter beschrieben
ist, wird die Zahl der Einträge
teilweise durch die Genauigkeit, mit der die von dem Prozessor gesehene
Spannung ermittelt wird, und dem verwendeten Filteralgorithmus bestimmt.
Der Eintrag, in dem sich der Amplitudenwert befindet, stellt den
Offset des entsprechenden Strompulses gegenüber dem Beginn des Prüffensters
dar.
-
Die
von dem Prozessor gesehene Spannung wird periodisch, z. B. auf jedem
Taktzyklus, aus den Stromamplituden (Ai)
abgeschätzt,
die in den Einträgen
des Schieberegisters gespeichert sind. In einer Ausführungsform
der CCU 730 werden die Stromamplituden durch das Schieberegister
hintereinander vom Eintrag 0 zum Eintrag n – 1 (E0 bis
En-1) in aufeinanderfolgenden Taktzyklen
geschoben. Die Inhalte des Schieberegisters stellen damit eine Momentaufnahme
des Aktivitätsniveauprofils
der Einrichtung über
ein Fenster von n Taktzyklen dar. Zu einer gegebenen Zeit ist die
jüngste
Strompulsamplitude in E0 und steuert zu
der von dem Prozessor gesehenen Spannung eine Beitrag dar, der proportional
ist zu dem Amplitudenwert, den sie speichert ([E0]),
und zu der Netzwerkimpulsantwort in dem ersten Intervall (R0). Genauso ist der nächstjüngere Puls im Eintrag 1, und
sein Beitrag zu der Spannung ist proportional zu dem Amplitudenwert,
den er speichert ([E1]), und zu der Netzwerkimpulsantwort
in dem zweiten Intervall (R1).
-
Allgemein
kann die Spannungsantwort zu einer bestimmten Zeit abgeschätzt werden
als:
-
Das
heißt,
eine gewichtete Summe der Stromamplituden für die letzten n Taktzyklen
wird bei jedem Taktzyklus berechnet, wobei die Gewichte von den
Impulsantwortamplituden in den entsprechenden Intervallen geliefert
werden. Das Schieberegister schiebt die Strompulsamplituden, um
für den
Offset gegenüber
der Impulsantwort zu sorgen, der im Zusammenhang mit der 4 beschrieben
wurde. Die Inhalte des Schieberegisters stellen daher ein gleitendes
Fenster zur Verfügung,
durch das ein laufendes Profil der von dem Prozessor gesehenen Spannungsniveaus
abgeschätzt
werden kann. Letztendlich faltet diese Ausführungsform der CCU 730 das gemessene
Aktivitätsprofil
des Prozessors mit der Impulsantwort seines Energieversorgungsnetzwerks,
um den Änderungen
in den von dem Prozessor gesehenen Spannungsniveau Rechnung zu tragen.
Faltung ist ein Beispiel eines Algorithmus einer begrenzten Impulsantwort
(FIR). Wie nachfolgend beschrieben, können auch Stromsteuerschaltungen eingesetzt
werden, die auf einem Algorithmus mit unbegrenzter Impulsantwort
(IIR) beruhen.
-
In
einer Ausführungsform
eines Systems, in der eine CCU 730 eingesetzt ist, paßt eine
Pipelinesteuerschaltung (8A) die
Pipelineaktivität
an, um die zu erwartenden Änderung
in dem Spannungsniveau auszugleichen, wenn sie außerhalb
eines akzeptablen Bereichs fällt.
Die Impulsantwort kann unter Verwendung eines Energieversorgungsnetzwerkes, ähnlich zu
dem der 2, mit Komponenten simuliert
werden, die dafür
konstruiert sind, die kapazitiven, induktiven und resisitiven Eigenschaften
des Computersystems 700 wiederzugeben. Alternativ kann
die Pulsantwort eines tatsächlichen
Systems gemessen werden.
-
8A ist
ein Blockdiagramm, das eine Ausführungsform
einer CCU 730 und ihre Interaktionen mit ausgewählten Einheiten 724' der Pipeline 720 darstellt.
Die offenbarte Ausführungsform
der CCU 730 umfaßt
Gate-Einheiten 810(1) bis 810(n) (allgemein: Gate-Einheit 810),
eine Überwachungsschaltung 820 und
eine Dämpfungsschaltung 830.
Jede Gate-Einheit 810 steuert die Leistungsabgabe an eine
zugehörige
Einheit 724' in
der Pipeline 720. Zum Beispiel kann die Gate-Einheit 810 eine
Clock-Gating-Schaltung sein, welche ein Taktsignal zu der Einheit 724' koppelt oder
von dieser entkoppelt, je nachdem, ob der Dienst der Einheit 724 benutzt wird,
um einen Befehl aktuell in dem Pipelinezustand (den Pipelinezuständen) zu implementieren,
in welchem die Einheit 724' betrieben
wird, oder nicht. In 8A ist außerdem eine Pipeline-Steuerschaltung 850 gezeigt,
die den Gate-Einheiten 810 anzeigt, welche Einheiten 724' bei den aktuell
ausgeführten Befehlen
aktiv sind.
-
Für die offenbarte
Ausführungsform
der CCU 730 liefert die Gate-Einheit 810 ein Signal
an die Überwachungsschaltung 820,
um anzuzeigen, ob ihre zugehörige
Einheit 724' aktiv
ist. Das Signal kann ein Aktivitätszustand
der Einheit 724' sein,
der gesetzt ist, wenn die Einheit 724' „angeschaltet" ist, und nicht gesetzt
ist, wenn die Einheit 724 „ausgeschaltet" ist. Ein typischer
Prozessor kann 10 bis 20 Gate-Einheiten 810 umfassen, um
die Leistungsabgabe zu 10 bis 20 Einheiten 724' zu steuern.
Alle Einheiten können
auf Stromänderungen überwacht
werden, oder es können
Untermengen der Einheiten überwacht
werden. Beispielsweise können
nur jene Einheiten, z. B. 724', überwacht werden, die viel Strom
verbrauchen. Wie vorhergehend bemerkt, können mehrere CCUs 730 eingesetzt
werden, um mehrere Einheiten oder Gruppen von Einheiten zu überwachen.
-
Die Überwachungsschaltung 820 sammelt Signale
von den Gate-Einheiten 810 über ein Prüffenster auf und schätzt die
von dem Prozessor 710 gesehene Spannung aufgrund der aufgesammelten Signale
ab. Die offenbarte Ausführungsform
der Überwachungsschaltung 820 umfaßt eine
Stromberechnungseinheit (ICU) 812, eine Strom-Spannung-Berechnungseinheit
(IVCU) 814 und eine Schwellenkomperatoreinheit (TCU) 816.
Wie nachfolgend im größeren Detail
beschrieben wird, stellt die ICU 812 eine Abschätzung des
verbrauchten Stroms in aufeinanderfolgenden Taktzyklen zur Verfügung. Die
IVCU 814 wendet einen Filteralgorithmus auf die abgeschätzten Ströme an, um
eine Abschätzung
der Spannung zu erzeugen, die von der Einrichtung, z. B. dem Prozessor 710,
gesehen wird. Die TCU 816 vergleicht die abgeschätzte Spannung
mit einer oder mehreren Schwellen, und die Dämpfungsschaltung 830 paßt das Aktivitätsniveau
des Prozessors 710 an, wenn dies durch den Vergleich angezeigt
ist.
-
Bei
der offenbarten Ausführungsform
der CCU 730 umfaßt
die ICU 812 Gewichtungseinheiten 814(1) bis 814(n) (allgemein:
Gewichtungseinheiten 814) und einen Addierer 822, 826.
Wenn vorhanden, liefert jede Gewichtungseinheit 814 einen
ersten oder einen zweiten Wert zu dem Addierer 822 je nachdem, ob
der Aktivitätszustand,
der von einer Gating-Schaltung 810 angezeigt wird, für seine
zugehörige
Einheit 724' jeweils
aktiv oder inaktiv ist. Der erste Wert stellt den von der Einheit 724' gezogenen Strom
dar, wenn diese nicht aktiv ist, und der zweite Werte stellt den von
der Einheit 724' gezogene
Strom dar, wenn diese aktiviert ist. Der Addierer 822 summiert
die Werte, die von den Gewichtungseinheiten 814 geliefert
werden, und gibt die Summe als eine Abschätzung der Strompulse aus, die
in jedem folgenden Taktzyklus von den überwachten Einheiten 724' des Prozessors 710 gezogen
wird. Der Addierer 822 und mögliche Gewichtungseinheiten 814 können vermieden
werden, wenn die CCU 730 eine einzelne Einheit 724' steuert. Außerdem kann
auf die Gewichtungseinheiten 814 verzichtet werden, wenn
die von den überwachten
Einheiten 724' gezogenen
Ströme
in etwa vergleichbar sind.
-
Die
IVCU 814 wendet einen Filteralgorithmus auf einen Strompuls
an, der von der ICU 814 zur Verfügung gestellt wird, um eine
Abschätzung
der von dem Prozessor 710 gesehenen Spannung zu erzeugen,
und die TCU 816 vergleicht die abgeschätzte Spannung mit einem oder
mehreren Schwellenwerten. Wenn die abgeschätzte Spannung den Schwellenwert
(die Schwellenwerte) überschreitet, paßt die Dämpfungsschaltung 830 das
Aktivitätsniveau
des Prozessors 710 an, um dem Überschreiten der Schwelle entgegenzuwirken.
-
Bei
einer Ausführungsform
der Überwachungsschaltung 820 zeigt
ein abgeschätzter
Spannungswert, der unter eine untere Spannungsschwelle fällt, an,
daß der
Prozessor 710 mehr Strom ziehen kann, als das Energieversorgungsnetzwerk
liefern kann, wenn es innerhalb eines erlaubten Spannungsbereichs
bleibt. Unter diesen Umständen
kann die Dämpfungsschaltung 830 einige
Einheiten deaktivieren, die andernfalls aktiviert worden wären. Zum
Beispiel kann die Dämpfungsschaltung 830 verursachen,
daß eine
Abrufeinheit (nicht gezeigt) in dem Prozessor 710 Leeranweisungen
(NOPs) in die Pipeline 720 eingibt. NOPs sind im wesentlichen
Leerbefehle, welche die Aktivierung, wenn überhaupt, von wenigen Einheiten
erfordern. Unter diesen Umständen
nimmt die Performance ab, da produktive Befehle verzögert werden,
während
die NOPs (nicht produktive Befehle) durch die Pipeline 720 laufen.
Die Leistungsaufnahme wird ebenfalls reduziert, da die NOPs, wenn überhaupt,
nur wenige Einheiten aktivieren.
-
Andererseits
kann die abgeschätzte
Spannung eine obere Spannungsschwelle überschreiten, wenn der Prozessor 710 unterbeschäftigt ist
und nur wenige Einheiten aktiviert sind. In diesem Fall kann die
Dämpfungsschaltung 830 Einheiten 724' aktivieren,
z. B. einen Antriebsstrom zu diesen liefern, die andernfalls von
Befehlen, die aktuell in der Pipeline 720 sind, nicht beansprucht
werden. Zum Beispiel kann sie damit fortfahren, Taktsignale zu unbenutzten
Einheiten 724' zu
liefern, wodurch ein Laden und Entladen ihrer Schaltungen hervorgeru fen
wird, obgleich entsprechende Befehle nicht vorhanden sind. Dies
erhöht
die Leistung, die von dem Prozessor 710 verbraucht wird,
gegenüber
derjenigen, die für
die aktuell ausgeführten
Befehle notwendig ist. Dies hat jedoch keine direkte Auswirkung
auf die Prozessorperformance.
-
8B ist
ein Blockdiagramm einer Ausführungsform
einer IVCU 814, die zur Implementierung des Algorithmus
zur Spannungsabschätzung
mit gewichteten Summen (FIR), wie oben beschrieben, geeignet ist.
In einer Ausführungsform
der TCU 816 ist ebenfalls gezeigt. Die offenbarte Ausführungsform der
IVCU 814 umfaßt
ein n-Eingangsschieberegister 824, und ein Addierer 826 empfängt die
Eingangssignale durch n Gewichtungseinheiten 850(0) bis 850(n – 1) (allgemein:
Gewichtungseinheiten 850). Das Schieberegister 824 speichert
Stromamplituden (A0 bis –An-1)
für n aufeinanderfolgende
Taktzyklen an seinen Eingängen.
Die Gewichtungseinheiten 850(0) bis 850(n – 1) skalieren
jeweils ihre Eingange (A0 bis –An-1) von dem Schieberegister 824 proportional
zu den Amplituden der entsprechenden Intervalle einer Impulsantwort
für das
betreffende Energieversorgungssystem. Die offenbarte Ausführungsform
des Addierers 826 führt
die gewichtete Summe der Gleichung 1 aus. Das heißt, der
Addierer 826 faltet effektiv die n Aktivitätszustände mit
der Impulsantwort des Energieversorgungsnetzwerks, das die Energieversorgung 780 und
den Prozessor 710 umfaßt.
-
Die
Ausgabe des Addierers 826 stellt die abgeschätzten Spannungsantworten
VE des Energieversorgungsnetzwerks 784 zu
dem aktuellen Aktivitätsniveau
des Prozessors 710 dar. In der 8B wird
VE an die Komparatoren 860(a) und 860(b) des Schwellenkomparators 816 zum
Vergleichen mit einer oberen bzw. einer unteren Spannungsschwelle abgegeben.
Der Komparator 860(b) ermittelt, ob VE unter
die untere Spannungsschwelle fällt,
und signalisiert, falls dies der Fall ist, der Dämpfungsschaltung 830,
die Stromaufnahme zu reduzieren. Die Stromaufnahme kann direkt durch
Ausschalten des Takts, durch Reduzieren der Befehlsaufnahme- oder ausgaberaten
oder durch Starten anderer stromverbrauchender Maßnahmen
reduziert werden.
-
Der
Komparator 860(a) ermittelt, ob VE die obere
Spannungsschwelle überschreitet,
und signalisiert der Dämpfungsschaltung,
den Stromverbrauch zu erhöhen
(oder ihn wenigstens auf seinem aktuellen Niveau zu halten). Zum
Beispiel kann die Dämpfungsschaltung
die Stromaufnahme durch Betreiben von Einheiten erhöhen, die
andernfalls durch das Clock-Gate aus geschaltet wären, oder sie kann die Leistung
erhalten, indem sie das Abschneiden weiterer Einheiten durch das
Glock-Gating verhindert.
-
Zwischen
der oberen und unteren Schwelle wird der Einrichtung, z. B. dem
Prozessor 710, ermöglicht,
normal zu laufen. Die Spannungsberechnung, der Schwellenwertvergleich
und die Stromanpassung (falls notwendig) können in jedem Takt oder alle
m Takte ausgeführt
werden, abhängig
von der benötigten
Granularität,
den verfügbaren
Rechnerressourcen und anderen Faktoren. Eine Echtzeitsteuerung der
Energieversorgungsspannung wird unter der Voraussetzung ermöglicht,
daß die
benötigten
Rechnerressourcen, um VE mit einer erforderlichen
Geschwindigkeit abzuschätzen,
auf dem Prozessorchip aufgenommen werden können.
-
8C ist
ein Blockdiagramm einer Ausführungsform
der IVCU
814, die geeignet ist, um ein IRR- oder ein rekursives
Filter einzusetzen. IIR-Filter verwenden vorher berechnete Filterausgaben
(z. B. frühere
Spannungsabschätzungen
vom Addierer
826) zusätzlich
zu dem Eingabesignal (z. B. Strömen aus
der ICU
816), um eine neue Filterausgabe (z. B. aktuelle
Spannungsabschätzungen)
zu bestimmen. IIR-Filter werden im größeren Detail z. B. bei Steven W.
Smith, „The
Scientists and Engineers Guide to Digital Signal Processing", California Technical
Publishing ISBN 0-966176-3-3 (1997), beschrieben. Im Allgemeinen
bestimmt ein IIR- oder
ein rekursives Filter einen Ausgang aus einer Linearkombination
von Eingangssignalen und vorher berechneten Ausgaben, wobei Letztere
das rekursive Element liefern. Eine IIR-Filterfunktion kann beispielsweise folgendermaßen dargestellt
werden:
-
Dabei
stellen a0 bis ap die
Koeffizienten dar, die zu p Stromamplituden (Ai)
gehören,
und b0 bis bm stellen
die Koeffizienten dar, die zu den m früheren Spannungsabschätzungen
(Vi) gehören.
Wenn die letzten p Stromwerte verfolgt werden, sind im Allgemeinen
p – 1
abgeschätzte
Spannungen zum Verfolgen erhältlich
und m = p – 1.
Die Koeffizienten {ai} und {bi}
können
durch Anpassen einer Kurve an die Impulsantwort oder die Sprungantwort
(2) des Energieversorgungsnetzwerks bestimmt werden.
-
Die
offenbarte Ausführungsform
der IVCU 814' umaßt ein zweites
Schieberegister 826 und Gewichtungseinheiten 854(1) bis 854(p – 1) zusätzlich zu
dem p-Eingangschieberegister 824, dem Addierer 826 und
den Gewichtungseinheiten 850(1) bis 850(p). Das
Schieberegister 824 speichert eine Abfolge von p Stromamplituden,
und das Schieberegister 828 speichert eine Abfolge der
abhängigen
p – 1 abgeschätzten Spannungen.
Letztere werden zu dem Addierer 826 zurückgegeben, um die rekursive Eingabe
für die
IVCU 814 zur Verfügung
zu stellen.
-
Die
IVCU 814' ist
zur Filterung von Stromsignalen geeignet, um eine Abschätzung der
von dem Prozessor 710 gesehenen Spannung für den Fall
zu liefern, bei dem die Sprungfunktion 210 oder die Impulsantwort 230 von
einem abklingenden sinusförmigen
Beitrag dominiert wird. Verschiedene IVCUs 814 können eingesetzt
werden, um Spannungsabschätzungen
für die
Fälle zu
erzeugen, in denen mehrer abklingende sinusförmige Beträge in der Antwort des Energieversorgungsnetzwerks
vorhanden sind. Jeder sinusförmige
Beitrag kann durch seinen eigenen Satz von Koeffizienten {ai} und {bi} beschrieben
werden. Die 8D zeigt ein IVCU 814'', bei dem die Ergebnisse von k
Filtern parallel kombiniert werden, um eine Abschätzung der
von dem Prozessor 710 gesehenen Spannung zu liefern. 8E zeigt
ein IVCU 814'', bei dem die
Ergebnisse von k Filtern in Serie kombiniert werden, um eine Abschätzung der
von dem Prozessor 710 gesehene Spannung zu liefern. Beide
Konfigurationen können
benutzt werden, um die IIR-Filterergebnisse für mehrere Resonanzquellen zu
kombinieren.
-
Wie
in der 8A gezeigt, umfaßt die CCU 730 eine
Rückkopplungsschleife,
da die Aktion des Ein- oder Ausschaltens der Einheiten 724' auf den berechneten
Versorgungsstrom und die Spannung Einfluß nehmen. Diese nehmen umgekehrt
Einfluß auf
das nachfolgende Verhalten der CCU 730. Für IIR-Filter
(8C bis 8E) stellten
die rekursiven Komponenten eine zusätzliche Rückkopplungsschleife innerhalb
des IVCU 824 zur Verfügung.
-
Simulationen
der Effekte der CCU 730 auf den Strom und die Energieversorgungsspannung sind
in den 9 bzw. 10 gezeigt.
Im Vergleich zu den 5 und 6 führt die
di/dt-Steuerung, die von der CCU 730 zur Verfügung gestellt
wird, scharfe Eintaktspikes sowohl zu dem maximalen als auch zu dem
minimalen Stromniveau hinzu. Die Spikes sind ein Resultat der CCU 730,
welche den Takt an- oder ausschaltet in Abhängigkeit zu der berechneten Spannung,
die außerhalb
vorbestimmter Grenzen fällt.
Trotz der Spikes ist die Peak-to-Peak-Variation der Energieversorgungsspannung
geringer als im nicht gesteuerten Fall, weil die CCU 730 durch
ihre Kosntruktion den Strom so reguliert, daß angeregte RLC-Resonanzen
in dem Energieverteilungsnetzwerk vermieden werden.
-
Die
Ergebnisse der 9 und 10 wurden
unter Verwendung eines FIR-Algorithmus simuliert, der auf den ganzen
Bereich der Impulsantwort 230 (2) angewandt
wurde, der sich über
mehr als 300 Taktzyklen erstreckt. Für die CCU 730 würde das
bedeuten, daß ein
Schieberegister 824, Gewichte 850 und ein Addierer 826 in
entsprechender Dimensionierung (n > 300)
verwendet wird. Selbst bei den Schaltungsdichten, die heutzutage
in Hochleistungsprozessoren verfügbar
sind, ist es nicht praktikabel, eine Überwachungsschaltung 820 zu
implementieren, die in der Lage ist, eine Impulsantwort mit Strompulsen
von mehr als 300 Taktintervallen in einem Taktzyklus oder selbst
in mehreren Taktzyklen zu falten.
-
Simulationsergebnisse
zeigen, daß ein
Intervall mit 300 Taktzyklen der 1 nicht
notwendig ist, um Ergebnisse zu liefern, die brauchbar sind. Zum Beispiel
findet in der 2 die größte Änderung der Impulsantwort 230,
beispielsweise das lokale Minimum 240, etwa 25 Taktzyklen
nach der Initiierung des Strompulses statt. Dadurch ist nahegelegt,
daß die
CCU 730 den Strompuls und die Impulsantwort über ein
kürzeres
Intervall falten kann und immer noch eine brauchbare Approximation
der Spannungsantwort des Energieversorgungsnetzwerks liefert. Wie
nachfolgend detaillierter beschrieben wird, kann die Überwachungsschaltung 826 mit
einem so klein n wie 25 oder 30 realisiert werden.
-
Eine
Ausführungsform
der vorliegenden Erfindung ermöglicht
den Kompromiß zwischen
Performance und Spannungsstabilität für verschiedene Faltungsintervalle
zu simulieren. Verschiedene Performanceniveaus können durch Verändern der
Spannungsschwellen geprüft
werden, bei denen die CCU 730 den di/dt-Dämpfungsvorgang
triggert. Wenn z. B. die untere Spannungsgrenze reduziert wird,
bei der die CCU 730 die Aktivität-Verringerungsvorgänge einleitet,
z. B. das Einfügen
von NOPs, arbeitet der Prozessor 710 weiterhin mit voller
Performance über einen
weiten Spannungsbereich, jedoch auf Kosten darauf, daß seine
Schaltung größeren Spannungsvariationen
ausgesetzt wird. Durch Anheben der unteren Spannungsschwelle, bei
der die CCU 730 die Aktivitäts-Verringerungsvorgänge einleitet,
verschmälert
sich der Spannungsbereich, über
den es dem Prozessor 710 ermöglicht wird, bei voller Performance
zu arbeiten. Insgesamt wird die Performance reduziert, der Prozessor 710 sieht
jedoch eine stabilere Versorgungsspannung.
-
11 stellt
Simulationen einer peak-to-peak-Spannungsänderung eines Energieversorgungsnetzwerks
für ein
System 700 gegenüber
der Performance für
drei verschiedene Inter valle dar. Es ist aus der 11 ersichtlich,
daß es
einen geringen Unterschied in den Ergebnissen gibt, die durch die
Simulation für
Intervalle mit 25 (Kurve 1110), 43 (Kurve 1120) und 350 (Kurve 1130)
Taktzyklen erzeugt wurden. In jedem Fall können die peak-to-peak-Spannungsänderungen
auf etwa 1 mV begrenzt werden bei einer Performanceeinbuße von weniger
als 5%.
-
12 stellt
Simulationen für peak-to-peak-Spannungsänderungen
eines Energieversorgungsnetzwerks für das System 700 gegenüber der
abgegebenen Leistung für
drei verschiedene Faltungsintervalle dar. Die Ergebnisse sind für die drei
Intervalle vergleichbar, was bedeutet, daß so wenig wie 25 Intervalle
ausreichend sind, um eine praktikable di/dt-Steuerung zur Verfügung zu
stellen.
-
Die
Latenz der CCU 730 kann einen erheblichen Einfluß auf ihre
Effizienz zum Steuern der Spannungsänderungen haben, die mit di/dt-Schwingungen
verbunden sind. Zum Beispiels ist aus 2 erkennbar,
daß die
größeren Spannungsänderungen in
der Sprung- und Impulsantwort 210 bzw. 230 innerhalb
der ersten paar Intervalle einer Stromänderung auftreten. Demgemäß ist eine
effiziente CCU 730 so konstruiert, daß sie mit einer geringen Latenz,
z. B. 1 oder 2 Zyklen, antwortet. Die 13 und 14 stellten die Abhängigkeit der peak-to-peak-Spannungsänderung
auf die Performance und die Leistung für CCUs mit einer Latenz von
1 bis 4 Taktzyklen dar. Aus diesen Figuren wird deutlich, daß eine Menge
der Vorteile der di/dt-Steuerung bei Latenzen von mehr als zwei
Taktzyklen verschwinden.
-
Für die offenbarte
Ausführungsform
der CCU 730 sind die Hauptquellen der Latenz die ICU 812 und
die IVCU 814. Wie vorhergehend für Filter auf FIR-Basis gezeigt,
hilft das Verringern der Größe der überwachten
Intervalle. In dieser Hinsicht erscheint es wahrscheinlich, daß Filter,
die auf IIR basieren, bei einer gegebenen Latenz bessere Ergebnisse
liefern. Simulationen haben beispielsweise gezeigt, daß annehmbare
Abschätzungen
der Spannung, die von der Einrichtung gesehen wird, unter Verwendung
von IIR-Filtern zweiter Ordnung erzielt werden können. Ein Filter zweiter Ordnung
verwendet lediglich drei Stromkoeffizienten (a0,
a1, a2) und zwei
Spannungskoeffizienten (b0, b1),
was sehr vorteilhaft im Vergleich zu den 25 Koeffizienten ist, die
bei dem FIR-Filter 814' verwendet
werden.
-
Es
können
auch andere Maßnahmen
verwendet werden, um die Latenz zu verringern. Zum Beispiel kann
die Stromaufnahme für
die Blöcke
weiter hinten in der Ausführungspipeline
zu einem früheren
Zeitpunkt vorausberechnet werden. Falls notwendig, können zwei
Berechnungen an einem früheren
Zustand vorgenommen werden und danach eine ausgewählt werden,
abhängig
davon, ob die relevante Einheit aktiv oder inaktiv war. Außerdem braucht für die offenbarte
Ausführungsform
der Überwachungsschaltung 820 nur
das erste Elemente der Impulsantwort mit einer Latenz von einem
Takt berechnet zu werden. Das zweite Element kann zwei Taktzyklen
in Anspruch nehmen, das dritte Element drei Takte usw.
-
Latenzbeschränkungen
zeigen außerdem, daß eine einzelne
zentrale CCU für
z. B. einen Prozessor nicht die gleichen Vorteile liefert, wie das Steuern
von di/dt in einer verteilten/lokalen Weise. Zum Beispiel kann eine
lokale CCU entlang der (oder den) Einheiten gebildet werden, deren
Aktivität
sie kontrolliert (kontrollieren), um schneller auf Stromänderungen
in der (oder den) zugeordneten Einheiten zu antworten. Eine zentrale
CCU muß auf
Daten von Einheiten warten, die über
den Chip verteilt sind. Wenn lokale CCUs mit verschiedenen Pipelines
in einem Prozessor verknüpft
sind, wird eine Kommunikation zwischen den Pipelines notwendig,
um sicherzustellen, daß keine
Daten, die zwischen den Pipelines ausgetauscht werden, verloren
gehen. Beispielsweise müssen
Queues zwischen den Pipelines hinzugefügt werden, um die Daten von
einer Pipeline, die für
eine andere Pipeline bestimmt sind, die momentan von ihrer CCU blockiert
ist, zu puffern.
-
Hiermit
wurde ein Mechanismus zum Simulieren der von einer Einrichtung gesehenen
Spannung in einem Energieversorgungsnetzwerk zur Verfügung gestellt.
Der Mechanismus kann benutzt werden, um die Wirksamkeit verschiedener
Strategien zum Dampfen von di/dt-induzierten
Veränderungen in
dieser Spannung zu studieren. In einer Ausführungsform der Erfindung wird
eine Impulsantwort für das
Energieversorgungsnetzwerk bestimmt, und ein Aktivitätsprofil
für die
Einrichtung, die von dem Netzwerk mit Leistung versorgt wird, wird
bei dem Vorgang überwacht.
Das Aktivitätsprofil
wird anschließend
mit der Impulsantwort gefaltet, um ein Profil der Spannungen an
der Einrichtung zur Verfügung
zu stellen.
-
Diese
und andere Ausführungsformen,
die vorgestellt wurden, um verschiedene Merkmale der vorliegenden
Erfindung zu darzustellen, können
zum Simulieren elektronischer Systeme, wie Computer und anderen
auf Prozessoren basierenden Systeme, die mit einem Clock-Gating funktionieren
oder aus anderen Gründen
erheblichen di/dt-Veränderungen unterworfen
sind, eingesetzt werden.