Як зменшити напругу на процесорі в біосі. Визначення ключових компонентів енергоспоживання системи. Енергозбереження: корпус та блок живлення

Вступ.
Досить давно мені хотілося зупинитися на питаннях забезпечення зниження енергоспоживаннясучасних персональних комп'ютерів та ноутбуків. Багато користувачів виправдано поставлять запитання: "Навіщо це треба? - Виробник вже подбав про всі тонкощі енергоспоживання моєї системи. Як показує досвід, на жаль, це практично завжди не так. Якщо виробники ноутбуків ще якось намагаються забезпечити зниження енергоспоживання своїх пристроїв, то з персональними комп'ютерами, як правило, все перебуває у занедбаному стані.

Енергоспоживання персональних комп'ютеріві необхідно знижувати з таких причин:
- знижуючи енергоспоживання ноутбука, ви продовжуєте його час автономної роботи,
- продовжуючи час автономної роботи ноутбука, ви домагаєтеся зниження циклів заряду/розряду акумуляторної батареї і продовжуєте його термін служби,
- разом з енергоспоживанням знижується і тепловиділення компонентів ноутбука або персонального комп'ютера, що дозволяє, з одного боку, підвищити стабільність роботи системи, з іншого боку, продовжити термін служби електричних компонентів,
- зниження енергоспоживання персонального комп'ютера та ноутбука дозволить скоротити витрати на електрику. Для багатьох це досі не критично, але вартість електроенергії зростає з кожним днем, державна політика змушує громадян встановлювати електролічильники, кількість комп'ютерів у сім'ї збільшується рік у рік, тривалість їх роботи подовжується в пропорційних масштабах, тому в технологіях зниження енергоспоживання зацікавлений кожен з нас.

Визначення ключових компонентів енергоспоживання системи.

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

Картинка клікабельна


На представленому малюнку видно компоненти стандартного системного блоку. Знання цих компонентів системи дозволить вам ще на етапах складання або апгрейду комп'ютера визначитися з тими параметрами, які дозволять вам знизити енергоспоживання системи. Отже, сучасний системний блок містить:
- корпус,
- блок живлення,
- материнська плата,

Оперативна пам'ять,
- відеокарта/відеокарти,
- жорсткий диск/диски,
- Привід компакт-дисків,
- дисководи,
- картридери,
- Системи охолодження процесора, корпусу.
Звукові карти, ТВ-тюнери в окремому виконанні рідко зустрічаються у сучасних комп'ютерах. По-перше, всі існуючі материнські плати мають вбудовані контролери звуку, які не поступаються якістю звучання дешевим звуковим картам і картам середнього цінового діапазону. По-друге, ТВ-тюнери відслужили своє століття, як і коаксіальне телебачення. В епоху FulHD, IP-TV, DVB говорить про ТВ-тюнери просто зайве.

Енергозбереження: корпус та блок живлення.

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

Блок живленняможе стати джерелом неефективного енергоспоживання насамперед. Будь-який сучасний блок живлення повинен забезпечувати високі показники ККД при перетворенні струму високої напруги 12, 5 і 3,3 вольта.

Будь-який сучасний блок живлення має відповідність одному із стандартів серії 80 Plus. Стандарт 80 Plus був прийнятий ще далекого 2007 року, в рамках енергозберігаючих стандартів Energy Star четвертого перегляду. Цей стандарт вимагає від виробників блоків живлення забезпечення 80% ККД своїх пристроїв при різних навантаженнях - 20%, 50% та 100% від номінальної потужності.

З цього випливає, що для забезпечення максимальної ефективності вашого блоку живлення він повинен бути навантажений не менше 20% від своєї номінальної потужності. Абсолютно не правильно, коли користувач купує блоки живлення "із запасом" на 900 та 1200 Ватт. При виборі блока живлення керуйтеся тим, що без навантаження на систему, навантаження на нього не повинно падати нижче 20%, і він повинен мати сертифікат відповідності 80 Plus.

Картинка клікабельна


Заради справедливості, слід зазначити, що на сьогоднішній день стандарт 80 Plusдиференціювався на такі категорії:
- 80 Plus
- 80 Plus Bronze
- 80 Plus Silver
- 80 Plus Gold
– 80 Plus Platinum.

Відмінність між стандартами полягає у забезпеченні більш високих показників ККД усередині сімейства стандарту 80 Plus. Якщо при 50% навантаженні блок живлення стандарту 80 Pus забезпечує ККД на рівні 80%, дорогі блоки живлення відповідні стандарту 80 Plus Platinum забезпечують ККД на рівні 94% і вище.

Енергозбереження: материнська плата.


Сьогодні материнські плати розвиваються максимально швидко, не відстаючи від розвитку процесорів. Слід розуміти, що материнські плати складаються з різних наборів контролерів, забезпечення злагодженої роботи яких є основним завданням материнської плати. У більшості випадків енергоспоживання материнської плати залежить від виду застосованого північного та південного мосту. Сучасні північні мости значно знизили своє енергоспоживання, що спричинило зменшення розмірів їх систем охолодження. Багато користувачів пам'ятають часи, коли система охолодження північного мосту складалася з кількох теплових трубок, з'єднаних з радіаторами охолодження. Поява останнього покоління системної логіки від Intel дозволило знову відійти до рівня звичайних радіаторів.

В силу загальних тенденцій, багато відомих виробників материнських плат, такі як Gigabyte, ASUS, MSIдемонструють свої нові "екологічні" продукти. Як правило, екологічність даних рішень досягається за рахунок оптимізації схем живлення процесора та відеокарт - основних споживачів будь-якого системного блоку. Як правило, це здійснюється за рахунок застосування багатофазних стабілізаторів напруги процесорів.

Сучасні Материнські плати, Застосовують у схемах живлення від шести до дванадцяти стабілізаторів напруги. Дані схеми значно підвищують стабільність напруги, що подається, але збільшують енергоспоживання. Тому виробники "екологічних" материнських плат оснащують їх технологіями, які при низькому навантаженні на систему живлення вимикають частину фаз, та живлення процесора здійснюється за рахунок однієї-двох фаз стабілізаторів напруги.

При покупці материнської плати також слід бути більш уважним. Придбання "навороченої" материнської платизавжди обертається підвищеним енергоспоживанням. Якщо вам ніколи не буде потрібно порт FireWire, не слід за нього переплачувати, а потім щомісяця платити за ту електрику, яку споживає його контролер на материнській платі.

Енергозбереження: процесор.

Провідні виробники процесорів AMDі IntelУпродовж останніх десятиліть займаються зниженням енергоспоживання своїх продуктів. Слід віддати належне, вся естафета була започаткована компанією AMD, в якій вона утримувала міцне лідерство протягом двох-трьох років. Були часи, коли процесори компанії AMD з технологією Cooln Quiet мали значно менше енергоспоживання, ніж процесори від компанії Intel лінійок Pentium 4 і Pentium D.

Компанія Intel швидко надолужила своє відставання та впровадила технологію EIST– Enhanced Intel SpeedStep Technology, яка чудово себе показала в останніх поколіннях процесорів. У той час як нові процесори від компанії Intel обзаводяться все новими та новими технологіями енергозбереження та нарощують продуктивність, від компанії AMD суттєвих ривків уперед ми не бачимо.

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

Для того щоб зрозуміти, як можна знизити енергоспоживання, ви повинні чітко собі уявляти, від чого воно залежить. Енергоспоживання сучасного процесора залежить:
- від напруги живлення, що подається на транзистори,
- Частоти роботи процесора. Частота роботи процесора формується із твору його множника на частоту шини.

По суті, технології Cool"n"Quietі EISTзаймаються зниженням енергоспоживання за рахунок цих двох параметрів. На жаль, найчастіше ми стикаємося з роботою не з напругою живлення процесора, а з його частотою. При зниженні навантаження на процесор енергозберігаючі технології знижують множник процесора і тим самим досягають зниження енергоспоживання процесора. З появою навантаження на процесорі, множник повертається на колишні значення, і процесор працює, як ні в чому не бувало. На жаль, дана методика зниження енергоспоживання не завжди дозволяє досягти високої енергоефективності. Покажемо з прикладу.
Як приклад обраний процесор Core 2 Duo з номінальною частотою роботи 2,0 ГГц.

Картинка клікабельна


З представленої діаграми видно, що температура роботи процесора без включення режиму енергозбереження, при номінальному множнику x12 і напрузі живлення 1,25 вольт маємо робочу температуру близько 55-56 градусів у простої.

Картинка клікабельна


Після подачі навантаження на процесор, за аналогічних умов роботи ми фіксуємо середню температуру роботи близько 71-72 градусів, що було зафіксовано на наших діаграмах.
Температура ядер знімається по внутрішніх датчиках, тому похибки мінімальні. Враховуючи той факт, що між енергоспоживанням процесора та його робочою температурою є прямопропорційний зв'язок, ми орієнтуватимемося на даний параметр при оцінці його енергоефективності.
Наступним етапом ми знизили множник до мінімально можливих значень, до 6. При цьому частота процесора склала 997 МГц, можна грубо округлити до 1 ГГц. Напруга живлення залишилося незмінним, близько 1,25 вольт.

Картинка клікабельна


З даних видно, що у режимі простою, робоча температура процесора змінилася дуже мало, вона залишилася, як і раніше, у межах 55-56 градусів. Звідси напрошується висновок у тому, що з простого зниження частоти роботи процесора ми виграємо дуже мало.

Картинка клікабельна


Після цього ми подали навантаження на , але множник та робоча напруга процесора залишили на колишньому рівні. Звичайно, подібне тестування має значення тільки з практичного боку, реалізовувати його в житті ми не рекомендуємо. Пов'язано це з тим, що саме від частоти процесора залежить його продуктивність, і ніхто не купує високочастотний процесор для подальшої роботи на занижених частотах. Після стабілізації температурних значень ми отримали середню робочу температуру рівну 65-66 градусів, що на шість градусів нижче, ніж при роботі процесора на номінальній частоті, що дорівнює 2 ГГц.
З цього слід, що дійсно енергозбереження від зниження робочої частоти процесора шляхом зміни значення множника має місце бути, але воно не того рівня, якого нам би хотілося бачити, в кожному конкретному випадку. Тому ми починаємо працювати з напругою процесора.


Наш процесор та материнська плата дозволяють змінювати напругу живлення процесора у проміжку 0,95-1,25 вольт. Крок складає 0,0125 вольт. Це пов'язано з тим, що процесор встановлений у ноутбуці, материнські плати яких, рідко коли дають можливість змінювати робочу напругу компонентів у широких діапазонах.
Щоб довести ефективність зниження робочої напруги процесора у плані зниження його енергоспоживання і тепловиділення, ми залишимо його робочу частоту лише на рівні 1 Ггц, але паралельно знизимо робоче напруження до мінімально можливих значень, - 0,95 вольт.

Картинка клікабельна


Ця маніпуляція дозволила нам знизити температуру простою процесора до 45-46 градусів, що представлено на діаграмі. У цьому режимі ми досягаємо максимально можливого низького енергоспоживання процесора. Зниження робочої напруги до 0,95 вольт дозволило нам знизити робочу температуру простою на 10 градусів!

Картинка клікабельна


Для оцінки ефективності методу зниження робочої напруги процесора ми подали на нього навантаження. В результаті чого ми отримали робочу температуру в навантаженні, що дорівнює 50-51 градусам, у той час як без зміни напруги та аналогічної продуктивності системи на частоті 1 ГГц раніше ми отримували 65-66 градусів. Отримані дані зафіксовані на діаграмах.

Енергоспоживання процесора: висновки

- З усього вищевикладеного випливає, що для забезпечення високої енергоефективності процесоране слід лише знижувати робочу частоту процесора, як це робиться багатьма ноутбуками та персональними комп'ютерами в рамках енергозберігаючих технологій від Intel та AMD. Зниження частоти роботи процесора завжди має супроводжуватися зниженням його робочої напруги.

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

Для визначення приблизних робітників напругдля кожної частоти (множника) процесора достатньо побудувати графік прямої залежності мінімальної напруги від частоти шляхом нанесення максимальних та мінімальних значень. Це значно полегшить роботу користувачам-початківцям.


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

Енергозбереження процесора: RightMark CPU Clock Utility (RMClock)

Утиліта має невелику вагу, порядку 250 кілобайт. Не потрібно інсталювати, просто розпаковувати його у вибрану папку і запускати файл RMClock.exe. Для простоти посилання на архів із програмою буде представлено наприкінці нашої статті.

На момент написання статті остання версія програми 2.35має наступний функціонал у рамках безкоштовного використання:
- контроль тактової частоти процесори,
- контроль тротлінгу,
- контроль рівня завантаження процесора, ядер процесора,
- Контроль робочої напруги процесора,
- контроль температури процесора/ядер процесора,
- постійний моніторинг зазначених параметрів,
- Можливість зміни напруги процесора з операційної системи,
- Можливість зміни множника процесора (його частоти) з операційної системи,
- автоматичне керування частотою та напругою процесорав залежності від навантаження, що подається на нього. Концепція називається "Perfomance on demand" або "продуктивність на вимогу".

Картинка клікабельна


Запустивши програмний продукт, ви потрапляєте до одного з розділів його меню. Ми перерахуємо весь функціонал RightMark CPU Clock Utility по порядку. У розділі About представлена ​​інформація про розробників, їх сайт, та посилання на ліцензійну угоду. Базова версія продукту поставляється безкоштовно для некомерційних цілей, жодної реєстрації не потрібно. Є професійна версія, яка надає набагато ширший функціонал налаштувань роботи системи та коштує символічні 15 доларів. Для користувача користувача можливостей базової версії цілком вистачить.

Картинка клікабельна


В закладці SettingsНаведено налаштування програми для зручності його використання. На жаль, російського мовного пакета, який зустрічався в раніше випущених версіях продукту, в нашому випадку не виявилося, але в цьому немає нічого страшного. , - Режим автозапуску.

За режим автозапуску відповідає підрозділ Startup options". Автозапуск RightMark CPU Clock Utility при завантаженні операційної системи дозволяє максимально легко вирішити питання енергозбереження без втручання в BIOS комп'ютера, що особливо корисно, коли BIOS не надає будь-яких можливостей щодо зміни робочої напруги та множника процесора. Подібне зустрічається в BIOS" сучасних ноутбуків.

Поставивши галочку у вікні пункту Start minimized to system trayВи позбавите себе потреби постійно закривати вікно програми при черговому запуску. Воно буде виконувати свої завдання після автоматичного запуску з попереднім згортанням.

Пункт Run at Windows startup:" дозволяє встановити автоматичний запуск програмного продукту і вибрати, як це робити. У нашому випадку ми здійснюємо автоматичний запуск через реєстр, також є можливість автоматичного запуску через папку "Автозавантаження". Обидва варіанти чудово працюють, починаючи від Windows XP до Windows 7.

Є можливість запису необхідних параметрів роботи процесора Log-файл. Цей параметр необхідний з'ясування причин нестабільної роботи системи.

Картинка клікабельна


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

Картинка клікабельна


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

Картинка клікабельна


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

Пункт P-states transitions method" дозволяє вибрати метод переходу від однієї заданої комбінації множника-напруги на інший. Є такі можливості вибору:
- Single-step: множник перемикається з кроком рівної одиниці. Тобто, при переході з множника 10 на множник 12 завжди буде проміжна ланка 11.
- Multi-step: перехід здійснюватиметься зі змінним кроком. У разі нашого прикладу, з 10 одразу на 12.

Пункт Multi-CPU load calculation" дозволяє визначити метод визначення завантаження процесора. Даний параметр буде впливати на швидкість перемикання комбінації множник-напруга на процесорі. У кожному випадку підбирається виходячи з індивідуальних особливостей роботи користувача. Зазвичай даний параметр ми не змінюємо і залишає на вказаному на скрині значенні, яке означає, що оцінка буде здійснюватися за максимальним навантаженням будь-якого з ядер процесора.

Пункт Standby/hibernate actionдозволяє вибрати дію програми при переході в режим глибокого сну. Як правило, залишення поточного профілю роботи є цілком достатнім.

В розділі " CPU Default Settingsпредставлені наступні пункти:
- Restore CPU defaults on management turns off, що дозволяє повернути початкові параметри роботи процесора після вибору режиму "No Power Managemet".
- Restore CPU defaults on application exit, що дозволяє повернути початкові параметри роботи процесора після вимкнення RightMark CPU Clock Utility.

У розділі "CPU defeaults selection" вибирається метод визначення комбінацій множника-напруги у процесора:
- CPU-defined default P-state, комбінація визначаються процесором,
- P-state found at startup, комбінації визначаються під час завантаження програми,
- Custom P-state, комбінації встановлюються вручну.

Пункт Enable OS power management integration" дозволяє створити профіль у схемах енергоспоживання системи під назвою "RMClock Power Management".

Картинка клікабельна


В розділі " Profilesкористувачу пропонується задати ті самі комбінації множник-напруга, - P-state. По-перше, пропонується вибрати профілі в залежності від режиму енергоспоживання, - мережа або батарея/ДБЖ.

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

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

Картинка клікабельна


Потім встановлюєте галочки для вже вибраних профіліву відповідних різновидах роботи програми:
- No management - без управління, налаштувань не потребує
- вкладки "Power Saving", "Maximal performance", "Perfomance on Demand" по суті рівнозначні і дозволяють встановити діапазони зміни множників-поперек процесора.

Наприклад, у нашому випадку для вкладки " Power Savingми вибрали мінімально можливий множник і напругою, для вкладки "Maximal performance" максимальний множник і мінімально робоча напруга при даній частоті у процесора.

У розділі продуктивність на вимогу " Perfomance on Demandвибрали три комбінації множник-напруга:
- x4-0,95 вольт
- x9-1,1 вольт
- x12-1,25 вольт.

Картинка клікабельна


Потім наведіть на піктограму в області сповіщень робочого столу програми RightMark CPU Clock Utilityі вибираєте необхідні параметри процесора, які завжди повинні показуватись і вибираєте поточний профіль роботи. Я завжди ставлю для моніторингу частоту процесора та його температуру роботи, що завжди зручно та частково цікаво.

Картинка клікабельна


На малюнку представлені три піктограмив області повідомлень робочого столу:
- піктограми програми RightMark CPU Clock Utility,
- поточна частота процесора,
- Його поточна температура.

Картинка клікабельна


На скрині представлені діаграми роботи процесора як " Продуктивність на вимогуВидно, як програмний продукт при збільшенні навантаження на процесор ступінчасто збільшує його множник і напругу спочатку до x9-1,1 вольт і при необхідності до максимальних x12-1,25 вольт. Як тільки навантаження падає, все ступінчасто повертається назад.
Подібне регулювання практично ніяк не впливає на підсумкову продуктивність системи.

Картинка клікабельна


У вкладці " Battery infoпропонується вибрати способи оповіщення про стан акумуляторної батареї ноутбука.

У вкладці " Advanced CPU settingsпропонується вибрати опитувані температурні датчики процесора, що включаються технології енергозбереження.
Усі ці енергозберігаючі технології описані на сайті Intel. Ми просто хочемо сказати, що, як правило, їх включення не впливає на стабільність системи, тому чому б їх не включити?

Наш процесор відноситься до раннього сімейства процесорів Core 2 Duo. Сучасні процесори підтримують не активні у нас технології:
- Engage Intel Dynamic Acceleration (IDA)
- Enable Dynamic FSB Frequency Switching (DFFS)

Перша технологіядозволяє процесору підвищити множник однієї з ядер за відсутності навантаження друге. Наприклад, працюють два ядра процесора при частоті 2,2 ГГц. Процесор оцінює, що навантаження подається тільки на одне ядро, його множник буде підвищений, і він почне працювати на частоті 2,4 Ггц. Технологія цікава, але небезпечна на розігнаних процесорах.

Друга технологіядозволяє домогтися ще сильнішого зниження робочої частоти процесора в режимах простою. Раніше ми говорили про те, що підсумкова частота процесора - це завжди добуток множника на частоту системної шини. Сучасні процесори Intel у рамках технології DFFS дозволяють знижувати не тільки значення множника, а й частоту шини, що дозволяє досягти ще нижчих частот. Ця технологія також небезпечна для розігнаних процесорів, оскільки можна отримати нестабільність з боку оперативної пам'яті.

Картинка клікабельна


Мабуть, це все, що ми хотіли розповісти про програмний продукт RightMark CPU Clock Utility. Залишається порадити стежити за її оновленнями. При цьому немає сенсу оновлюватися, коли у вас уже протягом багатьох місяців все стабільно працює. Має сенс шукати нову версію при зміні процесора чи переході більш сучасну операційну систему.
Використання програми RightMark CPU Clock Utilityдозволить вам максимально продовжити життя не тільки свого процесора, але й системи живлення материнської плати, а також значно знизити шум від системи охолодження процесора, який не буде надриватися для його охолодження, коли ви друкуватимете, дивитися фільми або просто перегортати сторінки в Інтернеті.

Енергоспоживання процесора: визначаємо мінімальну робочу напругу

У своїй статті я багато разів вказував на те, що важливо визначити мінімальне робоча напругакожної частоти роботи процесора. Робиться це шляхом спроб і помилок. Як правило, послідовно виконується наступний цикл завдань:
- Зниження напруги на один пункт,
- перевірка стабільності процесора у стрес-тестовому програмному продукті,
- Зниження або підвищення напруги на один пункт в залежності від результатів стрес-тестування.

Для стрес-тестування процесорів існує багато програмних продуктів. Вони були описані в одній із наших статей. Вважаю, що найціннішою з них є програма Prime95. Посилання на неї буде надано наприкінці статті. Вона повністю безкоштовна та доступна для завантаження в мережі.

Картинка клікабельна


Остання її версія була випущена в 2008 році, саме тоді, коли необхідно було впровадити мультиядерність у тестування. Є можливість вибору різних методів тестування, вказувати тривалість тестування, періодичність тестування тощо.

Картинка клікабельна


Вибираємо метод тестування у розділі " Options"=> "Torture testі запускаємо його. Тривалість тестування повністю залежить від вас. Як правило, при визначенні орієнтовної мінімальної напруги я чекаю або першої помилки, або проводжу тестування протягом півгодини. Якщо півгодини тесту пройшло без помилок, знижуємо напругу на один пункт і вперед заново.
Після того, як ви визначилися з мінімальним напругоюЗвісно, ​​має сенс залишити тест на ніч. За кілька годин копіткої роботи, практично завжди вдається виявити помилки, що виникають.
Нерідко операційна система зависає або в кращому випадку видає синій екран смертіЦе говорить про те, що напруга занижена і виникла помилка, - слід підняти робочу напругу на процесорі для даної частоти.

Картинка клікабельна


У нашому випадку, ми визначили мінімальну робочу напругу для нашого процесора. Як виявилося, при максимальній частоті 2 ГГц нашому процесору 1,25 вольт зовсім не потрібні. Він цілком стабільно працює і за 1,00 вольтів. Стабільність операційної системи була виявлена ​​і за режиму 0,975 вольт, але Prime95 повідомив про помилку, яка зникла після підняття напруги до 1,00 вольт.

У результаті ми маємо

:
- процесор з незмінним рівнем продуктивності та частотою роботи 2 ГГц,
- максимальну робочу температуру у навантаженні 62-63 градуси, замість звичних 72 градусів,
- Нижче енергоспоживання, яке дозволяє без будь-яких схем енергоспоживання від Acer, Asus, Samsung, Gigabyte максимально продовжити тривалість роботи ноутбука від акумуляторної батареї не втрачаючи рівня продуктивності,
- нижче енергоспоживання дозволить скоротити витрати на електрику, особливо якщо вказати дані значення в описаному вище програмному продукті RightMark CPU Clock Utility.

Насправді, подібна низька робоча напруга процесора для оверклокера говорить завжди про одне, - про його високий розгінний потенціал. Але нюансам розгону у нас будуть присвячені інші статті, - тема розгону процесора виходить за межі теми про енергозбереження. Висновок.
Прочитавши статтю, у користувача має виникнути питання: "Невже виробники настільки невмілі, що самі не знижують робочу напругу процесорів, особливо в ноутбуках, де це так критично?" Відповідь проста і полягає в тому, що процесори випускаються масово, ноутбуки також виходять із конвеєра. Не в інтересах виробників затягувати процес виробництва, тому комусь щастить і його процесор показує чудеса розгону, а у когось відмовляється це робити, у когось процесор працює при напрузі 1,175 вольт, а у когось він стабільний 98 вольтах. Купівля електроніки - це завжди лотерея. Що приховано під етикеткою в кожному конкретному випадку, пізнається лише на практиці.
На закінчення хочеться подякувати розробникам програмних продуктів. RightMark CPU Clock Utilityі Prime95, яким наш портал "МегаОбзор" вручає золоту почесну медаль. Чекаємо на ваші запитання і нагадуємо, що все, що ви робите зі своєю електронікою, ви робите на свій страх і ризик.

RightMark CPU Clock Utilityможна знайти по .
Описану у статті програму Prime95можна знайти по .

Регулювання напруги живлення процесорів Intel

УВАГА! Автор статті не несе жодної відповідальності за будь-яку шкоду, завдану комп'ютеру внаслідок застосування описаних тут дій.

Одним користувачам щастить більше, іншим менше. Бувають щасливчики, яким дістаються процесори, що легко розганяються до наступної "стандартної" частоти FSB: Celeron до 100, а Рentium III "Е"-модифікації до 133 МГц відповідно. Однак подібний процесор не так просто роздобути: на ринках вони є, але продавці за "гарантовано" камінь, що розганяється, найчастіше хочуть стільки, що можна купити процесор з приблизно такою ж, але "рідною" частотою, гарантованою виробником. Але часто трапляються процесори, які працюють на підвищеній частоті, але нестабільно. Тобто з'являються несподівані збої, програми "виконують неприпустимі операції" і закриваються, погляд радують "сині екрани" тощо.

Часто цього можна позбутися підняттям напруги живлення процесора. У класичного Celeron (на ядрі Mendocino; тобто моделі 300A-533) стандартна напруга ядра становить 2 В. У принципі, без особливого ризику його можна підняти на 5-10% (до 2.1 - 2.2 В). Абсолютно те саме стосується і процесорів з ядром Coppermine (Celeron 533A-766 і Pentium III): змінюються лише абсолютні цифри.

Однак добре, якщо за допомогою BIOS або джамперів на материнській платі можна виставити потрібний рівень напруги, а що робити, якщо така можливість відсутня (що зазвичай і буває, якщо говорити про недорогі материнські плати)? Фактично пропадає основна ідея розгону: на недорогому "залізі" отримати більшу продуктивність. На платах з роз'ємом Slot 1 можна застосовувати спеціальні перехідники, проте користувачам сокетних плат від цього не легше (до того ж, іноді 5-7 доларів різниці в ціні перехідника з регулюванням напруги та простенькою моделлю без неї критичні). Різниця ж у ціні між платами, розрахованими на оверклокінґ та дешевими сокетними моделями становить до 30 доларів (до того ж більшість таких плат мають АТХ-формат, так що при апгрейді комп'ютера доводиться міняти і корпус), а задля економії такої суми іноді варто скористатися дещо нестандартними методами.

Останнім часом тема зміни напруги живлення стала актуальною не лише для оверклокерів. Справа в тому, що наявні плати на старих чіпсетах (LX, EX, BX, ZX, Apollo Pro) часто здатні працювати з як мінімум новими Celeron (іноді відразу, іноді після деякої модифікації), а іноді і Pentium III, і єдиною перешкодою є перетворювач напруги на платі, нездатний забезпечити менше 1.8 В. Цілком логічним рішенням цієї проблеми є примусове переведення процесора на цю напругу.

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

Для живлення процесорів класу Pentium II і Celeron потрібні досить потужні джерела живлення, тому живлення вторинного кешу (на малюнку позначено Vccs) відокремлено від живлення ядра (Vccp) причому при збігаються номінали значення напруги лінії Vccs не використовуються. Тобто в залежності від типу процесора (від того, який рівень напруги на відповідній ніжці процесора), стабілізатор на материнській платі виставляє потрібну напругу.

Таблиця №1. Ідентифікація напруги живлення
VID Напруга, В VID Напруга, В
01111 1.30 11111 немає процесора
01110 1.35 11110 2.1
01101 1.40 11101 2.2
01100 1.45 11100 2.3
01011 1.50 11011 2.4
01010 1.55 11010 2.5
01001 1.60 11001 2.6
01000 1.65 11000 2.7
00111 1.70 10111 2.8
00110 1.75 10110 2.9
00101 1.80 10101 3.0
00100 1.85 10100 3.1
00011 1.90 10011 3.2
00010 1.95 10010 3.3
00001 2.00 10001 3.4
00000 2.05 10000 3.5

VID використовується тільки в SEPP/SECC-виконанні (Slot1), тому збільшити напругу на платах для Socket 370 можна лише до 2.05 В. Для роботи з усіма процесорами Intel необхідна підтримка значень виділених жирним шрифтом; підкресленням виділено напруги живлення для процесорів FCPGA.

Таблиця №2. Харчування деяких процесорів
Процесор Vccp, ядро, В Vccs, Кеш, В
Pentium II 233-300 (Кламати) 2.8 3.3
Pentium II 266-450 (Dechutes) 2.0 2.0
Pentium III 450-550 (Katmai) 2.0 3.3
Pentium III 600 (Katmai) 2.05 3.3
Celeron 266-533 (Covington, Mendocino) 2.0 -
Celeron 533A-600
1.5
1.7
-
Celeron 633-766
1.65
1.7
-

(Celeron 533А -766 мають дві модифікації, розраховані на різну напругу)

Фізично (0) означає, що ніжка підключена до землі (GND або Vss), а (1) що висновок вільний, тобто ні до чого не підключений (на ніжці має бути потенціал логічної одиниці).

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

На малюнку показано контакти для сокетних процесорів. У процесорів, виготовлених у конструктиві Slot 1, за ідентифікацію живлення відповідають такі висновки:

VID0 VID1 VID2 VID3 VID4
B120 A120 A119 B119 A121

Наприклад, якщо заклеїти VID, VID, VID, то отримаємо напругу 2.2 В. Цього має вистачити будь-якому любителю розгону, і в той же час цілком прийнятно для того, щоб при хорошому охолодженні процесор працював досить довго:) Тобто досить легко можна отримати деякі рівні напруги для чого потрібно тільки заізолювати деякі ноги. Наприклад, для PPGA та SEPP (Slot1):

Приклади напруги живлення процесорів
Напруга, В Які ніжки треба заклеїти Рекомендації
1.80 VID Якщо ви не шанувальник розгону, то таку напругу можна використовувати для зменшення температури процесора під час роботи або економії електроенергії:) (Celeron споживає 10-20 Вт залежно від штатної частоти, а так виходить 10% економії:))
1.90 VID Загалом, вірно також, що і для напруги 1.8 В
2.00 Стандартна напруга Наведено для прикладу
2.20 VID; VID; VID Процесор повинен працювати без проблем, хіба що грітиметься сильніше.
2.40 VID; VID; VID Може працювати, а може й не працювати:) (але швидше за перше), і ще більше грітися
2.60 VID; VID Ризик досить великий, але ентузіасти можуть пробувати (якщо дуже хочеться розігнати процесор якнайсильніше).
2.80 VID; VID; VID І не намагайтеся — вказано лише для прикладу

Інші значення отримати важче, оскільки необхідно сильніший вплив на процесор - доведеться відповідний контакт процесора або роз'єму з'єднати із землею (GND). Так, наприклад, з'єднавши за допомогою проводка і паяння висновки слота (або сокету) VID і GND на звороті материнської плати, отримаємо напругу 2.05 В. Однак це ризикована операція так як у разі помилки або неакуратного паяння напруга ланцюгів введення-виведення (3, 3) може потрапити на ядро, що призведе до сумних наслідків. Проте таким чином, можна отримати на ядрі процесора будь-яку напругу з таблиці №1.

Власне про те, як заклеїти ніжки. Є кілька варіантів. По-перше, можна заізолювати їх шляхом нанесення міцного лаку. Цей спосіб нормально діє тільки при дійсно міцному лаку, так як при установці в гніздо ноги процесора відчувають велике фізичне зусилля, що може призвести до руйнування шару ізолюючого і, відповідно, на ядро ​​може потрапити не запланований рівень напруги (наприклад 2.6 замість 2.2 В при порушенні ізоляції провідника VID). По-друге, у сокетного процесора їх можна просто відкусити, а у слотового – перерізати відповідні провідники, але це спосіб не залишає шансів для відступу (якщо перерізаний провідник ще можна спаяти, то припаяти відкушену ногу досить проблематично).

Найреальнішим, мабуть, є варіант із заклеюванням ніг процесора. У випадку корпусу типу SEPP/SECC можна скористатися скотчем, акуратно вирізаним формою контактного майданчика. На платі процесора є написи, з яких можна зорієнтуватися, де який висновок розташований. У разі PPGA та FCPGA можна скористатися у такий спосіб. З фторопластової або поліетиленової плівки (такої, яка застосовується для виготовлення пакетів) вирізається коло діаметром близько 5 мм. Він розміщується так, щоб його центр виявився точно над контактом, який слід заізолювати. Потім швейною голкою краї кола опускаються між виводами.

При встановленні ніяких проблем зазвичай не виникає, проте проблема може виникнути при вилученні процесора з сокету: плівка залишається всередині, і витягти її не так просто (в крайньому випадку сокет можна розібрати і витягнути звідти все зайве:))

На фотографії "підготовлена" ніжка VID

При належній акуратності та уважності зробити необхідні операції досить легко.

Ті ж способи придатні і для підвищення або зниження напруги живлення Pentium II і Pentium III, як у виконанні під Slot 1, так і під FCPGA (зрозуміло, з відповідними змінами щодо рівнів напруги). Слід правда врахувати, що, у разі процесорів з ядрами Klamath і Coppermine, для підвищення напруги живлення братися за паяльник доведеться обов'язково: без замикання частини контактів на "землю" в даному випадку обійтися не вдасться (на відміну від ядер, розрахованих на напругу 2, 0 У).

Також не варто забувати про те, що не всі регулятори напруги, які встановлюються на материнських платах, підтримують абсолютно всі рівні. Відповідна мікросхема зазвичай розташована біля процесорного гнізда. За її маркуванням можна дізнатися фірму-виробника чіпа, а, отже, і її характеристики. Ось адреси деяких фірм, що виробляють регулятори напруги:

У статті були використані матеріали з книги Михайла Гука "Процесори Pentium II, Pentium Pro та просто Pentium" видавництва "Пітер", а також офіційна документація фірми Intel з процесорів Celeron

У сучасних десктопних і (особливо) мобільних процесорах застосовується цілий ряд енергозберігаючих технологій: ODCM, CxE, EIST та ін. Quiet, PowerNow! у AMD та Enhanced SpeedStep (EIST) у Intel.

Найчастіше користувачеві комп'ютера або ноутбука досить просто включити (поставити галочку) підтримку тієї чи іншої технології в BIOS та/або операційній системі - ніякої тонкої установки зазвичай не передбачено, хоча, як показує практика, вона може виявитися дуже корисною. У цій статті я розповім про те, як можна керувати робочою напругою ядра процесора з операційної системи (на прикладі Intel Pentium M та FreeBSD), і навіщо це може знадобитися.

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

Сподіваюся, стаття виявиться корисною не тільки користувачам FreeBSD: ми також трохи торкнемося GNU/Linux, Windows і Mac OS X. Втім, у цьому випадку конкретна операційна система має другорядне значення.

Передмова

Торік я проапгрейдив процесор у своєму старенькому ноутбуці: поставив Pentium M 780 замість штатного 735-го, добив до максимуму, так би мовити. Ноут став більше грітися під навантаженням (за рахунок збільшеного на 10 Вт тепловиділення); я не особливо звертав на це увагу (хіба що про всяк випадок почистив і змастив кулер), але одного прекрасного дня, під час тривалої компіляції комп'ютер ... просто вимкнувся (температура таки досягла критичних ста градусів). Я вивів значення системної змінної hw.acpi.thermal.tz0.temperature у трей, щоб спостерігати за температурою і, якщо що, вчасно перервати «важке» завдання. Але через якийсь час я втратив пильність (температура завжди залишалася в межах норми) і все повторилося. У цей момент я вирішив, що більше не хочу ні постійно побоюватися аварійного вимкнення під час тривалого навантаження CPU і тримати руку на Ctrl-C, ні ґвалтувати процесор.

Зазвичай зміна штатної напруги має на увазі його підвищення з метою забезпечити стабільну роботу процесора при розгоні (тобто на підвищеній частоті). Грубо кажучи, кожному значенню напруги відповідає деякий діапазон частот, на яких він може працювати, і завдання оверклокера – знайти максимальну частоту, на якій процесор ще не глючить. У нашому випадку завдання стоїть у певному сенсі симетричне: для відомої частоти (точніше, як ми невдовзі з'ясуємо, набору частот) знайти найменшу напругу, що забезпечує стабільну роботу CPU. Знижувати ж робочу частоту не хочеться, щоб не втратити у продуктивності – ноут і так вже далеко не топовий. Крім того, знижувати напругу вигідніше.

Трохи теорії

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

Сучасні мобільні процесори можуть споживати до 50-70 Вт, які в результаті розсіюють тепло. Це дуже багато (згадайте лампи розжарювання), особливо для ноутбука, який в автономному режимі під навантаженням «їстиме» акумулятор як та свиня апельсини. В умовах обмеженого простору тепло, швидше за все, доведеться відводити активно, а це означає додаткову витрату енергії на обертання вентилятора кулера (можливо кількох).

Звичайно, такий стан справ нікого не влаштовував, і виробники процесорів почали думати, як би оптимізувати енергоспоживання (і, відповідно, тепловіддачу), а заразом і запобігти процесору від перегріву. Тим, хто цікавиться, рекомендую до прочитання низку чудових статей Дмитра Бесєдіна, а я тим часом перейду безпосередньо до справи.

Трохи історії

Вперше технологія SpeedStep (версія 1.1) з'явилася в другому поколінні третіх пентіумів (виготовлені по.18 мкм техпроцесу мобільні Coppermine для ноутбуків, 2000 р.), які в залежності від навантаження або джерела живлення комп'ютера - мережа або акумулятор - могли перемикатися між високою та низькою частотами з допомогою змінного множника. В економному режимі процесор споживав приблизно вдвічі менше енергії.

З переходом на.13 мкм техпроцес технологія отримує номер версії 2.1 і стає «покращеною» (enhanced) – тепер процесор вміє знижувати не лише частоту, а й напругу. Версія 2.2 - адаптація для архітектури NetBurst, а до третьої версії (платформа Centrino) технологія офіційно називатиметься Enhanced Intel SpeedStep (EIST).

Версія 3.1 (2003 р.) вперше застосовується у першому та другому поколіннях процесорів Pentium M (ядра Banias та Dothan). Частота варіювалася (спочатку - лише перемикалася між двома значеннями) від 40% до 100% від базової, з кроком 100 МГц (для Banias) чи 133 МГц (для Dothan, наш випадок). Одночасно Intel вводить динамічне керування ємністю кеша другого рівня (L2), що дозволяє краще оптимізувати енергоспоживання. Версія 3.2 (Enhanced EIST) – адаптація для багатоядерних процесорів із загальним L2-кешем. (Невеликий FAQ від Intel за технологією SpeedStep.)

Тепер, замість того, щоб сліпо слідувати численним howto і туториалам, скачаємо pdf"ку і спробуємо розібратися в принципі роботи EST (я далі використовуватиму цю абревіатуру, т.к. вона універсальніше і коротше).

Як працює EST

Отже, EST дозволяє керувати продуктивністю та енергоспоживанням процесора, причому динамічно, під час роботи. На відміну від більш ранніх реалізацій, які вимагали апаратної підтримки (у чіпсеті) для зміни робочих параметрів процесора, EST дозволяє програмно, тобто. засобами BIOS або операційної системи, змінювати множник (відношення частоти процесора до частоти шини) та напруга ядра (V cc) залежно від навантаження, типу джерела живлення комп'ютера, температурного режиму CPU та/або налаштувань (політики) ОС.

Під час роботи процесор знаходиться в одному з кількох станів (power states): T(throttle), S(sleep), C(idle), P(performance), перемикаючись між ними за певними правилами (с. 386 специфікації ACPI 5.0).

Кожен процесор, присутній у системі, має бути описаний у таблиці DSDT, найчастіше у просторі імен \_PR , і зазвичай надає ряд методів, якими відбувається взаємодія з операційною системою (драйвером PM), і які описують можливості процесора (_PDC , _PPC) , підтримувані стани (_CST , _TSS , _PSS) та управління ними (_PTC , _PCT). Потрібні значення для кожного CPU (якщо він входить у т.зв. CPU support package) визначаються BIOS"ом материнської плати, який заповнює відповідні таблиці та методи ACPI (с. 11 pdf"ки) під час завантаження машини.

EST управляє роботою процесора в P-стані (P-state), вони й будуть нас цікавити. Наприклад, Pentium M підтримує шість P-станів (див. рис. 1.1 та таб. 1.6 pdf"ки), що відрізняються напругою і частотою:

У випадку, коли процесор заздалегідь невідомий, єдиним більш-менш надійним (і рекомендованим Intel) способом роботи з ним є ACPI. З конкретним процесором можна взаємодіяти безпосередньо, минаючи ACPI, - через регістри MSR (Model-Specific Register), зокрема і безпосередньо з командного рядка: починаючи з версії 7.2, у FreeBSD при цьому використовується утиліта cpucontrol(8) .

Дізнатися, чи підтримує ваш процесор EST, можна глянувши на 16-й біт у регістрі IA_32_MISC_ENABLE (0x1A0), він повинен бути встановлений:

# kldload cpuctl # cpucontrol -m 0x1a0 /dev/cpuctl0 | (read _ msr hi lo ; echo $((lo >> 16 & 1))) 1
Аналогічна команда для GNU/Linux (потрібний пакет msr-tools):

# modprobe msr # echo $((`rdmsr -c 0x1a0` >> 16 & 1)) 1
Перехід між станами відбувається під час запису в регістр IA32_PERF_CTL (0x199). Дізнатися поточний режим роботи можна прочитавши регістр IA32_PERF_STATUS (0x198), який оновлюється динамічно (таб. 1.4 pdf"ки).

# cpucontrol -m 0x198 /dev/cpuctl0 MSR 0x198: 0x0612112b 0x06000c20
З документації випливає, що стан кодується в нижніх 16 бітах (якщо виконати команду кілька разів, їх значення може змінюватися - це означає, що EST працює). Якщо подивитися уважніше на інші біти, у них теж не сміття. Гуляючи, можна з'ясувати, що ж вони означають.

Структура регістру PERF_STATUS

Дані, що читаються з PERF_STATUS , є наступною структурою (припустимо, що дані зберігаються як little-endian):

Struct msr_perf_status ( unsigned curr_psv: 16; /* Current PSV */ unsigned status: 8; /* Status flags */ unsigned min_mult: 8; /* Minimum multiplier */ unsigned max_psv: 16; /* Maximum PSV 16;/* Power-on PSV */);
Три 16-бітових поля - це звані Performance State Values ​​(PSV), їх структуру ми розглянемо нижче: поточне значення PSV, максимальне (залежить від процесора) і значення на старті системи (при включенні). Поточне значення (curr_psv), очевидно, змінюється при зміні режиму роботи, максимальне (max_psv) зазвичай залишається постійним, стартове значення (init_psv) не змінюється: як правило, воно дорівнює максимальному значенню для десктопів та серверів, але мінімального для мобільних CPU. Мінімальний множник (min_mult) для процесорів Intel майже завжди дорівнює шести. Поле status містить значення деяких прапорів, наприклад, при настанні подій EST або THERM (тобто, у момент зміни P-стану або перегріву процесора, відповідно).

Тепер, коли ми знаємо призначення всіх 64 біт регістру PERF_STATUS, ми можемо розшифрувати прочитане вище слово: 0x0612 112b 0x06 00 0c20⇒ PSV на старті 0x0612, максимальне значення 0x112b, мінімальний множник 6 (як і очікувалося), прапори скинуті, поточне значення PSV = 0x0c20. Що означають ці 16 біт?

Структура Performance State Value (PSV)

Знати і розуміти, що з себе є PSV, дуже важливо, адже саме в такому вигляді задаються режими роботи процесора.

Struct psv ( unsigned vid: 6; /* Voltage Identifier */ unsigned _reserved1: 2; unsigned freq: 5; /* Frequency Identifier */ unsigned _reserved2: 1; unsigned nibr: 1; /* Non-integer bus ratio */ unsigned slfm: 1; /* Dynamic FSB frequency (Super-LFM) */ );
Dynamic FSB frequency switching показує пропускати кожен другий такт FSB, тобто. удвічі знижувати робочу частоту; ця можливість вперше реалізована в процесорах Core 2 Duo (ядро Merom) і нас не стосується, як і Non-integer bus ratio - спеціальний режим, що підтримується деякими процесорами, що дозволяє, як випливає з назви, більш тонко керувати їх частотою.

До власне технології EST мають відношення два поля - ідентифікатори частоти (Frequency Identifier, Fid), який чисельно дорівнює множнику, і напруги (Voltage Identifier, Vid), який відповідає рівню напруги (він зазвичай і найменш документований).

Ідентифікатор напруги (Voltage Identifier)

Intel дуже неохоче розкриває інформацію (зазвичай потрібно підписати NDA) про те, як кодується ідентифікатор напруги для кожного процесора. Але для більшості популярних CPU, на щастя, ця формула відома; зокрема, для нашого Pentium M (і багатьох інших): V cc = Vid 0 + (Vid × V step), де V cc – поточна (дійсна) напруга, Vid 0 – базова напруга (коли Vid == 0), V step – крок. Таблиця для деяких популярних процесорів (усі значення в мілівольтах):
Процесор Vid 0 V step V boot V min V max
Pentium M 700,0 16,0 xxxx,x xxx,x xxxx,x
E6000, E4000 825,0 12,5 1100,0 850,0 1500,0
E8000, E7000 825,0 12,5 1100,0 850,0 1362,5
X9000 712,5 12,5 1200,0 800,0 1325,0
T9000 712,5 12,5 1200,0 750,0 1300,0
P9000, P8000 712,5 12,5 1200,0 750,0 1300,0
Q9000D, Q8000D 825,0 12,5 1100,0 850,0 1362,5
Q9000M 712,5 12,5 1200,0 850,0 1300,0
Множник (тобто Fid) записується в PSV зрушеним на 8 біт вліво, молодші шість біт займає Vid. Т.к. у нашому випадку рештою біт можна знехтувати, то PSV, частота процесора, системної шини і фізична напруга пов'язані простою формулою (для Pentium M):
Тепер розглянемо регістр керування (PERF_CTL). Запис у нього має здійснюватися так: спочатку зчитується поточне значення (64-битное слово цілком), у ньому змінюються необхідні біти, і записується у регістр (т.зв. read-modify-write).

Структура регістру PERF_CTL

struct msr_perf_ctl ( unsigned psv: 16; /* Requested PSV */ unsigned _reserved1: 16; unsigned ida_diseng: 1; /* IDA disengage */ unsigned _reserved2: 31; );
IDA (Intel Dynamic Acceleration) disengage-біт дозволяє тимчасово відключати адаптивне (opportunistic) управління частотою на процесорах Intel Core 2 Duo T7700 і пізніших, - знову ж таки, нас не цікавить. Молодші 16 біт (PSV) - режим, у якому ми «просимо» перейти процесор.

Таблиця _PSS

Таблиця _PSS є масив станів ( Packageу термінології ACPI) або метод, який повертає такий масив; кожен стан (P-state) у свою чергу визначається наступною структурою (с. 409 специфікації ACPI):

Struct Pstate ( unsigned CoreFrequency; /* Core CPU operating frequency, MHz */ unsigned Power; /* Maximum power dissipation, mW */ unsigned Latency; * Worst-case latency while Bus Masters є безпідставний доступ до пам'яті, µs */ unsigned Control; від PERF_STATUS) */ );
Таким чином, кожен P-стан характеризується якоюсь робочою частотою ядра, максимальною потужністю, що розсіюється, транзитними затримками (фактично це час переходу між станами, протягом яких недоступні CPU і пам'ять), нарешті, найцікавіше: PSV, яке відповідає даному стану і яке треба записати в PERF_CTL , щоб у цей стан перейти (Control). Щоб переконатися, що процесор успішно перейшов у новий стан, потрібно прочитати регістр PERF_STATUS та порівняти зі значенням, записаним у полі Status.

EST-драйвер операційної системи може «знати» деякі процесори, тобто. зможе ними керувати і без підтримки ACPI. Але це рідкість, особливо в наші дні (хоча для undervolting"а на Linux, десь до версії 2.6.20, треба було патчити таблиці в драйвері, і ще в 2011 цей метод був дуже поширений).

Варто зазначити, що EST-драйвер може працювати навіть у разі відсутності таблиці _PSS та невідомого процесора, т.к. максимальне та мінімальне значення можна дізнатися з PERF_STATUS (при цьому, очевидно, число P-станів вироджується у два).

Досить теорії. Що з цим усім робити?

Тепер, коли ми знаємо 1) призначення всіх бітів у потрібних словах MSR, 2) як саме кодується PSV для нашого процесора, і 3) де в DSDT шукати потрібні налаштування, час скласти таблицю частот і напруг за замовчуванням. Здампимо DSDT і шукаємо там таблицю _PSS. Для Pentium M 780 вона має виглядати якось так:

Default _PSS values

Name (_PSS, Package (0x06) ( // Всього визначено 6 станів (P-states) Package (0x06) ( 0x000008DB, // 2267 MHz (cf. Fid × FSB clock)) 0x00006978, // 27000 mW 0x0 µs (соответствует спецификации) 0x0000000A, // 10 µs 0x0000112B, // 0x11 = 17 (множитель, Fid), 0x2b = 43 (Vid) 0x0000112B ), Package (0x06) ( 0x0000074B, // 1867 MHz (82% от максимальной) 0x000059D8, // 23000 mW 0x0000000A, 0x0000000A, 0x00000E25, // Fid = 14, Vid = 37 0x00000E25), Package (0x06) (06 0x00005208 // 21000 mW 0x0000000A, 0x0000000A , 0x00000C20, // Fid = 12, Vid = 32 0x00000C20), Package (0x06) (0x00000535, // 1333 MHz (59% від максимальної) 0x00004650, // 0800 , 0x00000A1C, // Fid = 10, Vid = 28 0x00000A1C), Package (0x06) (0x0000042B, // 1067 MHz (47% від максимальної) 0x00003E80, // 16000 mW 0x0000000A, 0x000 = 23 0x00000817), Package (0x06 ) (0x00000320, // 800 MHz (35% від максимальної) 0x000032C8, // 13000 mW 0x0000000A, 0x0000000A, 0x00000612, // Fid = 6,0)


Отже, ми знаємо дефолтні Vid для кожного P-рівня: 43, 37, 32, 28, 23, 18, що відповідає напругам від 1388 mV до 988 mV. Суть undervolting"а в тому, що напевно ці напруги трохи вище, ніж реально необхідно для стійкої роботи процесора. Спробуємо визначити "кордони дозволеного".

Я написав для цього простий shell-скрипт, який поступово знижує Vid та виконує нескладний цикл (демон powerd(8) перед цим, зрозуміло, необхідно прибити). Таким чином я визначив напруги, що дозволяють процесору хоча б не виснути, потім прогнав кілька разів тест Super Pi і перескладання ядра; вже пізніше я підняв значення Vid для двох максимальних частот ще на один пункт, інакше gcc зрідка вилітав через помилку illegal instruction. В результаті всіх експериментів протягом декількох днів вийшов такий набір "стабільних" Vid: 30, 18, 12, 7, 2, 0.

Аналіз результатів

Тепер, коли ми емпірично визначили мінімальну безпечну напругу, цікаво порівняти їх з вихідними:
Зниження максимальної напруги навіть на 15% принесло досить відчутні результати: тривале навантаження не тільки не призводить більше до перегріву процесора та аварійного відключення, температура взагалі майже ніколи не перевищує 80°C. Прогнозований час роботи від акумулятора в «офісному» режимі, судячи з acpiconf -i 0 , збільшився з 1 год. 40 м. до 2 год. 25 м. (Не дуже багато, але літій-іонні елементи з часом «втомлюються», а акумулятор я не змінював з моменту покупки ноутбука років сім тому.

Тепер потрібно зробити так, щоб параметри застосовувалися автоматично. Можна, наприклад, модифікувати драйвер cpufreq(4) , щоб PSV бралися з власної таблиці, а не через ACPI. Але це незручно вже хоча б тим, що потрібно не забувати патчити драйвер при оновленні системи, та й взагалі більше схоже на брудний хак, ніж на рішення. Можна, напевно, ще якось пропатчити powerd(8) , що погано приблизно з тих самих причин. Можна просто запускати скрипт, знижуючи напругу прямим записом в MSR (що, власне, я і робив для визначення «стабільних» напруг), але тоді доведеться пам'ятати і самостійно обробляти переходи між станами (не тільки P-states, взагалі будь-якими, наприклад, при виході ноутбука зі сну). Теж не річ.

Якщо ми отримуємо значення PSV через ACPI, то логічніше змінити саме таблицю _PSS в DSDT. На щастя, BIOS для цього колупати не доведеться: FreeBSD вміє завантажувати DSDT з файлу (про модифікацію таблиць ACPI на Хабре вже, тому зараз докладно на цьому не зупинятися). Замінюємо потрібні поля в DSDT:

Undervolting patch for _PSS

@@ -7385,8 +7385,8 @@ 0x00006978, 0x0000000A, 0x0000000A, - 0x0000112B, - 0x0000112B + 0x0000111D, + 0x0 +7395,8 @@ 0x000059D8, 0x0000000A, 0x0000000A, - 0x00000E25, - 0x00000E25 + 0x00000E12, + 0x00000E12), Package (0x06) @@ -7405,8 +7405,8 @@ 0x000 0A, - 0x00000C20, - 0x00000C20 + 0x00000C0C, + 0x00000C0C), Package ( 0x06) @@ -7415,8 +7415,8 @@ 0x00004650, 0x0000000A, 0x0000000A, - 0x00000A1C, - 0x00000A1C + 0x00000A07 7425,8 +7425,8 @@ 0x00003E80, 0x0000000A, 0x0000000A, - 0x00000817, - 0x00000817 + 0x00000802, + 0x00000802), Package (0x06) @@ -7435,8 030 0A, 0x0000000A, - 0x00000612, - 0x00000612 + 0x00000600, + 0x00000600)) )


Компілюємо новий AML-файл (байткод ACPI) і модифікуємо /boot/loader.conf так, щоб FreeBSD завантажувала нашу модифіковану DSDT замість дефолтної:

Acpi_dsdt_load="YES" acpi_dsdt_name="/root/undervolt.aml"
Ось загалом і все. Єдине, не забудьте закоментувати ці два рядки в /boot/loader.conf, якщо змінюватимете процесор.

Навіть якщо ви не збираєтеся знижувати штатну напругу, вміння налаштовувати управління станами процесора (не тільки P-states) може стати в нагоді. Адже нерідко буває, що «кривий» BIOS заповнює таблиці невірно, не повністю, або не заповнює їх зовсім (наприклад тому, що стоїть не це підтримує EST целерон, а виробник офіційно не передбачає його заміну). У цьому випадку вам доведеться зробити всю роботу самостійно. Зверніть увагу, що додати лише одну таблицю _PSS може виявитися недостатньо; так, C-states задаються таблицею _CST і, крім того, може знадобитися описати самі процедури управління (Performance Control, _PCT). На щастя, це нескладно і досить докладно, з прикладами описано у восьмому розділі специфікації ACPI.

Undervolting в GNU/Linux

Щиро кажучи, спочатку я думав, що мені достатньо буде прочитати Gentoo Undervolting Guide і просто адаптувати його для FreeBSD. Це виявилося не так просто, бо документ на перевірку виявився напрочуд безглуздим (що взагалі-то дивно для Gentoo Wiki). На жаль, на їхньому новому сайті я нічого схожого не знайшов, довелося задовольнятися старою копією; і хоча я розумію, що це керівництво багато в чому втратило актуальність, я все ж таки його трохи покритикую. :-)

Мені чомусь відразу, без оголошення війни, пропонують патчити ядро ​​(у FreeBSD, на хвилиночку, нам взагалі ніякий системний кодмодифікувати не довелося). Забивати у нутрощі драйвера або записувати в якісь init-скрипти значення якихось «безпечних» напруг, незрозуміло ким і яким чином отримані, зі спеціальної таблиці (в якій Pentium M 780 знущається рядком, що складається з одних знаків питання). Наслідувати поради, серед яких є написані людьми, які явно взагалі не розуміють, про що говорять. А головне, незрозуміло, чому і як саме ці магічні заміни одних цифр на інші працюють; не пропонується способу "поторкати" EST, перш ніж щось патчити і перезбирати ядро, жодного разу не згадуються регістри MSR і робота з ними з командного рядка. Не розглядається модифікація таблиць ACPI як альтернативний і кращий варіант.

Макось досить щільно взаємодіє з (і розраховує на коректну роботу) ACPI, і модифікація таблиць - один із основних методів її налаштування під конкретне залізо. Тому перше, що спадає на думку - так само здампити пропатчити свою DSDT. Альтернативний метод: google://IntelEnhancedSpeedStep.kext , наприклад, раз , два , три .

Ще одна «чудова» утиліта (на щастя, вже застаріла) пропонує купити за $10 можливість міняти напругу та частоту. :-)

У сучасних десктопних і (особливо) мобільних процесорах застосовується цілий ряд енергозберігаючих технологій: ODCM, CxE, EIST та ін. Quiet, PowerNow! у AMD та Enhanced SpeedStep (EIST) у Intel.

Найчастіше користувачеві комп'ютера або ноутбука досить просто включити (поставити галочку) підтримку тієї чи іншої технології в BIOS та/або операційній системі - ніякої тонкої установки зазвичай не передбачено, хоча, як показує практика, вона може виявитися дуже корисною. У цій статті я розповім про те, як можна керувати робочою напругою ядра процесора з операційної системи (на прикладі Intel Pentium M та FreeBSD), і навіщо це може знадобитися.

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

Сподіваюся, стаття виявиться корисною не тільки користувачам FreeBSD: ми також трохи торкнемося GNU/Linux, Windows і Mac OS X. Втім, у цьому випадку конкретна операційна система має другорядне значення.

Передмова

Торік я проапгрейдив процесор у своєму старенькому ноутбуці: поставив Pentium M 780 замість штатного 735-го, добив до максимуму, так би мовити. Ноут став більше грітися під навантаженням (за рахунок збільшеного на 10 Вт тепловиділення); я не особливо звертав на це увагу (хіба що про всяк випадок почистив і змастив кулер), але одного прекрасного дня, під час тривалої компіляції комп'ютер ... просто вимкнувся (температура таки досягла критичних ста градусів). Я вивів значення системної змінної hw.acpi.thermal.tz0.temperature у трей, щоб спостерігати за температурою і, якщо що, вчасно перервати «важке» завдання. Але через якийсь час я втратив пильність (температура завжди залишалася в межах норми) і все повторилося. У цей момент я вирішив, що більше не хочу ні постійно побоюватися аварійного вимкнення під час тривалого навантаження CPU і тримати руку на Ctrl-C, ні ґвалтувати процесор.

Зазвичай зміна штатної напруги має на увазі його підвищення з метою забезпечити стабільну роботу процесора при розгоні (тобто на підвищеній частоті). Грубо кажучи, кожному значенню напруги відповідає деякий діапазон частот, на яких він може працювати, і завдання оверклокера – знайти максимальну частоту, на якій процесор ще не глючить. У нашому випадку завдання стоїть у певному сенсі симетричне: для відомої частоти (точніше, як ми невдовзі з'ясуємо, набору частот) знайти найменшу напругу, що забезпечує стабільну роботу CPU. Знижувати ж робочу частоту не хочеться, щоб не втратити у продуктивності – ноут і так вже далеко не топовий. Крім того, знижувати напругу вигідніше.

Трохи теорії

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

Сучасні мобільні процесори можуть споживати до 50-70 Вт, які в результаті розсіюють тепло. Це дуже багато (згадайте лампи розжарювання), особливо для ноутбука, який в автономному режимі під навантаженням «їстиме» акумулятор як та свиня апельсини. В умовах обмеженого простору тепло, швидше за все, доведеться відводити активно, а це означає додаткову витрату енергії на обертання вентилятора кулера (можливо кількох).

Звичайно, такий стан справ нікого не влаштовував, і виробники процесорів почали думати, як би оптимізувати енергоспоживання (і, відповідно, тепловіддачу), а заразом і запобігти процесору від перегріву. Тим, хто цікавиться, рекомендую до прочитання низку чудових статей Дмитра Бесєдіна, а я тим часом перейду безпосередньо до справи.

Трохи історії

Вперше технологія SpeedStep (версія 1.1) з'явилася в другому поколінні третіх пентіумів (виготовлені по.18 мкм техпроцесу мобільні Coppermine для ноутбуків, 2000 р.), які в залежності від навантаження або джерела живлення комп'ютера - мережа або акумулятор - могли перемикатися між високою та низькою частотами з допомогою змінного множника. В економному режимі процесор споживав приблизно вдвічі менше енергії.

З переходом на.13 мкм техпроцес технологія отримує номер версії 2.1 і стає «покращеною» (enhanced) – тепер процесор вміє знижувати не лише частоту, а й напругу. Версія 2.2 - адаптація для архітектури NetBurst, а до третьої версії (платформа Centrino) технологія офіційно називатиметься Enhanced Intel SpeedStep (EIST).

Версія 3.1 (2003 р.) вперше застосовується у першому та другому поколіннях процесорів Pentium M (ядра Banias та Dothan). Частота варіювалася (спочатку - лише перемикалася між двома значеннями) від 40% до 100% від базової, з кроком 100 МГц (для Banias) чи 133 МГц (для Dothan, наш випадок). Одночасно Intel вводить динамічне керування ємністю кеша другого рівня (L2), що дозволяє краще оптимізувати енергоспоживання. Версія 3.2 (Enhanced EIST) – адаптація для багатоядерних процесорів із загальним L2-кешем. (Невеликий FAQ від Intel за технологією SpeedStep.)

Тепер, замість того, щоб сліпо слідувати численним howto і туториалам, скачаємо pdf"ку і спробуємо розібратися в принципі роботи EST (я далі використовуватиму цю абревіатуру, т.к. вона універсальніше і коротше).

Як працює EST

Отже, EST дозволяє керувати продуктивністю та енергоспоживанням процесора, причому динамічно, під час роботи. На відміну від більш ранніх реалізацій, які вимагали апаратної підтримки (у чіпсеті) для зміни робочих параметрів процесора, EST дозволяє програмно, тобто. засобами BIOS або операційної системи, змінювати множник (відношення частоти процесора до частоти шини) та напруга ядра (V cc) залежно від навантаження, типу джерела живлення комп'ютера, температурного режиму CPU та/або налаштувань (політики) ОС.

Під час роботи процесор знаходиться в одному з кількох станів (power states): T(throttle), S(sleep), C(idle), P(performance), перемикаючись між ними за певними правилами (с. 386 специфікації ACPI 5.0).

Кожен процесор, присутній у системі, має бути описаний у таблиці DSDT, найчастіше у просторі імен \_PR , і зазвичай надає ряд методів, якими відбувається взаємодія з операційною системою (драйвером PM), і які описують можливості процесора (_PDC , _PPC) , підтримувані стани (_CST , _TSS , _PSS) та управління ними (_PTC , _PCT). Потрібні значення для кожного CPU (якщо він входить у т.зв. CPU support package) визначаються BIOS"ом материнської плати, який заповнює відповідні таблиці та методи ACPI (с. 11 pdf"ки) під час завантаження машини.

EST управляє роботою процесора в P-стані (P-state), вони й будуть нас цікавити. Наприклад, Pentium M підтримує шість P-станів (див. рис. 1.1 та таб. 1.6 pdf"ки), що відрізняються напругою і частотою:

У випадку, коли процесор заздалегідь невідомий, єдиним більш-менш надійним (і рекомендованим Intel) способом роботи з ним є ACPI. З конкретним процесором можна взаємодіяти безпосередньо, минаючи ACPI, - через регістри MSR (Model-Specific Register), зокрема і безпосередньо з командного рядка: починаючи з версії 7.2, у FreeBSD при цьому використовується утиліта cpucontrol(8) .

Дізнатися, чи підтримує ваш процесор EST, можна глянувши на 16-й біт у регістрі IA_32_MISC_ENABLE (0x1A0), він повинен бути встановлений:

# kldload cpuctl # cpucontrol -m 0x1a0 /dev/cpuctl0 | (read _ msr hi lo ; echo $((lo >> 16 & 1))) 1
Аналогічна команда для GNU/Linux (потрібний пакет msr-tools):

# modprobe msr # echo $((`rdmsr -c 0x1a0` >> 16 & 1)) 1
Перехід між станами відбувається під час запису в регістр IA32_PERF_CTL (0x199). Дізнатися поточний режим роботи можна прочитавши регістр IA32_PERF_STATUS (0x198), який оновлюється динамічно (таб. 1.4 pdf"ки).

# cpucontrol -m 0x198 /dev/cpuctl0 MSR 0x198: 0x0612112b 0x06000c20
З документації випливає, що стан кодується в нижніх 16 бітах (якщо виконати команду кілька разів, їх значення може змінюватися - це означає, що EST працює). Якщо подивитися уважніше на інші біти, у них теж не сміття. Гуляючи, можна з'ясувати, що ж вони означають.

Структура регістру PERF_STATUS

Дані, що читаються з PERF_STATUS , є наступною структурою (припустимо, що дані зберігаються як little-endian):

Struct msr_perf_status ( unsigned curr_psv: 16; /* Current PSV */ unsigned status: 8; /* Status flags */ unsigned min_mult: 8; /* Minimum multiplier */ unsigned max_psv: 16; /* Maximum PSV 16;/* Power-on PSV */);
Три 16-бітових поля - це звані Performance State Values ​​(PSV), їх структуру ми розглянемо нижче: поточне значення PSV, максимальне (залежить від процесора) і значення на старті системи (при включенні). Поточне значення (curr_psv), очевидно, змінюється при зміні режиму роботи, максимальне (max_psv) зазвичай залишається постійним, стартове значення (init_psv) не змінюється: як правило, воно дорівнює максимальному значенню для десктопів та серверів, але мінімального для мобільних CPU. Мінімальний множник (min_mult) для процесорів Intel майже завжди дорівнює шести. Поле status містить значення деяких прапорів, наприклад, при настанні подій EST або THERM (тобто, у момент зміни P-стану або перегріву процесора, відповідно).

Тепер, коли ми знаємо призначення всіх 64 біт регістру PERF_STATUS, ми можемо розшифрувати прочитане вище слово: 0x0612 112b 0x06 00 0c20⇒ PSV на старті 0x0612, максимальне значення 0x112b, мінімальний множник 6 (як і очікувалося), прапори скинуті, поточне значення PSV = 0x0c20. Що означають ці 16 біт?

Структура Performance State Value (PSV)

Знати і розуміти, що з себе є PSV, дуже важливо, адже саме в такому вигляді задаються режими роботи процесора.

Struct psv ( unsigned vid: 6; /* Voltage Identifier */ unsigned _reserved1: 2; unsigned freq: 5; /* Frequency Identifier */ unsigned _reserved2: 1; unsigned nibr: 1; /* Non-integer bus ratio */ unsigned slfm: 1; /* Dynamic FSB frequency (Super-LFM) */ );
Dynamic FSB frequency switching показує пропускати кожен другий такт FSB, тобто. удвічі знижувати робочу частоту; ця можливість вперше реалізована в процесорах Core 2 Duo (ядро Merom) і нас не стосується, як і Non-integer bus ratio - спеціальний режим, що підтримується деякими процесорами, що дозволяє, як випливає з назви, більш тонко керувати їх частотою.

До власне технології EST мають відношення два поля - ідентифікатори частоти (Frequency Identifier, Fid), який чисельно дорівнює множнику, і напруги (Voltage Identifier, Vid), який відповідає рівню напруги (він зазвичай і найменш документований).

Ідентифікатор напруги (Voltage Identifier)

Intel дуже неохоче розкриває інформацію (зазвичай потрібно підписати NDA) про те, як кодується ідентифікатор напруги для кожного процесора. Але для більшості популярних CPU, на щастя, ця формула відома; зокрема, для нашого Pentium M (і багатьох інших): V cc = Vid 0 + (Vid × V step), де V cc – поточна (дійсна) напруга, Vid 0 – базова напруга (коли Vid == 0), V step – крок. Таблиця для деяких популярних процесорів (усі значення в мілівольтах):
Процесор Vid 0 V step V boot V min V max
Pentium M 700,0 16,0 xxxx,x xxx,x xxxx,x
E6000, E4000 825,0 12,5 1100,0 850,0 1500,0
E8000, E7000 825,0 12,5 1100,0 850,0 1362,5
X9000 712,5 12,5 1200,0 800,0 1325,0
T9000 712,5 12,5 1200,0 750,0 1300,0
P9000, P8000 712,5 12,5 1200,0 750,0 1300,0
Q9000D, Q8000D 825,0 12,5 1100,0 850,0 1362,5
Q9000M 712,5 12,5 1200,0 850,0 1300,0
Множник (тобто Fid) записується в PSV зрушеним на 8 біт вліво, молодші шість біт займає Vid. Т.к. у нашому випадку рештою біт можна знехтувати, то PSV, частота процесора, системної шини і фізична напруга пов'язані простою формулою (для Pentium M):
Тепер розглянемо регістр керування (PERF_CTL). Запис у нього має здійснюватися так: спочатку зчитується поточне значення (64-битное слово цілком), у ньому змінюються необхідні біти, і записується у регістр (т.зв. read-modify-write).

Структура регістру PERF_CTL

struct msr_perf_ctl ( unsigned psv: 16; /* Requested PSV */ unsigned _reserved1: 16; unsigned ida_diseng: 1; /* IDA disengage */ unsigned _reserved2: 31; );
IDA (Intel Dynamic Acceleration) disengage-біт дозволяє тимчасово відключати адаптивне (opportunistic) управління частотою на процесорах Intel Core 2 Duo T7700 і пізніших, - знову ж таки, нас не цікавить. Молодші 16 біт (PSV) - режим, у якому ми «просимо» перейти процесор.

Таблиця _PSS

Таблиця _PSS є масив станів ( Packageу термінології ACPI) або метод, який повертає такий масив; кожен стан (P-state) у свою чергу визначається наступною структурою (с. 409 специфікації ACPI):

Struct Pstate ( unsigned CoreFrequency; /* Core CPU operating frequency, MHz */ unsigned Power; /* Maximum power dissipation, mW */ unsigned Latency; * Worst-case latency while Bus Masters є безпідставний доступ до пам'яті, µs */ unsigned Control; від PERF_STATUS) */ );
Таким чином, кожен P-стан характеризується якоюсь робочою частотою ядра, максимальною потужністю, що розсіюється, транзитними затримками (фактично це час переходу між станами, протягом яких недоступні CPU і пам'ять), нарешті, найцікавіше: PSV, яке відповідає даному стану і яке треба записати в PERF_CTL , щоб у цей стан перейти (Control). Щоб переконатися, що процесор успішно перейшов у новий стан, потрібно прочитати регістр PERF_STATUS та порівняти зі значенням, записаним у полі Status.

EST-драйвер операційної системи може «знати» деякі процесори, тобто. зможе ними керувати і без підтримки ACPI. Але це рідкість, особливо в наші дні (хоча для undervolting"а на Linux, десь до версії 2.6.20, треба було патчити таблиці в драйвері, і ще в 2011 цей метод був дуже поширений).

Варто зазначити, що EST-драйвер може працювати навіть у разі відсутності таблиці _PSS та невідомого процесора, т.к. максимальне та мінімальне значення можна дізнатися з PERF_STATUS (при цьому, очевидно, число P-станів вироджується у два).

Досить теорії. Що з цим усім робити?

Тепер, коли ми знаємо 1) призначення всіх бітів у потрібних словах MSR, 2) як саме кодується PSV для нашого процесора, і 3) де в DSDT шукати потрібні налаштування, час скласти таблицю частот і напруг за замовчуванням. Здампимо DSDT і шукаємо там таблицю _PSS. Для Pentium M 780 вона має виглядати якось так:

Default _PSS values

Name (_PSS, Package (0x06) ( // Всього визначено 6 станів (P-states) Package (0x06) ( 0x000008DB, // 2267 MHz (cf. Fid × FSB clock)) 0x00006978, // 27000 mW 0x0 µs (соответствует спецификации) 0x0000000A, // 10 µs 0x0000112B, // 0x11 = 17 (множитель, Fid), 0x2b = 43 (Vid) 0x0000112B ), Package (0x06) ( 0x0000074B, // 1867 MHz (82% от максимальной) 0x000059D8, // 23000 mW 0x0000000A, 0x0000000A, 0x00000E25, // Fid = 14, Vid = 37 0x00000E25), Package (0x06) (06 0x00005208 // 21000 mW 0x0000000A, 0x0000000A , 0x00000C20, // Fid = 12, Vid = 32 0x00000C20), Package (0x06) (0x00000535, // 1333 MHz (59% від максимальної) 0x00004650, // 0800 , 0x00000A1C, // Fid = 10, Vid = 28 0x00000A1C), Package (0x06) (0x0000042B, // 1067 MHz (47% від максимальної) 0x00003E80, // 16000 mW 0x0000000A, 0x000 = 23 0x00000817), Package (0x06 ) (0x00000320, // 800 MHz (35% від максимальної) 0x000032C8, // 13000 mW 0x0000000A, 0x0000000A, 0x00000612, // Fid = 6,0)


Отже, ми знаємо дефолтні Vid для кожного P-рівня: 43, 37, 32, 28, 23, 18, що відповідає напругам від 1388 mV до 988 mV. Суть undervolting"а в тому, що напевно ці напруги трохи вище, ніж реально необхідно для стійкої роботи процесора. Спробуємо визначити "кордони дозволеного".

Я написав для цього простий shell-скрипт, який поступово знижує Vid та виконує нескладний цикл (демон powerd(8) перед цим, зрозуміло, необхідно прибити). Таким чином я визначив напруги, що дозволяють процесору хоча б не виснути, потім прогнав кілька разів тест Super Pi і перескладання ядра; вже пізніше я підняв значення Vid для двох максимальних частот ще на один пункт, інакше gcc зрідка вилітав через помилку illegal instruction. В результаті всіх експериментів протягом декількох днів вийшов такий набір "стабільних" Vid: 30, 18, 12, 7, 2, 0.

Аналіз результатів

Тепер, коли ми емпірично визначили мінімальну безпечну напругу, цікаво порівняти їх з вихідними:
Зниження максимальної напруги навіть на 15% принесло досить відчутні результати: тривале навантаження не тільки не призводить більше до перегріву процесора та аварійного відключення, температура взагалі майже ніколи не перевищує 80°C. Прогнозований час роботи від акумулятора в «офісному» режимі, судячи з acpiconf -i 0 , збільшився з 1 год. 40 м. до 2 год. 25 м. (Не дуже багато, але літій-іонні елементи з часом «втомлюються», а акумулятор я не змінював з моменту покупки ноутбука років сім тому.

Тепер потрібно зробити так, щоб параметри застосовувалися автоматично. Можна, наприклад, модифікувати драйвер cpufreq(4) , щоб PSV бралися з власної таблиці, а не через ACPI. Але це незручно вже хоча б тим, що потрібно не забувати патчити драйвер при оновленні системи, та й взагалі більше схоже на брудний хак, ніж на рішення. Можна, напевно, ще якось пропатчити powerd(8) , що погано приблизно з тих самих причин. Можна просто запускати скрипт, знижуючи напругу прямим записом в MSR (що, власне, я і робив для визначення «стабільних» напруг), але тоді доведеться пам'ятати і самостійно обробляти переходи між станами (не тільки P-states, взагалі будь-якими, наприклад, при виході ноутбука зі сну). Теж не річ.

Якщо ми отримуємо значення PSV через ACPI, то логічніше змінити саме таблицю _PSS в DSDT. На щастя, BIOS для цього колупати не доведеться: FreeBSD вміє завантажувати DSDT з файлу (про модифікацію таблиць ACPI на Хабре вже не раз писали, тому зараз докладно на цьому не зупинятися). Замінюємо потрібні поля в DSDT:

Undervolting patch for _PSS

@@ -7385,8 +7385,8 @@ 0x00006978, 0x0000000A, 0x0000000A, - 0x0000112B, - 0x0000112B + 0x0000111D, + 0x0 +7395,8 @@ 0x000059D8, 0x0000000A, 0x0000000A, - 0x00000E25, - 0x00000E25 + 0x00000E12, + 0x00000E12), Package (0x06) @@ -7405,8 +7405,8 @@ 0x000 0A, - 0x00000C20, - 0x00000C20 + 0x00000C0C, + 0x00000C0C), Package ( 0x06) @@ -7415,8 +7415,8 @@ 0x00004650, 0x0000000A, 0x0000000A, - 0x00000A1C, - 0x00000A1C + 0x00000A07 7425,8 +7425,8 @@ 0x00003E80, 0x0000000A, 0x0000000A, - 0x00000817, - 0x00000817 + 0x00000802, + 0x00000802), Package (0x06) @@ -7435,8 030 0A, 0x0000000A, - 0x00000612, - 0x00000612 + 0x00000600, + 0x00000600)) )


Компілюємо новий AML-файл (байткод ACPI) і модифікуємо /boot/loader.conf так, щоб FreeBSD завантажувала нашу модифіковану DSDT замість дефолтної:

Acpi_dsdt_load="YES" acpi_dsdt_name="/root/undervolt.aml"
Ось загалом і все. Єдине, не забудьте закоментувати ці два рядки в /boot/loader.conf, якщо змінюватимете процесор.

Навіть якщо ви не збираєтеся знижувати штатну напругу, вміння налаштовувати управління станами процесора (не тільки P-states) може стати в нагоді. Адже нерідко буває, що «кривий» BIOS заповнює таблиці невірно, не повністю, або не заповнює їх зовсім (наприклад тому, що стоїть не це підтримує EST целерон, а виробник офіційно не передбачає його заміну). У цьому випадку вам доведеться зробити всю роботу самостійно. Зверніть увагу, що додати лише одну таблицю _PSS може виявитися недостатньо; так, C-states задаються таблицею _CST і, крім того, може знадобитися описати самі процедури управління (Performance Control, _PCT). На щастя, це нескладно і досить докладно, з прикладами описано у восьмому розділі специфікації ACPI.

Undervolting в GNU/Linux

Щиро кажучи, спочатку я думав, що мені достатньо буде прочитати Gentoo Undervolting Guide і просто адаптувати його для FreeBSD. Це виявилося не так просто, бо документ на перевірку виявився напрочуд безглуздим (що взагалі-то дивно для Gentoo Wiki). На жаль, на їхньому новому сайті я нічого схожого не знайшов, довелося задовольнятися старою копією; і хоча я розумію, що це керівництво багато в чому втратило актуальність, я все ж таки його трохи покритикую. :-)

Мені чомусь відразу, без оголошення війни, пропонують патчити ядро ​​(у FreeBSD, на хвилиночку, нам взагалі ніякий системний кодмодифікувати не довелося). Забивати у нутрощі драйвера або записувати в якісь init-скрипти значення якихось «безпечних» напруг, незрозуміло ким і яким чином отримані, зі спеціальної таблиці (в якій Pentium M 780 знущається рядком, що складається з одних знаків питання). Наслідувати поради, серед яких є написані людьми, які явно взагалі не розуміють, про що говорять. А головне, незрозуміло, чому і як саме ці магічні заміни одних цифр на інші працюють; не пропонується способу "поторкати" EST, перш ніж щось патчити і перезбирати ядро, жодного разу не згадуються регістри MSR і робота з ними з командного рядка. Не розглядається модифікація таблиць ACPI як альтернативний і кращий варіант.

Макось досить щільно взаємодіє з (і розраховує на коректну роботу) ACPI, і модифікація таблиць - один із основних методів її налаштування під конкретне залізо. Тому перше, що спадає на думку - так само здампити пропатчити свою DSDT. Альтернативний метод: google://IntelEnhancedSpeedStep.kext , наприклад, раз , два , три .

Ще одна «чудова» утиліта (на щастя, вже застаріла) пропонує купити за $10 можливість міняти напругу та частоту. :-)

Дуже часто трапляється, що ноутбук сильно нагрівається у процесі роботи. Іноді це нагрівання може призвести не тільки до неприємних відчуттів (ну не кожному приємно працювати з розпеченим ноутбуком), але й до зависань або до «синіх екранів смерті».

Цей варіант не тільки вимагає наявності певних умінь і знань у користувача, але й може позбавити гарантії на ноутбук. Як це робити описано в цьому матеріалі: Заміна процесора - знизити напругу живлення процесора. Цей спосіб найбільш простий та ефективний. Він дозволяє понизити температуру на 10-30 градусів.

Як бачимо, найбільш оптимальним рішенням проблеми нагрівання є зниження напруги живлення процесора. Поясню в чому його суть: кількість тепла, що виділяється процесором, пропорційно квадрату напруги живлення. Отже порівняно невелике зниження напруги живлення може призвести до суттєвого зменшення тепловиділення та споживаної потужності. Щоб це проілюструвати, пропоную ознайомитися з результатами дослідження:

Core 2 Duo T7300 2.0 GHz1.00B

Core 2 Duo T7300 2.0 GHz1.25B

На цих двох скріншотах наведено значення максимальних температур процесора Core 2 Duo T7300, який встановлений в ноутбук Acer Aspire 5920G після тридцятихвилинного «розігріву» утилітою S&M. У першому випадку процесор працював на напрузі живлення 1.25В, а в другому на напрузі живлення 1.00В. Коментарі зайві. Різниця максимальних температур становить 24 градуси і це враховуючи, що в першому випадку вентилятор системи охолодження ноутбука працював на максимальних оборотах і за час тесту відбулося спрацювання захисту процесора від перегріву (це видно по стрибку температури через аварійну зупинку утиліти S&M)

У колах користувачів ноутбуків існує помилкова думка, що зі зниженням напруги живлення процесора знижується продуктивність. Поясню чому це думка помилкова. Продуктивність насамперед визначається частотою роботи процесора. Обробка інформації відбувається кожному такті процесора. Чим частота вища - тим більше тактів на секунду, отже, тим більше інформації процесор обробляє протягом тієї секунди. Напруга живлення тут ніяк не фігурує. Напруга живлення процесора впливає в основному на стабільність роботи процесора за певної частоти. Якщо його підвищити – підвищується максимальна частота, на якій працює процесор. Саме так і роблять оверклокери. Але є й зворотний бік медалі: з підвищенням напруги живлення процесора, як уже було сказано вище, збільшується його тепловиділення. Ось для чого оверклокери використовують потужні і складні системи охолодження.

Тепер можна розпочати безпосередньо зниження напруги живлення процесора. Для цього нам знадобиться утиліта. Завантажити її можна за одним із цих посилань: (gcontent) Завантажити RMClock (/gcontent)

Для 64-бітної Windows Vista існує проблема з цифровим підписом для драйвера RTCore64.sys. Щоб уникнути подібної проблеми - завантажуємо версію RMClock з сертифікованим драйвером за цим посиланням: (gcontent)Завантажити (/gcontent)

Не вміє керувати частотою і напругою процесорів Intel Celeron M через те, що вони не підтримують динамічну зміну частоти/напруги (Технологія Intel Enhanced Speed ​​Step в процесорах Intel Celeron M - ВІДКЛЮЧЕНА. Говоримо "дякую" за цю паску Intel"y). Також RMClock не підтримує нові процесори AMD (на чіпсетах 780G і старше) та Intel Core i3, i5, i7 та інші з того ж сімейства

Спрощене налаштування цієї утиліти для користувачів, які не мають часу/бажання/досвіду її тонко налаштовувати.

Розгорнутий опис налаштування цієї утиліти для користувачів, які хочуть досягти максимальної ефективності її роботи.

Примітка: У цьому матеріалі налаштування виконується в середовищі Windows XP. Процедура налаштування у Windows Vista та ж, за винятком кількох нюансів, про які розказано в цьому матеріалі: Вирішення проблем із перезавантаженням та зависаннями ноутбука

Спрощене налаштування RMClock

Почнемо із запуску утиліти. Переходимо на вкладку Settingsта виставляємо параметри як на скріншоті:

На цій вкладці ми включили автозавантаження утиліти. Переходимо до наступної вкладки: Management. Налаштовуємо так, як показано на скріншоті:

Варто зазначити, що галочку біля пункту OS Power management integrationспочатку треба зняти, а потім знову поставити
Переходимо до вкладки Advanced CPU Settings. Якщо у Вас процесор від Intelналаштовуємо як на скріншоті нижче:

Дуже важливо, щоб стояла галка біля пункту Mobile. Інші пункти у Вас можуть бути неактивними. Не звертаємо на це увагу

Для процесорів від AMDвкладка Advanced CPU Settingsповинна мати такий вигляд:

Тепер переходимо до найцікавішого – до вкладки Profiles. Для процесорів Intelвона може мати такий вигляд:

Якщо у Вас стоїть галочка біля пункту IDA- Знімаємо її

Примітка: те, що ми зняли там галочку, ще не означає, що технологія IDA не буде працювати. Вона працюватиме. Просто в цьому випадку буде менше глюків

Тепер поясню як ставити напругу. Для найвищого множника (не рахуючи IDA) ставимо напругу 1.1000V. У моєму випадку цей множник – 10.0Х. На цій напрузі здатна працювати переважна більшість процесорів Core 2 Duo. Якщо у Вас ноутбук зависає після застосування налаштувань - це напруга варто збільшити до 1.1500V. Для верхнього множника ставимо напругу 0.8000-0.8500В. Утиліта сама проставить проміжні значення. При таких налаштуваннях під час роботи від мережі ноутбук працюватиме на максимальній частоті, а при переході до живлення від батарей – на мінімальній для кращого енергозбереження.

Увага: НІ В ЯКОМУ РАЗІ НЕ СТАВТЕ НАПРУГИ ВИЩЕ 1.4000В!!!

Для ноутбуків на процесорах від AMDця вкладка матиме такий вигляд:

Тут найбільшого множника (у разі це 10.0Х) ставимо напругу 1.0000V. Для найменшого – найменше значення, яке дозволяє виставити утиліта.

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

Переходимо безпосередньо до налаштувань профілів, зокрема Power Saving.

Для процесорів Intelвона має такий вигляд:

Для процесорів AMDвона виглядає так:

Тут ставимо галочки біля найвищих пунктів. Переходимо до вкладки Maximal performance.

Для процесорів Intelвона має такий вигляд:

Для процесорів AMDвона має такий вигляд:

На цій вкладці ставимо галочки біля найнижчих пунктів із найбільшими множниками.
Щоб у RMClock не виникало конфліктів з Windows XP- заходимо у Властивості: Електроживлення (Пуск -> Панель управління -> Електроживлення) та вибираємо в віконці вибору профілів профіль RMClock Power Managementта натискаємо ОК.

Примітка: для Windows Vista цього не потрібно.

Щоб подивитися на якій напрузі та частоті працює процесор – переходимо на вкладку Monitoring

Як бачимо, процесор у моєму випадку працює на частоті 2000 МГц, на множнику 10.0 та на напрузі 1.100 В. Його температура - 45 градусів.

Ось, мабуть, і все. Якщо Ви хочете глибше розібратися з цією утилітою - читаємо далі

Повний опис налаштування RMClock

У цій частині я розповім більш-докладно про налаштування самої утиліти. Почнемо з розгляду вкладки Settings

Опишу, що знаходиться на цій вкладці. У самомугорі розміщено віконце для вибору мови програми. Щоб вибрати російську мову, треба завантажити відповідну.dll бібліотеку (яку ще знайти треба...)

Нижче наведено такі налаштування:

  • Colors- Налаштування кольорів вікна моніторингу.
  • Show informational balloon tooltips- показувати інформаційні спливаючі підказки у треї
  • Show critical balloon tooltips- показувати критичні повідомлення у треї, при перегріві, наприклад
  • Make application window always on top- розташовувати вікно програми поверх інших вікон
  • Show application button in taskbar- показувати кнопку програми у таскбарі
  • Temperature units- одиниці вимірювання температури (градуси за Цельсієм / Фаренгейтом)

Ще нижче знаходяться опції автозапуску:

  • Start minimized to system tray- запускати згорнутим у системний лоток (біля годинника)
  • Run at Windows startup- запускати під час старту Windows. Зліва можна вибирати способи автозапуску: за допомогою ключа реєстру або через папку

І в самому низу налаштовуються налаштування ведення логів. Що та як моніторити.

На вкладці CPU Infoможна дізнатися додаткову інформацію про процесор.

Вигляд цієї вкладки для платформ на базі Intelта на базі AMDможе бути дуже різний. Спочатку опишу для платформи Intel:

У самому верху знаходяться 3 вкладки Processor, Chipsetі Throttling. Вкладки Chipsetі Throttlingдля нас особливого практичного інтересу не представляють, тому їх не чіпаємо та залишаємо параметри за умовчанням. А ось на вкладці Processorзупинимося докладніше.
У самомугорі під написом Automatic thermal protection розміщено 4 пункти:

  • Enable thermal monitor 1- увімкнути ТМ1
  • Enable thermal monitor 2- увімкнути ТМ2
  • Sync. TM1 on CPU cores- синхронізувати ТМ1 до ядра процесора
  • Enable Extended throttling- Увімкнення розширеного тротлінгу.
  • Більш детально про те, що таке ТМ1і ТМ2читаємо у документації до процесора. Там всі ці технології коректно описані. У двох словах: вони служать для захисту процесора від виходу з ладу через перегрівання. Якщо температура процесора досягне певного значення (як правило, це 94-96 С), то процесор переключиться в режим, який вказується праворуч під написом Thermal Monitor 2 target

У віконці FID/VID transition stabilization time вказується час стабілізації при переходах з одного режиму роботи процесора до іншого.

Нижче під написом Intel Core/Core 2 family покращує low power states включаються різні можливі стани процесора зі зниженим енергоспоживанням. Що таке С1Е, С2Е... описано у тій самій документації до процесора. Там воно подано у вигляді таблички.

У самому низу вкладки Advanced CPU Settings є 2 цікаві пункти:

  • Engage Intel Dynamic Acceleration (IDA) IDA. Суть цієї технології зводиться до того, що в процесорах з кількома ядрами в моменти, коли навантаження на одне з них високе, воно перемикається на вищий множник. Тобто якщо для процесора Т7300 номінальний множник х10, то в моменти з високим навантаженням на одне ядро ​​воно працюватиме на частоті не 2.0 ГГц, а на 2.2 ГГц з множником х11 замість х10.
  • Enable Dynamic FSB Frequency Switching (DFFS) - ця опція включає технологію DFFS. Її суть зводиться до того, що зниження енергоспоживання частота системної шини зменшується з 200 МГц до 100 МГц.

Трохи нижче вибираємо тип процесора. У нашому випадку це Mobile і ставимо галочку біля

А тепер подивимося як виглядатиме володарка Advanced CPU Settingsдля систем на базі процесорів AMD:

Зупинюся лише на найважливіших моментах
Вгорі знову ж таки є 3 вкладки. Нас цікавить більшою мірою вкладка CPU setup
Ліворуч у віконці ACPI state to view/modify вибираємо профіль (стан) енергоспоживання процесора з яким працюватимемо на цій вкладці.

  • Enable CPU low power- Увімкнення енергозберігаючого режиму процесора
  • Enable Northbridge low power- увімкнення енергозберігаючого режиму північного мосту
  • Enable FID/VID change- включити можливість зміни напруги/множника
  • Enable AltVID change- Включити можливість альтернативної зміни напруги
  • Apply these settings at startup - Застосовувати дані зміни після завантаження ОС.
  • Якщо натиснути на трикутник праворуч написи ACPI power states settings , то з'явиться меню з налаштуваннями.
  • З'явилися ще питання навіщо та чи інша галочка – читаємо інструкцію до програми чи як завжди – методом тику

Тепер перейдемо до вкладки Management

У двох словах поясню навіщо та чи інша галочка.

P-states transitions method: - у цьому віконці можна задати спосіб переходу від одного P-state (по суті це комбінація певного значення множника та напруги) до іншого. Можливі два варіанти - однокрокові - Single-step (тобто якщо процесор перемикається з множника х6 на х8, то спочатку він здійснить перехід х6->x7, а потім х7->х8) і багатокрокові - Multi-step (з х6 відразу на х8 без переходу на х7)
Multi-CPU load calculation - у цьому вікні задається спосіб визначення завантаження процесора (для режиму Performance on demand, наприклад). На скріншоті вказаний метод, коли завантаження дорівнюватиме максимальному завантаженню будь-якого з ядер.
Standby/hibernate action - тут задається дія при переході в режим очікування або в режим глибокого сну. На скріншоті вибрано варіант "Залишити поточний профіль"

Нижче вказуються значення за промовчанням процесора - CPU Default Settings
Restore CPU defaults on management turns off - відновлювати значення за замовчуванням при вимкненні керування RMClock
Restore CPU defaults on application exit - відновлювати значення за замовчуванням під час закриття утиліти RMClock

Трохи нижче за напис CPU defeaults selectionможна вибрати один із трьох варіантів:

  • CPU-defined default P-state- напруга/множник за замовчуванням визначається самим процесором
  • P-state found at startup- напруга/множник за замовчуванням знаходяться при старті ОС
  • Custom P-state- напруга/множник за замовчуванням задаються вручну

А ось на галочку Enable OS power management integration варто звернути особливу увагу. Її треба спершу прибрати, а потім знову поставити. Після цього треба зайти в Панель управління -> Електроживлення та вибрати там схему електроживлення "RMClock Power Management". Як варіант – можна в утиліті Acer ePowerвибрати профіль RMClock Power Management. Якщо цього зробити, то можливі конфлікти між ОС і утилітою, що вони одночасно по-своєму управлятимуть частотою і напругою процесора. Як результати можливі постійні стрибки напруги та частоти.

Тепер переходимо до найцікавішого: налаштування напруги. У спрощеному налаштуванні наведено значення, які з певною часткою ймовірності підійдуть відсоткам 90-95 користувачів. Але практика показує, що найчастіше процесори можуть стабільно працювати і на нижчих напругах, а це означає ще менше тепловиділення та енергоспоживання, що на практиці виливається у зменшення нагріву та збільшення часу автономної роботи.

Примітка: Налаштування напруги подано на прикладі процесора Intel Core 2 Duo. Для інших процесорів (включаючи продукцію AMD) процедура налаштування та сама. Просто будуть інші значення, кількість множників і, звісно, ​​напруги. Тут я хочу розвіяти ще одну помилку. Часто користувачі вважають, що якщо у них, наприклад, Т7300 як і у мене, то у них проц працюватиме на тих же напругах що і у мене. ЦЕ НЕ ТАК. Кожен окремий екземпляр має свої значення мінімальних напруг. Те, що один відсоток конкретної моделі працює на конкретній напрузі ще не означає, що інший відсоток тієї ж моделі буде працювати на тій же напрузі. Іншими словами: якщо будете ставити те, що на скріншотах - то не факт, що воно у вас запрацює.

Зараз наше завдання – визначити мінімальні значення напруги, на яких конкретно Ваш процесор буде стабільно працювати. Для цього нам знадобиться утиліта S&M Завантажити S&M (/gcontent)
Коротко опишу вкладку Profiles:

У верхній частині вкладки є 4 віконця. Поясню, навіщо вони потрібні. У двох віконцях зліва під AC powerвиставляються поточний( Сurrent) та завантажувальний ( Startup) профілі системи при живленні ноутбука від мережі, трохи правіше під Baterryвиставляються поточний( Сurrent) та завантажувальний ( Startup) профілі системи під час живлення ноутбука від батареї. Самі профілі налаштовуються на підвкладках (трохи нижче Profiles). Внизу є ще пунктик - . Він відповідає за автозаповнення напруг, тобто поставив верхнє значення на одному множнику, поставив нижнє на другому, коли галка біля того пункту поставлена, програма сама виставить проміжні значення шляхом лінійної інтерполяції.

Як бачимо на скріншоті, під час роботи від мережі ноутбук працюватиме на частоті/напрузі, які задаються у профілі Maximal Performance, а коли ноутбук працюватиме від батарей - частота та напруга задаватимуться у профілі Power saving

Тепер приступимо безпосередньо до визначення мінімальних напруг, при яких система все ще стабільна. Для цього знімаємо всі галочки, крім тієї, що відповідає за найвищий множник (не рахуючи) IDA). Ставимо напругу 1.1000В, наприклад (для AMDможна починати і з 1.0000В)

Переходимо на підвкладку Maximal performance(Цей профіль у нас зараз активний, ноутбук працює від мережі)

Відзначаємо наш множник галочкою та запускаємо S&M. При першому запуску ця утиліта чесно нас попереджає:

Клацаємо ОК

Тепер переходимо безпосередньо до налаштування цієї утиліти. Переходимо на вкладку 0

Вибираємо тест, який найбільш сильно розігріває процесор. Те саме робить і на вкладці 1 (у процесора два ядра)

Тепер переходимо на вкладку Налаштування. Спочатку задаємо максимальне завантаження процесора:

ставимо тривалість тестування на Довго(приблизно 30 хвилин, для Норма- 8 хвилин) та відключаємо тест пам'яті

та натискаємо на кнопку Розпочати перевірку

На вкладці Моніторможна відстежувати поточну температуру процесора:

Якщо за час перевірки ноутбук не завис, не перезавантажився і не видав "синій екран", значить він пройшов тест і напругу можна ще зменшити. Для цього переходимо на вкладку Profilesі зменшуємо напругу на 0.0500В:

Знову запускаємо утиліту S&M. Якщо цього разу все пройшло вдало - значить ще можна знизити напругу ... Якщо тестування пройшло невдало - напругу треба збільшити. Мета проста: знайти ту напругу, при якій ноутбук проходитиме тестування утилітою S&M.
В ідеалі треба для кожного множника знайти таку напругу, але щоб не вбивати багато часу - ставимо максимальному множнику ту напругу, яку ми визначили, ставимо мінімальному множнику (у моєму випадку 6.0Х) мінімальну напругу, яка може виставити материнка для Вашого процесора (як правило , це 0.8-0.9 В)...а проміжні значення нехай заповнюються за допомогою функції Auto-adjust intermediate stetes VIDs

У цій утиліті є ще одна можливість, про яку я не згадував: це зміна частоти процесора в залежності від навантаження.
У профілях Maximal Performanceі Power savingє можливість вибрати лише одне значення частоти процесора з певною напругою. Якщо необхідно організувати гнучке керування частотою залежно від завантаження процесора, варто звернути увагу на профіль Performance on demand. Він відрізняється від Maximal Performanceі Power savingтим, що тут можна вказати одну або кілька комбінацій напруга/множник, на яких і працюватиме процесор.
Ось приклад його налаштування:

Внизу в налаштуваннях цього профілю є деякі параметри, які можна змінити. Коротко опишу їх:

Target CPU usage level (%)- Задає поріг перемикання множників/напруг. Перехід відбувається лише між тими множниками та напругами, які відзначені галочками у віконці вище. Спосіб вимірювання завантаження процесора визначається на вкладці Management

Up transition interval- визначає час протягом якого завантаження процесора має бути вищим за заданий вище поріг, щоб відбулося перемикання на вищий множник із зазначених вище галочками.

Down transition interval- визначає час, протягом якого завантаження процесора має бути нижчим за заданий вище поріг, щоб відбулося перемикання на нижчий множник із зазначених вище галочками.

На налаштуваннях кожного з профілів є опції тротлінгу. Use throttling(ODCM). Його вмикати я не рекомендую, тому що в результаті частота зменшується, а нагрівання зростає. Також можна вказати параметри електроживлення системи (час відключення монітора, дисків тощо) на вкладці OS Settings:

Щоб активувати профіль Performance on demand- треба вибрати його у віконцях Currentна вкладці Profiles

Ось, мабуть, і все.