Управління частотою процесора в Windows 10.
Більшість сучасних процесорів використовують різні технології енергозбереження, такі як Intel SpeedStep або AMD Cool'n'Quiet. Ці технології засновані на динамічній зміні частоти роботи процесора в залежності від навантаження з метою зниження енергоспоживання і тепловиділення.
Для розуміння розглянемо загальні принципи роботи цих технологій.
У процесора є стану продуктивності (P-States), які являють собою комбінацію множника частоти (Frequency ID, FID) і напруги живлення (Voltage ID, VID). Тактова частота роботи процесора виходить шляхом множення частоти системної шини (FSB) на FID, відповідно чим більше множник, тим вище частота, і навпаки.Кількість підтримуваних станів залежить від характеристик процесора (макс. Частота, множник і т.п.).
В ході первинного завантаження в BIOS створюється опис можливих станів продуктивності. Це опис відповідно до інтерфейсом ACPI зчитується операційною системою при запуску.В процесі роботи операційна система відстежує завантаження процесора, при зниженні навантаження звертається до драйверу процесора і переводить процесор в знижений стан. Знизивши частоту і напругу, процесор буде споживати менше енергії і, відповідно, менше нагріватися.Ну а при збільшенні навантаження операційна система знову запросить зміна стану процесора, але вже в більшу сторону.
Коли і в який із станів переводити процесор, операційна система вирішує автоматично, відповідно до поточної політикою енергозбереження.Але, крім цього, в Windows є можливість вручну задати діапазон регулювання, обмеживши мінімальне і максимальне стан.
В моєму комп'ютері стоїть Intel Core I7 4790К. Згідно зі специфікацією, він має базову частоту 4ГГц, а з використанням технології Turbo Boost може розганятися до максимальних 4.4ГГц. Для того, щоб подивитися поточну швидкість роботи процесора, запустимо «Диспетчер завдань» (Ctrl + Shift + Esc) і перейдемо на вкладку «Продуктивність». Як бачите, на даний момент навантаження невелика і процесор працює упівсили, частота його роботи становить 1.84ГГц.
Спробуємо трохи покрутити настройки частоти процесора і подивимося, що з цього вийде.Для запуску оснащення управління електроживленням тиснемо клавіші Win + R і виконуємо команду powercfg.cpl.
В вікні вибираємо поточну схему електроживлення, переходимо по посиланню «Налаштування схеми електроживлення»
і тиснемо на посилання «Змінити додаткові настройки живлення».
За частоту роботи процесора відповідають параметри «Мінімальна стан процесора» і «Максимальне стан процесора», що знаходяться в розділі «Управління харчуванням процесора ».
Зверніть увагу, що у ноутбуків для кожного параметр доступні два варіанти налаштувань.Перший відповідає за частоту процесора при автономній роботі (від батареї), другий - при роботі від мережі.
Перевіримо, як впливає зміна налаштувань на частоту роботи процесора. Для початку зменшимо максимальне стан до 20% і перевіримо результат. Як бачите, частота роботи знизилася до приблизно 0.78ГГц, що якраз складає приблизно 20% від базової частоти.
Що цікаво, знизити частоту нижче 20% мені це не вдалося. При виставленні значення нижче 20% частота продовжує залишатися на тому ж рівні, тобто для мого процесора 800МГц є мінімальною підтримуваної частотою.
Щоб розібратися, чому так, запустимо діагностичну утиліту CPU-Z. Як бачите, в нашому випадку частота шини становить 100 МГц, а множник змінюється в діапазоні від 8 до 44. Звідси й одержуємо можливість зміни частоти від мінімальних 800 МГц до максимуму 4.4ГГц з кроком в 100 МГц.
Але перемикання здійснюється не по кожному множнику, а більш дискретно. Іншими словами, кількість станів продуктивності не відповідає кількості значень множника. Подивитися всі доступні стану можна утилітою RightMark Power Management.Наприклад для випробуваного процесора є всього 15 станів, а перемикання між ними відбуваються зі змінним кроком 200-300МГц.
Ну а на що впливає мінімальна частота процесора? Для перевірки встановимо значення мінімальної частоти в 100% і переконаємося, що швидкість роботи процесора відразу піднялася майже до максимуму і досягла 4.3ГГц. І це при тому, що завантаження процесора склала всього 14%.
Є ще одна настройка, що відповідає за частоту роботи процесора. За замовчуванням вона прихована і для того, щоб побачити її, необхідно зробити деякі маніпуляції в реєстрі. Тому відкриваємо редактор реєстру (Win + R -> regedit), переходимо в розділ HKEY_LOCAL_MACHINE \ SYSTEM \ CurrentControlSet \ Control \ Power \ PowerSettings \ 54533251-82be-4824-96c1-47b60b740d00 \ 75b0ae3f-bce0-45a7-8c89-c9611c25e100, знаходимо параметр Attributes і змінюємо його значення на 2.
Після цього у вікні налаштувань з'явиться параметр «Максимальна частота процесора». Як випливає з назви, цей параметр відповідає за обмеження максимальної частоти роботи процесора, його значення задається в мегагерцах. За замовчуванням значення параметра дорівнює 0, що означає відсутність обмежень.
Встановимо обмеження в 1500МГц і перевіримо результат. І дійсно, обмеження працює і частота не піднімається вище вказаного значення.
Треба розуміти, що регулювання частоти працює так-же дискретно, як і в випадку з станами.Наприклад при виставленні максимальної частоти 1200МГц реальне обмеження буде в районі 1000МГц. Це не дивно, адже перемикання все одно виробляються між P-станами, причому вибирається найближче мінімальне значення.
змінювати додаткові параметри живлення процесора можна і з командного консолі, за допомогою утиліти powercfg.Для початку виведемо всі наявні налаштування харчування командою:
powercfg/query
В отриманих результатах треба знайти необхідні параметри. Кожен розділ і параметр можна ідентифікувати за ідентифікатором GUID або за псевдонімом (АЛІАС). Наприклад у групи налаштувань «Управління харчуванням процесора» GUID 54533251-82be-4824-96c1-47b60b740d00, а псевдонім SUB_PROCESSOR, у параметра «Максимальне стан процесора» GUID 75b0ae3f-bce0-45a7-8c89-c9611c25e100 і псевдонім PROCTHROTTLEMAX.
Знаючи потрібні аліаси або GUID-и можна оперувати настройками. Так подивитися значення параметра «Максимальне стан процесора» можна такою командою (SCHEME_CURRENT означає поточну схему електроживлення):
powercfg/query SCHEME_CURRENT SUB_PROCESSOR PROCTHROTTLEMAX
У командному значення параметра показані в шістнадцятковому вигляді, т .е. значення 0x00000064 означає 100%.
Зверніть увагу, що в командному рядку доступні настройки як для харчування від мережі, так і від батареї. Залежно від необхідного варіанту команда буде відрізнятися. Так за настройку харчування від мережі відповідає ключ/SETACVALUEINDEX, а для харчування від батареї використовується ключ/SETDCVALUEINDEX.Різниця всього в одній букві, тому потрібно бути уважним і постаратися їх не переплутати. Для прикладу знизимо максимальне стан процесора для харчування від мережі до 50%:
powercfg/setacvalueindex CHEME_CURRENT SUB_PROCESSOR PROCTHROTTLEMAX 50
Перевіримо результат. Як бачите, поточне значення становить 0x00000032 (50%).
Отже, ми переконалися в тому, що регулювання частоти роботи процесора в Windows 10 є і навіть працюють. Але для того, щоб отримати від них позитивний ефект, необхідний грамотний підхід. Насамперед необхідно визначитися з тим, що ви хочете отримати в результаті - підняти продуктивність, збільшити час автономної роботи, знизити температуру або щось ще.Потім треба з'ясувати основні параметри свого процесора, такі як частота шини, множник, максимальна частота роботи. І вже виходячи з цього, досвідченим шляхом підібрати оптимальні для себе значення.
Ось як то так