Чому дизайн ОС здатний знизити споживання електроенергії?


11

Я читав, що такі ОС, як Android та iOS, якимось чином оптимізовані для покращення роботи акумулятора.

Я розумію, що процесор виконує певну кількість операцій в певний час, так що я думаю , що ви можете прискорити роботу додатків за рахунок скорочення числа необхідних операцій, але так як процесор буде по- , як і раніше робити х операцій в у часі, що не слід впливати на владу?

Крім того, якщо процес займає більше оперативної пам’яті, чи споживає він більше енергії?

Відповіді:


15

Поширені процесори, які переходять на смартфони, ноутбуки та навіть настільні ПК, мають різну тактову частоту. Коли планувальник виявить, що у нього час простою, він може зменшити тактову частоту та знову збільшити її, якщо буде більше процесів, що конкурують за час процесора.

Процесори, оптимізовані для пристроїв, що працюють на акумуляторах, як правило, складаються з багатьох функціональних компонентів, у кожного з яких є свій годинник (приклад: ARM Cortex A8 ). Коли один компонент не працює, операційна система може вимкнути його (або зменшити його годинник), що заощадить енергію. Наприклад, на багатьох багатоядерних процесорах (наприклад, на мобільних пристроях високого класу) кожне ядро ​​можна включати або вимикати окремо. ARM особливо хороший у цій грі, що є однією з причин того, що більшість смартфонів мають процесори ARM.

Варіювання тактової частоти або відключення годин електронних компонентів відоме як управління енергією . Це, як правило, є складною частиною написання та оптимізації операційної системи для пристрою, що працює від акумулятора, з багатьма залежностями від точної апаратної моделі.

Те, що стосується процесора, стосується і периферійних пристроїв. Дисплей з підсвічуванням є основним споживачем живлення на смартфоні, наприклад, за ним слід радіо. Операційна система CPU може відігравати певну роль в управлінні енергією периферійних пристроїв; вторинні мікросхеми також запускають власну прошивку, яка також здійснює управління живленням.

Програми мають свою роль у зменшенні споживання електроенергії: вони повинні дозволити операційній системі робити все, що потрібно. Найгірше, що може зробити програма - опитування - запуск циклу на зразок while (not_ready()) {}. Навіть введення невеликої затримки, як в while (not_ready()) {usleep(100);}, не допомагає, оскільки це не дає достатньо часу, щоб процесор перейшов у режим низької потужності, або, якщо це станеться, кожен невмілий прокидання означає марну енергію. Таким чином, API API операційної системи повинні бути розроблені так, що додатки ніколи не потребують опитування, але можуть замість цього підписатись на якийсь механізм подій і залишатися в режимі очікування, поки не будуть повідомлені про відповідну подію. Програми, в свою чергу, повинні скористатися такими механізмами, тому дизайн всього програмного пакету впливає на споживання енергії.

Ви можете отримати деяку інформацію про те, що відповідає за витрату енергії вашого ПК за допомогою утиліти Powertop від Intel . Смартфони, як правило, мають змогу побачити, скільки споживаються додатків для живлення. Облік споживання електроенергії за допомогою програми складно: якщо компонент прокидається за двома програмами, час пробудження може бути віднесено до одного з них дещо довільно або ні до одного; Споживання електроенергії на периферійних пристроях також не завжди легко відслідковувати до відповідальної програми.

Чіп оперативної пам'яті не знає, який з його бітів зберігає дані активного процесу, тому його не можна вибірково вимкнути таким чином. Споживання енергії процесу не пов'язане з обсягом пам'яті, яку він використовує (за винятком випадків, коли оперативна пам'ять використовує споживану потужність, але повторне використання тієї самої пам'яті або використання різних областей ОЗУ не має жодних змін щодо споживання енергії).


4

Що стосується потужності процесора, головне, що може зробити ОС, - це надати API, які відштовхують програми від опитування. (А також усуньте все опитування всередині ядра та драйверів пристроїв, якщо вони були.) Тоді процесор може бути переведений у стан сну з низькою потужністю, коли нічого не робити.

На кожному пристрої повинен бути спосіб, коли користувацькі програми можуть спати після запиту, а потім прокидаються знову лише тоді, коли результат буде готовий.

Очевидно, що жорсткі петлі опитування - це катастрофа (тому що вони підтримують процесор повністю неспаним і виконують непотрібні петлі та стрибки.) Але є і більш тонкі, але майже такі ж погані випадки, коли користувацьке додаток встановлює таймери, прокидається на тривозі таймера, перевіряє деякий стан, перезавантаження таймера і повернення до сну.

Я знаю менше про цю частину, але думаю, що також можуть бути творчі способи використання контролерів DMA (прямий доступ до пам'яті) для обробки довгих рядків повторних переривань без пробудження самого ядра процесора.


3

Основна роль ОС полягає в тому, щоб забезпечити середовище виконання максимально незалежним від апаратного забезпечення. Він знає, хто використовує апаратне забезпечення, коли і як хтось користується обладнанням. Це дозволяє ОС зменшити енергоспоживання обладнання, коли воно не використовується.

Сучасні металовироби пропонують безліч способів зменшити споживання електроенергії, наприклад

  • вимкнення невикористаних периферійних пристроїв та частини процесора (арифметичні одиниці з плаваючою комою, ядра процесора, ...)
  • пониження менш використовуваних деталей (включаючи процесорне ядро)
  • регулювання живлення відповідно до поточної тактової частоти (ви можете змінювати робочу напругу процесора на ходу, іноді на сотні ма)

якщо процес займає більше оперативної пам’яті, чи споживає він більше енергії?

Не зовсім. Тим не менш, якщо у вашій системі є 1 Гб оперативної пам’яті, але ви використовуєте лише 512 МБ, з деякими контролерами пам’яті, можна припинити оновлення частини DRAM, зменшивши таким чином енергоспоживання. LPDDR підтримує Partial Area Self Refresh, щоб зробити те ж саме під час самооновлення (поки процесор зупиняється, що стосується більшості часу на мобільних пристроях).

Як ви бачите, існує багато способів зменшити споживання енергії в сучасних архітектурах, але для цього потрібна ОС. Деякі функції, такі як PASR, дуже складні у використанні, для цього потрібна велика робота над ОС, щоб адаптувати управління пам'яттю, впроваджувати процедури призупинення / відновлення, ...


Побічна примітка: Хоча це не обов'язково безпосередньо пов'язано з процесом, який проходить через оперативну пам’ять, більше використання оперативної пам'яті може призвести до меншого кешування файлової системи, що може погіршити енергоефективність (а також продуктивність).
Пол А. Клейтон

3

Як ви, без сумніву, знаєте, ОС підтримує різноманітні списки. Два з цих списків - це список готових та таймер. У списку готових визначено, які завдання / теми готові виконувати. У списку таймерів ідентифікуються завдання / потоки, які перебувають у заблокованому стані, із затримкою часу.

Уявіть, що в ОС є порожній готовий список. Тобто у нього закінчилися завдання, які готові виконати (він знаходиться в режимі очікування). Деякі процесори (наприклад, x86) мають інструкцію щодо зупинки, до якої ОС може викликати зупинку процесора, поки його не прокине зовнішнє переривання (наприклад, тикове переривання). За цей проміжок часу вона споживає менше енергії. Цю техніку можна вдосконалити, заглянувши до списку таймерів. Якщо ви простоюєте і знаєте, що якнайшвидше завдання може прокинутися від таймера, який знаходиться на відстані 100 кліщів, швидкість галочки може бути тимчасово змінена, скажімо, у 100 разів повільніше. Таким чином, процесор може витрачати ще менше енергії протягом більш тривалого періоду часу, оскільки йому не доведеться обслуговувати до 100 тикових переривань.

Як тільки зовнішній перерив надійде, показник галочок доведеться перерахувати. Якщо зовнішнє переривання зробило завдання готовим, частота галочок повертається до норми. Якщо ні, кількість кліщів для сну необхідно перерахувати разом з новою (уповільненою) кількістю кліщів.

Сподіваюсь, це допомагає.


2

Щоб додати до інших відповідей:
Ваше питання стосується iOS та Android як операційних систем, але "Операційна система" є лише їх частиною.
І Android, і iOS є рамками і містять багато частин, які не вважаються частиною фактичної ОС, але активно знижують енергоспоживання.
Наприклад, Android за задумом дозволяє розробникам додатків зберігати свій стан при прихованому стані, тому процеси можуть бути припинені, коли вони не активно використовуються, і, таким чином, зменшити кількість готових потоків і дозволити скорочення ядра та скорочення тактової частоти.
В "ОС" є функції, які задають адаптивну яскравість, стан сну через Wi-Fi, потоки очищення, об'єднання графіків, світлодіодні індикатори, поведінку в режимі очікування стільникового зв'язку та інші аспекти, які сильно впливають на енергоспоживання.
Крім того, деякі мобільні платформи наполегливо працюють над оптимізацією співвідношення використання CPU / GPU, оскільки графічний процесор більш адаптований до графіки і є відносно новим доповненням до мобільного пейзажу, все більше і більше графічних частин ОС переходять на графічний процесор, який очищує роботу з процесора і дозволяє використовувати оптимізацію живлення процесора (а в багатьох випадках також прискорює роботу системи в цілому).

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.