Online
Aktuell 1 Gast und 0 registrierte Benutzer online.
Anmeldung
|
|
Autor |
Nachricht |
rgerhards
|
|
Titel: CPU Energieeffizienz: single- vs. multicore
Verfasst am: 18.02.2009, 11:37 Uhr
|
|
Anmeldung: 25. Sep 2006
Beiträge: 688
|
|
Hallo beisammen,
ich habe heute einen interessanten Artikel in der WirtschaftsWoche -
sicherlich kein Informatik-Fachblatt - gelesen, in dem es um die
Energieaufnahme der IT geht[1]. Die Kernaussage ist, dass der
Energieverbrauch der IT beängstigende Ausmasse annimmt, und man etwas
dagegen unternehmen muss (und das auch tut).
Ich kann weitgehend mit dem Artikel übereinstimmen, allerdings ist auf Seite
3 eine Aussage, die mich zumindest etwas verwundert.
Grundsätzlich ist für den Betrieb eines Rechners ja Strom erforderlich.
Soweit ich gelesen haben, wird Strom bei der heutigen CMOS-Technologie
allerdings nur dann verbraucht, wenn auch tatsächlich Schaltvorgänge
vorgenommen werden. Ein Schaltnetz, das nicht schaltet, verbraucht dann auch
keinen Strom.
Je nach Implementierung der Schaltnetze ergeben sich somit nicht nur
unterschiedliche Geschwindigkeiten, sondern eben auch unterschiedliche
Stromverbräuche. So ist der Carry Chain Adder zwar langsamer als der
Conditional Sum Adder (CSA), benötigt aber auch weniger Strom. Der erhöhte
Stromverbrauch des CSA rüht ja gerade aus der zusätzlichen Parallelität der
Verarbeitung, bei der Schaltvorgänge spekulativ ausgeführt werden und ein
Teil der Ergebnisse eben verworfen (was ja nun wieder die
Geschwindigkeitssteigerung bewirkt...).
Ich betrachte nun ein Programm, das eine Aufgabe in endlicher Zeit mit einer
endlichen Anzahl n Instruktionen erledigt. Weiter werde des Programm auf
zwei Maschinen ausgeführt, deren Schaltung und interne Verarbeitung
identisch sind. Maschine M1 wird jedoch mit 1 GHz getaktet, M2 mit 2 GHz. Um
das Szenario zu vereinfachen, gehe ich davon aus, dass Hauptspeicherzugriffe
ohne Wartezeiten abgewickelt werden können, und auch ansonsten die Anzahl der
ausgeführten Instruktionen, und die je Instruktion erforderlichen Taktzyklen
identisch sind.
Nach meinem Verständnis wäre dann die zur Ausführung des Programmes auf M1
erforderliche Zeit doppelt so hoch, wie bei Ausführung auf M2 (doppelte
Taktrate). Ich hätte allerdings vermutet, dass der Energiebedarf in beiden
Fällen identisch ist.
Wenn ich den Artikel richtig deute, dann wird hier aber impliziert, dass M2
einen höheren Energiebedarf hat, und zwar offensichtlich aufgrund der
höheren Taktrate.
Explizit ist im Artikel erwähnt, dass durch die Ausführung eines Programmes
auf mehreren Kernen der Energiebedarf sinkt:
"Unsere aktuellen Chips können 32 Programmschritte parallel erledigen, bald
schon werden es Hunderte von Parallelprozessen sein - bei weit geringerem
Stromverbrauch als heute."
Das erscheint mir allerdings unlogisch. Bestenfalls könnte doch ein
Programm, das auf mehreren Kernen läuft, gleich viele Instruktionen
benötigen wie Eines, das lediglich auf einem einzigen Kern läuft. Da bei
mehreren Kernen idR jedoch Synchronisationsmechanismen erforderlich werden,
dürfte in fast allen Fällen die Anzahl der auszuführenen Instruktionen
wachsen, wenn nicht sogar signifikant wachsen. Keinesfalls wird sie aber
doch, bei gleicher Architektur, sinken.
Zur Sicherheit: Mir ist natürlich klar, das man in neueren Rechnern durch
geändertes Design den Stromverbrauch reduzieren kann. Mir geht es aber im
Moment nur darum, ob sich durch höhere Parallelisierung Energie einsparen
kann. Daher betrachte ich eine Maschine unter ansonsten unveränderten
Bedingungen.
Zurück zu meinem obigen Beispiel. Nehmen wir an, mein Programm liesse sich
ohne weiteren Aufwand in zwei Teilprogramm mit je n/2 Instruktionen
aufteilen (z.B. eine Berechnung auf zwei Partitionen einer Gesamtdatenmenge,
wie sie sich gerade in den Naturwissenschaften immer wieder findet). Wenn
ich dieses Programm nun auf einem Dualkern System aus zwei M1 Kernen (1GHz,
unrealistisch vollkommen frei von Overhead) ausführe, dann würde ich
folgendes erwarten: Das Programm müsste in exakt der gleichen Zeit
ausgeführt werden, wie das entsprechende seuquentielle Programm auf dem 2GHz
M2 System. Weiter müsste es aber auch den identischen Stromverbrauch
aufweisen, da ja die gleiche Anzahl gleichartiger Schaltvorgänge ausgeführt
wird.
Im Artikel wird nun aber behauptet, dass das Dualkern-System einen
geringeren Stromverbrauch habe als des doppelt so schnelle
Einzelkern-System.
Mir leuchtet das nicht so ganz ein. Hat der Artikelautor hier zu sehr
vereinfacht (so nach dem Motto: "die parallelen Systeme sind intern weiter
optimiert, aber das sage ich nicht") oder übersehe ich noch Auswirkungen
der Tatkrate auf den Energieverbrauch?
Viele Grüße,
Rainer Gerhards
[1] - http://www.wiwo.de/technik/gezielte-kue ... ter-230086 |
|
|
|
|
|
rgerhards
|
|
Titel: CPU Energieeffizienz: single- vs. multicore
Verfasst am: 18.02.2009, 11:38 Uhr
|
|
Anmeldung: 25. Sep 2006
Beiträge: 688
|
|
|
|
|
rgerhards
|
|
Titel: CPU Energieeffizienz: single- vs. multicore
Verfasst am: 18.02.2009, 17:09 Uhr
|
|
Anmeldung: 25. Sep 2006
Beiträge: 688
|
|
Und weitere Überlegungen, eine Antwort auf dankenswerterweise von Herrn Prof. Keller (FU Hagen) gegebene Anregungen:
vielen Dank, Herr Prof. Keller, für den Hinweis. Er hat mich, denke ich, auf die richtige Spur gebracht. Ich möchte mein Ergebnis kurz darlegen, dazu ordne ich Zitate aus Ihrer Mail ein wenig um:
""Prof. Dr. Jörg Keller"" <joerg.keller@fernuni-hagen.de> wrote in message news:gngras$41h$1@tamarack.fernuni-hagen.de...
...
> z.B. hat ein multithreaded prozessor weiterhin einen gleich großen L2
> Cache wie vorher. Der L2 cache verbraucht also pro Zeiteinheit genauso
> viel Strom, kann man also (selbst bei gleicher Taktrate) die Anzahl der
> Takte reduzieren, spart man im Cache Energie, selbst wenn im Proz selbst
> mehr verbraucht wird.
In der Tat. Ich hatte mich in meinem Szenario bemüht, von ansonsten möglichst identischen Vorbedingungen auszugehen. Aber natürlich wird man das bei Neuentwicklungen auch nicht machen. In [1] habe ich gefunden, dass ein schneller Rechner, der die gleichen Arbeiten ausführt wie ein langsamerer, tendentiell energieeffizienter ist. Das deckt sich in der Tat ja eigentlich auch mit der Erfahrung aus dem "richtigen Leben" - um eine gegebene Anzahl Personen > 10 zu transportieren, ist ein Bus sicherlich immer energieeffizienter als ein PKW... Allerdings muss die Kapazität natürlich auch ausgenutzt werden, daher wird man nur eine einzelne Person (auf gegebener Strecke) wohl auch sinnvoller im PKW transportieren.
Mit dieser Analogie erkenne ich, dass schnelle Rechner immer dann effizient sind, wenn hinreichend umfangreiche Berechnungen durchzuführen sind (so verstehe ich auch [1], in dem ja feine Unterscheidungen nach use cases getroffen werden).
Die nachfolgende Auskunft hat aber den Kern meiner Frage noch besser getroffen. Mittlerweile kann ich die Überlegung auch genauer formulieren: es ging mir letztlich darum, ob ich durch Absenkung der Taktfrequenz tatsächlich Energie sparen kann. Nun schreiben Sie, Herr Prof Keller:
> der dynamische Energieverbrauch eines Chips berechnet sich als C*V^2*f wobei
> f = Frequenz der Schaltungen,
> V = Spannung
> C = geschaltete Kapazität
>
> d.h. die verbrauchte Energie hängt linear von der Frequenz, aber auch
> von der Kapazität, d.h. vom Aufbau des Chips ab: wieviele Gatter welcher
> Größe schalten.
Insbesondere steht da aber auch, dass die Spannung eben quadratisch in die Rechnung eingeht, die anderen Faktoren demgegenüber nur linear. Nun habe ich ein wenig gezielter gesucht, und dabei [2] entdeckt. In Abschnitt 2.1 wird dort noch einmal sehr schön die Strukture des Energieverbrauchs beschrieben, in Abschnitt 3 dann gezielt auf Optimierungen eingegangen. Auch in [1] wurde dabei schon die Beziehung zwischen Taktrate (f) und Spannung angesprochen. Wikipedia [3] hält hierzu ein knappes Zitat bereit: "Reducing the voltage means that circuits switch slower, reducing the maximum frequency at which that circuit can run." (genauer dargelegt in [3])
Offensichtlich besteht also eine enge Beziehung zwischen Taktrate (bzw. den Latenzzeiten des Schaltnetzes) sowie der Versorgungsspannung. Eine Spannungsreduzierung erhöht die Latenzzeiten, was sich (ab einem gewissen Mass) in einer Reduzierung der Taktrate auswirken muss (sonst kann ein sicherer Betrieb nicht mehr garantiert werden). Da aber die Spannung quadratisch in die Verbrauchsgleichung eingeht, die Taktrate demgegenüber aber nur linear, gibt es wohl einen Punkt, bei dem eine relativ starke Verbrauchssenkung nur mit einer relativ geringen Leistungseinbusse erkauft werden muss.
Ich gehe nun von einem multiprocessingfähigen Einkernprozessors aus. In einem System A ist lediglich ein solcher Prozessor (socket) eingebaut. In einem System B sind zwei dieser Prozessoren verbaut. Ich ignoriere hier den zusätzlichen Synchronisationsaufwand und gehe davon aus, dass tatsächlich doppelte Rechenleistung zur Verfügung steht. Mein Ziel liegt nun aber nicht in der Erhöhung der Geschwindigkeit, sondern in der Reduktion des Stromverbrauchs für einen geforderte Geschwindigkeit. Die notwendige Rechenleistung ergibt sich bei einer Taktfrequenz und einer Spannung auf System A. Auf System B benötige ich nun aber nur die Taktfrequenz (da 2 Prozessoren). Da die Taktfrequenz geringer ist, sind aber auch längere Delays möglich und ich kann daher die Versorgungsspannung auf Sytem B absenken. Wenn nun das Quadrat der Differenz zwischen und ist, dann müsste ich nach der Verbrauchsgleichung Strom einsparen (wobei ich hier sicherlich fein mit den *Einheiten* aufpassen muss). (Ohne Berücksichtigung der richtigen Einheiten) kann ich somit meinem Verständnis nach sagen: Wenn ist, dann ergibt sich eine Stromersparnis. Natürlich ist das eine "Milchmädchenrechnung", da ich den "Overhead" aller anderen Komponenten vernachlässige.
Mir geht es hier aber um ein Prinzip: ich meine mit dieser Überlegung belegen zu können, dass in der Tat ein Mehrkernprozessor (korrekt von der Software genutzt), bei gleicher Rechenleistung eine geringer Energieaufnahme besitzen kann. Dies findet seine Begründung in der CMOS-Verbrauchsgleichung, und der möglichen Absenkung der Versorgungsspannung durch Nutzung einer geringeren Taktfrequenz. Ohne Absenkung der Versorgungspannung kann jedoch keinesfalls eine Energieersparnis - bei gleicher Architektur - erzielt werden, da die restlichen Parameter lediglich linear in die Verbrauchsgleichung eingehen.
Leerlauf- und Kurzschlussströme habe ich hierbei natürlich ebenso wenig berücksichtigt, wie Fortschritte im Design. Von grossem praktischen Nutzen dürfte meine Überlegung also nicht sein. Aber, wie gesagt, mir geht es darum, das Prinzip zu verstehen.
Vielen Dank nochmals und beste Grüße,
Rainer Gerhards
[1] http://bwrc.eecs.berkeley.edu/Publicati ... icss95.pdf
[2] http://analog.postech.ac.kr/3.Class/1.C ... tha_95.pdf
[3] http://en.wikipedia.org/wiki/Dynamic_voltage_scaling |
|
|
|
|
|
|
|
|
|
|
|