Gängige CPUs für Smartphones, Laptops und sogar Desktop-PCs haben eine variable Taktrate. Wenn der Scheduler feststellt, dass er Leerlaufzeit hat, kann er die Taktrate verringern und erneut erhöhen, wenn mehr Prozesse um die CPU-Zeit konkurrieren.
Für batteriebetriebene Geräte optimierte CPUs bestehen in der Regel aus vielen Funktionskomponenten, die jeweils über eine eigene Uhr verfügen (Beispiel: ARM Cortex A8 ). Wenn eine Komponente im Leerlauf ist, kann das Betriebssystem sie ausschalten (oder die Uhrzeit reduzieren), wodurch Strom gespart wird. Beispielsweise kann bei vielen Multicore-CPUs (z. B. bei High-End-Mobilgeräten) jeder Kern separat ein- oder ausgeschaltet werden. ARM ist besonders gut in diesem Spiel, was einer der Gründe ist, warum die meisten Smartphones ARM-CPUs haben.
Das Variieren der Taktrate oder das Ausschalten der Uhr elektronischer Komponenten wird als Energieverwaltung bezeichnet . Es ist in der Regel ein komplexer Teil des Schreibens und Optimierens eines Betriebssystems für ein batteriebetriebenes Gerät, wobei viele Abhängigkeiten vom genauen Hardwaremodell abhängen.
Was für die CPU gilt, gilt auch für Peripheriegeräte. Das hintergrundbeleuchtete Display ist beispielsweise ein Hauptverbraucher von Strom auf einem Smartphone, gefolgt vom Radio. Das CPU-Betriebssystem kann eine Rolle bei der Energieverwaltung von Peripheriegeräten spielen. Sekundärchips führen auch eine eigene Firmware aus, die auch die Energieverwaltung durchführt.
Anwendungen tragen dazu bei, den Stromverbrauch niedrig zu halten: Sie müssen dem Betriebssystem ermöglichen, seine Aufgabe zu erfüllen. Das Schlimmste, was eine Anwendung tun kann, ist das Abrufen - Ausführen einer Schleife wie while (not_ready()) {}
. Selbst das Einführen einer kleinen Verzögerung wie in while (not_ready()) {usleep(100);}
hilft nicht weiter, da der Prozessor nicht genügend Zeit hat, um in den Energiesparmodus zu wechseln, oder wenn dies der Fall ist, bedeutet jedes unfruchtbare Aufwecken Energieverschwendung. Daher müssen die Betriebssystem-APIs so konzipiert sein, dass Anwendungen niemals abfragen müssen, sondern stattdessen einen Ereignismechanismus abonnieren und inaktiv bleiben können, bis sie über ein relevantes Ereignis informiert werden. Anwendungen wiederum müssen solche Mechanismen nutzen, sodass sich das Design des gesamten Software-Stacks auf den Stromverbrauch auswirkt.
Mit dem Intel Powertop- Dienstprogramm können Sie Informationen darüber abrufen, was für den Stromverbrauch Ihres PCs verantwortlich ist . Smartphones können in der Regel auch feststellen, wie viel Strom Anwendungen verbraucht haben. Die genaue Berücksichtigung des Stromverbrauchs nach Anwendung ist schwierig: Wenn eine Komponente für zwei Anwendungen aufwacht, kann die Weckzeit einer von ihnen etwas willkürlich oder keiner von beiden zugeordnet werden. Der Stromverbrauch von Peripheriegeräten lässt sich auch nicht immer leicht an die zuständige Anwendung verfolgen.
Ein RAM-Chip weiß nicht, welche seiner Bits Daten eines aktiven Prozesses speichern, daher kann er auf diese Weise nicht selektiv ausgeschaltet werden. Der Stromverbrauch eines Prozesses hängt nicht von der Menge des verwendeten Speichers ab (außer insofern, als die RAM-Zugriffe Strom verbrauchen, aber die Wiederverwendung des gleichen Speichers oder die Verwendung unterschiedlicher RAM-Bereiche keinen Unterschied hinsichtlich des Stromverbrauchs macht).