Как изменить tdp процессора

Что такое TDP процессора, трактовка параметра разными производителями чипов. Для чего нужно знать TDP устройства и как его определить. Можно ли изменить значение параметра.

В характеристиках комплектующих устройств могут встречаться различные параметры, нередко непонятные пользователю. Так, выбирая процессор, видеокарту или систему охлаждения, можно заметить такую величину как TDP, относящуюся к тепловым характеристикам и выраженную в ваттах. Рассмотрим, что отражает этот параметр, зачем он может понадобиться владельцу компьютера и как его определить, а также можно ли повлиять на его значение.

TDP у процессора

Что означает TDP

Не все пользователи, которые замечали в характеристиках процессора строчку с аббревиатурой TDP, знают конкретно, что это значит. Расшифровка параметра звучит как Thermal Design Power, что в переводе означает «расчётная тепловая мощность».

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

Величина выражена в ваттах, что привносит путаницу в значениях и становится причиной того, что TDP приравнивают к энергопотреблению. Хотя связь данных понятий и прослеживается, производителем при указании TDP подразумевался немного другой посыл, поскольку значение имеет отношение не к электрическим, а тепловым ваттам. Таким образом, в случае с TDP речь не идёт об электрической мощности, параметр является абстрактным и используется Intel и AMD для обозначения сведений о тепловыделении процессоров, видеокарт. С учётом характеристики рекомендуется подбирать и охлаждение для исправной работы устройства.

Трактовка параметра производителями

При этом разные производители могут по-разному вести расчёты и интерпретировать TDP (значение высчитывают по формулам в процессе работы устройства при определённых нагрузках и условиях), что также следует учитывать. Так, заявленный TDP не может отображать энергопотребление и производительность, а величину не используют для сравнения данных параметров, в частности, если речь об устройствах разных архитектур и производителей.

Тепловой пакет процессоров Intel

Для современных процессоров Intel под этим понятием подразумевается тепло в ваттах, которое выделяет CPU при длительном функционировании на базовой частоте. Но есть ещё и режим Turbo Boost, а при достижении более высоких частот повышается и TDP, то есть даже при незначительной разнице между базовой и Turbo, система охлаждения, которая рассчитана на номинальный TDP, может не справиться со своей задачей. Так, выделяемое по факту тепло и потребляемая мощность могут вырасти выше указанного параметра TDP, что говорит о том, что у продуктов Intel это значение будет ниже максимально потребляемой и рассеиваемой мощности.

Совсем другая картина у AMD. Здесь заявленные характеристики TDP CPU и GPU уже ближе к реальным показателям максимально выделяемой и расходуемой мощности при функционировании в штатном режиме.

Характеристики процессоров AMD

ВАЖНО. С учётом вышесказанного стоит понимать, что покупка процессора с заявленным производителем значением, например, TDP 95 Вт и системы охлаждения ровно с тем же параметром, не гарантирует, что устройство не будет подвергаться перегревам при конкретных условиях, в которых вы эксплуатируете компьютер.

Что касается NVIDIA, то производитель приравнивает потребляемую и рассеиваемую мощность, определяя параметр TDP как наибольшую мощность, расходуемую системой при функционировании, и максимальный показатель тепла, которое и требуется отвести системе охлаждения.

Для чего нужно знать TDP процессора

При самостоятельной сборке компьютера или апгрейде, равно как и разгоне системы, к процессу следует подходить со всей ответственностью и учитывать множество факторов, чтобы в итоге все компоненты были совместимы между собой и работали слаженно. Сведения о расчётной тепловой мощности процессора полезны владельцу компьютера и могут использоваться:

  • при выборе наиболее подходящего варианта системы охлаждения – аналогичный параметр также заявлен в характеристиках. Так, значение рассеиваемого тепла для эффективности теплоотвода, а соответственно и поддержания нормальной температуры и исправной работы устройства, должно соответствовать TDP (как минимум) или быть выше, чем тепловыделение процессора. Лучше, если система охлаждения будет приобретаться с запасом на 50% от заявленного показателя TDP, а при планировании разгона предъявлять к охлаждению следует ещё более жёсткие требования, поскольку отводить тепла кулеру придётся намного больше. Выбирая систему охлаждения, необходимо обратить внимание и на такой параметр, как сокет на материнской плате;
    Замена кулера в ноутбуке
  • при выборе подходящего по мощностным характеристикам блока питания, подбираемого с учётом параметров тех компонентов, которые уже установлены или планируются к установке. Здесь также следует учесть, что у Intel пиковая потребляемая мощность может даже вдвое превышать заявленный в технической документации показатель TDP.
    Блок питания для компьютера

Энергопотребление и производительность процессоров при одинаковом показателе TDP может отличаться. Чаще всего требования по теплоотводу заявлены не для конкретной модели, а для целого семейства процессоров, при том, что рассеивать тепло охлаждающей системе в случае с младшими моделями нужно будет меньше. Указанные частоты на заявленный в характеристиках параметр не влияют, есть множество вариантов устройств с разной частотой, но одинаковым TDP. При этом зависимость потребляемой мощности от частоты нелинейная, увеличение тактовых частот выше определённого порога потребует и повышения напряжения питания. С разгоном же тепловыделение становится выше, чем в штатном режиме, и параметр TDP теряет актуальность, тогда как система охлаждения должна быть ещё мощнее.

Определение TDP процессора

Хотя TDP и абстрактная величина, не определяющая реальное тепловыделение процессора, она при этом служит ориентиром при выборе системы охлаждения или блока питания. В основных характеристиках к устройству параметр не прописан производителем, а потому многие задаются вопросом, как узнать TDP.

TDP процессора на сайте

Есть несколько способов выяснить эту информацию:

  • сведения о тепловыделении процессора доступны в расширенных характеристиках, а именно в разделе тепловых характеристик карточки товара в любом магазине;
  • определить TDP можно также по модели устройства, поискав спецификацию на сайте производителя;
  • ещё один способ – использование специальных утилит, таких как CPU-Z, AIDA64, Sandra.

TDP процессора в CPU-Z

Можно ли изменить TDP

Благодаря гибкой настройке параметра производители могут адаптировать один и тот же чип для различных устройств под разные задачи, обеспечивая стабильную работу процессора в определённых условиях, отсюда и разница в производительности, часто ощутимая. На практике ограничения TDP делает одинаковые чипы разными. Это может быть как тонкий ультрабук, так и настольный ПК, и, конечно, требования к тепловыделению у них разные – например, 65 Вт для ноутбука будет много, а для компьютера считается приемлемым.

Power Performance в BIOS

В случае с CPU или GPU ноутбуков снижение показателя улучшает автономность работы и уменьшает нагрев, при том, что производительность будет ниже, так как частоты сбрасываются под длительной нагрузкой, хотя в случае ресурсоёмких, но быстрых задач разницы в быстродействии практически не будет. Такое решение обычно связано с остальной комплектацией девайса, когда установленная система охлаждения не способна эффективно охладить устройство с заданными характеристиками. То есть, например, процессор имеет TDP 15 Вт, при этом максимальный показатель этого же чипа может достигать 25 Вт, и в случае использования такой конфигурации с тем же процессором, он будет более производительным. В первом же случае, если сравнивать два устройства, можно рассчитывать на большую автономность устройства (при одинаковой ёмкости аккумулятора) и низкий нагрев.

CPU Power Management Control

Регулировка величины TDP осуществляется различными способами, и повысить или понизить данный параметр может не только производитель, но и сам пользователь. Чаще всего регулируют величину программными средствами путём манипуляций с тактовой частотой процессора и напряжением, что выполняется через настройки BIOS или посредством специальных утилит. Так, можно снизить нагрев (а заодно и потребляемый объём мощности, и производительность), если уменьшить TDP, при этом контролируя стабильность работы устройства, чтобы процедура была безопасной.

Config TDP Configuration

Некоторые материнские платы предлагают возможность вручную изменить лимит TDP, что не лишает процессор применения технологии автоматического разгона, а только сокращает пределы, в которых он будет выполняться. В настройках BIOS для этого потребуется найти параметр cTDP, чаще всего он располагается во вкладке Advanced (расположение опции может отличаться в зависимости от материнки). Напротив параметра меняется значение, например, при 95 Вт можно выставить 65 Вт, а при значении в 65 Вт присваивают 45 Вт или 35 Вт, после чего нужно сохранить изменения и выйти из БИОС.

Изменение ограничений TDP

Альтернативный вариант – уменьшение частоты системной шины, обычно в BIOS данный параметр назван CPU Clock или CPU Frequency. Номинальное значение просто нужно уменьшить до нужной величины.

Проверяется изменение показателей температуры процессора или энергопотребления путём тестирования посредством специального софта.

Снижаем температуры процессора ноутбука правильно!

Небольшая предыстория о том, почему всё же мы пришли к таким гайдам, где простому юзеру приходится где-то шаманить чтобы железо работало в максимально комфортных условиях для пользователя).

В погоне за производительностью, каждый производитель железа каждый год наращивал мощь своих ноутбуков устанавливая комплектующие в каждом новом поколении всё мощнее и производительнее (процессоры, видеокарты, ОЗУ, SSD и т.д.). Но параллельно с этой гонкой за производительностью шла и другая гонка — уменьшение габаритов и веса этих самих ноутбуков. Кто создал эту моду за компактность и лёгкий вес мне не ведомо, но эта мода прокралась и в сегмент игровых ноутбуков, что естественно повлияло на всё это не особо с лучшей стороны. Да, игровые ноуты стали гораздо компактнее, они не весили под 5кг и не имели толщину в 5см, но они потеряли в себе самое главное – максимально производительное и эффективное охлаждение которая была в недалёком прошлом у топовых ноутбуков, те кто помнят понимают о чём я, вспомнят некогда топовую линейку ноутбуков MSI GT серию, настоящие монстры которые могли конкурировать с десктопом по части железа, имели лучшее охлаждение и железо которая могла в них работать без каких либо ограничений с комфортными температурами для себя.

Но прогресс и мода диктовало другие правила, и мы имеем что имеем. Не скажу, что современные ноутбуки хуже, чем были раньше, но в серии игровых ноутбуков хотелось бы видеть то, что некогда мы геймеры потеряли – мощь в виде отличного железа с реально мощным и тихим охлаждением, а это вполне реально.

Прошлое осталось в прошлом, ну а мы плавно перейдём к тому, что уже давно хотел написать. Все мы знаем, что нынешних ноутбуков на процессорах Intel (да и AMD тоже) холодными назвать, мягко говоря сложно, 90% ноутбуков в наше время это достаточно горячие машинки. Но этот горячий пыл можно остудить. Многие прибегают к радикальным мерам, отключают Turbo Boost процессора, я бы это назвал «жёстко резать под корень производительность», поскольку у мобильных процессоров Intel базовая частота очень низкая, около 2.5Ггц в лучшем случае, что маловато для многих игровых моментов (не говорю про рабочие задачи по типу рендера).

Такое решение очень неправильное как минимум по двум очевидным причинам:
1. Вы режете производительность в однопоточных приложениях.
2. Вы так же режете производительность в многопоточных приложениях (потеря производительности здесь видна будет сильнее).
Есть более гуманное и максимально правильное решение этой проблемы с температурами – ограничение энергопотребления процессора (будем это называть коротко TDP).

Что нам это даст?
1. При ограничении TDP, производительность в однопоточных приложениях останется таким же.
2. При ограничении TDP, производительность в многопоточных приложениях немного снизится, но не везде, только в том случае, когда упор будет в TDP которую мы выставили.
3. При ограничении TDP, выигрывает и дискретная графика. Спросите как? Объясню всё ниже.

Не все ещё понимают, как работает распределение общего энергопотребления процессора и видеокарты, в связах систем на Intel и NVIDIA используется одна технология, которая называется NVIDIA Dynamic Boost, она контролирует общее энергопотребление процессора и видеокарты. Например, у нас есть ноутбук MSI GE77HX 12UHS, у которого максимальный теплопакет 250Вт, это 75Вт на процессор i9-12900HX и 175Вт на 3080 Ti.

Как работает NVIDIA Dynamic Boost:
Когда в системе нагрузка идёт только на процессор, в данном примере на i9-12900HX, учитывая то, что макс TDP у i9-12900HX в ноутбуке MSI GE77HX 12UHS составляет до 150Вт то при нагрузке только на процессор i9-12900HX может потреблять до 150Вт. Но когда идёт нагрузка и на процессор и на видеокарту то NVIDIA Dynamic Boost распределяет эти 250Вт между процессором и видеокартой, отдавая приоритет видеокарте, то есть процессору выделяет всего лишь 75Вт, а видеокарте все 175Вт, как ни как в играх основная нагрузка ложится на плечи видеокарты. Но видеокарта будет получать все 175Вт только в том случае, если температуры процессора не поднимаются выше допустимого значения (на каком значении она установлена знает только NVIDIA, и как конкретно распределяются ватты между процессором и видеокартой).

Но всё идеально расписано только на бумаге и может так работает в основном в топовых решениях, где охлаждение более производительнее. И даже там мне думается данный гайд будет полезен, поскольку ничто не идеально).

Так вот, что может быть не так в среднем и бюджетном сегменте. Всё гораздо проще чем может казаться. Экономия! В целях экономии у большинства игровых ноутбуков слабым местом является система охлаждения (, не бойтесь, всё не так печально, как может казаться из моих слов, просто не так хорошо, как мы с вами хотели бы).
Для примера в этом гайде будет участвовать мой личный ноутбук MSI GF65 10UE-066RU на i7 10750H с 45Вт TDP и RTX 3060 c 75Вт TGP, которого и пытаю уже на протяжении полугода, бедняга многого натерпелся, но в конечном итоге он этому рад думаю)))), хотя он и не догадывается что его ждёт в будущем :D. Базовое TDP у i7 10750H по заявлению Intel составляет 45Вт и максимально стабильная работа гарантируется при 35Вт, но на бумаге одно а на деле этот же процессор в максимальной нагрузке на короткое время (около 30 секунд) может потреблять и до 90Вт, что согласитесь не так то и мало для ноутбучного ЦП, учитывая то что у некоторых десктопных ЦП того же поколения энергопотребление будет меньше. У видеокарты RTX 3060 же максимальное TGP составляет до 75Вт. Если сложить эти два значения, то мы получим максимальный теплопакет в пределах 120Вт, 45Вт+75Вт (блок питания, к слову, на 180Вт, с запасом для этого железа).
Связка такая горячая получилась в данном ноутбуке, но не сильно, охлаждение вполне справляется, но только при максимальных оборотах при активации Cooler Boost, шум которого иногда напрягает. Если выключить Cooler Boost, то температуры не спеша, но всё же плавно поднимаются до 90 градусов у процессора и до 80 градусов у видеокарты. Это не смертельная температура, но всё же стоит напрягаться). Ноутбук нормально это переваривает, но есть один нюанс. Как я уже говорил NVIDIA Dynamic Boost по мимо распределения общего теплопакета между видеокартой и процессором контролирует этот момент ещё и следя за температурами этих двух компонентов, если кто-то выходит за рамки, то плавно снижает энергопотребление видеокарты! Да, именно видеокарты, которая, собственно, и во всех задачах оказывается холоднее процессора, и учитывая то что у большинства ноутбуков система охлаждения совмещённая то эта же видеокарта в свою очередь прогревает процессор и на оборот. Так вот, чтобы процессор не грелся выше допустимых температур, видеокарта снижает своё TGP.

Собственно этой проблемой мы и будем заниматься, решать проблему с нагревом процессора и снижать его температуры, делать это мы будем не отключением Turbo Boost как это любят делать некоторые, а снижением энергопотребления процессора путём ограничивания TDP программой ThrottleStop, на мой взгляд самая простая, компактная и в то же время функциональная программа для многих задач которая связана с процессором.

Для i7 10750H в ноутбуке MSI GF65 10UE-066RU было задано 107Вт для PL1 и 45Вт для PL2. На своих пиковых частотах 4288МГц по всем ядрам этот процессор при максимальной нагрузке потребляет 86Вт на протяжении 28 секунд, спустя эти 28 секунд энергопотребление снижается до заявленных 45Вт и частоты стабилизируются на отметке 3400Мгц. Это при 100% нагрузке в AIDA64 в тесте Stress FPU (режим самой максимальной нагрузки на процессор). Если не включать Cooler Boost то система охлаждения реагирует на резкие высокие нагрузки крайне медленно, на полную мощность выходит не сразу а очень плавно, из за чего и температура процессора может резко подскочить до 90 градусов и даже выше. Тоже самое может быть и в играх, во время загрузки локаций, например. Чтобы и таких неприятных моментов не было, рекомендую ограничить энергопотребления процессора. Для i7 10750H комфортным по моим наблюдениям является до 35Вт (собственно, этого и рекомендует Intel для него).

Для этого нам необходимо скачать ThrottleStop (https://www.techpowerup.com/download/techpowerup-throttlestop/), установить удобное для вас место и запустить.
Для управления TDP процессором переходим в пункт TPL.
Далее в открывшейся окне ищем раздел Power Limits Control.
Находим пункт Disable Control и снимаем с него галочку если она стоит (пункт Sync MMIO не трогаем, но и галочка на нём не должна стоять).
Ставим галочку на Long Power PL1 и Long Power PL2 (дабы активировать управление TDP по PL1 и PL2), устанавливаем необходимое вам значение Вт в цифрах для Long Power PL1 и Long Power PL2, в моём случае поставил 35, то есть 35Вт для PL1 и 35Вт для PL2 как на скриншоте. Применяем и сворачиваем приложение.

P.S. Значение Long Power PL1 отвечает за энергопотребление процессора на долгосрочной основе, а Long Power PL2 означает пиковое потребление в течении 28 секунд.
После проверить результаты изменения можно в любых удобных вам приложениях и играх. Тестировал я в AIDA64, Cinebench R23 и в игре Cyberpunk 2077, в приложениях, которые больше всего нагружают процессор, дабы проверить разницу в производительности между ограничением TDP до 35Вт и базовых значениях.

Ниже на видео «одним кадром» продемонстрирован весь процесс, тесты в приложениях и играх до изменения и после.

К слову, при тестах ни в одном из сценариев лагов как на видео не было, глюки только на видео по непонятной мне причине, игровой процесс в обеих сценариях был стабильным без пролагов, заметил только при просмотре видео.

Как видим из видео, после снижения TDP процессора до 35Вт не сильно то и теряется производительность, разница видна только в многопотоке при максимальной нагрузке на процессор, то есть в Cinebench R23 и ему подобном софте, где идёт максимальная нагрузка на процессор при рендеринге. В играх же никакой разницы в плане производительности нет, даже на оборот, в некоторых моментах производительность даже возрастает на несколько fps. Поскольку при снижении TDP до 35Вт процессор начал потреблять меньше энергии и температуры упали почти на 10 градусов (около 62 градусов по всем ядрам, против 72 с лишним в штатном режиме TDP), то в этом случае включается алгоритм работы NVIDIA Dynamic Boost и даёт видеокарте больше кислорода, что позволяет ему гораздо чаще поднимать TGP до максимально заявленного значения, в моём случае до 75Вт, в конечном итоге это и скажется на производительности в играх, в хорошем плане. А как показали тесты в Cyberpunk 2077, производительности по нынешним меркам старичка i7 10750H даже с ограничением TDP до 35Вт с головой хватает чтобы раскрыть потенциал мобильной RTX 3060 с 75Вт TDP. С более мощными собратьями данный способ так же будет крайне полезен, потери производительности в играх у них вообще не должно быть (если взять i7 11800H, например), в большинстве играх такой жёсткой необходимости в макс. производительности процессора нет, по этому ограничив TDP вы как минимум получаете более низкие температуры поскольку не будет резких скачков энергопотребления до 90Вт например, не будут прыгать температуры до потолка, и следовательно можно получить более тихую работу ноутбука даже в играх.

При необходимости можно таким же способом настроить режим работы и для простой офисной работы. К примеру если вам нужно работать на ноутбуке от аккумулятора, и при этом максимальная производительность вам не нужна, хотите чтобы ноутбук работал от аккумулятора как можно дольше – просто делаем тоже самое что и написал выше, но уже выставляем более низкое значение TDP, например 10-15Вт, сделав этим из игрового монстра временно ультрабука, ведь по факту ультрабучный процессор от обычного отличается в основном более низким TDP которая равна в среднем 15Вт.

Так что, забудьте про отключение Turbo Boost, в этом нет ничего полезного, потеря производительности по сравнению с вышеописанным очень большая, куда разумнее снизить общее энергопотребление процессора с минимальными потерями производительности, но с приличным снижением тепловыделения и уровня шума, ведь после такой манипуляции и Cooler Boost можно реже активировать, потому как резкие скачки до 70-90Вт исчезают и следовательно нет необходимости в принудительной работе вентиляторов на максимуме. Уже очень давно эксплуатирую ноутбук в таком режиме, Cooler Boos запускаю редко, и в основном только для тестов чтобы видеть разницу до и после какого-то эксперимента в плане температур. В основном система охлаждения ноутбука работает в одном режиме, в Dragon Center выбран профиль «Дополнительно» в котором вентиляторы процессора и видеокарты настроены вручную под мой режим использования, в обычной офисной работе система охлаждения ведёт себя тихо, при возрастании нагрузки поднимает обороты, а при высокой нагрузке таких как игры или рендер уже может повысить обороты вентиляторов до максимума, чего не сделает в режиме «Авто». Поэтому настоятельно рекомендую так же в Dragon Center или в MSI Center (смотря какого поколения ноутбук) настроить режим работы вентиляторов под ваш режим эксплуатации. В зависимости от модели настроить нужно по-разному (у кого-то и вовсе данной функции может и не быть).

Скажете почему ни слова не сказал про undervolting (андервольтинг в простонародье)? У этого есть свои веские причины. Учитывая тот факт что по умолчанию undervolting заблокирован на уровне BIOS, активировать его можно только в инженерном режиме BIOS, а MSI не рекомендует туда вообще заходить потому как есть не мало людей которые из за не очень прямых рук и отсутствия знаний в этом деле, имея на руках видеоинструкцию с YouTube где по сути человек по пальцам показывает куда нажимать и что включить или выключить, даже так умудряются ломать то что практически невозможно), ноутбук превращается в кирпич, реанимировать в этом случае можно только через сервисный центр, люди начинают обвинять в своих бедах других (в частности и MSI тоже в нашем случае), то есть сам убил BIOS а виноваты другие, вываливают свой гнев на других, в итоге виноватыми сами угадайте кто будет).

Поэтому, про undervolting через инженерный BIOS (или его активация для дальнейшей его настройки в самом Windows) я говорить здесь не буду по многим причинам, о том что выше написал и о том что сказать не могу, если коротко то и я могу получить по шапке за это ;D, по этому я бы не хотел стать тем человеком по вине которого вы можете окирпичить свою не дешёвую машинку (а ноутбуки нынче не дешёвые игрушки).  Всё вышесказанное мною про ограничение TDP процессора в ThrottleStop всё безопасно, поскольку это не разгон, а на оборот, ограничение производительности процессора путём ограничения его максимального энергопотребления, и как уже написал, это ограничение на производительность повлияет только в многопотоке и только при максимальной нагрузке на процессор в таких программах как Cinebench R23 и ему подобном софте.

Ниже лишь могу показать, как работает undervolting в ThrottleStop на системах, где она разблокирована.

Собственно, что делает undervolting? Это снижение напряжения на процессоре (в нашем случае) для уменьшения его энергопотребления, тепловыделения и шума от вентиляторов системы охлаждения. Как это работает на деле в современных ноутбуках на процессорах начиная от поколения Skylake. При снижении напряжения, снижается общее энергопотребление процессора, следовательно процессор должен греться меньше. В некотором случае так оно и работает, но не в случае высокопроизводительных процессоров, например из серии 10-12го поколения.

Имеем, к примеру процессор i7 10750H с пиковым значением TDP в 107Вт по PL2 и 45Вт при PL1. А мы всё ещё помним, что:
PL1 у нас отвечает за энергопотребление процессора на долгосрочной основе.
PL2 же отвечает за пиковое энергопотребление процессора в течении 28 секунд.

Так вот, если у нас есть процессор i7 10750H может потреблять до 90Вт, то при активном режиме работы PL2 процессор ограничен 45 ваттами и как следствие будет снижена и максимальная частота ядер при попытке преодолеть эти 45Вт. В этом случае при снижении энергопотребления, при тех же 45Вт процессор уже будет работать на более высоких частотах, по этой же причине многие после undervolting температуры не меняются, но если мониторить частоты, то можно будет заметить, что частоты у процессора при тех же 45Вт энергопотреблении возросли на пару сотен МГгц.

В моём случае на i7 10750H в ThrottleStop понизил напряжение на -90mV, это позволило процессору в тяжёлой нагрузке (это в основном рендер как в Cinebench R23 и в стресс тестах) при 45Вт работать на 3500МГц, без undervolting при том же энергопотреблении работал на частоте 3200МГц. То есть мы не получили снижения температуры, но получили повышение производительности. Снижение температуры после undervolting будет заметно только с процессорами, чьи энергопотребления не доходит до заявленного Intel_ом, скажем если у вас макс TDP процессора 45Вт и при максимальной нагрузке он держит свои заявленные частоты в бусте на максимуме возможных, то в данном случае после undervolting вы получите снижение температуры.

Для того чтобы сделать undervolting в ThrottleStop, вам необходимо будет зайти в пункт FIVR. В FIVR Control выбираем сначала CPU Core, спускаемся ниже и в CPU Core устанавливаем галочку напротив пункта Unlock Adjustable Voltage. После этого нам открывается доступ для регулировки напряжения, нам необходим пункт Offset Voltage, для снижения напряжения на необходимое нам значение нужно передвигать ползунок в левую сторону (в сторону минуса), в моём случае удалось понизить на -90mV, в зависимости от процессора (даже если речь про такой же процессор) возможности по undervolting тоже разное будет, и понижать напряжение для каждого индивидуальное, по этому понижать рекомендуется пошагово, выставив например сначала -10mV, протестировать в нескольких сценариях, прогнать стресс тест в AIDA64, прогнать тест в Cinebench R23, поиграть в процессоро-зависимых играх, и если никаких вылетов и зависаний не будет (синих экранов тоже) то понизить ещё пока не появятся вышеописанные проблемы (ничего с ноутом не будет, это не разгон а на оборот и ничего не сгорит, это попросту невозможно если речь идёт про понижение напряжения), после загружаемся и вставляем то последнее значение с которым работало стабильно. 

Всё тоже самое что проделали с CPU Core, делаем и в CPU Cache. То есть для начала подбираем нужное напряжение для CPU Core и после уже для CPU Cache. Кто-то говорит, что и для System Agent рекомендуется сделать undervolting (в его случае уже половина значения что было выставлено для CPU Core и CPU Cache), но в моём случае это ничего не давало, к тому же терялся стабильность работы.

Почему ещё рекомендуется всё это проделать именно через софт, а не в самом BIOS. Когда изменения вносите в программе и допустили какие-то ошибки, то при каких-то сбоях сбрасываются настройки именно софта, и BIOS при этом остаётся нетронутым. В случае же изменения настроек в BIOS, если допустить ошибки, то веилк шанс окирпичить ноутбук, и восстановление BIOS в таком случае только в сервисном центре на программаторе с последующей потерей гарантии.

По этой причине, первая рекомендация ограничить энергопотребление процессора, позволит избавиться от резких скачков температур, шума станет меньше, видеокарта же в свою очередь сможет лучше раскрыть свой потенциал, поскольку у современных процессоров производительности хватает с запасом чтобы обеспечить комфортную игру и при ограничении его энергопотребления. Undervolting не даёт того преимущества что даёт нам ограничение TDP, undervolting скорее служит бонусом при ограничении питания процессора.

Если появится необходимость в замене термопасты, не гонитесь за разрекламированными пастами, очень рекомендую ознакомится с информацией ниже в цитате.

Список самых оптимальных и эффективных термопаст для игровых ноутбуков, которые не подвержены или очень мало подвержены к деградации:

Нижеуказанная информация из личного опыта пользователя THOR на своём ноутбуке

1. Термопаста Gelid GC-Extreme. Купить можно на Aliexpress по ссылке. Магазин проверенный, едет долго но оно того стоит, по ссылке фото упаковки старая, сейчас паста приходит в обновлённой упаковке как на ОФ сайте по этой ссылке. В России его в продаже нет, по этому Aliexpress один из единственных доступных вариантов для покупки. Мазал его на ЦП и ГП на моём MSI GF65 Thin 10UE-066RU, результаты температур на видео:
[ You must login or register to view this spoiler! ]
2. Есть ещё один интересный термоинтерфейс, Honeywell PTM7950 с фазовым переходом (в холодном состоянии твёрдый, при нагреве становится жидким), его посоветовали неоднократно на нескольких ресурсах владельцы горячих игровых ноутбуков, говорится что эти термопрокладки использует MSI, ASUS и Lenovo в своих топовых решениях (на счёт остальных брендов не в курсе). MSI его (или аналог этой термопрокладки) использует в своих ноутбуках на i9 12го поколения.
Ссылки на эту термопрокладку тут и тут
Я его не использовал и ничего точно про них сказать не могу, но хвалят, особенно владельцы горячих игровых ноутов. Про состав тоже не в курсе, есть металл или нет, но это не ЖМ и с медью в реакцию не вступает.

Список термопаст которые показали себя из худшей стороны в горячем игровом ноутбуке (в ПК всё супер с ними):
1. Thermalright TFX: Очень густая отличная термопаста, но только не для горячего ноутбука. Отлично себя показывает недели две, но с третьей недели температуры по ядрам начинают расти от +10 до +15 градусов, то есть с 80-85 становится свыше 95 градусов. Вскрытие показывает что часть пасты с кристалла и радиатора испарились.

2. Arctic Cooling MX-4 (2019): Абсолютно та же история что с Thermalright TFX, две недели отлично, с третьей начинается ахтунг как выше описал, через три недели часть пасты испаряется оставляя пару капель непонятно субстанции, пример на фото:
[ You must login or register to view this spoiler! ]

3. Prolimatech PK-3:
Всё тоже самое что и с Thermalright TFX и Arctic Cooling MX-4 (2019), но с единственной разницей что в отличии от этих двоих Prolimatech PK-3 испаряется уже через неделю
;D.
[ You must login or register to view this spoiler! ]

Всё это время что тестировал пасты, ноутбук работал без особых нагрузок, иногда поиграть, посмотреть видео, поработать в офисе или пофотошопить, но адских тестов или игр на пару часов не видел ноут. То есть эти пасты по факту портятся если железо стабильно греется свыше 75 градусов. Эти же пасты никак не ухудшали свои рабочие свойства на кристалле видеокарты, поскольку GPU выше 70-75 ещё ни разу не грелся, а вот процессор стабильно выше 75-80 грелся. Сказать что лето, жарко, нет, ноут эксплуатировался в кондиционируемом помещении при температуре не выше 21-23 градусов где циркулирует прохладный воздух, жара никак на его работу не влияет.

  • #1

So, I’ve been trying to change my Laptop’s TDP. I am aware that Acer is known for locking PL3 on many of their products through the EC, but I wanna be sure. I’ve been trying to do it through ThrottleStop as XTU doesn’t really have anything helpful that TS doesn’t have. I have an unlocked BIOS(Insyde H20 Rev 5.0), if that helps. I can mess with Power Limits just fine, but I can still observe throttling when both CPU and iGPU are working to their max extent, as PL2 throttles(goes red for a brief moment, main menu also reports POWER), and it also starts flickering yellow(appearing and disappearing) below CORE sometimes. Increasing it(as in, PL2) didn’t really change anything, which lead me to suspect I’m running into some sort of Package TDP Limit. There’s no Thermal Throttling going on, PROCHOT only gets triggered in 97°C and TJunction only does so in 100°C.

While slightly unrelated, I also wanted to point out that going into BIOS > Power > Power & Performance > GT — Power Management Control freezes the BIOS completely, and I’m forced to turn the system off. If yall have any idea, could you please share it?

Thanks yall.

Edit: Forgot to point out that my Laptop won’t get past 20W even with Power Limits changed. Suspiciously however, I’m fairly certain the Package Limit sits below that.

  • TSMainMenu.png

    TSMainMenu.png

    37.1 KB · Views: 205

  • TSFIVR.png

    TSFIVR.png

    68.1 KB · Views: 190

  • TSTPL.png

    TSTPL.png

    25.2 KB · Views: 199

  • #2

1636045387182.png

Did you check the Lock box? Try clearing that box, press OK, exit ThrottleStop and reboot. If you still see a lock icon on the far left side, that means your BIOS is locking the power limit register. This was common with 6th Gen CPUs.

Post a ThrottleStop screenshot with Limit Reasons open while your CPU is throttling. Does it throttle at 25W or way less? This will show if the EC is setting a much lower power limit.

When Limit Reasons flickers between red and yellow, that means you are right on the edge of power limit throttling. A ThrottleStop log file will show reasons for throttling and power consumption when this is happening.

  • #3

>Did you check the Lock box?
Yes. I unlocked it and restarted regardless(for the sake of testing), but results remain similar.

As for the screenshot, I’ve attached it like you asked. It seems to throttle at 22W, and PL2 flickers between red and yellow at that amount. At slightly lower amounts, like 21W, PL2 will show up(yellow colored) but instead of flickering between yellow/red, it’ll just appear(yellow-colored) and disappear.

As for the log, I’ve uploaded it on Pastebin. I can see PL2 throttling but the power amounts where it throttles seem slightly inconsistent. Maybe it’s just the CPU being slightly tolerant of the throttling requests considering the load on top of it?

PS: I ran TS Bench on top of an demanding game to force both the iGPU and CPU to check power limits and see where the laptop would go until it decides to throttle.

PS²: Running TSBench/Cinebench alone pushes the CPU to 14.5-15W which is it’s rated limit, although I do not observe throttling on ThrottleStop, it can sit on 3GHZ just fine. While it’s also the rated limit, disabling turbo or slightly decreasing clock speeds shows an consistent power decrease(12W) which makes me believe the CPU itself can run on 15W just fine, meaning the throttling might be coming from the iGPU, or the iGPU wants more power than the laptop would allow the package as a whole to receive. I’ve uploaded a GPU-Z shot putting both the CPU and GPU under load, just in case.

  • TSLimitReasons.png

    TSLimitReasons.png

    691.8 KB · Views: 104

  • GPUThrottlingTest.png

    GPUThrottlingTest.png

    86.1 KB · Views: 91

  • #4

the power amounts where it throttles seem slightly inconsistent.

The log file confirms that your CPU is throttling at 22W. It looks consistent to me.

Code:

   DATE       TIME    MULTI   C0%   CKMOD  BAT_mW  TEMP    VID   POWER
2021-11-04  19:03:20  29.84   77.8  100.0       0   77   0.9275   21.2
2021-11-04  19:03:21  29.92   73.2  100.0       0   77   0.9305   20.9
2021-11-04  19:03:22  29.91   71.7  100.0       0   79   0.9259   20.9
2021-11-04  19:03:23  29.62   92.3  100.0       0   80   0.9257   21.5   PL2
2021-11-04  19:03:24  29.42   99.8  100.0       0   79   0.9255   21.8   PL2
2021-11-04  19:03:25  29.52   99.8  100.0       0   81   0.9270   21.7
2021-11-04  19:03:26  29.68   99.8  100.0       0   81   0.8965   21.0   PL2
2021-11-04  19:03:27  29.46   99.8  100.0       0   81   0.8860   21.7
2021-11-04  19:03:28  29.39   99.8  100.0       0   80   0.9216   21.9
2021-11-04  19:03:29  29.35   99.7  100.0       0   81   0.9207   22.0
2021-11-04  19:03:30  29.40   99.8  100.0       0   82   0.8676   22.1   PL2
2021-11-04  19:03:31  29.39   99.8  100.0       0   82   0.9232   22.0
2021-11-04  19:03:32  29.44   99.8  100.0       0   82   0.8907   21.9   PL2
2021-11-04  19:03:33  29.39   99.8  100.0       0   82   0.8857   22.0   PL2
2021-11-04  19:03:34  29.37   99.8  100.0       0   81   0.9200   22.1
2021-11-04  19:03:35  29.36   99.7  100.0       0   81   0.9246   22.1
2021-11-04  19:03:36  29.35   99.7  100.0       0   82   0.8953   22.1   PL2
2021-11-04  19:03:37  29.43   99.7  100.0       0   81   0.9235   22.1
2021-11-04  19:03:38  29.40   99.8  100.0       0   81   0.9207   22.0
2021-11-04  19:03:39  29.41   99.7  100.0       0   82   0.8503   21.9   PL2
2021-11-04  19:03:40  29.42   99.8  100.0       0   81   0.9200   22.0
2021-11-04  19:03:41  29.36   99.7  100.0       0   82   0.9169   22.1
2021-11-04  19:03:42  29.39   99.7  100.0       0   84   0.8889   21.9   PL2
2021-11-04  19:03:43  29.37   99.8  100.0       0   83   0.8613   22.0   PL2
2021-11-04  19:03:44  29.33   99.8  100.0       0   84   0.9197   22.2   PL2
2021-11-04  19:03:45  29.35   99.7  100.0       0   82   0.9204   22.1

When you are running the CPU right at the power limit throttling point, the CPU is going to be adjusting itself hundreds of times per second. The CPU is being slowed down just enough to keep power consumption under 22W. When power consumption decreases a little, the CPU multiplier goes back up to 30.00. ThrottleStop shows that the maximum multiplier when 2 cores are active is 30. Setting this to 31 in ThrottleStop is ignored by the CPU. You need an unlocked K series CPU to overclock it.

Your previous screenshot shows that the MMIO power limit has been disabled and the MSR power limits are set to PL1 = 25W and PL2 = 30 W. The log file shows PL2 throttling at 22W so that means the MSR power limit is being ignored. Your computer is likely using an embedded controller (EC) which forces PL2 to 22W. You would have to test for a longer period of time to see what the EC PL1 power limit is set to. The EC might be setting PL1 to 15W long term.

The CPU cores and the iGPU share the same package power limit. When testing with GPU-Z and the TS Bench, open up Limit Reasons to check for throttling. It looks like the CPU cores are being throttled a little. Limit Reasons should be able to report this.

You can try adding this line to the ThrottleStop.INI file to adjust the iGPU power limit.

IGPU=20

This will lock the iGPU power limit to 20W. You will need to reboot if you want to change this.

You can also try playing around with the Power Balance feature in the TPL window. This lets you slightly adjust whether the iGPU or the CPU cores will throttle first when the package power limit is reached. Try setting one of these to 31 and the other one to 0 while testing.

You are basically getting about all you can out of your 6500U. Not much room for improvement.

  • #5

Yeah, sounds about right. One last question: Would happen to know some way to fool the EC through BIOS settings? I do am aware I can’t really change stuff in it(or not feasibly, anyways) so I thought about messing with my power settings a bit.

PS: I have an unlocked one, if that helps

  • #6

You need a BIOS option to adjust IMON slope. This tricks the CPU so it reports half as much power consumption. Some MSI boards allow this. Not many other boards do.

  • #7

Is this it?

  • IMG_20211105_001751039.jpg

    IMG_20211105_001751039.jpg

    6.2 MB · Views: 246

  • #8

That is it. Some people adjust both the IMON slope and the offset. I think you can lower the reported power consumption by only adjusting the slope.

Some boards have a default slope of 100. When set to 50, power consumption will be reported as 50% of actual consumption. 30W will be reported by the CPU as 15W. No more reason for any power limit throttling.

Have fun playing. Run something consistent like the TS Bench and compare different slope settings.

  • #9

Well, update(and some bad news, eh)
So, I’ve messed with IMON slope and offset a bit. Set slope to 50, and, not much changes. Tried also setting offset to 100, 200 and 255, and there’s not much change either(well, power varied 0.5w or less, which to me sounds like within margin of error). Did some research and some people are able to set the offset much higher, although mine only goes up to 255. Leaving it at zero doesn’t change much either. Also tried setting it to 100-200 and it doesn’t change significantly. I thought I could be hitting a power limit instead, so I increased PL1 and PL2 to 35W for the sake of testing, but that wasn’t it. Seems like PL2 is still being enforced, despite the slope being changed.

I did benchmarks with both TSBench individually, as well as TSBench + FurMark on the background, to try creating a more realistical scenario(which by itself is still kinda unrealistic) of both components during extreme load. The CPU by itself will only consume 14.5-15W, however it won’t report throttling. If the iGPU starts using more power however(to the 22W which we both observed), the system will throttle, which lead me to believe I’m not actually hitting PL2.
I set IGPU=20 as you suggested and iGPU power usage did go past 10W, and capped at around 12W, which it couldn’t do before. I’ve also messed with the BIOS a bit and took some photos so you have an broader vision of how things are set in the system. Also logged my benchmarking session of me running both TSBench and FurMark. Attachments include the BIOS pics I noted about and a throttling pic during TSBench+Furmark.

  • CFGLock.jpg

    CFGLock.jpg

    145 KB · Views: 102

  • CPUPowerManagement.jpg

    CPUPowerManagement.jpg

    816.7 KB · Views: 90

  • ImonScaling.jpg

    ImonScaling.jpg

    541.1 KB · Views: 101

  • PL3.jpg

    PL3.jpg

    790.2 KB · Views: 100

  • TurboSettings.jpg

    TurboSettings.jpg

    695.2 KB · Views: 113

  • ConfigurableTDPSetting.jpg

    ConfigurableTDPSetting.jpg

    889.7 KB · Views: 93

  • TSThrottlingPL2IrrealisticScenario.png

    TSThrottlingPL2IrrealisticScenario.png

    654.9 KB · Views: 101

  • #10

Your screenshot shows that the Package Power is at 24.7W so maybe adjusting the iGPU power limit helped out. Have you tried setting both the MSR PL1 and PL2 power limits in ThrottleStop to 30W?

Did you try adjusting the Power Balance feature in the TPL window yet? If you set this to 31 and 0, this will direct more power to the CPU cores before throttling begins and if you use 0 and 31, that will direct more power to the iGPU compared to the cores.

In the BIOS, for Power Limit 3 Lock, try changing that from Enabled to Disabled. I think if that power limit is unlocked, ThrottleStop will take care of it automatically.

Not all settings in an unlocked BIOS are used by the CPU. I am not sure about the IMON Slope and Offset values. It seems like those settings are being ignored.

I’m not actually hitting PL2

When Limit Reasons shows PL2 in red under the CORE column, the CPU is telling you that you are hitting the PL2 limit. If an embedded controller is set to 22W, all of those power settings in the unlocked BIOS will be ignored and you will still be limited to 22W.

  • #11

Yes, I did try messing with Power Balance, it only delayed throttling to another part of my laptop, but since my main issue was a small lack of performance on light gaming, some throttling would still be bad.

I wasn’t able to disable the PL3 lock; I randomly decided to update my BIOS as a clutch(Acer Aspire F5 573 723q, went from 1.12 to 1.27) and by sheer luck, I was able to disable the PL3 lock into that version. The EC was updated in it, so who knows what changed in there.

Change was minimal though. I was still hitting some throttling, that in my mind was either related to the package or PL2; Setting IMON Slope on CORE to 50 didn’t change anything. Taking my time to think, the system as a whole wouldn’t throttle if the CPU or the iGPU were under load; only if both were underload and hitting a certain amount of power. So, I changed the IMON Slope in the Sliced and Unsliced parts of the iGPU, as well as on System Agent, Uncore, and Ring. Now TS reports an 13.6W consumption despite heat generation and voltages being about the same, which suggests to me that the CPU is only reporting half the amount as you have suggested.

The system also doesn’t report PL2 throttling under load by both TSBench/Furmark anymore, as you can see in this log.

Attached are benchmarking shots as well as the TPL settings which I changed around a bit.

PS: I also enabled PL4 in the BIOS, but disabled the lock for it and left it at default(zero).

I consider this an success. Thanks!

  • TSFinalResults.png

    TSFinalResults.png

    896.8 KB · Views: 106

  • TSTPL.png

    TSTPL.png

    23 KB · Views: 112

  • #1

So, I’ve been trying to change my Laptop’s TDP. I am aware that Acer is known for locking PL3 on many of their products through the EC, but I wanna be sure. I’ve been trying to do it through ThrottleStop as XTU doesn’t really have anything helpful that TS doesn’t have. I have an unlocked BIOS(Insyde H20 Rev 5.0), if that helps. I can mess with Power Limits just fine, but I can still observe throttling when both CPU and iGPU are working to their max extent, as PL2 throttles(goes red for a brief moment, main menu also reports POWER), and it also starts flickering yellow(appearing and disappearing) below CORE sometimes. Increasing it(as in, PL2) didn’t really change anything, which lead me to suspect I’m running into some sort of Package TDP Limit. There’s no Thermal Throttling going on, PROCHOT only gets triggered in 97°C and TJunction only does so in 100°C.

While slightly unrelated, I also wanted to point out that going into BIOS > Power > Power & Performance > GT — Power Management Control freezes the BIOS completely, and I’m forced to turn the system off. If yall have any idea, could you please share it?

Thanks yall.

Edit: Forgot to point out that my Laptop won’t get past 20W even with Power Limits changed. Suspiciously however, I’m fairly certain the Package Limit sits below that.

  • TSMainMenu.png

    TSMainMenu.png

    37.1 KB · Views: 205

  • TSFIVR.png

    TSFIVR.png

    68.1 KB · Views: 190

  • TSTPL.png

    TSTPL.png

    25.2 KB · Views: 199

  • #2

1636045387182.png

Did you check the Lock box? Try clearing that box, press OK, exit ThrottleStop and reboot. If you still see a lock icon on the far left side, that means your BIOS is locking the power limit register. This was common with 6th Gen CPUs.

Post a ThrottleStop screenshot with Limit Reasons open while your CPU is throttling. Does it throttle at 25W or way less? This will show if the EC is setting a much lower power limit.

When Limit Reasons flickers between red and yellow, that means you are right on the edge of power limit throttling. A ThrottleStop log file will show reasons for throttling and power consumption when this is happening.

  • #3

>Did you check the Lock box?
Yes. I unlocked it and restarted regardless(for the sake of testing), but results remain similar.

As for the screenshot, I’ve attached it like you asked. It seems to throttle at 22W, and PL2 flickers between red and yellow at that amount. At slightly lower amounts, like 21W, PL2 will show up(yellow colored) but instead of flickering between yellow/red, it’ll just appear(yellow-colored) and disappear.

As for the log, I’ve uploaded it on Pastebin. I can see PL2 throttling but the power amounts where it throttles seem slightly inconsistent. Maybe it’s just the CPU being slightly tolerant of the throttling requests considering the load on top of it?

PS: I ran TS Bench on top of an demanding game to force both the iGPU and CPU to check power limits and see where the laptop would go until it decides to throttle.

PS²: Running TSBench/Cinebench alone pushes the CPU to 14.5-15W which is it’s rated limit, although I do not observe throttling on ThrottleStop, it can sit on 3GHZ just fine. While it’s also the rated limit, disabling turbo or slightly decreasing clock speeds shows an consistent power decrease(12W) which makes me believe the CPU itself can run on 15W just fine, meaning the throttling might be coming from the iGPU, or the iGPU wants more power than the laptop would allow the package as a whole to receive. I’ve uploaded a GPU-Z shot putting both the CPU and GPU under load, just in case.

  • TSLimitReasons.png

    TSLimitReasons.png

    691.8 KB · Views: 104

  • GPUThrottlingTest.png

    GPUThrottlingTest.png

    86.1 KB · Views: 91

  • #4

the power amounts where it throttles seem slightly inconsistent.

The log file confirms that your CPU is throttling at 22W. It looks consistent to me.

Code:

   DATE       TIME    MULTI   C0%   CKMOD  BAT_mW  TEMP    VID   POWER
2021-11-04  19:03:20  29.84   77.8  100.0       0   77   0.9275   21.2
2021-11-04  19:03:21  29.92   73.2  100.0       0   77   0.9305   20.9
2021-11-04  19:03:22  29.91   71.7  100.0       0   79   0.9259   20.9
2021-11-04  19:03:23  29.62   92.3  100.0       0   80   0.9257   21.5   PL2
2021-11-04  19:03:24  29.42   99.8  100.0       0   79   0.9255   21.8   PL2
2021-11-04  19:03:25  29.52   99.8  100.0       0   81   0.9270   21.7
2021-11-04  19:03:26  29.68   99.8  100.0       0   81   0.8965   21.0   PL2
2021-11-04  19:03:27  29.46   99.8  100.0       0   81   0.8860   21.7
2021-11-04  19:03:28  29.39   99.8  100.0       0   80   0.9216   21.9
2021-11-04  19:03:29  29.35   99.7  100.0       0   81   0.9207   22.0
2021-11-04  19:03:30  29.40   99.8  100.0       0   82   0.8676   22.1   PL2
2021-11-04  19:03:31  29.39   99.8  100.0       0   82   0.9232   22.0
2021-11-04  19:03:32  29.44   99.8  100.0       0   82   0.8907   21.9   PL2
2021-11-04  19:03:33  29.39   99.8  100.0       0   82   0.8857   22.0   PL2
2021-11-04  19:03:34  29.37   99.8  100.0       0   81   0.9200   22.1
2021-11-04  19:03:35  29.36   99.7  100.0       0   81   0.9246   22.1
2021-11-04  19:03:36  29.35   99.7  100.0       0   82   0.8953   22.1   PL2
2021-11-04  19:03:37  29.43   99.7  100.0       0   81   0.9235   22.1
2021-11-04  19:03:38  29.40   99.8  100.0       0   81   0.9207   22.0
2021-11-04  19:03:39  29.41   99.7  100.0       0   82   0.8503   21.9   PL2
2021-11-04  19:03:40  29.42   99.8  100.0       0   81   0.9200   22.0
2021-11-04  19:03:41  29.36   99.7  100.0       0   82   0.9169   22.1
2021-11-04  19:03:42  29.39   99.7  100.0       0   84   0.8889   21.9   PL2
2021-11-04  19:03:43  29.37   99.8  100.0       0   83   0.8613   22.0   PL2
2021-11-04  19:03:44  29.33   99.8  100.0       0   84   0.9197   22.2   PL2
2021-11-04  19:03:45  29.35   99.7  100.0       0   82   0.9204   22.1

When you are running the CPU right at the power limit throttling point, the CPU is going to be adjusting itself hundreds of times per second. The CPU is being slowed down just enough to keep power consumption under 22W. When power consumption decreases a little, the CPU multiplier goes back up to 30.00. ThrottleStop shows that the maximum multiplier when 2 cores are active is 30. Setting this to 31 in ThrottleStop is ignored by the CPU. You need an unlocked K series CPU to overclock it.

Your previous screenshot shows that the MMIO power limit has been disabled and the MSR power limits are set to PL1 = 25W and PL2 = 30 W. The log file shows PL2 throttling at 22W so that means the MSR power limit is being ignored. Your computer is likely using an embedded controller (EC) which forces PL2 to 22W. You would have to test for a longer period of time to see what the EC PL1 power limit is set to. The EC might be setting PL1 to 15W long term.

The CPU cores and the iGPU share the same package power limit. When testing with GPU-Z and the TS Bench, open up Limit Reasons to check for throttling. It looks like the CPU cores are being throttled a little. Limit Reasons should be able to report this.

You can try adding this line to the ThrottleStop.INI file to adjust the iGPU power limit.

IGPU=20

This will lock the iGPU power limit to 20W. You will need to reboot if you want to change this.

You can also try playing around with the Power Balance feature in the TPL window. This lets you slightly adjust whether the iGPU or the CPU cores will throttle first when the package power limit is reached. Try setting one of these to 31 and the other one to 0 while testing.

You are basically getting about all you can out of your 6500U. Not much room for improvement.

  • #5

Yeah, sounds about right. One last question: Would happen to know some way to fool the EC through BIOS settings? I do am aware I can’t really change stuff in it(or not feasibly, anyways) so I thought about messing with my power settings a bit.

PS: I have an unlocked one, if that helps

  • #6

You need a BIOS option to adjust IMON slope. This tricks the CPU so it reports half as much power consumption. Some MSI boards allow this. Not many other boards do.

  • #7

Is this it?

  • IMG_20211105_001751039.jpg

    IMG_20211105_001751039.jpg

    6.2 MB · Views: 246

  • #8

That is it. Some people adjust both the IMON slope and the offset. I think you can lower the reported power consumption by only adjusting the slope.

Some boards have a default slope of 100. When set to 50, power consumption will be reported as 50% of actual consumption. 30W will be reported by the CPU as 15W. No more reason for any power limit throttling.

Have fun playing. Run something consistent like the TS Bench and compare different slope settings.

  • #9

Well, update(and some bad news, eh)
So, I’ve messed with IMON slope and offset a bit. Set slope to 50, and, not much changes. Tried also setting offset to 100, 200 and 255, and there’s not much change either(well, power varied 0.5w or less, which to me sounds like within margin of error). Did some research and some people are able to set the offset much higher, although mine only goes up to 255. Leaving it at zero doesn’t change much either. Also tried setting it to 100-200 and it doesn’t change significantly. I thought I could be hitting a power limit instead, so I increased PL1 and PL2 to 35W for the sake of testing, but that wasn’t it. Seems like PL2 is still being enforced, despite the slope being changed.

I did benchmarks with both TSBench individually, as well as TSBench + FurMark on the background, to try creating a more realistical scenario(which by itself is still kinda unrealistic) of both components during extreme load. The CPU by itself will only consume 14.5-15W, however it won’t report throttling. If the iGPU starts using more power however(to the 22W which we both observed), the system will throttle, which lead me to believe I’m not actually hitting PL2.
I set IGPU=20 as you suggested and iGPU power usage did go past 10W, and capped at around 12W, which it couldn’t do before. I’ve also messed with the BIOS a bit and took some photos so you have an broader vision of how things are set in the system. Also logged my benchmarking session of me running both TSBench and FurMark. Attachments include the BIOS pics I noted about and a throttling pic during TSBench+Furmark.

  • CFGLock.jpg

    CFGLock.jpg

    145 KB · Views: 102

  • CPUPowerManagement.jpg

    CPUPowerManagement.jpg

    816.7 KB · Views: 90

  • ImonScaling.jpg

    ImonScaling.jpg

    541.1 KB · Views: 101

  • PL3.jpg

    PL3.jpg

    790.2 KB · Views: 100

  • TurboSettings.jpg

    TurboSettings.jpg

    695.2 KB · Views: 113

  • ConfigurableTDPSetting.jpg

    ConfigurableTDPSetting.jpg

    889.7 KB · Views: 93

  • TSThrottlingPL2IrrealisticScenario.png

    TSThrottlingPL2IrrealisticScenario.png

    654.9 KB · Views: 101

  • #10

Your screenshot shows that the Package Power is at 24.7W so maybe adjusting the iGPU power limit helped out. Have you tried setting both the MSR PL1 and PL2 power limits in ThrottleStop to 30W?

Did you try adjusting the Power Balance feature in the TPL window yet? If you set this to 31 and 0, this will direct more power to the CPU cores before throttling begins and if you use 0 and 31, that will direct more power to the iGPU compared to the cores.

In the BIOS, for Power Limit 3 Lock, try changing that from Enabled to Disabled. I think if that power limit is unlocked, ThrottleStop will take care of it automatically.

Not all settings in an unlocked BIOS are used by the CPU. I am not sure about the IMON Slope and Offset values. It seems like those settings are being ignored.

I’m not actually hitting PL2

When Limit Reasons shows PL2 in red under the CORE column, the CPU is telling you that you are hitting the PL2 limit. If an embedded controller is set to 22W, all of those power settings in the unlocked BIOS will be ignored and you will still be limited to 22W.

  • #11

Yes, I did try messing with Power Balance, it only delayed throttling to another part of my laptop, but since my main issue was a small lack of performance on light gaming, some throttling would still be bad.

I wasn’t able to disable the PL3 lock; I randomly decided to update my BIOS as a clutch(Acer Aspire F5 573 723q, went from 1.12 to 1.27) and by sheer luck, I was able to disable the PL3 lock into that version. The EC was updated in it, so who knows what changed in there.

Change was minimal though. I was still hitting some throttling, that in my mind was either related to the package or PL2; Setting IMON Slope on CORE to 50 didn’t change anything. Taking my time to think, the system as a whole wouldn’t throttle if the CPU or the iGPU were under load; only if both were underload and hitting a certain amount of power. So, I changed the IMON Slope in the Sliced and Unsliced parts of the iGPU, as well as on System Agent, Uncore, and Ring. Now TS reports an 13.6W consumption despite heat generation and voltages being about the same, which suggests to me that the CPU is only reporting half the amount as you have suggested.

The system also doesn’t report PL2 throttling under load by both TSBench/Furmark anymore, as you can see in this log.

Attached are benchmarking shots as well as the TPL settings which I changed around a bit.

PS: I also enabled PL4 in the BIOS, but disabled the lock for it and left it at default(zero).

I consider this an success. Thanks!

  • TSFinalResults.png

    TSFinalResults.png

    896.8 KB · Views: 106

  • TSTPL.png

    TSTPL.png

    23 KB · Views: 112

В современных десктопных и (в особенности) мобильных процессорах применяется целый ряд энергосберегающих технологий: ODCM, CxE, EIST и др. Сегодня нас будет интересовать, пожалуй, самая высокоуровневая из них: гибкое управление частотой и напряжением процессорного ядра во время работы — Cool ‘n’ 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 или операционной системы, изменять множитель (отношение частоты процессора к частоте шины) и напряжение ядра (Vcc) в зависимости от нагрузки, типа источника питания компьютера, температурного режима CPU и/или настроек (политики) ОС.

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

Processor Power States

Каждый процессор, присутствующий в системе, должен быть описан в таблице 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’ки), отличающихся напряжением и частотой:

Power vs. Core Voltage for Intel Pentium M 1.6GHz

В общем случае, когда процессор заранее неизвестен, единственным более-менее надежным (и рекомендуемым 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’ки). В дальнейшем префикс IA32_ я буду для краткости опускать.

Попробуем для начала прочитать текущее значение PERF_STATUS:

# 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 */
	unsigned init_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, мы можем расшифровать прочитанное выше слово: 0x0612112b 0x06000c20 ⇒ 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 (и многих других): Vcc = Vid0 + (Vid × Vstep), где Vcc — текущее (действительное) напряжение, Vid0 — базовое напряжение (когда Vid == 0), Vstep — шаг. Таблица для некоторых популярных процессоров (все значения в милливольтах):

Процессор Vid0 Vstep Vboot Vmin Vmax
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):

PSV = (frequency / bus clock) * 256 + (Vcc - 700) / 16

Теперь рассмотрим регистр управления (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 of CPU unavailability during transition, µs */
	unsigned BusMasterLatency;	/* Worst-case latency while Bus Masters are unable to access memory, µs */
	unsigned Control;		/* Value to be written to the PERF_CTL to switch to this state */
	unsigned Status;		/* Value (should be equal to the one read from 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
            0x0000000A,			// 10 µ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) {
            0x00000640,			// 1600 MHz (71% от максимальной)
            0x00005208,			// 21000 mW
            0x0000000A,
            0x0000000A,
            0x00000C20,			// Fid = 12, Vid = 32
            0x00000C20
        },
        Package (0x06) {
            0x00000535,			// 1333 MHz (59% от максимальной)
            0x00004650,			// 18000 mW
            0x0000000A,
            0x0000000A,
            0x00000A1C,			// Fid = 10, Vid = 28
            0x00000A1C
        }, 
        Package (0x06) {
            0x0000042B,			// 1067 MHz (47% от максимальной)
            0x00003E80,			// 16000 mW
            0x0000000A,
            0x0000000A,
            0x00000817,			// Fid = 8, Vid = 23
            0x00000817
        },
        Package (0x06) {
            0x00000320,			// 800 MHz (35% от максимальной)
            0x000032C8,			// 13000 mW
            0x0000000A,
            0x0000000A,
            0x00000612,			// Fid = 6, Vid = 18
            0x00000612
        }
    })

Итак, мы знаем дефолтные 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.

Анализ результатов

Теперь, когда мы эмпирически определили минимальные безопасные напряжения, интересно сравнить их с исходными:

Частота, МГц (множитель) Vidold Vidnew Изменение Vcc
2267 (17) 43 30 -15%
1867 (14) 37 18 -24%
1600 (12) 32 12 -26%
1333 (10) 28 7 -29%
1067 (8) 23 2 -31%
800 (6) 18 0 -29%

Понижение максимального напряжения даже на 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,
+            0x0000111D
         },

         Package (0x06)
@@ -7395,8 +7395,8 @@
             0x000059D8,
             0x0000000A,
             0x0000000A,
-            0x00000E25,
-            0x00000E25
+            0x00000E12,
+            0x00000E12
         },

         Package (0x06)
@@ -7405,8 +7405,8 @@
             0x00005208,
             0x0000000A,
             0x0000000A,
-            0x00000C20,
-            0x00000C20
+            0x00000C0C,
+            0x00000C0C
         },

         Package (0x06)
@@ -7415,8 +7415,8 @@
             0x00004650,
             0x0000000A,
             0x0000000A,
-            0x00000A1C,
-            0x00000A1C
+            0x00000A07,
+            0x00000A07
         },

         Package (0x06)
@@ -7425,8 +7425,8 @@
             0x00003E80,
             0x0000000A,
             0x0000000A,
-            0x00000817,
-            0x00000817
+            0x00000802,
+            0x00000802
         },

         Package (0x06)
@@ -7435,8 +7435,8 @@
             0x000032C8,
             0x0000000A,
             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 как альтернативный и более предпочтительный вариант.

На ThinkWiki руководство чуть получше (и поновее), но не намного. Еще более лаконично выглядит страница ArchWiki. Вот эта строчка доставляет особенно:

# echo 34 26 18 12 8 5 > /sys/devices/system/cpu/cpu0/cpufreq/phc_vids

Так и просятся лостовские «4, 8, 15, 16, 23, 42» (правда, в обратном порядке, что несколько портит шутку).

Пожалуй, самое толковое описание всего процесса для Linux у Пата Эрлея, ссылку на которое я давал выше.

Undervolting в Windows и Mac OS X

Про Windows особо говорить смысла нет: есть и софт, и обсуждения на форумах, поэтому я просто оставлю здесь пару ссылок.

Макось довольно плотно взаимодействует с (и рассчитывает на корректную работу) ACPI, и модификация таблиц — один из основных методов ее настройки под конкретное железо. Поэтому первое, что приходит в голову — точно так же сдампить и пропатчить свою DSDT. Альтернативный метод: google://IntelEnhancedSpeedStep.kext, например, раз, два, три.

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

Что еще почитать

Для FreeBSD: тема на форуме, а также небезызвестное обсуждение в рассылке; исходное письмо Александра Мотина для удобства викифицировано. Для Linux можно начать с неплохой статьи в ArchWiki.

Для тех, кто хочет углубиться в тему, кроме официальной документации производителей процессоров и приведенных в тексте ссылок, вот здесь — отличная подборка материалов (исследовательских статей, презентаций) по широкому кругу вопросов управления энергопотреблением (осторожно, Comic Sans).

Понравилась статья? Поделить с друзьями:
  • Как изменить stroke svg при наведении
  • Как изменить string на int
  • Как изменить tag vlan
  • Как изменить str на int python
  • Как изменить syswow64