Typowe procesory, które trafiają do smartfonów, laptopów, a nawet komputerów stacjonarnych, mają zmienną częstotliwość taktowania. Gdy program planujący wykryje, że ma czas bezczynności, może zmniejszyć częstotliwość taktowania i zwiększyć go ponownie, jeśli więcej procesów konkuruje o czas procesora.
Procesory zoptymalizowane pod kątem urządzeń zasilanych bateryjnie zwykle składają się z wielu funkcjonalnych komponentów, z których każdy ma swój własny zegar (przykład: ARM Cortex A8 ). Gdy jeden składnik jest bezczynny, system operacyjny może go wyłączyć (lub skrócić swój zegar), co oszczędza energię. Na przykład na wielu procesorach wielordzeniowych (takich jak te w zaawansowanych urządzeniach mobilnych) każdy rdzeń można włączać i wyłączać osobno. ARM jest szczególnie dobry w tej grze, co jest jednym z powodów, dla których większość smartfonów ma procesory ARM.
Zmienianie częstotliwości taktowania lub wyłączanie zegara komponentów elektronicznych jest znane jako zarządzanie energią . Zwykle jest to złożona część pisania i optymalizacji systemu operacyjnego dla urządzenia zasilanego bateryjnie, z wieloma zależnościami od dokładnego modelu sprzętu.
To, co dotyczy procesora, dotyczy również urządzeń peryferyjnych. Podświetlany wyświetlacz to na przykład główny odbiornik energii w smartfonie, a następnie radio. System operacyjny CPU może odgrywać rolę w zarządzaniu energią urządzeń peryferyjnych; układy wtórne również uruchamiają własne oprogramowanie układowe, które również zarządza energią.
Aplikacje mają do odegrania swoją rolę w obniżaniu zużycia energii: muszą pozwalać systemowi operacyjnemu na robienie tego. Najgorsze, co aplikacja może zrobić, to odpytywanie - uruchomienie pętli while (not_ready()) {}
. Nawet wprowadzenie małego opóźnienia jako in while (not_ready()) {usleep(100);}
nie pomaga, ponieważ nie pozwala wystarczająco dużo czasu procesorowi przejść w tryb niskiego poboru mocy, a jeśli tak, każde bezowocne wybudzenie oznacza marnowanie energii. Dlatego interfejsy API systemu operacyjnego muszą być tak zaprojektowane, aby aplikacje nigdy nie musiały odpytywać, ale mogły subskrybować jakiś mechanizm zdarzeń i pozostawać bezczynne, dopóki nie zostaną powiadomione o odpowiednim zdarzeniu. Aplikacje z kolei muszą korzystać z takich mechanizmów, więc konstrukcja całego stosu oprogramowania ma wpływ na zużycie energii.
Możesz uzyskać informacje na temat tego, co odpowiada za zużycie energii przez komputer dzięki narzędziu Intel Powertop . Smartfony zazwyczaj mają sposób na sprawdzenie, ile zużywają aplikacje. Dokładne rozliczenie zużycia energii przez aplikację jest trudne: jeśli komponent budzi się dla dwóch aplikacji, czas budzenia można przypisać jednemu z nich nieco arbitralnie lub żadnemu; Zużycie energii przez urządzenia peryferyjne nie zawsze jest łatwe do śledzenia dla odpowiedzialnej aplikacji.
Układ RAM nie wie, który z jego bitów przechowuje dane aktywnego procesu, więc nie można go selektywnie wyłączyć w ten sposób. Zużycie energii przez proces nie jest związane z ilością używanej pamięci (z wyjątkiem tego, że dostęp do pamięci RAM zużywa energię, ale ponowne użycie tej samej pamięci lub użycie różnych obszarów pamięci RAM nie ma znaczenia pod względem zużycia energii).