Понижение напряжения процессора intel

Содержание
  1. Как уменьшить напряжение процессора в Windows 10
  2. Зачем понижать напряжение процессора?
  3. Почему работает пониженное напряжение?
  4. Опасно ли пониженное напряжение?
  5. Пониженное напряжение через BIOS
  6. Понижение напряжения процессора с помощью программной утилиты
  7. Проверка настроек пониженного напряжения
  8. Пониженное напряжение — это круто, буквально
  9. Лайфхаки с процессорами от Intel
  10. Undervolting
  11. Отключение Turbo Boost
  12. ThrottleStop
  13. Краткое руководство по управлению питанием процессора
  14. Особенности CPU
  15. Как снизить энергопотребление процессора во время его работы?
  16. Каков предел энергопотребления процессора?
  17. Состояния питания (C-states) vs состояния производительности (P-states)
  18. С-состояния
  19. Состояния питания ACPI
  20. Комбинации состояний ACPI G/S и С-состояний процессора
  21. Как программно запросить переход в энергосберегающее С-состояние?
  22. Что вынуждает ядро входить в определенное С-состояние?
  23. Возможно ли отключить С-состояния (всегда использовать С0)?
  24. Как прерывания влияют на процессор\ядро в состоянии сна?
  25. P-состояния
  26. P-состояния, управляемые операционной системой
  27. P-состояния, управляемые оборудованием
  28. Заметки про Intel® Turbo Boost
  29. Применима ли эта информация о C-состояниях и P-состояниях к мобильным и встраиваемым процессорам?
  30. Как это все работает, например, на Linux?
  31. Как я могу узнать состояние процессора?

Как уменьшить напряжение процессора в 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. Повторите процесс.

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

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

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

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

Источник

Лайфхаки с процессорами от 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 ГГц:

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

Источник

Краткое руководство по управлению питанием процессора

Как центральный процессор может сокращать собственное энергопотребление? Основы этого процесса — в статье.

Центральный процессор (CPU) спроектирован на бесконечно долгую работу при определенной нагрузке. Практически никто не проводит вычисления круглые сутки, поэтому большую часть времени он не работает на расчетном максимуме. Тогда какой смысл держать его включенным на полную мощность? Здесь стоит задуматься об управлении питанием процессора. Эта тема включает в себя оперативную память, графические ускорители и так далее, но я собираюсь рассказать только про CPU.

Если вы знаете про C-состояния (C-states), P-состояния (P-states) и то, как процессор переходит между ними, то, возможно, в этой статье вы не увидите ничего нового. Если это не так, продолжайте читать.

Я планировал добавить реальные примеры из ОС Linux, но статья становилась все больше, так что я решил приберечь это для следующей статьи.

Основные источники информации, использованные в этом тексте:

Особенности CPU

Согласно официальной странице продукта, мой процессор поддерживает следующие технологии:

  • состояния простоя (Idle States);
  • усовершенствованная технология Intel® SpeedStep (Enhanced Intel® SpeedStep Technology).

На этой странице вы можете видеть, что «Режим состояния простоя (C-состояния) используется для энергосбережения, когда процессор бездействует» и «Стандартная технология Intel® SpeedStep позволяет переключать уровень напряжения и частоты в зависимости от нагрузки на процессор».

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

Как снизить энергопотребление процессора во время его работы?

На процессорах для массового использования (мы не берем в расчет вещи, которые возможны при их проектировании) для снижения потребляемой энергии можно реализовать один из сценариев:

  • Сократить энергопотребление подсистемы (ядра или другого ресурса, такого как тактовый генератор или кэш) путем отключения питания (уменьшив напряжение до нуля).
  • Снизить энергопотребление путем снижения напряжения и/или таковой частоты подсистемы и/или целого процессора.

Первый вариант легко понять: если питания нет, то и потребления не будет.

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

Примечание для тех, кто разбирается в цифровой электронике: Pcpu = Pdynamic + Pshort circuit + Pleak. При работающем процессоре Pdynamic является наиболее важной составляющей, именно эта часть зависит линейно от частоты и квадратично от напряжения. Pshort circuit пропорционально частоте, а Pleak — напряжению.

Читайте также:  Калькулятор подбора резистора для понижения напряжения

Более того, напряжение и тактовая частота связаны линейной зависимостью.

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

Каков предел энергопотребления процессора?

Это во многом зависит от процессора, но для процессора E3-1245 v5 @ 3.50 ГГц расчетная тепловая мощность (Thermal Design Power, TDP) составляет 80 ватт. Это среднее значение, которое процессор может выдерживать бесконечно долго (Power Limit, PL1 на изображении ниже). Системы охлаждения должны быть рассчитаны на это значение, чтобы быть надежными. Фактическое энергопотребление процессора может быть выше в течение короткого промежутка времени (состояния PL2, PL3, PL4 на изображении ниже). TDP измеряется при нагрузке высокой вычислительной сложности (худший случай), когда все ядра работают на базовой частоте (3.5 ГГц).

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

Состояния питания (C-states) vs состояния производительности (P-states)

Состояния питания (C-states) vs состояния производительности (P-states)
Вот два способа снизить энергопотребление процессора:

  • отключить некоторые подсистемы;
  • снизить напряжение/частоту.

Они достигаются с помощью:

  • C-состояний;
  • P-состояний.

С-состояния описывают первый способ снижения энергопотребления процессора, поэтому они называются состояниями простоя. Чтобы отключить какую-то подсистему, на ней ничего не должно выполняться, подсистема должна простаивать. Таким образом, С-состояние, C[X], означает, что одна или несколько подсистем процессора отключены.

P-состояния описывают второй случай. Подсистемы процессора работают, но не требуют максимальной производительности, поэтому напряжение и/или тактовая частота для этой подсистемы может быть снижена. Таким образом, P-состояния, P[X], обозначают, что некоторая подсистема (например, ядро), работает на заданной паре (частота, напряжение).

Так как большинство современных процессоров состоит из нескольких ядер, то С-состояния разделены на С-состояния ядра (Core C-states, CC-states) и на С-состояния процессора (Package C-states, PC-states). Причина появления PC-состояний очень проста. Существуют компоненты с общим доступом (например, общий кэш), которые могут быть отключены только после отключения всех ядер, имеющих доступ к этому компоненту. Однако мы в роли пользователя или программиста не можем взаимодействовать с состояниями пакета напрямую, но можем управлять состояниями отдельных ядер. Таким образом, управляя CC-состояниями, мы косвенно управляем и PC-состояниями.

Состояния нумеруются от нуля по возрастанию, то есть C0, C1… и P0, P1… Большее число обозначает большее энергосбережение. C0 означает, что все компоненты включены. P0 означает максимальную производительность, то есть максимальные тактовую частоту, напряжение и энергопотребление.

С-состояния

Вот базовые С-состояния (определенные в стандарте ACPI).

  • C0: Active, процессор/ядро выполняет инструкции. Здесь применяются P-состояния, процессор/ядро могут работать в режиме максимальной производительности (P0) или в режиме энергосбережения (в состоянии, отличном от P0).
  • C1: Halt, процессор не выполняет инструкций, но может мгновенно вернуться в состояние С0. Поскольку процессор не работает, то P-состояния не актуальны для состояний, отличных от С0.
  • C2: Stop-Clock, схож с C1, но требует больше времени для возврата в C0.
  • С3: Sleep. Возврат в C0 требует ощутимо большего времени.

Современные процессоры имеют гораздо больше C-состояний. Согласно даташиту, семейство процессоров Intel® Xeon® E3-1200 v5 поддерживает состояния C0, C1, C1E (C1 Enhanced), C2, C3, C6, C7 и C8. Состояния C1 и C1E поддерживаются только ядрами, а состояние C2 — только процессором. Остальные состояния поддерживаются и ядром, и процессором.

Примечание: Из-за технологии Intel® Hyper-Threading существуют также С-состояния потоков. Хотя отдельный поток может работать с С-состояниями, изменения в энергопотреблении происходят, только когда ядро входит в нужное состояние. В данной статье тема C-состояний на потоках рассматриваться не будет.

Вот описание состояний из даташита:

Примечание: LLC обозначает Last Level Cache, кэш последнего уровня и обозначает общий L3 кэш процессора.

Визуальное представление состояний:

Источник: Software Impact to Platform Energy-Efficiency White Paper

Последовательность C-состояний простыми словами:

  • Нормальная работа при C0.
  • Сначала останавливается тактовый генератор простаивающего ядра (С1).
  • Затем локальные кэши ядра (L1/L2) сбрасываются и снимается напряжение с ядра (С3).
  • Как только все ядра отключены, общий кэш (L3/LLC) ядер сбрасывается и процессор (почти) полностью может быть обесточен. Я говорю «почти», потому что, по моим предположениям, какая-то часть должна быть активна, чтобы вернуть процессор в состояние С0.

Как вы могли догадаться, CC-состояния и PC-состояния зависят друг от друга, поэтому некоторые их комбинации невозможны. Следующий рисунок демонстрирует это.

Однако если ядро работает (C0), то единственное состояние, в котором может находиться процессор, — C0. С другой стороны, если ядро полностью выключено (C8), процессор может находиться в C0, если другое ядро работает.

Примечание: Intel Software Developer’s Manual упоминает про суб-C-состояния (sub C-state). Каждое С-состояние состоит из нескольких суб-С-состояний. После изучения исходного кода модуля ядра intel_idle я понял, что состояния C1 и C1E являются состоянием С1 с подтипом 0 и 1 соответственно.

Число подтипов для каждого из восьми С-состояний (0..7) определяется с помощью инструкции CPUID. Для моего процессора утилита cpuid выводит следующую информацию:

Замечание из инструкции Intel: «Состояния C0..C7 для расширения MWAIT — это специфичные для процессора C-состояния, а не ACPI C-состояния». Поэтому не путайте эти состояния с ACPI C-состояниями, они явно связаны и между ними есть соответствие, но это не одно и то же.

Я создал гистограмму, представленную ниже, из исходного кода драйвера intel_idle для моего процессора (модель 0x5e). Подписи горизонтальной оси:

Имя C-состояния: специфичное для процессора состояние: специфичное суб-состояние.

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

Константы задержок выхода и целевых резидентных значении C-состояний в исходном коде intel_idle
Примечание: Хотя состояния С9 и С10 включены в таблицу, они имеют 0 суб-состояний и поэтому не используются в моем процессоре. Остальные процессоры из семейства могут поддерживать эти состояния.

Состояния питания ACPI

Прежде чем говорить про P-состояния, стоит упомянуть про состояния питания ACPI. Это то, что мы, пользователи, знаем, когда используем компьютер. Так называемые глобальные системные состояния (G[Х]) перечислены в таблице ниже.

Источник: ACPI Specification v6.2
Также существует специальное глобальное состояние G1/S4, Non-Volatile Sleep, когда состояние системы сохраняется на энергонезависимое хранилище (например, диск) и затем производится выключение. Это позволяет достичь минимального энергопотребления, как в состоянии Soft Off, но возвращение в состояние G0 возможно без перезагрузки. Оно более известно как гибернация.

Существует несколько состояний сна (Sx). Всего таких состояний шесть, включая S0 — отсутствие сна. Состояния S1-S4 используются в G1, а S5, Soft Off, используется в G2. Краткий обзор:

  • G0/S0: Компьютер работает, не спит.
  • G1: Sleeping.
    • G1/S1: Power on Suspend. Состояние системы сохраняется, питание процессора и кэшей поддерживается.
    • G1/S2: Процессор отключен, кэши сброшены.
    • G1/S3: Standby или Suspend to RAM (STR). Оперативная память остается практически единственным компонентом с питанием.
    • G1/S4: Hibernation или Suspend to Disk. Все сохраняется в энергонезависимую память, все системы обесточиваются.
  • G2/S5: Soft Off. Как механическое отключение, но компоненты, необходимые для пробуждения компьютера, потребляют минимум энергии. Состояние системы не сохраняется, поэтому нужна перезагрузка для возврата в G0.
  • G3: Mechanical Off. Блок питания отключен. Лишь компоненты, типа часов реального времени (RTC), работают, потому что у них есть собственный источник питания в виде маленькой батарейки. Очевидно, состояние системы не сохраняется, поэтому нужна перезагрузка для возврата в G0.
Читайте также:  Msi afterburner сбрасывает напряжение

Как показано на рисунке ниже, для моего процессора все С-состояния, упомянутые ранее, используются в G0/S0. Другими словами, при входе в состояние сна (G1) процессор выключается.

Вот поддерживаемые состояния ACPI.

Комбинации состояний ACPI G/S и С-состояний процессора

Приятно видеть все комбинации в таблице:

В состоянии G0/S0/C8 системы процессора запущены, но все ядра отключены.

В G1 (S3 или S4) некорректно говорить про С-состояния (это касается как CC-состояний, так и PC-состояний), так как процессор полностью обесточен.

Для G3 не существует S-состояний. Система не спит, она физически отключена и не может проснуться. Ей необходимо сначала получить питание.

Как программно запросить переход в энергосберегающее С-состояние?

Современный (но не единственный) способ запросить переход в энергосберегающее состояние — это использовать инструкцию MWAIT или инструкцию HLT. Это инструкции привилегированного уровня, и они не могут быть выполнены пользовательскими программами.

Инструкция MWAIT (Monitor Wait) заставляет процессор перейти в оптимизированное состояние (C-состояние) до тех пор, пока по указанному (с помощью другой инструкции, MONITOR) адресу не будет произведена запись. Для управления питанием MWAIT работает с регистром EAX. Биты 4-7 используются для указания целевого С-состояния, а биты 0-3 указывают суб-состояние.

Примечание: Я думаю, что на данный момент только AMD обладает инструкциями MONITORX/MWAITX, которые, помимо мониторинга записи по адресу, работают с таймером. Это еще называется Timed MWAIT.

Инструкция HLT (halt) останавливает выполнение, и ядро переходит в состояние HALT до тех пор, пока не произойдет прерывание. Это означает, что ядро переходит в состояние C1 или C1E.

Что вынуждает ядро входить в определенное С-состояние?

  • В состояние С0 ядро входит при загрузке, когда происходит прерывание, или после записи по адресу памяти, который отслеживается инструкцией MWAIT.
  • Состояния C1/C1E достижимы с помощью инструкций HLT и MWAIT.
  • Войти в состояние С3 можно с помощью инструкции MWAIT. Затем кэши L1 и L2 сбрасываются в кэш верхнего уровня (LLC), и все тактовые генераторы процессора останавливаются. Тем не менее, ядро сохраняет свое состояние, так как не обесточено.
  • Вход в состояние С6 возможен через инструкцию MWAIT. Ядро сохраняет состояние на выделенную SRAM и напряжение на ядре снижается до нуля. В этом состоянии ядро обесточено. При выходе из C6 состояние ядра восстанавливается из SRAM.
  • Для C7 и C8 аналогично C6.

Хочу напомнить еще раз, я не затрагиваю гипертрединг в этом ответе.

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

Возможно ли отключить С-состояния (всегда использовать С0)?

Это возможно, но не рекомендуется. В даташите (секция 4.2.2, страница 64) есть примечание: «Долгосрочная надежность не гарантируется, если все энергосберегающие состояния простоя не включены». Поэтому вам не стоит отключать С-состояния.

Как прерывания влияют на процессор\ядро в состоянии сна?

Когда происходит прерывание, соответствующее ядро пробуждается и переходит в состояние С0. Однако, например Intel® Xeon® E3-1200 v5, поддерживает технологию Power Aware Interrupt Routing (PAIR), у которой есть два достоинства:

  • для энергосбережения прерывание может быть переадресовано работающему ядру, чтобы не будить спящее ядро;
  • для производительности прерывание может быть переадресовано от работающего на полную мощность ядра к простаивающему (С1) ядру.

P-состояния

P-состояния подразумевают, что ядро в состоянии С0, потому что ему требуется питание, чтобы выполнять инструкции. P-состояния позволяют изменять напряжение и частоту ядра (другими словами рабочий режим), чтобы снизить энергопотребление. Существует набор P-состояний, каждое из которых соответствует разных рабочим режимам (пары напряжение-частота). Наиболее высокий рабочий режим (P0) предоставляет максимальную производительность.

Процессор Intel® Xeon® E3–1200 v5 позволяет контролировать P-состояния из операционной системы (Intel® SpeedStep Technology) или оставить это оборудованию (Intel® Speed Shift Technology). Вся информация ниже специфична для семейства Intel® Xeon® E3-1200 v5, но я полагаю, это в той или иной степени актуально и для других современных процессоров.

P-состояния, управляемые операционной системой

В этом случае операционная система знает о P-состояниях и конкретном состоянии, запрошенным ОС. Проще говоря, операционная система выбирает рабочую частоту, а напряжение подбирается процессором в зависимости от частоты и других факторов. После того, как P-состояние запрошено записью в моделезависимый регистр (подразумевается запись 16 бит в регистр IA32_PERF_CTL), напряжение изменяется до автоматически вычисленного значения и тактовый генератор переключается на заданную частоту. Все ядра имеют одно общее P-состояние, поэтому невозможно установить P-состояние эксклюзивно для одного ядра. Текущее P-состояние (рабочий режим) можно узнать, прочитав информацию из другого моделезависимого регистра — IA32_PERF_STATUS.

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

P-состояния, управляемые оборудованием

В этом случае ОС знает об аппаратной поддержке P-состояний и отправляет запросы с указанием нагрузки. В запросах не указывается конкретное P-состояние или частота. На основе информации от ОС, а также других факторов и ограничений оборудование выбирает подходящее P-состояние.

Я хочу рассказать об этом подробнее в следующей статье, но сейчас я поделюсь с вами своими мыслями. Мой домашний компьютер работает в этом режиме, я узнал это, проверив IA32_PM_ENABLE. Максимальный (но не гарантированный) уровень производительности — 39, минимальный — 1. Можно предположить, что существует 39 P-состояний. На данный момент уровень 39 установлен ОС как минимальный и как максимальный, потому что я отключил динамическое изменение частоты процессора в ядре.

Заметки про Intel® Turbo Boost

Поскольку TDP (расчетная тепловая мощность) — это максимальная мощность, которую процессор может выдержать, то процессор может повышать свою частоту выше базовой, при условии что энергопотребление не превысит TDP. Технология Turbo Boost может временно повышать энергопотребление до границы PL2 (Power Limit 2) на короткий промежуток времени. Поведение Turbo Boost может быть изменено через подсказки оборудованию.

Применима ли эта информация о C-состояниях и P-состояниях к мобильным и встраиваемым процессорам?

Для примера, недавний MacBook Air с процессором i5-5350U в основном поддерживает возможности, описанные выше (но я не уверен про P-состояния, контролируемые оборудованием). Я также смотрел документацию ARM Cortex-A, и, хотя там применяются другие термины, механизмы управления питанием выглядят похоже.

Как это все работает, например, на Linux?

На этот вопрос я отвечу в другой статье.

Как я могу узнать состояние процессора?

Существует не так много приложений, которые могут выводить эту информацию. Но вы можете использовать, например, CoreFreq.

Вот какую информацию можно получить (это не весь вывод).

Вот информация о ядре, включая информацию о драйвере idle.

Мониторинг счетчиков С-состояний (для ядра):

Источник

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