Введение.
Достаточно давно мне хотелось остановиться на вопросах обеспечения снижения энергопотребления
современных персональных компьютеров и ноутбуков. Многие пользователи оправданно зададут вопрос: "Зачем это надо? - производитель уже позаботился обо всех тонкостях энергопотребления моей системы. Как показывает опыт, к сожалению, это практически всегда не так. Если производители ноутбуков еще как-то стараются обеспечить снижение энергопотребления своих устройств, то с персональными компьютерами, как правило, все находится в запущенном состоянии.
Энергопотребление персональных компьютеров
и необходимо снижать по следующим причинам:
- снижая энергопотребление ноутбука, вы продлеваете его время автономной работы,
- продлевая время автономной работы ноутбука, вы добиваетесь, снижения циклов заряда/разряда аккумуляторной батареи и продлеваете его срок службы,
- вместе с энергопотреблением снижается и тепловыделение компонентов ноутбука или персонального компьютера, что позволяет, с одной стороны, повысить стабильность работы системы, с другой стороны, продлить срок службы электрических компонентов,
- снижение энергопотребления персонального компьютера и ноутбука позволит сократить расходы на электричество. Для многих это до сих пор не критично, но стоимость электроэнергии растет день ото дня, государственная политика заставляет граждан устанавливать электросчетчики, количество компьютеров в семье увеличивается из года в год, длительность их работы удлиняется в пропорциональных масштабах, поэтому в технологиях снижения энергопотребления заинтересован каждый из нас.
Определение ключевых компонентов энергопотребления системы.
Несмотря на то, что современный персональный компьютер и ноутбук настолько различны между собой, как правило, они полностью идентичны по схемам строения. В ноутбуке производители стараются компоновать все, таким образом, чтоб максимально уменьшить итоговые размеры. В то время как любой персональный компьютер является модульной системой, любой компонент которой может быть заменен без каких-либо проблем.Картинка кликабельна --
На представленном рисунке видны компоненты стандартного системного блока . Знание этих компонентов системы позволит вам еще на этапах сборки или апгрейда своего компьютера определиться с теми параметрами, которые позволят вам снизить энергопотребление системы. Итак, современный системный блок содержит:
- корпус,
- блок питания,
- материнская плата,
Оперативная память,
- видеокарта/видеокарты,
- жесткий диск/диски,
- привод компакт-дисков,
- дисководы,
- картридеры,
- системы охлаждения процессора, корпуса.
Звуковые карты, ТВ-тюнеры в отдельном исполнении редко встречаются в современных компьютерах. Во-первых, все существующие материнские платы имеют встроенные контроллеры звука, которые не уступают по качеству звучания дешевым звуковым картам и картам среднего ценового диапазона. Во-вторых, ТВ-тюнеры отслужили свой век, как и коаксиальное телевидение. В эпоху FulHD, IP-TV, DVB говорит о ТВ-тюнерах попросту излишне.
Энергосбережение: корпус и блок питания.
Для многих может показаться странным, обсуждать блок питания и корпус в контексте энергосберегающих технологий. Тем не менее, практика показывает, что пользователи зачастую выбирают корпус по внешнему виду и его ценовому параметру. При этом следует понимать, что малогабаритный, плохо вентилируемый корпус будет способствовать перегреванию компонентов системы и снижению стабильности работы того же процессора, оперативной памяти, материнской платы при снижении напряжений питания, чем мы будем заниматься в дальнейшем.Блок питания может стать источником неэффективного энергопотребления в первую очередь. Любой современный блок питания должен обеспечивать высокие показатели КПД при преобразовании тока высокого напряжения в 12, 5 и 3,3 вольта.
Любой современный блок питания имеет соответствие одному из стандартов серии 80 Plus . Стандарт 80 Plus был принят еще в далеком 2007 году, в рамках энергосберегающих стандартов Energy Star четвертого пересмотра. Данный стандарт требует от производителей блоков питания обеспечение 80% КПД своих устройств при различных нагрузках, - 20%, 50% и 100% от номинальной мощности.
Из этого следует, что для обеспечения максимальной эффективности вашего блока питания, он должен быть нагружен не менее 20 % от своей номинальной мощности. Абсолютно не правильно, когда пользователь приобретает блоки питания "с запасом" на 900 и 1200 Ватт. При выборе блока питания руководствуйтесь тем, что без нагрузки на систему, нагрузка на него не должна падать ниже 20% и он должен иметь сертификат соответствия 80 Plus.
Картинка кликабельна --
Справедливости ради, нужно отметить, что на сегодняшний день стандарт 80 Plus дифференцировался на следующие категории:
- 80 Plus
- 80 Plus Bronze
- 80 Plus Silver
- 80 Plus Gold
- 80 Plus Platinum.
Различие между стандартами заключается в обеспечении более высоких показателей КПД внутри семейства стандарта 80 Plus. Если при 50% нагрузке блок питания стандарта 80 Pus обеспечивает КПД на уровне 80%, то дорогие блоки питания соответствующие стандарту 80 Plus Platinum обеспечивают КПД на уровне 94% и выше.
Энергосбережение: материнская плата.
На сегодняшний день материнские платы развиваются максимально быстро, не отставая от развития процессоров. Следует понимать, что материнские платы состоят из различных наборов контроллеров, обеспечение слаженной работы которых, и является основной задачей материнской платы. В большинстве случае, энергопотребление материнской платы зависит от вида примененного северного и южного моста. Современные северные мосты значительно снизили свое энергопотребление, что повлекло за собой уменьшение размеров их систем охлаждения. Многие пользователи помнят времена, когда система охлаждения северного моста состояла из нескольких тепловых трубок соединенных с радиаторами охлаждения. Появление последнего поколения системной логики от Intel позволило снова отойти на уровень обычных радиаторов.
В силу общих тенденций, многие именитые производители материнских плат, такие как Gigabyte , ASUS , MSI демонстрируют на выставках свои новые "экологичные" продукты. Как правило, экологичность данных решений достигается за счет оптимизации схем питания процессора и видеокарт, - основных потребителей любого системного блока. Как правило, это осуществляется за счет применения многофазных стабилизаторов напряжения процессоров.
Современные материнские платы , применяют в схемах питания от шести до двенадцати стабилизаторов напряжения. Данные схемы значительно повышают стабильность подаваемого напряжения, но увеличивают энергопотребление. Поэтому производители "экологичных" материнских плат оснащают их технологиями, которые при низкой нагрузке на систему питания выключают часть фаз, и питание процессора осуществляется за счет одной-двух фаз стабилизаторов напряжения.
При покупке материнской платы, также следует быть более внимательным. Приобретение "навороченной" материнской платы всегда оборачивается повышенным энергопотреблением. Если вам никогда не будет нужен порт FireWire, не следует за него переплачивать, а затем ежемесячно платить за то электричество, которое потребляет его контроллер на материнской плате.
Энергосбережение: процессор.
Ведущие производители процессоров AMD и Intel на протяжении последних десятилетий занимаются снижением энергопотребления своих продуктов. Следует отдать должное, вся эстафета была начата компанией AMD, в которой она удерживала прочное лидерство на протяжении двух-трех лет. Были времена, когда процессоры компании AMD с технологией Cool"n"Quiet имели значительно меньшее энергопотребление, нежели процессоры от компании Intel линеек Pentium 4 и Pentium D.Компания Intel быстро наверстала свое отставание и внедрила технологию EIST - Enhanced Intel SpeedStep Technology, которая прекрасно себя показала в последних поколениях процессоров. В то время как новые процессоры от компании Intel обзаводятся все новыми и новыми технологиями энергосбережения и наращивают производительность, от компании AMD существенных рывков вперед мы не видим.
Как известно, ключевым энергопотребителем любого персонального компьютера или ноутбука является именно процессор, поэтому мы остановимся на вопросах снижения его энергопотребления.
Для того чтоб понять, как можно снизить энергопотребление , вы должны четко для себя представлять, от чего оно зависит. Энергопотребление современного процессора зависит:
- от напряжения питания подаваемого на транзисторы,
- частоты работы процессора. Частота работы процессора формируется из произведения его множителя на частоту шины.
По сути дела, технологии Cool"n"Quiet
и EIST
занимаются снижением энергопотребления именно за счет этих двух параметров. К сожалению, чаще всего мы сталкиваемся с работой не с напряжением питания процессора, а с работой его частотой. При снижении нагрузки на процессор энергосберегающие технологии снижают множитель процессора и тем самым добиваются снижения энергопотребления процессора. При появлении нагрузки на процессоре, множитель возвращается на прежние значения, и процессор работает, как ни в чем не бывало. К сожалению, данная методика снижения энергопотребления не всегда позволяет добиться высокой энергоэффективности. Покажем на примере.
В качестве примера выбран процессор Core 2 Duo с номинальной частотой работы 2,0 Ггц.
Картинка кликабельна --
Из представленной диаграммы видно, что температура работы процессора без включения режима энергосбережения, при номинальном множителе x12 и напряжении питания 1,25 вольт мы имеем рабочую температуру порядка 55-56 градусов в простое.
Картинка кликабельна --
После подачи нагрузки на процессор, при аналогичных условиях работы мы фиксируем среднею температуру работы порядка 71-72 градусов, что и было зафиксировано на наших диаграммах.
Температура ядер снимается по внутренним датчикам, поэтому погрешности минимальны. Учитывая тот факт, что между энергопотреблением процессора и его рабочей температурой имеется прямопропорциональная связь, мы будем ориентироваться на данный параметр при оценке его энергоэффективности.
Следующим этапом мы снизили множитель до минимально возможных значений, до 6. При этом частота процессора составила 997 Мгц, грубо можно округлить до 1 Ггц. Напряжение питания осталось неизменным, в районе 1,25 вольт.
Картинка кликабельна --
Из представленных данных видно, что в режиме простоя, рабочая температура процессора изменилась очень мало, она осталась, по-прежнему, в рамках 55-56 градусов. Отсюда напрашивается вывод о том, что от простого снижения частоты работы процессора мы выигрываем очень мало.
Картинка кликабельна --
После этого мы подали нагрузку на , но множитель и рабочее напряжение процессора оставили на прежнем уровне. Естественно, подобное тестирование имеет значение только с практической стороны, реализовывать его в жизни мы не рекомендуем. Связано это с тем, что именно от частоты процессора зависит его производительность, и никто не покупает высокочастотный процессор для его последующей работы на заниженных частотах. После стабилизации температурных значений, мы получили среднею рабочую температуру равную 65-66 градусам, что на шесть градусов ниже, чем при работе процессора на номинальной частоте равной 2 Ггц.
Из этого всего следует, что действительно энергосбережение от снижения рабочей частоты процессора путем изменения значения множителя имеет место быть, но оно не того уровня, которого нам бы хотелось видеть, в каждом конкретном случае. Поэтому мы приступаем к работе с напряжением процессора.
Наш процессор и материнская плата позволяют изменять напряжение питания процессора в промежутке 0,95-1,25 вольт. Шаг составляет 0,0125 вольт. Это связано с тем, что процессор установлен в ноутбуке, материнские платы которых, редко когда дают возможность менять рабочие напряжения компонентов в широких диапазонах.
Для того чтоб доказать эффективность снижения рабочего напряжения процессора в плане снижения его энергопотребления и тепловыделения, мы оставим его рабочую частоту на уровне 1 Ггц, но параллельно снизим рабочее напряжение до минимально возможных значений, - 0,95 вольт.
Картинка кликабельна --
Данная манипуляция позволила нам снизить температуру простоя процессора до 45-46 градусов, что представлено на диаграмме. В данном режиме мы добиваемся максимально возможно низкого энергопотребления процессора. Снижение рабочего напряжения до 0,95 вольт позволило нам снизить рабочую температуру простоя на 10 градусов!!!
Картинка кликабельна --
Для оценки эффективности метода снижения рабочего напряжения процессора, мы подали на него нагрузку. В результате чего мы получили рабочую температуру в нагрузке равную 50-51 градусам, в то время как без изменения напряжения и аналогичной производительности системы на частоте 1 Ггц ранее мы получали 65-66 градусов. Полученные нами данные зафиксированы на диаграммах.
Энергопотребление процессора: выводы
- Из всего вышеизложенного следует, что для обеспечения высокой энергоэффективности процессора не следует только снижать рабочую частоту процессора, как это делается многими ноутбуками и персональными компьютерами в рамках энергосберегающих технологий от Intel и AMD. Снижение частоты работы процессора всегда должно сопровождаться снижением его рабочего напряжения.Учитывая тот факт, что любой процессор может работать при более низком напряжении при более низких частотах своей работы, следует подобрать свое минимальное стабильное напряжение для каждой частоты его работы.
Для определения приблизительных рабочих напряжений для каждой частоты (множителя) процессора достаточно построить график прямой зависимости минимального напряжения от частоты путем нанесения максимальных и минимальных значений. Это значительно облегчит работу начинающим пользователям.
- Для обеспечения необходимой энергоэффективности процессора, необходимо правильно настроить существующие технологии или применять сторонние программные продукты, которые могли бы снижать частоту процессора, его напряжение при низкой нагрузке и повышать их при ее повышении.
Энергосбережение процессора: RightMark CPU Clock Utility (RMClock)
Утилита имеет небольшой вес, порядка 250 килобайт . Не требуется какой-либо установки, просто распаковываете его в выбранную папку и запускаете файл RMClock.exe. Для простоты ссылка на архив с программой будет представлена в конце нашей статьи.На момент написания статьи последняя версия программы 2.35
имеет следующий функционал в рамках бесплатного использования:
- контроль тактовой частоты процессоры,
- контроль троттлинга,
- контроль уровня загрузки процессора, ядер процессора,
- контроль рабочего напряжения процессора,
- контроль температуры процессора/ядер процессора,
- постоянный мониторинг указанных параметров,
- возможность изменения напряжения процессора из операционной системы,
- возможность изменения множителя процессора (его частоты) из операционной системы,
- автоматическое управление частотой и напряжением процессора
в зависимости от подаваемой нагрузки на него. Концепция носит название "Perfomance on demand" или "производительность по требованию".
Картинка кликабельна --
Запустив программный продукт, вы попадаете в один из разделов его меню. Мы перечислим весь функционал RightMark CPU Clock Utility по порядку. В разделе About представлена информация о разработчиках, их сайте, и ссылка на лицензионное соглашение. Базовая версия продукта поставляется бесплатно для некоммерческих целей, никакой регистрации не требуется. Имеется профессиональная версия, которая предоставляет гораздо более широкий функционал настроек работы системы и стоит символические 15 долларов. Для начинающего пользователя возможностей базовой версии вполне хватит.
Картинка кликабельна --
В закладке "Settings " представлены настройки программы для удобства его использования. К сожалению, русского языкового пакета, который встречался в ранее выпущенных версиях продукта, в нашем случае не оказалось, но в этом нет ничего страшного. В данной закладке имеется возможность выбора цвета оформления и, прошу обратить внимание, - режим автозапуска.
За режим автозапуска отвечает подраздел "Startup options ". Автозапуск RightMark CPU Clock Utility при загрузке операционной системы позволяет максимально легко решить вопросы энергосбережения без вмешательства в BIOS компьютера, что особенно полезно, когда BIOS не предоставляет каких-либо возможностей по изменению рабочего напряжения и множителя процессора. Подобное встречается в BIOS"ах современных ноутбуков.
Поставив галочку в окне пункта "Start minimized to system tray " вы избавите себя от надобности постоянно закрывать окно программы при очередном запуске. Оно будет выполнять свои задачи после автоматического запуска с предварительным свертыванием.
Пункт "Run at Windows startup :" позволяет установить автоматический запуск программного продукта и выбрать, как это делать. В нашем случае мы осуществляем автоматический запуск через реестр, также имеется возможность автоматического запуска через папку "Автозагрузка". Оба варианта прекрасно работают, начиная от Windows XP заканчивая Windows 7.
Имеется возможность записи необходимых параметров работы процессора в Log-файл . Данный параметр бывает необходим для выяснения причин нестабильной работы системы.
Картинка кликабельна --
В закладке "CPU info " представлена информация о процессоре, его характеристики на текущий момент. Перечислены поддерживаемые технологии энергосбережения. Чем более современный процессор, тем больше технологий он поддерживает.
Картинка кликабельна --
В закладке "Monitoring " представлены диаграммы изменения рабочей частоты ядра процессора, его троттлинг, нагрузка на него, множитель, рабочее напряжение и температура. Количество вкладок соответствует количеству ядер процессора.
Картинка кликабельна --
Во вкладке "Management " пользователю предоставляется возможность выбора метода переключения множителей, методов определения фактической нагрузки на процессор, интеграции программного продукта с энергосберегающими технологиями операционной системы.
Пункт "P-states transitions method
" позволяет выбрать метод перехода от одной заданной комбинации множителя-напряжения на другой. Имеются следующие возможности выбора:
- Single-step: множитель переключается с шагом равной единице. То есть при переходе с множителя 10 на множитель 12 всегда будет промежуточное звено 11.
- Multi-step: переход будет осуществляться с переменным шагом. В случае нашего примера, с 10 сразу на 12.
Пункт "Multi-CPU load calculation " позволяет определить метод определения загрузки процессора. Данный параметр будет влиять на скорость переключения комбинации множитель-напряжение на процессоре. В каждом случае подбирается исходя из индивидуальных особенностей работы пользователя. Обычно данный параметр мы не меняем и оставляет на указанном на скрине значении, который означает, что оценка будет осуществляться по максимальной нагрузке любого из ядер процессора.
Пункт "Standby/hibernate action " позволяет выбрать действие программы при переходе в режим гибернации или сна. Как правило, оставление текущего профиля работы является вполне достаточным.
В разделе "CPU Default Settings
" представлены следующие пункты:
- Restore CPU defaults on management turns off, который позволяет вернуть первоначальные параметры работы процессора после выбора режима "No Power Managemet".
- Restore CPU defaults on application exit, который позволяет вернуть первоначальные параметры работы процессора после выключения RightMark CPU Clock Utility.
В разделе "CPU defeaults selection" выбирается метод определения комбинаций множитель-напряжение у процессора:
- CPU-defined default P-state, комбинация определяются процессором,
- P-state found at startup, комбинации определяются при загрузке программы,
- Custom P-state, комбинации устанавливаются вручную.
Пункт "Enable OS power management integration " позволяет создать профиль в схемах энергопотребления системы под названием "RMClock Power Management".
Картинка кликабельна --
В разделе "Profiles " пользователю предлагается задать те самые комбинации множитель-напряжение, - P-state. Во-первых, предлагается выбрать профили в зависимости от режима энергопотребления, - сеть или батарея/ИБП.
Ниже предлагается выбрать множители процессора
и напряжение для них в каждом конкретном случае. Как правило, я выбираю три значения:
- минимальный множитель и минимальное напряжение для него,
- максимальный множитель и минимально рабочее напряжение для него,
- среднее значение множителя, а напряжение для него устанавливается самой программой исходя из максимальных и минимальных значений.
Как правило, подобный подход подходит для большинства ноутбуков и персональных компьютеров. Естественно, бывают исключения, и пользователю приходится длительно подбирать минимальное напряжение для каждого множителя.
Картинка кликабельна --
Затем устанавливаете галочки для уже выбранных профилей в соответствующих разновидностях работы программы:
- No management - без управления, в настройках не нуждается
- вкладки "Power Saving", "Maximal performance", "Perfomance on Demand" по сути дела равнозначны и позволяют установить диапазоны изменения множителей-напрежения процессора.
Например, в нашем случае для вкладки "Power Saving " мы выбрали минимально возможный множитель и напряжением, для вкладки "Maximal performance" максимальный множитель и минимально рабочее напряжение при данной частоте у процессора.
В разделе производительность по требованию "Perfomance on Demand
" выбрали три комбинации множитель-напряжение:
- x4-0,95 вольт
- x9-1,1 вольт
- x12-1,25 вольт.
Картинка кликабельна --
Затем наводите на значок в области уведомлений рабочего стола программы RightMark CPU Clock Utility и выбираете необходимые параметры процессора, которые всегда должны вам показываться и выбираете текущий профиль работы. Я всегда ставлю для мониторинга частоту процессора и его температуру работы, что всегда удобно и отчасти интересно.
Картинка кликабельна --
На рисунке представлены три пиктограммы в области уведомлений рабочего стола:
- пиктограммы программы RightMark CPU Clock Utility,
- текущая частота процессора,
- его текущая температура.
Картинка кликабельна --
На скрине представлены диаграммы работы процессора в режиме "Производительность по требованию ". Видно, как программный продукт при увеличении нагрузки на процессор ступенчато увеличивает его множитель и напряжение вначале до x9-1,1 вольт и при необходимости до максимальных x12-1,25 вольт. Как только нагрузка падает, все ступенчато возвращается обратно.
Подобная регулировка практически никак не влияет на итоговую производительность системы.
Картинка кликабельна --
Во вкладке "Battery info " предлагается выбрать способы оповещения о состоянии аккумуляторной батареи ноутбука.
Во вкладке "Advanced CPU settings
" предлагается выбрать опрашиваемые температурные датчики процессора, включаемые технологии энергосбережения.
Все эти энергосберегающие технологии описаны на сайте Intel
. Мы просто хотим сказать, что, как правило, их включение не влияет на стабильность системы, поэтому - почему бы их не включить?
Наш процессор относится к раннему семейству процессоров Core 2 Duo
. Современные процессоры поддерживает не активные у нас технологии:
- Engage Intel Dynamic Acceleration (IDA)
- Enable Dynamic FSB Frequency Switching (DFFS)
Первая технология позволяет процессору повысить множитель одного из ядер при отсутствии нагрузки на второе. Например, работают два ядра процессора при частоте 2,2 Ггц. Процессор оценивает, что нагрузка подается только на одно ядро, то его множитель будет повышен, и он начнет работать на частоте 2,4 Ггц. Технология интересная, но опасная на разогнанных процессорах.
Вторая технология позволяет добиться еще более сильного снижения рабочей частоты процессора в режимах простоя. Ранее мы говорили о том, что итоговая частота процессора - это всегда произведение множителя на частоту системной шины. Современные процессоры Intel в рамках технологии DFFS позволяют снижать не только значение множителя, но и частоту шины, что позволяет достичь еще более низких частот. Данная технология также опасна для разогнанных процессоров, так как можно получить нестабильность со стороны оперативной памяти.
Картинка кликабельна --
Пожалуй, это все что мы хотели рассказать о программном продукте RightMark CPU Clock Utility . Остается посоветовать следить за ее обновлениями. При этом не имеет смысл обновляться, когда у вас уже на протяжении многих месяцев все стабильно работает. Имеет смысл искать новую версию при смене процессора или переходе на более современную операционную систему.
Использование программы RightMark CPU Clock Utility позволит вам максимально продлить жизнь не только своего процессора, но и системы питания материнской платы, а также значительно снизить шум от системы охлаждения процессора, который не будет надрываться для его охлаждения, когда вы будете печатать, смотреть фильмы или просто листать страницы в Интернете.
Энергопотребление процессора: определяем минимальное рабочее напряжение
В своей статье я многократно указывал на то, что важно определить минимальное рабочее напряжение для каждой частоты работы процессора. Делается это путем проб и ошибок. Как правило, последовательно выполняется следующий цикл задач:- снижение напряжения на один пункт,
- проверка стабильности процессора в стресс-тестовом программном продукте,
- понижение или повышение напряжения на один пункт в зависимости от результатов стресс-тестирования.
Для стресс-тестирования процессоров существует множество программных продуктов. Они были описаны в одной из наших статей. Считаю, что наиболее ценной из них является программа Prime95. Ссылка на нее будет предоставлена в конце статьи. Она полностью бесплатна и доступна для скачивания в сети.
Картинка кликабельна --
Последняя ее версия была выпущена в 2008 году, как раз тогда, когда было необходимо внедрить мультиядерность в тестирование. Имеется возможность выбора различных методов тестирования, указывать длительность тестирования, периодичность тестирования и т.д.
Картинка кликабельна --
Выбираем метод тестирования в разделе "Options "=> "Torture test " и запускаем его. Длительность тестирования полностью зависит от вас. Как правило, при определении ориентировочного минимального напряжения я дожидаюсь либо первой ошибки, либо провожу тестирование в течение получаса. Если полчаса теста прошло без ошибок, снижаем напряжение на один пункт и вперед заново.
После того, как вы определились с минимальным напряжением окончательно, имеет смысл оставить тест на ночь. За несколько часов кропотливой работы, практически всегда удается выявить возникающие ошибки.
Нередко, операционная система зависает или в лучшем случае, выдает "синий экран смерти ". Это говорит о том, что напряжение занижено и возникла ошибка, - следует поднять рабочее напряжение на процессоре для данной частоты.
Картинка кликабельна --
В нашем случае, мы определили минимальное рабочее напряжение для нашего процессора . Как оказалось, при максимальной частоте в 2 Ггц нашему процессору 1,25 вольт совсем не нужны. Он вполне стабильно работает и при 1,00 вольтах. Стабильность операционной системы была обнаружена и при режиме 0,975 вольт, но Prime95 сообщил об ошибке, которая пропала после поднятия напряжения до 1,00 вольт.
В итоге мы имеем
:- процессор с неизменным уровнем производительности и частотой работы 2 Ггц,
- максимальную рабочую температуру в нагрузке 62-63 градуса, вместо привычных 72 градусов,
- более низкое энергопотребление, которое позволяет без каких-либо схем энергопотребления от Acer, Asus, Samsung, Gigabyte максимально продлить длительность работы ноутбука от аккумуляторной батареи не теряя уровня производительности,
- более низкое энергопотребление позволит сократить расходы на электричество, особенно, если указать данные значения в описанном выше программном продукте RightMark CPU Clock Utility.
В действительности, подобное низкое рабочее напряжение процессора для оверклоккера говорит всегда об одном, - об его высоком разгонном потенциале. Но нюансам разгона у нас будут посвящены другие статьи, - тема разгона процессора выходит за рамки темы об энергосбережении.
Заключение.
Прочитав статью, у пользователя должен возникнуть вопрос: "Неужели производители настолько неумелые, что сами не понижают рабочее напряжение процессоров, особенно в ноутбуках, где это так критично?" Ответ прост и заключается в том, что процессоры выпускаются массово, ноутбуки также выходят с конвейера. Не в интересах производителей затягивать процесс производства, поэтому кому-то везет и его процессор показывает чудеса разгона, а у кого-то отказывается это делать, у кого-то процессор работает при напряжении 1,175 вольт, а у кого-то он стабилен и при 0,98 вольтах. Покупка электроники, - это всегда лотерея. Что скрыто под этикеткой в каждом конкретном случае, познается только на практике.
В заключение хочется поблагодарить разработчиков программных продуктов RightMark CPU Clock Utility
и Prime95
, которым наш портал МегаОбзор вручает золотую почетную медаль. Ждем ваших вопросов и напоминаем, что все, что вы делаете со своей электроникой, вы делаете на свой страх и риск.
RightMark CPU Clock Utility
можно найти по .
Описанную в статье программу Prime95
можно найти по .
В интернете на обсуждение очень интересной программы под названием RMClock. До этого я уже несколько раз сталкивался с программой, но не понятные на первый взгляд настройки и отсутствие какой-либо документации, вызывают отторжение и отбивают какое-либо желание разбираться с этой утилитой. Тем не менее, программа очень интересная и заслуживает внимания. Сейчас я расскажу почему, и о том, чем она может привлечь рядового владельца ноутбука.
Разработчик RightMark
Объем загружаемого файла 463 Kb
Предназначение программы
Небольшая утилита, осуществляющая мониторинг тактовой частоты, троттлинга, загрузки процессора, напряжения и температуры процессорного ядра в реальном времени. Она также способна управлять уровнем производительности и потребляемой мощности процессоров, поддерживающих функции управления энергопотреблением. В режиме автоматического управления она постоянно отслеживает уровень загрузки процессора и автоматически изменяет его тактовую частоту, напряжение процессорного ядра и/или уровень троттлинга в соответствии с концепцией “производительность по требованию”.
Польза для простого пользователя
Снизить подаваемое напряжение на центральный процессор, тем самым уменьшить потребляемую энергию, уменьшить тепловыделение и увеличить автономность .
Если не вдаваться в технические подробности, то идея достаточно проста - понизить энергопотребление центрального процессора (ЦП). Метод не универсальный и не 100%, потому что каждый ЦП имеет уникальные физические свойства и существует большая вероятность того, что при той же тактовой частоте ему требуется меньше энергии, чем установлено по умолчанию для всех процессоров данного типа. Насколько сильно можно уменьшить электропотребление, зависит уже от удачи и от вашего ЦП. Мне повезло, так что результаты получились очень показательными.
Установка
Просто следуем инструкциям и ничего более. Учтите только, что программа автоматически прописывается в автозагрузку и становится стандартным ПО для управления профилями энергопотребления. Так что если у вас установлено другое ПО (фирменные утилиты в Acer, ASUS), то их нужно полностью отключить для избегания конфликтов.
Настройка
Settings
В этой вкладке нужно отметить два пункта в блоке Startup Options . Для того чтобы приложение запускалось автоматически при старте Windows.
Management
Также оставляем все по умолчанию и проверяем что пункт Enable OS power management integration активирован.
Profiles
Тут и начинается самое интересное. Для состояний AC power (работа от сети) и Battery (работа от аккумулятора) устанавливаем нужные профили. При работе от сети рекомендую поставить on demand (производительность по необходимости), а при работе от батареи Power Saving.
Сразу под профилями отображаются все возможные состояния процессора (множители, FID), а также напряжение (VID), подаваемое на ЦП в этом стоянии. От текущего состояния зависит тактовая частота, на которой работает процессор; возможность изменения частоты сделана для уменьшения энергопотребления в моменты небольшой загрузки или простоя.
Теперь наша задача выставить для каждого множителя более низкий вольтаж. Я не стал долго экспериментировать и поставил минимальное напряжение для каждого множителя. Сразу отвечаю на вопрос о вредности таких действий - с вашим процессором ничего не произойдет, в худшем случае система зависнет. В моем случае все заработало отлично, но если у вас будут наблюдаться какие-либо проблемы, попробуйте уменьшать напряжение небольшими шагами до минимального значения, при котором система будет работать стабильно.
Теперь нужно настроить профили Performance on demand и Power Saving. Для этого выбираем соответствующие пункты. В обоих случаях отмечаем галочкой Use P- state transitions ( PST), тот профиль, в котором вы находитесь в текущий момент. Причем, для профиля on demand, выбираем все множители из списка, а для профиля Power Saving только первый (это означает, что при работе от аккумулятора процессор всегда будет функционировать на минимальной частоте, конечно, вы можете выбрать и другой множитель, тем самым повысив максимально допустимую частоту). Остальные опции оставляем неактивными.
Работа
Вот собственно и все. Теперь нужно активировать профиль энергопотребления RMClock Power Management. Для этого левой кнопкой нажимаем на батарейке в трее и выбираем нужный профиль. Если его нет, нужно нажать на Дополнительные параметры энергопотребления и выбрать его там. Теперь при подключении питания ноутбук будет использовать профиль on demand , а при работе от аккумулятора — Power Saving, используя ранее сделанные нами установки. При этом мы снизили энергопотребление процессора и заставили его четко реагировать на установки программы (при использовании стандартной программы управления частота может прыгать вверх-вниз даже при простое, а также изменяется вольтаж).
Проверяем
Если вы сделали все правильно, то во вкладке Monitoring можно видеть результат работы. График FID-VID демонстрирует текущий множитель и вольтаж. Проверте это значения при работы от сети и от батареи, они должны совпадать с установленными значениями в профиле.
Теперь желательно протестировать все настройки какой-либо программой, например Prime95 . Задача - удостоверится в том, что ЦП без проблем работает при выбранных нами установка вольтажа.
Тестирование
В теории все как всегда классно, но как эти действия сказываются на реальной работе?
Тестовая система: Terra 1220 (Intel Core 2 Duo T7300)
Я протестировал оба режима работы и сравнил их с аналогичными режимами стандартной программы управления питанием.
Сбалансированный VS Performance on demand
Автономность проверялась программой BatteryEater в режиме максимальной загрузки (Classic). Беспроводные интерфейсы отключены, яркость экрана установлена на максимум.
Как видно, время работы абсолютно не изменилось и составило 88 минут. Каждый тест приводил два раза, чтобы удостоверится в результатах. Так что в моем конкретном случае, понижение напряжения не повлияло на время автономной работы. А вот температурные показатели интересны, максимальная температура во время теста при использование RMClock снизилась на 23°С ! Просто отличный результат, который для конечного пользователя означает банальное уменьшение температуры корпуса ноутбука, а также уменьшения шума (вентилятор не включается на полные обороты).
Производительность в PCMark также не изменилась, разница в измерениях в рамках погрешности. А вот с температурой мы наблюдаем туже картинку - максимальная температура уменьшилась на 17°С .
Экономия энергии VS Power Saving
Тут ситуация повторилась. Время автономной работы не уменьшилось, но температура при этом существенно снизилась. Это положительно сказывается на комфорте работы.
В современных десктопных и (в особенности) мобильных процессорах применяется целый ряд энергосберегающих технологий: 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 или операционной системы, изменять множитель (отношение частоты процессора к частоте шины) и напряжение ядра (V cc) в зависимости от нагрузки, типа источника питания компьютера, температурного режима CPU и/или настроек (политики) ОС.Во время работы процессор находится в одном из нескольких состояний (power states): T (throttle), S (sleep), C (idle), P (performance), переключаясь между ними по определенным правилам (с. 386 спецификации ACPI 5.0).
Каждый процессор, присутствующий в системе, должен быть описан в таблице DSDT, чаще всего в пространстве имен \_PR , и обычно предоставляет ряд методов, через которые происходит взаимодействие с операционной системой (драйвером PM), и которые описывают возможности процессора (_PDC , _PPC), поддерживаемые состояния (_CST , _TSS , _PSS) и управление ими (_PTC , _PCT). Нужные значения для каждого CPU (если он входит в т.н. CPU support package) определяются BIOS"ом материнской платы, который заполняет соответствующие таблицы и методы ACPI (с. 11 pdf"ки) при загрузке машины.
EST управляет работой процессора в P-состоянии (P-state), они-то и будут нас интересовать. К примеру, Pentium M поддерживает шесть P-состояний (см. рис. 1.1 и таб. 1.6 pdf"ки), отличающихся напряжением и частотой:
В общем случае, когда процессор заранее неизвестен, единственным более-менее надежным (и рекомендуемым Intel) методом работы с ним является ACPI. С конкретным процессором можно взаимодействовать напрямую, минуя ACPI, - через регистры MSR (Model-Specific Register), в том числе и непосредственно из командной строки: начиная с версии 7.2, во FreeBSD для этого используется утилита cpucontrol(8) .
Узнать, поддерживает ли ваш процессор EST, можно взглянув на 16-й бит в регистре IA_32_MISC_ENABLE (0x1A0), он должен быть установлен:
# kldload cpuctl
# cpucontrol -m 0x1a0 /dev/cpuctl0 | (read _ msr hi lo ; echo $((lo >> 16 & 1)))
1
Аналогичная команда для GNU/Linux (потребуется пакет msr-tools):
# modprobe msr
# echo $((`rdmsr -c 0x1a0` >> 16 & 1))
1
Переход между состояниями происходит при записи в регистр IA32_PERF_CTL (0x199). Узнать текущий режим работы можно прочитав регистр IA32_PERF_STATUS (0x198), который обновляется динамически (таб. 1.4 pdf"ки). В дальнейшем префикс IA32_ я буду для краткости опускать.
# 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 , мы можем расшифровать прочитанное выше слово: 0x0612 112b 0x06 00 0c20 ⇒ PSV на старте 0x0612, максимальное значение 0x112b, минимальный множитель 6 (как и ожидалось), флаги сброшены, текущее значение PSV = 0x0c20. Что именно означают эти 16 бит?
Структура Performance State Value (PSV)
Знать и понимать, что из себя представляет PSV, очень важно, ведь именно в таком виде задаются режимы работы процессора.Struct psv {
unsigned vid: 6; /* Voltage Identifier */
unsigned _reserved1: 2;
unsigned freq: 5; /* Frequency Identifier */
unsigned _reserved2: 1;
unsigned nibr: 1; /* Non-integer bus ratio */
unsigned slfm: 1; /* Dynamic FSB frequency (Super-LFM) */
};
Dynamic FSB frequency switching указывает пропускать каждый второй такт FSB, т.е. вдвое понижать рабочую частоту; эта возможность впервые реализована в процессорах Core 2 Duo (ядро Merom) и нас не касается, как и Non-integer bus ratio - специальный режим, поддерживаемый некоторыми процессорами, позволяющий, как следует из названия, более тонко управлять их частотой.
К собственно технологии EST имеют отношения два поля - идентификаторы частоты (Frequency Identifier, Fid), который численно равен множителю, и напряжения (Voltage Identifier, Vid), который соответствует уровню напряжения (он же обычно и наименее документирован).
Идентификатор напряжения (Voltage Identifier)
Intel весьма неохотно раскрывает информацию (обычно требуется подписать NDA) о том, как именно кодируется идентификатор напряжения для каждого процессора. Но для большинства популярных CPU, к счастью, эта формула известна; в частности, для нашего Pentium M (и многих других): V cc = Vid 0 + (Vid × V step), где V cc - текущее (действительное) напряжение, Vid 0 - базовое напряжение (когда Vid == 0), V step - шаг. Таблица для некоторых популярных процессоров (все значения в милливольтах):Процессор | Vid 0 | V step | V boot | V min | V max |
---|---|---|---|---|---|
Pentium M | 700,0 | 16,0 | xxxx,x | xxx,x | xxxx,x |
E6000, E4000 | 825,0 | 12,5 | 1100,0 | 850,0 | 1500,0 |
E8000, E7000 | 825,0 | 12,5 | 1100,0 | 850,0 | 1362,5 |
X9000 | 712,5 | 12,5 | 1200,0 | 800,0 | 1325,0 |
T9000 | 712,5 | 12,5 | 1200,0 | 750,0 | 1300,0 |
P9000, P8000 | 712,5 | 12,5 | 1200,0 | 750,0 | 1300,0 |
Q9000D, Q8000D | 825,0 | 12,5 | 1100,0 | 850,0 | 1362,5 |
Q9000M | 712,5 | 12,5 | 1200,0 | 850,0 | 1300,0 |
Теперь рассмотрим регистр управления (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.
Анализ результатов
Теперь, когда мы эмпирически определили минимальные безопасные напряжения, интересно сравнить их с исходными:Понижение максимального напряжения даже на 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 как альтернативный и более предпочтительный вариант.
Макось довольно плотно взаимодействует с (и рассчитывает на корректную работу) ACPI, и модификация таблиц - один из основных методов ее настройки под конкретное железо. Поэтому первое, что приходит в голову - точно так же сдампить пропатчить свою DSDT . Альтернативный метод: google://IntelEnhancedSpeedStep.kext , например, раз , два , три .
Еще одна «чудесная» утилита (к счастью, уже устаревшая) предлагает купить за $10 возможность менять напряжение и частоту. :-)
Регулирование напряжения питания процессоров Intel
ВНИМАНИЕ! Автор статьи не несет никакой ответственности за любой вред, нанесенный компьютеру вследствие применения описанных здесь действий
Одним пользователям везет больше, другим меньше. Бывают счастливчики, которым достаются процессоры, легко разгоняющиеся до следующей "стандартной" частоты FSB: Celeron до 100, а Рentium III "Е"-модификации до 133 МГц соответственно. Однако подобный процессор не так-то просто раздобыть: на рынках они есть, но продавцы за "гарантировано" разгоняемый камень чаще всего хотят столько, что можно купить процессор с примерно такой же, но "родной" частотой, гарантированной производителем. Но нередко попадаются процессоры, работающие на повышенной частоте, но нестабильно. То есть появляются неожиданные сбои, программы "выполняют недопустимые операции" и закрываются, взгляд радуют "синие экраны" и тому подобные прелести.
Часто от этого можно избавиться поднятием напряжения питания процессора. У классического Celeron (на ядре Mendocino; т.е. модели 300A-533) стандартное напряжение ядра составляет 2 В. В принципе, без особого риска его можно поднять на 5-10% (до 2.1 — 2.2 В). Абсолютно то же самое касается и процессоров с ядром Coppermine (Celeron 533A-766 и Pentium III): меняются лишь абсолютные цифры.
Однако хорошо, если при помощи BIOS или джамперов на материнской плате можно выставить нужный уровень напряжения, а что делать, если такая возможность отсутствует (что обычно и бывает, если говорить о недорогих материнских платах)? Фактически пропадает основная идея разгона: на недорогом "железе" получить большую производительность. На платах с разъемом Slot 1 можно применять специальные переходники, однако пользователям сокетных плат от этого не легче (к тому же, иногда и 5-7 долларов разницы в цене переходника с регулировкой напряжения и простенькой моделью без оной критичны). Разница же в цене между платами, рассчитанными на оверклокинг и дешевыми сокетными моделями составляет до 30 долларов (к тому же большинство таких плат имеют АТХ-формат, так что при апгрейде компьютера приходится менять и корпус), а ради экономии такой суммы иногда стоит воспользоваться несколько нестандартными методами.
В последнее время тема изменения напряжения питания стала актуальной не только для оверклокеров. Дело в том, что имеющиеся в наличии платы на старых чипсетах (LX, EX, BX, ZX, Apollo Pro) зачастую способны работать с, как минимум, новыми Celeron (иногда сразу, иногда после некоторой модификации), а иногда и Pentium III, и единственным препятствием является преобразователь напряжения на плате, неспособный обеспечить менее 1.8 В. Вполне логичным решением данной проблемы является принудительный перевод процессора на данное напряжение.
Предупреждение . Не стоит забывать о том, что при увеличении напряжения, увеличивается и рассеиваемая процессором мощность. Особенно это касается разгона: дополнительное тепловыделение будет наблюдаться и из-за увеличения частоты процессора. Поэтому стоит заранее задуматься о хорошем охлаждение процессора (впрочем, сделать это стоит в любом случае, независимо от того, будет увеличиваться напряжение или нет)
Для питания процессоров класса Pentium II и Celeron требуются довольно мощные источники питания, поэтому питание вторичного кэша (на рисунке обозначен Vccs) отделено от питания ядра (Vccp) причем при совпадающих номиналах значения напряжения линии Vccs не используются. То есть в зависимости от типа процессора (от того какой уровень напряжения на соответствующей ножке процессора), стабилизатор на материнской плате выставляет нужное напряжение.
Таблица №1. Идентификация напряжения питания | |||
VID | Напряжение, В | VID | Напряжение, В |
01111 | 1.30 | 11111 | нет процессора |
01110 | 1.35 | 11110 | 2.1 |
01101 | 1.40 | 11101 | 2.2 |
01100 | 1.45 | 11100 | 2.3 |
01011 | 1.50 | 11011 | 2.4 |
01010 | 1.55 | 11010 | 2.5 |
01001 | 1.60 | 11001 | 2.6 |
01000 | 1.65 | 11000 | 2.7 |
00111 | 1.70 | 10111 | 2.8 |
00110 | 1.75 | 10110 | 2.9 |
00101 | 1.80 | 10101 | 3.0 |
00100 | 1.85 | 10100 | 3.1 |
00011 | 1.90 | 10011 | 3.2 |
00010 | 1.95 | 10010 | 3.3 |
00001 | 2.00 | 10001 | 3.4 |
00000 | 2.05 | 10000 | 3.5 |
VID используется только в SEPP/SECC-исполнении (Slot1), поэтому увеличить напряжение на платах для Socket 370 можно только до 2.05 В. Для работы со всеми процессорами Intel необходима поддержка значений, выделенных жирным шрифтом; подчеркиванием выделены напряжения питания для процессоров FCPGA.
Таблица №2. Питание некоторых процессоров | ||||
Процессор | Vccp, ядро, В | Vccs, Кэш, В | ||
Pentium II 233-300 (Klamath) | 2.8 | 3.3 | ||
Pentium II 266-450 (Dechutes) | 2.0 | 2.0 | ||
Pentium III 450-550 (Katmai) | 2.0 | 3.3 | ||
Pentium III 600 (Katmai) | 2.05 | 3.3 | ||
Celeron 266-533 (Covington, Mendocino) | 2.0 | - | ||
Celeron 533A-600 |
|
- | ||
Celeron 633-766 |
|
- |
(Celeron 533А -766 имеют две модификации, рассчитанные на разное напряжение)
Физически (0) означает что ножка подключена к земле (GND или Vss), а (1) что вывод свободен, то есть ни к чему не подключен (на ножке должен быть потенциал логической единицы).
Таким образом, можно сделать так, чтобы стабилизатор выдавал не стандартные 2 В для Celeron (дальше пойдет речь именно о них), а больше или меньше (что интересно, в некоторых случаях наблюдалось улучшение стабильности работы при пониженном напряжении).
На рисунке показаны контакты для сокетных процессоров. У процессоров, изготовленных в конструктиве Slot 1, за идентификацию питания отвечают следующие выводы:
VID0 | VID1 | VID2 | VID3 | VID4 |
B120 | A120 | A119 | B119 | A121 |
Например, если заклеить VID, VID, VID, то получим напряжение 2.2 В. Этого должно хватить любому любителю разгона, и, в то же время, вполне приемлемо для того, чтобы при хорошем охлаждении процессор работал достаточно долго:) То есть достаточно легко можно получить некоторые уровни напряжений для чего требуется только заизолировать некоторые ноги. Например, для PPGA и SEPP (Slot1):
Примеры напряжений питания процессоров | ||
Напряжение, В | Какие ножки надо заклеить | Рекомендации |
1.80 | VID | Если вы не поклонник разгона, то такое напряжение можно использовать для уменьшения температуры процессора во время работы или экономии электроэнергии:) (Celeron потребляет 10-20 Вт в зависимости от штатной частоты, а так получается 10% экономии:)) |
1.90 | VID | В общем, верно тоже, что и для напряжения 1.8 В |
2.00 | Стандартное напряжение | Приведено для примера |
2.20 | VID;VID;VID | Процессор должен работать без проблем, разве что будет сильнее греться. |
2.40 | VID;VID;VID | Может работать, а может и не работать:) (но скорее первое), и еще больше греться |
2.60 | VID;VID | Риск довольно большой, но энтузиасты могут пробовать (если уж очень хочется разогнать процессор как можно сильнее). |
2.80 | VID;VID;VID | И не пытайтесь — указано только для примера |
Остальные значения получить труднее, так как необходимо более сильное воздействие на процессор — придется соответствующий контакт процессора или разъема соединить с землей (GND). Так, например, соединив с помощью проводка и пайки выводы слота (или сокета) VID и GND на обратной стороне материнской платы, получим напряжение 2.05 В. Однако это рискованная операция так как в случае ошибки или неаккуратной пайки напряжение цепей ввода-вывода (3,3 В) может попасть на ядро, что приведет к печальным последствиям. Зато таким образом, можно получить на ядре процессора любое напряжение из таблицы №1.
Собственно о том, как заклеить ножки. Есть несколько вариантов. Во-первых, можно заизолировать их путем нанесения прочного лака. Этот способ нормально действует только при действительно прочном лаке, так как при установке в гнездо ноги процессора испытывают большое физическое усилие, что может привести к разрушению изолирующего слоя и, соответственно, на ядро может попасть не запланированный уровень напряжения (например 2.6 вместо 2.2 В при нарушении изоляции проводника VID). Во-вторых, у сокетного процессора их можно просто откусить а у слотового — перерезать соответствующие проводники, но это способ не оставляет шансов для отступления (если перерезанный проводник еще можно спаять, то припаять откушенную ногу довольно проблематично).
Самым реальным, по-видимому, является вариант с заклеиванием ног процессора. В случае корпуса типа SEPP/SECC можно воспользоваться скотчем, аккуратно вырезанным по форме контактной площадки. На плате процессора есть надписи, при помощи которых можно сориентироваться, где какой вывод расположен. В случае PPGA и FCPGA можно воспользоваться таким способом. Из фторопластовой или полиэтиленовой пленки (такой, какая применяется для изготовления пакетов) вырезается круг диаметром около 5 мм. Он размещается так, чтобы его центр оказался точно над контактом, который нужно заизолировать. Затем швейной иглой края круга опускаются между выводами.
При установке никаких проблем обычно не возникает, однако проблема может возникнуть при извлечении процессора из сокета: пленка остается внутри, и извлечь ее не такт-то просто (в крайнем случае сокет можно разобрать и вытащить оттуда все лишнее:))
На фотографии "подготовлена" ножка VID
При должной аккуратности и внимательности произвести необходимые операции довольно легко.
Те же способы пригодны и для повышения или понижения напряжения питания в Pentium II и Pentium III, как в исполнении под Slot 1, так и под FCPGA (разумеется, с соответствующими изменениями касательно уровней напряжения). Следует правда учесть, что, в случае процессоров с ядрами Klamath и Coppermine, для повышения напряжения питания браться за паяльник придется обязательно: без замыкания части контактов на "землю" в данном случае обойтись не удастся (в отличие от ядер, рассчитанных на напряжение 2,0 В).
Также не стоит забывать о том, что не все регуляторы напряжения, устанавливаемые на материнских платах, поддерживают абсолютно все уровни. Соответствующая микросхема обычно расположена около процессорного гнезда. По ее маркировке можно узнать фирму-производителя чипа, а, следовательно, и ее характеристики. Вот адреса некоторых фирм производящих регуляторы напряжения:
В статье были использованы материалы из книги Михаила Гука "Процессоры Pentium II, Pentium Pro и просто Pentium" издательства "Питер", а также официальная документация фирмы Intel по процессорам Celeron