c't 6/2016
S. 156
Know-how
Energiesparfunktionen

Die Kunst des Sparens

Energiesparfunktionen moderner Prozessoren

Trotz rund 1,7 Milliarden Transistoren kommt eine Quad-Core-CPU mit Intels aktueller Skylake-Architektur bei ruhendem Desktop mit weniger als einem Watt aus. Damit das ohne Einbußen bei der Performance klappt, nutzt der Prozessor fein abgestufte Energiesparmechanismen.

Ein geübter Zehnfingertipper erreicht in der Minute 300 und mehr Tastaturanschläge. Was für einen Menschen viel Konzentration erfordert, lässt einen modernen Prozessor nur müde lächeln. Bei 3 GHz Taktfrequenz absolviert eine CPU zwischen zwei Tastenanschlägen immer noch 600 Millionen Taktzyklen und langweilt sich ansonsten.

Leerlaufzeiten machen bei Desktop-PCs und Notebooks im Alltag rund 95 Prozent der Betriebszeit aus. Um die Energiebilanz zu verbessern, reduzieren Chiphersteller nicht mehr nur die Spitzenleistungsaufnahme, sondern konzentrieren sich vor allem auf den Energiebedarf während des Nichtstuns. Statt mit maximaler Taktfrequenz und Kernspannung Däumchen zu drehen, treten bei modernen Prozessoren ausgeklügelte Energiesparfunktionen in Aktion, die den Energiebedarf erheblich reduzieren.

Schlafzustände moderner Prozessoren

Schrittchenweise

Bei den CPU-Kernen klappt das inzwischen sehr gut. In Leerlaufphasen reduzieren sie von selbst Taktfrequenz und Spannung und schalten schrittweise Funktionseinheiten ab. Das passiert geordnet nach im ACPI-Standard (Advanced Configuration and Power Interface) festgelegten Energiesparzuständen, die auch als C-States bezeichnet werden. Führt ein CPU-Kern Berechnungen durch, befindet er sich im aktiven Zustand C0. Aber auch dabei sind Taktfrequenz und Spannung nicht unveränderlich, sondern die Prozessoren verweilen abhängig vom Arbeitspensum in unterschiedlichen Performance-Zuständen, den P-States. Diese Funktion heißt bei Intel Speedstep (EIST), bei AMD Cool’n’Quiet.

Core-i-Prozessoren der sechsten Generation können ihre Taktfrequenz in 100-MHz-Schritten zwischen 800 MHz und der höchsten Turbo-Frequenz variieren – beim schnellsten Modell Core i7-6700K sind das 4,2 GHz. Über den Wechsel zwischen diesen Stufen entscheidet in der Regel das Betriebssystem; nur bei den Turbo-Frequenzen hat der Prozessor das letzte Wort. Ausnahmen bilden die supersparsamen System-on-Chip-Modelle der Skylake-Architektur Core m und Core i3/i5/i7U mit SpeedShift-Technik, bei denen der Prozessor die Taktfrequenz selbstständig steuert (siehe c’t-Link).

Selbst wenn sich alle Kerne im tiefsten Performance-Zustand befinden, liegt die Leistungsaufnahme eines einzelnen Desktop-Prozessors nach unseren Messungen bei über 7 Watt. Hinzu kommen die Wandlerverluste auf dem Mainboard und im Netzteil sowie der Energiebedarf der übrigen Komponenten. Um die Leistungsaufnahme weiter zu drücken, wechseln arbeitslose CPU-Kerne deshalb in einen der tieferen Schlafzustände.

Dabei schaltet der Prozessor zunächst das Taktsignal von arbeitslosen CPU-Kernen ab (C1) und reduziert die Kernspannung noch weiter (C1E). Im C3-Zustand (Deep Sleep) werden darüber hinaus Level-1- und Level-2-Caches geleert und der Taktgeber abgeschaltet. Im Endzustand C6 (Deeper Power Down) gehen schließlich alle Lichter im CPU-Kern aus: L1- und L2-Caches sind ebenso vom Strom getrennt wie die Recheneinheiten. Die Zustände C7 und C8 unterscheiden sich beim einzelnen Kern nicht von C6, spielen aber bei den C-States des gesamten Chips (Package) eine Rolle.

Wach auf!

Damit der Prozessorkern bei neuen Arbeitsaufträgen nach dem Wiederaufwachen nahtlos weiterrechnen kann, legt er den kompletten Architekturzustand mit allen Registereinträgen in eigens dafür vorgesehenen SRAM-Speicherzellen ab. Static RAM hat gegenüber dem beim Arbeitsspeicher verwendeten DRAM den Vorteil, dass sein Inhalt nicht periodisch aufgefrischt werden muss.

Doch warum gibt es die zahlreichen Zwischenstufen – die Prozessorkerne könnten doch auch direkt aus dem C0 in den C8 wechseln? Das könnte die Rechenleistung mindern, weil das Aufwachen aus tiefen Schlafzuständen deutlich länger dauert und zudem mehr Energie kostet als aus niedrigen Energiesparmodi. Für den Wechsel zurück aus dem C3-Zustand benötigt ein CPU-Kern rund 50 Mikrosekunden, also mehr als das Zehntausendfache im Vergleich zum Wechsel aus C1. Um die L1- und L2-Caches zu füllen, müssen Daten aus dem Level-3-Cache beziehungsweise aus dem Arbeitsspeicher geladen werden. Bei noch tieferen Schlafzuständen verlängert sich die Aufwachzeit auf mehr als 250 Mikrosekunden.

Deshalb ist es in vielen Situationen effizienter, dass der Kern nicht ganz so tief schläft, wie er eigentlich könnte. Dies regelt die Funktion „C-State Auto-Demotion“. Dabei wertet die CPU aus, wie häufig sie zwischen welchen Schlafzuständen gewechselt hat. Gab es dabei innerhalb kurzer Zeit viele Wechsel zwischen C6 und C0, dann schaltet die CPU für die nächste Zeit erst mal nicht tiefer als in C3 oder C1 um. Verweilt der Kern wieder länger in den Schlafzuständen, stehen auch wieder die tieferen C-States zur Verfügung.

Drumherum

Im Leerlauf schluckte unser Pentium G4400 mit allen aktivierten C-States gerade einmal 0,4 Watt.

Bei modernen Quad-Core-Prozessoren nehmen die CPU-Kerne weniger als die Hälfte der Chipfläche ein. Um den Energiebedarf weiter zu senken, müssen folglich die sogenannten Uncore-Bestandteile wie Grafikeinheiten, System Agent mit PCI Express Root Hub, Display-Treiberstufen und Speicher-Controller sowie der von allen Komponenten gemeinsam genutzte Level-3-Cache gleichermaßen Sparfunktionen beherrschen.

Die GPU kann ebenso wie die CPU-Kerne ihre Taktfrequenz und damit die Leistungsaufnahme anhand der Auslastung steuern. Den größten Spareffekt bei der Prozessorgrafik erzielt jedoch der Render-Standby-Modus RC6. In Leerlaufzeiten, in denen sie kein neues Bild berechnet, fällt die Versorgungsspannung der GPU fast auf Null, was den Energiebedarf bei unserem Testsystem um 5 Watt reduzierte.

Wie bei einer Kette bestimmt allerdings auch hier das schwächste Glied, in welchen Schlafzustand der gesamte Prozessor wechseln kann. Um etwa in den Package-C-State C3 zu gelangen, müssen sich alle CPU-Kerne jeweils im C3- und die GPU im RC6-Zustand befinden. Erst dann schalten sich große Teile des System Agent ab und der Arbeitsspeicher wechselt in den Self-Refresh.

Im tieferen Schlafmodi C6 leert der Prozessor zusätzlich den Level-3-Cache und schaltet ihn ab. Alle CPU-Kerne sind dabei vom Strom getrennt. Im tiefsten Energiesparzustand C8 arbeitet schließlich nur noch die Display-Engine, sonst würde der Monitor nur noch Schwarz zeigen. Der gesamte Prozessor unseres Testrechners konsumierte in diesem Zustand lediglich 0,4 Watt. Mobile Skylake-Prozessoren der Serien Core i3/5/7-6000U beziehungsweise Core m3/5/7-6Y schaffen es inzwischen sogar bis in den C10. Dabei werden zusätzlich teilweise die Spannungswandler auf der Hauptplatine abgeschaltet.

Schon kleine Störungen können das komplexe Zusammenspiel bei den Package-C-States ins Wanken bringen. Funken ein zickiges USB-Gerät oder ein schlecht programmierter Treiber permanent die CPU an, verhindern sie, dass das Prozessor-Package in einen Schlafzustand wechseln kann. In der Praxis haben wir beispielsweise festgestellt, dass der Standard-AHCI-Treiber von Windows das SATA Link Power Management nicht beherrscht. Nach dem Installieren des RST-Treibers von Intel (Rapid Storage Technology) sank die Leerlaufleistungsaufnahme auf dem Testsystem um 3 Watt ab.

Damit ein Desktop-Rechner mit 10 Watt oder weniger auskommt, reicht es jedoch nicht aus, dass alle Energiesparfunktionen des Prozessors dank passender Treiber und optimaler BIOS-Einstellungen funktionieren. Solch eine geringe Leistungsaufnahme klappt nur, wenn Board und Netzteil mit effizienten Spannungswandlern ausgestattet sind. Zusatz-Chips für Legacy-Schnittstellen wie PCI sowie für weitere SATA-6G- und USB-3.1-Ports treiben den Energiebedarf ihres Rechners ebenfalls nach oben. Sparsame Boards, mit denen sich ein 10-Watt-PC bauen lässt, haben wir auf Seite 152 getestet. (chh@ct.de)