как снизить энергопотребление процессора в виндовс 10
Как настроить регулирование энергопотребления / мощности в Windows 10
В Windows 10 пользователи, как правило, работают с несколькими приложениями. В результате программы, которые работают в фоновом режиме, потребляют значительное количество энергии.
Чтобы оптимизировать энергопотребление, в начиная с Windows 10 (версия 1709) компания Microsoft представила новую функцию Power Throttling (регулирование энергопотребления или регулирование мощности), которая использует технологии энергосбережения современных процессоров для ограничения ресурсов для фоновых процессов.
Используя данную технологию, система Windows может автоматически определять, какие приложения вы активно используете, и и ограничивать ресурсы для процессов, которые неважными. Функция регулирования мощности позволяет увеличить автономную работу устройства до 11 процентов.
Однако, распознавание процессов может работать не так, как ожидается. В этих случаях пользователь может самостоятельно контролировать, каким приложениям нужно ограничить потребление ресурсов, а каким нужно предоставить всю доступную мощность.
Как посмотреть, какие процессы регулируются
Чтобы посмотреть, какие процессы регулируются функцией Power Throttling можно воспользоваться Диспетчером задач.
После выполнения данных шагов появится новый столбец “Регулирование мощности”, показывающий, какие процессы находятся в энергосберегающем режиме.
На ноутбуках, планшетах или других портативных устройствах с аккумулятором у некоторых процессов будет указан статус «Регулирование энергопотребления» – “Включено”, а у остальных – “Выключено”.
Наглядно посмотреть новую функцию в действии можно открыв приложение, а затем свернув его. Когда вы активно используете приложение в Диспетчере задач будет показываться статус регулирования энергопотребления “Выключено”, но после сворачивания статус изменится на “Включено”.
Если все процессы имеют статус “Выключено”, значит ваше устройство подключено к источнику питания или используются режим Максимальная производительность.
Как отключить регулирование мощности в настройках электропитания
Power Throttling активируется автоматически, когда портативное устройство не заряжается, а это означает, что самый быстрый способ отключить эту функцию – подключить устройство к источнику питания.
Вы также можете управлять регулированием мощности в вашей системе, щелкнув значок питания в области уведомлений и используя слайдер, чтобы изменить режим питания.
Как отключить регулирование мощности с помощью редактора групповых политик
Если вы используете Windows 10 Pro, то отключить Power Throttling можно с помощью редактора групповых политик.
После завершения данных шагов и перезагрузки ПК, регулирование мощности будет отключено для всех приложений в любых режимах электропитания.
В любое время вы можете снова активировать регулирование мощности, выполните те же шаги, но в пункте 5 выберите опцию “Не задано”.
Как отключить регулирование мощности с помощью системного реестра
Редактор групповых политик недоступен в Windows 10 Домашняя, но вы можете сделать то же самое с помощью редактора реестра.
Примечание
Некорректное изменение реестра может привести к серьезным проблемам. Рекомендуется создать резервную копию реестра Windows перед тем, как выполнить данные шаги. В меню редактора реестра выберите Файл > Экспорт для сохранения резервной копии.
После завершения данных шагов и перезагрузки ПК, регулирование мощности будет отключено для всех приложений в любых режимах электропитания.
В любое время вы можете снова активировать регулирование мощности, выполните те же шаги, но в пункте 4 удалите раздел PowerThrottling.
Как отключить регулирование мощности для отдельных процессов
Windows 10 используется интеллектуальный подход, чтобы определить какие процессы нужно ограничивать для экономии заряда и продления времени автономной работы. Тем не менее, иногда ограничение приложения может быть ошибочным и может привести к нежелательным проблемам с производительностью.
В этих ситуациях можно отключить Power Throttling для каждого приложения без необходимости полностью отключать эту функцию.
Как отключить регулирование мощности для отдельных процессов» style=»width:750px;height:auto;» />
После завершения данных шагов, регулирование мощности будет отключено для конкретного приложения.
Регулирование энергопотребления / мощности – функция, предназначенная для оптимизации срока службы батареи на портативных устройствах, поэтому не рекомендуется изменять настройки данной функции, если у вас нет проблем с работой приложений, когда функция активна.
Настройка управления энергопотребления компьютером в системе Windows 10
Компьютер, оснащенный источником питания на киловатт, сегодня не является сенсацией, энергопотребление игровых настольных компьютеров может быть огромным. Но, вам не нужна такая высокая мощность для просмотра веб-страниц или редактирования документов, и поэтому вам следует настроить Windows 10, чтобы она управляла энергопотреблением.
Ноутбуки потребляют меньше электроэнергии, но и в их случае нужно следить за электропотреблением. Срок службы батареи может быть уменьшен до 50%, если процессор работает на максимальной частоте, а яркость экрана установлена на максимум. Чтобы уменьшить размер счетов за электроэнергию, вы должны помнить, что нужно выключать или, по крайней мере, переводить в спящий режим неиспользуемое оборудование. Если вам не нужна максимальная производительность, рекомендуется уменьшить яркость монитора или отключить жесткий диск.
На помощью придут механизмы управления энергией, встроенные в Windows. Правильно настроенные, они помогут автоматизировать процессы энергопотребления.
Основные настройки энергопотребления Windows
Откройте группу Питание и спящий режим. Используйте списки Экран и Сон, чтобы установить время бездействия, после которого компьютер должен выключить экран и перейти в режим сна.
В случае с ноутбуком настройки зависят от заряда батареи и подключения компьютера к электрической сети.
Дополнительные настройки питания
Вызовите окно настроек и перейдите на страницу конфигурации питания. Нажмите на ссылку Дополнительные параметры питанияв правой колонке. Откроется традиционная панель управления.
Вы можете выбрать один из предопределенных планов питания. В зависимости от ваших потребностей, это может быть, например, высокая производительность(1), что необходимо во время компьютерных игр. Это также может быть стандартная конфигурация энергосбережения (2), которая идеально подходит для работы на ноутбуке от аккумулятора. В других случаях лучше выбрать сбалансированный (рекомендуемый) план (3). Для некоторых современных процессоров также доступен оптимизированная схема энергопитания (4).
Выбор осуществляется путем выбора соответствующего поля в разделе «Основные схема». Или, если схема питания невидна, разверните раздел Показать дополнительные схемы.
Расширенные настройки электропитания
Планы питания могут быть изменены. Конфигурация определяет не только момент отключения экран и перехода в режим сна. Настройки также изменяют подачу энергии на диск, поведение браузера и вкладок, работу беспроводной сети, снижают производительность процессора и меняют действия кнопки питания на корпусе.
Пользовательские планы электропитания
По умолчанию в система Windows имеет три схемы электропитания – экономия энергии, сбалансированный и высокая производительность. Тем не менее, пользователь также может создавать свои собственные планы.
Восстановление настроек по умолчанию
Большое количество параметров в настройках схемы электропитания позволяет очень легко забыть, какие изменения мы внесли. Поиск по всем разделам не развеет всех сомнений, если вы не знаете, какова была первоначальная конфигурация.
Однако, для восстановления настроек по умолчанию, предоставленных создателями системы, достаточно одного клика. Откройте окно дополнительных настроек электропитания и выберите ссылку Настройка схемы питания, для которой вы хотите сбросить настройки. Нажмите Восстановить для схемы параметры по умолчанию.
Управление энергопотреблением процессора
Производительность компьютера, то есть, помимо прочего, степень загрузки процессора, влияет на уровень энергопотребления. Чем больше ресурсов процессора используется, тем больше потребление энергии.
Откройте окно расширенных настроек схемы электропитания и раскройте категорию +Управление энергопотреблением процессора. В разделе Минимальное состояние процессора вы определяете минимальный уровень загрузки ЦП, а в разделе Максимальное состояние процессора – максимум. В целях экономии максимум может быть, например, на уровне 50 процентов.
В экстремальной ситуации, когда использование процессора очень ограничено, можно рискнуть и заменить активный режим охлаждения пассивным. Это заставит вентилятор выключать процессор. Такая конфигурация не рекомендуется, если у вас нет пассивного набора охлаждения.
Управление частотой процессора в Windows 10
Большинство современных процессоров используют различные технологии энергосбережения, такие как Intel SpeedStep или AMD Cool’n’Quiet. Эти технологии основаны на динамическом изменении частоты работы процессора в зависимости от нагрузки с целью снижения энергопотребление и тепловыделения.
Для понимания рассмотрим общие принципы работы данных технологий.
У процессора есть состояния производительности (P-States), которые представляют из себя комбинацию множителя частоты (Frequency ID, FID) и напряжения питания (Voltage ID, VID). Тактовая частота работы процессора получается путем умножения частоты системной шины (FSB) на FID, соответственно чем больше множитель, тем выше частота, и наоборот. Количество поддерживаемых состояний зависит от характеристик процессора (макс. частота, множитель и т.п.).
В ходе первоначальной загрузки в BIOS создается описание возможных состояний производительности. Это описание в соответствии с интерфейсом ACPI считывается операционной системой при запуске. В процессе работы операционная система отслеживает загрузку процессора, при снижении нагрузки обращается к драйверу процессора и переводит процессор в пониженное состояние. Снизив частоту и напряжение, процессор будет потреблять меньше энергии и, соответственно, меньше нагреваться. Ну а при увеличении нагрузки операционная система опять запросит изменение состояния процессора, но уже в большую сторону.
Когда и в какое из состояний переводить процессор, операционная система решает автоматически, в соответствии с текущей политикой энергосбережения. Но, кроме этого, в Windows есть возможность вручную задать диапазон регулировки, ограничив минимальное и максимальное состояние.
В моем компьютере стоит Intel Core I7 4790К. Согласно спецификации, он имеет базовую частоту 4ГГц, а с использованием технологии Turbo Boost может разгоняться до максимальных 4.4ГГц. Для того, чтобы посмотреть текущую скорость работы процессора, запустим «Диспетчер задач» (Ctrl+Shift+Esc) и перейдем на вкладку «Производительность». Как видите, на данный момент нагрузка невелика и процессор работает вполсилы, частота его работы составляет 1.84ГГц.
Попробуем немного покрутить настройки частоты процессора и посмотрим, что из этого получится. Для запуска оснастки управления электропитанием жмем клавиши Win+R и выполняем команду powercfg.cpl.
В открывшемся окне выбираем текущую схему электропитания, переходим по ссылке «Настройка схемы электропитания»
и жмем на ссылку «Изменить дополнительные параметры питания».
За частоту работы процессора отвечают параметры «Минимальное состояние процессора» и «Максимальное состояние процессора», находящиеся в разделе «Управление питанием процессора».
Обратите внимание, что у ноутбуков для каждого параметр доступны два варианта настроек. Первый отвечает за частоту процессора при автономной работе (от батареи), второй — при работе от сети.
Проверим, как влияет изменение настроек на частоту работы процессора. Для начала уменьшим максимальное состояние до 20% и проверим результат. Как видите, частота работы снизилась до примерно 0.78ГГц, что как раз составляет примерно 20% от базовой частоты.
Что интересно, снизить частоту ниже 20% мне это не удалось. При выставлении значения ниже 20% частота продолжает оставаться на том же уровне, т.е. для моего процессора 800МГц является минимальной поддерживаемой частотой.
Чтобы разобраться, почему так, запустим диагностическую утилиту CPU-Z. Как видите, в нашем случае частота шины составляет 100МГц, а множитель изменяется в диапазоне от 8 до 44. Отсюда и получаем возможность изменения частоты от минимальных 800МГц до максимума 4.4ГГц с шагом в 100МГц.
Но переключение осуществляется не по каждому множителю, а более дискретно. Другими словами, количество состояний производительности не соответствует количеству значений множителя. Посмотреть все доступные состояния можно утилитой RightMark Power Management. Например для испытуемого процессора доступно всего 15 состояний, а переключения между ними происходят с переменным шагом 200-300МГц.
Ну а на что влияет минимальная частота процессора? Для проверки установим значение минимальной частоты в 100% и убедимся, что скорость работы процессора сразу поднялась почти до максимуму и достигла 4.3ГГц. И это при том, что загрузка процессора составила всего 14%.
После этого в окне настроек появится параметр «Максимальная частота процессора». Как следует из названия, этот параметр отвечает за ограничение максимальной частоты работы процессора, его значение задается в мегагерцах. По умолчанию значение параметра равно 0, что означает отсутствие ограничений.
Установим ограничение в 1500МГц и проверим результат. И действительно, ограничение работает и частота не поднимается выше указанного значения.
Надо понимать, что регулировка частоты работает так-же дискретно, как и в случае с состояниями. Например при выставлении максимальной частоты 1200МГц реальное ограничение будет в районе 1000МГц. Это неудивительно, ведь переключения все равно производятся между P-состояниями, причем выбирается ближайшее минимальное значение.
Изменять дополнительные параметры питания процессора можно и из командной консоли, с помощью утилиты powercfg. Для начала выведем все имеющиеся настройки питания командой:
В полученных результатах надо найти требуемые параметры. Каждый раздел и параметр можно идентифицировать по идентификатору GUID или по псевдониму (алиасу). Например у группы настроек «Управление питанием процессора» GUID 54533251-82be-4824-96c1-47b60b740d00, а псевдоним SUB_PROCESSOR, у параметра «Максимальное состояние процессора» GUID 75b0ae3f-bce0-45a7-8c89-c9611c25e100 и псевдоним PROCTHROTTLEMAX.
Зная нужные алиасы или GUID-ы можно оперировать настройками. Так посмотреть значение параметра «Максимальное состояние процессора» можно такой командой (SCHEME_CURRENT означает текущую схему электропитания):
powercfg /query SCHEME_CURRENT SUB_PROCESSOR PROCTHROTTLEMAX
В командной значения параметра показаны в шестнадцатеричном виде, т.е. значение 0x00000064 означает 100%.
Обратите внимание, что в командной строке доступны настройки как для питания от сети, так и от батареи. В зависимости от требуемого варианта команда будет отличаться. Так за настройку питания от сети отвечает ключ /SETACVALUEINDEX, а для питания от батареи используется ключ /SETDCVALUEINDEX. Различие всего в одной букве, поэтому нужно быть внимательным и постараться их не перепутать. Для примера снизим максимальное состояние процессора для питания от сети до 50%:
powercfg /setacvalueindex CHEME_CURRENT SUB_PROCESSOR PROCTHROTTLEMAX 50
Проверим результат. Как видите, текущее значение составляет 0x00000032 (50%).
Итак, мы убедились в том, что регулировки частоты работы процессора в Windows 10 есть и даже работают. Но для того, чтобы получить от них положительный эффект, необходим грамотный подход. Первым делом необходимо определиться с тем, что вы хотите получить в результате — поднять производительность, увеличить время автономной работы, снизить температуру или что-то еще. Затем надо выяснить основные параметры своего процессора, такие как частота шины, множитель, максимальная частота работы. И уже исходя из этого, опытным путем подобрать оптимальные для себя значения.
Настройка энергопотребления Windows 10 в зависимости от режима работы
Оптимизация энергопотребления в Windows 10, с одной стороны, продлит жизнь аккумулятору ноутбука, с другой стороны, поможет добиться максимально возможной производительности. Для этого необходимо разобраться с настройками схем питания в Windows 10.
Введите в текстовое поле меню «Пуск» слово «Схема» и выберите «Изменение схемы управления питанием». Альтернативный вариант: нажмите правой кнопкой мыши на значок Windows и перейдите к строке меню «Управление электропитанием». Здесь в разделе «Питание и спящий режим» в правой части окна кликните на «Дополнительные параметры питания».
По умолчанию в системе выставлена сбалансированная схема электропитания, то есть выставлен баланс между производительностью и энергопотреблением. Схема «Экономия энергии» предусмотрена для режима использования аккумулятора. В таком режиме экран быстрее отключается, а устройство переходит в спящий режим.
Если вы хотите настроить энергопотребление индивидуально, нажмите на ссылку «Настройка схемы электропитания». В открывшемся окне можно изменить предустановленное время или совсем отключить некоторые опции. Этим предотвращается, например, переход устройства в спящий режим или полное отключение экрана. Нажмите на «Сохранить изменения» и настройки будут моментально активированы.
Настройте режим экономии электроэнергии. Вы можете подстроить под свои нужды энергопотребление устройства под Windows 10
Дополнительные настройки также можно найти в пункте «Изменить дополнительные параметры питания». В «Дополнительных параметрах», например, можно выбрать опцию отключения жесткого диска через определенный промежуток времени. Это экономит заряд, но при возвращении к работе придется ждать несколько секунд, пока устройство «разгонится».
Настройте энергопотребление устройства. В «Дополнительных параметрах» Вы найдете многочисленные опции для более точной индивидуальной настройки параметров потребления энергии
С помощью опции «Кнопки питания и крышка» можно выбрать, что произойдет, когда вы закроете крышку ноутбука. Выберите один из следующих вариантов: «Действие не требуется», «Сон», «Гибернация», «Завершение работы».
При отсутствии активности более трех часов Windows в любом случае отправит устройство в режим гибернации, не зависимо от того, идет ли питание от сети или от аккумулятора.
Если вы хотите отключить эту опцию, то найдите в настройках пункт «Сон» и «Сон после» и установите опцию «Никогда». Подтвердите настройки нажатием на «ОК». Если нажмете на кнопку «Восстановить настройки по умолчанию», то сможете отменить внесенные изменения.
Фото: компания-производитель
Краткое руководство по управлению питанием процессора
Как центральный процессор может сокращать собственное энергопотребление? Основы этого процесса — в статье.
Центральный процессор (CPU) спроектирован на бесконечно долгую работу при определенной нагрузке. Практически никто не проводит вычисления круглые сутки, поэтому большую часть времени он не работает на расчетном максимуме. Тогда какой смысл держать его включенным на полную мощность? Здесь стоит задуматься об управлении питанием процессора. Эта тема включает в себя оперативную память, графические ускорители и так далее, но я собираюсь рассказать только про CPU.
Если вы знаете про C-состояния (C-states), P-состояния (P-states) и то, как процессор переходит между ними, то, возможно, в этой статье вы не увидите ничего нового. Если это не так, продолжайте читать.
Я планировал добавить реальные примеры из ОС Linux, но статья становилась все больше, так что я решил приберечь это для следующей статьи.
Основные источники информации, использованные в этом тексте:
Особенности CPU
Согласно официальной странице продукта, мой процессор поддерживает следующие технологии:
Теперь выясним, что значит каждое из этих определений.
Как снизить энергопотребление процессора во время его работы?
На процессорах для массового использования (мы не берем в расчет вещи, которые возможны при их проектировании) для снижения потребляемой энергии можно реализовать один из сценариев:
Второй вариант требует чуть больше объяснений. Энергопотребление интегральной схемы, которой является процессор, линейно пропорционально тактовой частоте и квадратично напряжению.
Примечание для тех, кто разбирается в цифровой электронике: 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)
Вот два способа снизить энергопотребление процессора:
P-состояния описывают второй случай. Подсистемы процессора работают, но не требуют максимальной производительности, поэтому напряжение и/или тактовая частота для этой подсистемы может быть снижена. Таким образом, P-состояния, P[X], обозначают, что некоторая подсистема (например, ядро), работает на заданной паре (частота, напряжение).
Так как большинство современных процессоров состоит из нескольких ядер, то С-состояния разделены на С-состояния ядра (Core C-states, CC-states) и на С-состояния процессора (Package C-states, PC-states). Причина появления PC-состояний очень проста. Существуют компоненты с общим доступом (например, общий кэш), которые могут быть отключены только после отключения всех ядер, имеющих доступ к этому компоненту. Однако мы в роли пользователя или программиста не можем взаимодействовать с состояниями пакета напрямую, но можем управлять состояниями отдельных ядер. Таким образом, управляя CC-состояниями, мы косвенно управляем и PC-состояниями.
Состояния нумеруются от нуля по возрастанию, то есть C0, C1… и P0, P1… Большее число обозначает большее энергосбережение. C0 означает, что все компоненты включены. P0 означает максимальную производительность, то есть максимальные тактовую частоту, напряжение и энергопотребление.
С-состояния
Вот базовые С-состояния (определенные в стандарте ACPI).
Примечание: Из-за технологии Intel® Hyper-Threading существуют также С-состояния потоков. Хотя отдельный поток может работать с С-состояниями, изменения в энергопотреблении происходят, только когда ядро входит в нужное состояние. В данной статье тема C-состояний на потоках рассматриваться не будет.
Вот описание состояний из даташита:
Примечание: LLC обозначает Last Level Cache, кэш последнего уровня и обозначает общий L3 кэш процессора.
Визуальное представление состояний:
Источник: Software Impact to Platform Energy-Efficiency White Paper
Последовательность C-состояний простыми словами:
Однако если ядро работает (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. Краткий обзор:
Вот поддерживаемые состояния 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)?
Это возможно, но не рекомендуется. В даташите (секция 4.2.2, страница 64) есть примечание: «Долгосрочная надежность не гарантируется, если все энергосберегающие состояния простоя не включены». Поэтому вам не стоит отключать С-состояния.
Как прерывания влияют на процессор\ядро в состоянии сна?
Когда происходит прерывание, соответствующее ядро пробуждается и переходит в состояние С0. Однако, например Intel® Xeon® E3-1200 v5, поддерживает технологию Power Aware Interrupt Routing (PAIR), у которой есть два достоинства:
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.
Мониторинг счетчиков С-состояний (для ядра):