Dlaczego konstrukcja systemu operacyjnego może zmniejszyć zużycie energii?


11

Czytałem, że systemy operacyjne takie jak Android i iOS są w jakiś sposób zoptymalizowane, aby poprawić żywotność baterii.

W moim rozumieniu jest to, że CPU wykonuje pewną liczbę operacji w określonym czasie, więc myślę, że można przyspieszyć aplikacje poprzez ograniczenie liczby operacji potrzebnych, ale ponieważ procesor będzie nadal robić x operacje y czas, że nie powinno wpływać na moc?

Ponadto, jeśli proces zajmuje więcej pamięci RAM, czy zużywa więcej energii?

Odpowiedzi:


15

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).


4

Jeśli chodzi o moc procesora, system operacyjny może przede wszystkim zapewnić interfejsy API, które zniechęcają aplikacje do odpytywania. (A także wyeliminuj wszystkie odpytywanie w jądrze i sterownikach urządzeń, jeśli takie istnieją). Następnie procesor można przełączyć w stan uśpienia przy niskim zużyciu energii, ilekroć nie ma nic do zrobienia.

Dla każdego urządzenia musi istnieć sposób, aby aplikacje użytkownika po przejściu do trybu uśpienia mogły przejść w tryb uśpienia, a następnie obudzić się ponownie, gdy wynik będzie gotowy.

Oczywiście ciasne pętle odpytywania są katastrofą (ponieważ utrzymują procesor w pełni w stanie czuwania i wykonują bezużyteczne noopy i skoki.) Ale są bardziej subtelne, ale prawie tak złe przypadki, w których aplikacja użytkownika ustawia liczniki, budzi się po alarmie licznika, sprawdza niektóre warunki, resetowanie timera i powrót do snu.

Wiem mniej o tej części, ale myślę, że mogą istnieć kreatywne sposoby wykorzystania kontrolerów DMA (bezpośredniego dostępu do pamięci) do obsługi długich ciągów powtarzających się przerwań bez budzenia samego rdzenia procesora.


3

Główną rolą systemu operacyjnego jest zapewnienie środowiska wykonawczego możliwie najbardziej niezależnego od sprzętu. Wie, kto używa jakiego sprzętu, kiedy i jak ktoś używa sprzętu. Dzięki temu system operacyjny może zmniejszyć zużycie energii przez sprzęt, gdy nie jest używany.

Nowoczesne urządzenia zapewniają wiele sposobów na zmniejszenie zużycia energii, np

  • wyłączanie nieużywanych urządzeń peryferyjnych i części procesora (zmiennoprzecinkowe jednostki arytmetyczne, rdzenie procesora, ...)
  • zmniejszanie częstotliwości rzadziej używanych części (w tym rdzenia procesora)
  • regulacja zasilacza w celu dopasowania do bieżącej częstotliwości zegara (możesz zmienić napięcie robocze procesora w locie, czasami o setki mA)

jeśli proces zajmuje więcej pamięci RAM, czy zużywa więcej energii?

Nie całkiem. Niemniej jednak, jeśli twój system ma 1 GB pamięci DRAM, ale używasz tylko 512 MB, z niektórymi kontrolerami pamięci, możliwe jest zatrzymanie odświeżania części pamięci DRAM, zmniejszając w ten sposób zużycie energii. LPDDR obsługuje częściowe automatyczne odświeżanie, aby zrobić to samo podczas automatycznego odświeżania (gdy procesor jest zatrzymany, co jest prawdą przez większość czasu na urządzeniach mobilnych).

Jak widać, istnieje wiele sposobów zmniejszenia zużycia energii we współczesnych architekturach, ale wymaga tego system operacyjny. Niektóre funkcje, takie jak PASR, są bardzo trudne w użyciu, wymaga to wiele pracy w systemie operacyjnym w celu dostosowania zarządzania pamięcią, wdrożenia procedur zawieszania / wznawiania, ...


Uwaga dodatkowa: Chociaż niekoniecznie jest bezpośrednio związane z procesem wymagającym dużej ilości pamięci RAM, większe użycie pamięci RAM może prowadzić do mniejszego buforowania systemu plików, co może obniżyć wydajność energetyczną (a także wydajność).
Paul A. Clayton,

3

Jak zapewne wiesz, system operacyjny utrzymuje wiele list. Dwie z tych list to gotowa lista i lista timerów. Gotowa lista określa, które zadania / wątki są gotowe do uruchomienia. Lista timerów identyfikuje zadania / wątki, które są w stanie zablokowanym z limitem czasu.

Wyobraź sobie, że system operacyjny ma pustą gotową listę. Oznacza to, że zabrakło zadań gotowych do uruchomienia (jest w stanie bezczynności). Niektóre procesory (takie jak x86) mają instrukcję zatrzymania, którą system operacyjny może wywołać, aby spowodować zatrzymanie procesora, dopóki nie zostanie obudzone przez zewnętrzne przerwanie (takie jak przerwanie tyknięcia). W tym czasie zużywa mniej energii. Technikę tę można jeszcze ulepszyć, zerkając na listę timerów. Jeśli jesteś bezczynny i wiesz, że najwcześniej zadanie może się obudzić z tykania timera za 100 tyknięć dalej, częstość tyknięć może zostać tymczasowo zmodyfikowana, aby powiedzieć 100 razy wolniej. W ten sposób procesor może zużywać jeszcze mniej energii przez dłuższy czas, ponieważ nie będzie musiał obsługiwać do 100 przerwań tykania.

Po nadejściu zewnętrznego przerwania częstość tyknięcia będzie musiała zostać ponownie obliczona. Jeśli zewnętrzne przerwanie przygotowało zadanie, wskaźnik tyknięcia wraca do normy. Jeśli nie, liczba tyknięć do snu musi zostać ponownie obliczona wraz z nową (spowolnioną) częstością tykania.

Mam nadzieję że to pomoże.


2

Aby dodać do innych odpowiedzi:
Twoje pytanie dotyczy systemów operacyjnych iOS i Android, ale „System operacyjny” jest tylko ich częścią.
Zarówno Android, jak i iOS są platformami i zawierają wiele części, które nie są uważane za część rzeczywistego systemu operacyjnego, ale są aktywne w zmniejszaniu zużycia energii.
Na przykład system Android z założenia pozwala twórcom aplikacji zapisać swój stan, gdy jest ukryty, więc procesy mogą zostać zakończone, gdy nie są aktywnie używane, a tym samym zmniejszyć ilość gotowych wątków i umożliwić wyłączenie rdzenia i zmniejszenie częstotliwości taktowania.
W „OS” znajdują się funkcje, które ustawiają adaptacyjną jasność, stan uśpienia Wi-Fi, wątki czyszczenia, zestawianie harmonogramów, wskaźniki LED, zachowanie w trybie gotowości komórkowej i inne aspekty, które drastycznie wpływają na zużycie energii.
Ponadto niektóre platformy mobilne ciężko pracują nad optymalizacją współczynnika wykorzystania procesora / GPU, ponieważ procesor graficzny jest bardziej dostosowany do grafiki i jest to stosunkowo nowy dodatek do krajobrazu mobilnego, coraz więcej elementów systemu operacyjnego związanych z grafiką przechodzi na procesor graficzny, który usuwa pracę z procesora i umożliwia wykorzystanie optymalizacji mocy procesora do użycia (aw wielu przypadkach również przyspiesza system jako całość).

Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.