Понизить напряжение процессора core i7

Лайфхаки с процессорами от Intel

Undervolting


Undervolting (андервольтинг) — это снижение напряжения на процессоре для уменьшения его тепловыделения. Intel делает процессоры с большим запасом прочности, поэтому можно снизить напряжение на 30-100 мВ (тут как кому повезет) — это снизит нагрев и потребление энергии процессором, а значит продлит время автономной работы. К тому же если процессор низковольтный (с индексом U или Y) то андервольтинг позволит в тот же теплопакет «запихнуть» большую частоту — а значит увеличить производительность. Провести андервольтинг просто — нужно скачать бесплатную программу Intel Extreme Tuning Utility, перейти в ней во вкладку Advanced Tuning и выбрать Core:

После этого изменяем параметр Core Voltage Offset на -10 мВ и проводим в этой же программе стресс тест процессора. Если он прошел успешно — можно опускать напряжение еще ниже. Стоит быть готовы к тому, что вылетит BSOD — ничего страшного тут нет, просто Вы занизили напряжение слишком сильно, просто поднимите его немного и сохраните. Ровно тоже самое делаете по вкладке Cache с параметром Cache Voltage Offset. Например, на Surface Pro 4 снижение напряжения на

100 мВ позволило опустить температуру на 4 градуса.

С учетом того, что система осталась абсолютно стабильной — отличный результат!

Отключение Turbo Boost

Turbo Boost (турбобуст) — технология, позволяющая процессору увеличивать частоту выше максимальной при условии подходящего охлаждения, иными словами — автоматический разгон процессора. Функция, безусловно, полезная — зачастую частота процессора в турбобусте на 20-30% выше, что приносит аналогичное увеличение производительности, однако временами она играет злую шутку с аккумулятором устройства — чем выше частота процессора тем больше он требует энергии, а значит быстрее разряжает устройство. С учетом того что в дороге редко кто использует процессор ноутбука на полную катушку — имеет смысл выключить турбобуст, чтобы продлить время автономной работы.
Сделать это просто — достаточно зайти в настройки своего плана энергопитания и во вкладке с максимальным состоянием процессора сменить 100% на 99:

Этим Вы позволите процессору работать на частотах до 99% от максимальной — разницы со 100% практически нет, но турбобуст не используется.

ThrottleStop

ThrottleStop — утилита, позволяющая убрать троттлинг (снижение частоты процессора вследствии каких-то причин) и тем самым повысить производительность. Имеет массу настроек, я разберу лишь те, которые могут увеличить производительность.

BD PROCHOT — механизм защиты от перегрева: если видеокарта греется выше определенной температуры, то процессор начинает снижать частоту вне зависимости от его температуры. Ставим галочку и забываем про эту несправедливость.

Нажимаем на кнопку TPL и ставим галку напротив TDP Level Control (если этого пункта нет или он заблокирован — производительность поднять не получится) — по умолчанию стоит параметр 1. Установка параметра 0 снизит родную частоту процессора, установка параметра 2 — увеличит. Что же мы меняем? У любого современного процессора от Intel есть настройка производительности в зависимости от TDP, параметр 0 означает что процессор будет работать в экономичном режиме на низких частотах, 1 — по умолчанию, 2 — повышенная производительность. Узнать, какие будут частоты для конкретного процессора можно на официальном ресурсе intel ARK. Например, для i7-6500U частота в экономичном режиме будет 0.8 ГГц, по умолчанию она 2.5 ГГц, в «максимальном» режиме — 2.6 ГГц:

Однако стоит учесть, что изменение частоты в большую сторону приведет к избыточному нагреву, и если ноутбук и без этих правок сильно грелся — лучше не рисковать.

Источник

Как уменьшить напряжение процессора в Windows 10

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

Ваш ЦП рассчитан на работу при определенном напряжении, но вы можете настроить это число на большее (повышенное напряжение) или меньшее (пониженное). Именно последнее (снижение напряжения процессора) мы хотим обсудить в этой статье, и сначала мы начнем с самого важного вопроса.

Зачем понижать напряжение процессора?

Электроника не на 100% эффективна. Это означает, что часть этой электроэнергии, проходящей через ваш процессор, превращается в тепло. Вот почему вашему процессору нужен радиатор и вентилятор, чтобы он не перегревался. Снижение напряжения процессора также уменьшает количество электронов, проходящих через систему. Это означает меньшее количество тепла.

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

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

Почему работает пониженное напряжение?

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

Два идентичных процессора могут иметь разные результаты при таких низких напряжениях. Утвержденное напряжение — это напряжение, которое гарантированно работает с наибольшим процентом процессоров. В некоторых случаях конкретный ЦП действительно будет работать только с официальным напряжением, но по большей части вы обнаружите, что можете хотя бы немного снизить его без каких-либо негативных последствий.

Опасно ли пониженное напряжение?

Ответ на вопрос о том, опасно ли пониженное напряжение, во многом зависит от того, что вы считаете опасным, или от того, какие риски вам подходят. Снижение напряжения ЦП не повредит ЦП или другие компоненты. Однако это может вызвать нестабильность системы, что, в свою очередь, может привести к потере данных. При понижении напряжения важно протестировать и подтвердить настройку более низкого напряжения, прежде чем делать что-либо удаленно важное с вашим компьютером.

Помимо потенциальной потери данных, еще одна реальная опасность, когда дело доходит до пониженного напряжения, заключается в том, что вы случайно переполнен ваш процессор. Слишком высокое напряжение — это быстрый и эффективный способ постоянно поджечь ЦП, поэтому убедитесь на 100%, что вы поворачиваете шкалу напряжения в правильном направлении!

Пониженное напряжение через BIOS

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

Хотя это законный способ понизить напряжение процессора, использование BIOS может быть невероятно утомительным. Поскольку после каждой настройки вам нужно будет загрузиться в Windows, запустить тест, а затем снова настроить. Этот длительный процесс проверки является причиной того, почему большинство людей используют служебную программу для проверки своих напряжений.

Читайте также:  Реле напряжения при отключении электричества

Имейте в виду, что если у вас нет ориентированного на производительность BIOS, возможно, нет элементов управления напряжением процессора, которые вы могли бы настроить.

Понижение напряжения процессора с помощью программной утилиты

Есть две популярные утилиты, которые заядлые андервольтеры используют, чтобы избавить свои ЦП от сока. Если вы используете процессор Intel, то Утилита Intel Extreme Tuning (XTU) — хороший выбор. В конце концов, никто не знает процессоры Intel лучше, чем Intel.

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

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

ПРИМЕЧАНИЕ. Если вы видите, что напряжение смещения ядра неактивно, это, возможно, связано с исправлением безопасности, которое внедрили некоторые OEM (производители оригинального оборудования). В основном это касается ноутбуков, но также может относиться к некоторым готовым настольным системам.

Это произошло благодаря хакерскому эксплойту, известному как Plundervolt. Единственный способ вернуть эту функцию — это прошить более старую непатченную версию BIOS, если она доступна. Мы не рекомендуем делать это, если вы точно не знаете, что делаете.

Итак, что насчет пользователей AMD? У нас не было машины AMD для тестирования, но принцип остался прежним. Основная проблема в том, что XTU не работает с процессорами AMD. Хорошей новостью является то, что у AMD есть собственная утилита, известная как Precision Boost Overdrive.

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

Проверка настроек пониженного напряжения

При каждой новой настройке напряжения вам нужно убедиться, что все по-прежнему работает, как задумано. В какой-то момент вы неизбежно получите сбой или зависание системы, что обычно является признаком того, что вам нужно отступить на одну или две ступени. Но даже если все в порядке, вам придется тщательно проверить свои настройки. Вот последовательность шагов, которые мы рекомендуем при понижении напряжения процессора:

  1. Прежде чем что-либо менять, запустите выбранный вами тест процессора и запишите результат. Запишите пиковую температуру вашего процессора. CPU-Z отличная программа для этой цели.
  2. Уменьшите смещение напряжения на 5 мВ. Если вы чувствуете себя смелым, вы можете начать с снижения на 50 мВ, отсюда 5-10 мВ — наиболее разумное приращение.
  3. После уменьшения запустите стресс-тест, например Prime95 или встроенный стресс-тест в XTU.
  4. Если стресс-тест прошел успешно, запустите тест еще раз. Производительность должна быть такой же или лучше.
  5. Повторите процесс.

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

Пониженное напряжение — это круто, буквально

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

Через несколько лет от ручного понижения напряжения ЦП не будет особой выгоды благодаря сложной самонастройке новых ЦП. Тем не менее, это все равно стоит делать на нынешних и прошлых компьютерах. Самое лучшее в этом то, что риск очень мал. Так почему бы не попробовать?

Источник

Понижение рабочего напряжения процессора, или тюнинг Enhanced Intel SpeedStep

В современных десктопных и (в особенности) мобильных процессорах применяется целый ряд энергосберегающих технологий: 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).

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

EST управляет работой процессора в P-состоянии (P-state), они-то и будут нас интересовать. К примеру, Pentium M поддерживает шесть P-состояний (см. рис. 1.1 и таб. 1.6 pdf’ки), отличающихся напряжением и частотой:

В общем случае, когда процессор заранее неизвестен, единственным более-менее надежным (и рекомендуемым Intel) методом работы с ним является ACPI. С конкретным процессором можно взаимодействовать напрямую, минуя ACPI, — через регистры MSR (Model-Specific Register), в том числе и непосредственно из командной строки: начиная с версии 7.2, во FreeBSD для этого используется утилита cpucontrol(8) .

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

Аналогичная команда для GNU/Linux (потребуется пакет msr-tools):

Переход между состояниями происходит при записи в регистр IA32_PERF_CTL (0x199). Узнать текущий режим работы можно прочитав регистр IA32_PERF_STATUS (0x198), который обновляется динамически (таб. 1.4 pdf’ки). В дальнейшем префикс IA32_ я буду для краткости опускать.

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

Из документации следует, что текущее состояние кодируется в нижних 16 битах (если выполнить команду несколько раз, их значение может меняться — это означает, что EST работает). Если посмотреть внимательнее на остальные биты, в них тоже явно не мусор. Погуглив, можно выяснить, что же они означают.

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

Данные, читаемые из PERF_STATUS , представляются следующей структурой (положим, что данные хранятся как little-endian):

Три 16-битных поля — это так называемые Performance State Values (PSV), их структуру мы рассмотрим ниже: текущее значение PSV, максимальное (зависит от процессора) и значение на старте системы (при включении). Текущее значение (curr_psv), очевидно, меняется при изменении режима работы, максимальное (max_psv) обычно остается постоянным, стартовое значение (init_psv) не меняется: как правило, оно равно максимальному значению для десктопов и серверов, но минимальному для мобильных CPU. Минимальный множитель (min_mult) для процессоров Intel почти всегда равен шести. Поле status содержит значение некоторых флагов, например, при наступлении событий EST или THERM (т.е. в момент изменения P-состояния или перегрева процессора, соответственно).

Теперь, когда мы знаем назначение всех 64 бит регистра PERF_STATUS , мы можем расшифровать прочитанное выше слово: 0x 0612 112b 0x 06 00 0c20 ⇒ PSV на старте 0x0612, максимальное значение 0x112b, минимальный множитель 6 (как и ожидалось), флаги сброшены, текущее значение PSV = 0x0c20. Что именно означают эти 16 бит?

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

Знать и понимать, что из себя представляет PSV, очень важно, ведь именно в таком виде задаются режимы работы процессора.

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

Теперь рассмотрим регистр управления ( PERF_CTL ). Запись в него должна производиться следующим образом: сначала считывается текущее значение (64-битное слово целиком), в нем изменяются нужные биты, и записывается обратно в регистр (т.н. read-modify-write).

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

IDA (Intel Dynamic Acceleration) disengage-бит позволяет временно отключать адаптивное (opportunistic) управление частотой на процессорах Intel Core 2 Duo T7700 и более поздних, — опять же, нас не интересует. Младшие 16 бит (PSV) — режим, в который мы «просим» перейти процессор.

Таблица _PSS

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

Таким образом, каждое 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 она должна выглядеть как-то так:

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

Компилируем новый AML-файл (байткод ACPI) и модифицируем /boot/loader.conf так, чтобы FreeBSD загружала нашу модифицированную DSDT вместо дефолтной:

Вот, в общем, и все. Единственное, не забудьте закомментировать эти две строчки в /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. Вот эта строчка доставляет особенно:

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

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

Undervolting в Windows и Mac OS X

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

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

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

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

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

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

Источник

Оцените статью
Adblock
detector