Energy efficient turbo что это
Energy efficient turbo что это
Процессоры Intel поддерживают несколько технологий для оптимизации энергопотребления. В этой статье (перевод [1]) дается обзор p-состояний (оптимизация напряжения питания и частоты CPU во время работы) и c-состояний (оптимизация потребления мощности, если ядро не выполняет ни одной инструкции).
[P-состояния]
Во время выполнения кода операционная система и CPU могут оптимизировать энергопотребление с помощью различных P-состояний (P это сокращение от «performance», что означает «производительность»). В зависимости от требований, CPU работает на разных частотах. Состояние P0 соответствует самой высокой частоте (с самым высоким напряжением питания).
Для процессоров Intel до архитектуры Haswell/Broadwell, желаемая частота (и соответствующее ей напряжение питания) указывается операционной системой путем записи соответствующих величин в специальные регистры процессора [2][3].
В архитектуре Skylake операционная система может оставить управление P-состояниями аппаратуру CPU (Speed Shift Technology, Hardware P-states [4]). С Kaby Lake эти функции были дополнительно оптимизированы [5].
Speed Schift (сдвиг скорости). P-состояния определяются в BIOS, и управляются операционной системой. Технология Speed Schift дает полное или частичное управление частотой тактирования CPU (может осуществляться либо во всем диапазоне, либо в узком окне). Speed Schift требует поддержки со стороны операционной системы (Windows 10 с новыми обновлением эту функцию поддерживает), также требуется любой процессор Intel 6 Skylake. Сдвиг скорости означает ускоренный отклик на запросы изменения производительности со стороны ПО (JavaScript, инструменты офиса, веб-браузеры). Технология сдвига скорости обеспечивает увеличение производительности для обычных задач, при этом незначительно снижается общее энергопотребление, т. е. эффективность работы всей системы повышается.
[C-состояния]
В отличие от P-состояний, которые были разработаны для регулирования потребления мощности во время выполнения кода (т. е. в нормальном рабочем состоянии процессора), C-состояния используются для оптимизации энергопотребления в режиме ожидания (idle mode, т. е. когда никакой код процессором не выполняется).
Типовые C-состояния следующие:
C0 – Active Mode: код выполняется, это состояние соответствует одному из P-состояний.
C1 – Auto Halt (автоматическая приостановка).
C1E – Auto halt, low frequency, low voltage (автоматическая приостановка с пониженной частотой и напряжением питания).
C2 – Временное состояние перед переходом в C3. Память в рабочем состоянии.
C3 – Сброс кэшей L1/L2 (flush), выключение тактовых частот.
C6 – Сохранение состояний ядра перед выключением, и выключение PLL (т. е. прекращение синтеза тактовых частот).
C7 – C6, плюс может быть сброшен LLC (LLC означает кэш самого высокого уровня, т. е. самая медленная память кэш).
C8 – C7, плюс должен быть сброшен LLC.
Примечание *: показано в грубом приближении.
C-состояния можно отличить друг от друга по C-состояниям ядра (Core C-states или CC-states), состояниям корпуса (Package C-states или PC-states) и логическим состояниям. В большинстве случаев операционная система устанавливает определенное состояние для ядра путем выполнения команды MWAIT.
Примечание: «состояние ядра» (core state) относится к ядру, которое находится в состоянии самого большого потребления энергии (наиболее активно).
[Запрет в BIOS функции CPU Power Saving]
В некоторых случаях рекомендуется деактивировать в BIOS настройки экономии питания CPU. Здесь показано, где найти эти опции и как их запретить, чтобы опции управления питанием (CPU P State Control и CPU C State Control) были полностью запрещены в BIOS (на примере материнской платы Supermicro X10DRi и процессора Intel Xeon E5 2620v4.
Как запретить CPU Power Saving:
1. Во время начального процесса загрузки (сразу после включения питания или сброса) нажмите специальную клавишу для входа в BIOS. Чаще всего это Del (Delete) или F2, для материнской платы Supermicro X10DRi это клавиша Delete.
3. Поменяйте настройку Power Technology в состояние Custom и Energy Efficient Turbo в состояние Disable.
4. Перейдите в раздел CPU P State Control, деактивируйте EIST (P-States) and Turbo Mode.
5. Перейдите в раздел CPU C State Control, поменяйте Package C State Limit на C0/C1 state и деактивируйте CPU C3 Report, CPU C6 Report и Enhanced Halt State (C1E).
Обзор и тестирование материнской платы Gigabyte X299 Aorus Gaming 9 (страница 5)
Возможности BIOS
Помимо настроек работы слотов, портов и т.п. наибольший интерес представляет раздел разгона, с него и начнем…
реклама
M.I.T. меню разделено на 5 основных категорий: Настройка частот, настройка памяти, настройка напряжений, состояние системы, и второстепенные настройки.
Полный список настроек представлен ниже
Обычно в BIOS легко находится список напряжений, состоящий из следующих значений:
Все они присутствуют и в BIOS GIGA-BYTE. Диапазон регулировок очень большой и с высокой точностью. Есть компенсация просадки напряжения Vcore. К сожалению, многие это уже отмечали, присутствует «Phantom Throttling». Чтобы избавиться от него следует повысить напряжение Vrin до 1,75…1,9В в зависимости от степени разгона. Кстати, плата умеет разгонять с включенными функциями энергосбережения. Единственное, что она не умеет – это настраивать персональное напряжение по ядрам с нужными множителями. Стандартные рекомендации по разгону сходятся в последовательности действий:
Установить «CPU Clock Ratio» от 40 до 48, в «Advanced CPU Core Settings» поставить «Enhanced Multi-Core Performance» Enabled, а «Energy Efficient Turbo» в Disabled. Выставить множитель «CLR (MESH) Ratio» 32. В «Advanced Power Settings» поставить LLC в положение AUTO, при недостаточной стабильности можно повышать компенсацию просадки напряжения. Внимание, LLC не воздействует на Vrin! Поэтому повысить напряжение Vrin до 1,75…1,9В. CPU Vcore следует начать с 1,15 В. CPU VCCIO и CPU System Agent Voltage влияют на разгон памяти, начальные оверклокерские значения от 1,15В до 1,25В. AVX Offset и AVX 512 Offset – множители процессорных ядер при использовании инструкций AVX. На воздушном и водяном охлаждении значения редко превышают 40-42Х. Не забудьте поставить CPU Vcore Current Protection – High.
Система мониторинга
На плату установлено 8 4pin коннекторов для вентиляторов (два повышенной мощности для помп СВО). Помимо них Gigabyte оставила опцию в виде расширения количества термодатчиков еще на два (прилагаются к комплекту) к имеющимся 7.
реклама
Настройки можно проводить и в отдельной программе, и через меню BIOS, мы их и рассмотрим.
Настраивается по нескольким параметрам:
Расширен перечень источников температуры начиная от системного датчика под номером 1 до внешнего датчика.
System Fan с 1 по 3 вентилятор
Эти 3 вентилятора настраиваются подобно CPU OPT.
По настройке аналогичен System Fan с 1 по 3, но изменился список источников температуры.
Гибридный разъем повышенной мощности способный выдержать помпы СВО мощностью до 3А. Снова изменены источники температуры.
реклама
Последний разъем не позволяет останавливать устройство, подключенное к нему.
Заключение
С точки зрения аппаратной части Gigabyte X299 Aorus Gaming 9 это идеальная системная плата с массой возможностей. За те деньги, которые за нее просят (около 35 000), нам предлагают модель с кучей аксессуаров и модной светодиодной подсветкой. При этом производитель не забыл ни о приличной и эффективной системе охлаждения, ни о защитных кожухах и усиленных разъемах.
реклама
Пожалуй, придраться можно лишь к непривычной поначалу прошивке BIOS. С одной стороны, разбивка по основным меню логичная, но описание настроек отсутствует, да и некоторые подпункты сгруппированы неряшливо. С другой, есть возможность выставлять все напряжения с точностью до тысячной доли. Кроме того, материнская плата Aorus – одна из немногих, позволяющая разгонять процессор с активированными функциями энергосбережения и это огромный плюс.
Но опять же, скудное описание ключевых напряжений и LLC в BIOS может ввести в ступор неподготовленного покупателя, которому позиции High, Low и Extreme ни о чем не говорят. Вдобавок из-за своеобразной системы питания и дискретного ШИМ-контроллера сложно программным способом считать актуальное напряжение Vcore, которое выдает материнская плата. Любая утилита покажет фиксированное Vsvid напряжение и все!
Что касается всего прочего, то оценить качество звукового кодека сложно, ведь у каждого свои предпочтения. Для меня лично одним из открытий стала поддержка наушников с разным импедансом, что встречается редко. Ну а двойной Lan – обыденность, лучше обратите внимание на Wi-Fi с Killer 1535 с честными 867 Мбит/с.
Остается лишь вопрос, под кого же разработали данную модель? Очевидно, что взяли среднестатического пользователя, который не желает ущемлять себя в любых вопросах, но при этом склонен к моддингу и новой платформе Intel.
реклама
По итогам обзора материнская плата Gigabyte X299 Aorus Gaming 9 получает награду:
Как в БИОСе влючить разгон процессора на постоянной частоте его работы
Добавлено через 19 минут
Сейчас обнаружил, что такая «услуга» по «тормозу разгона» удалила очень важные данные.
Разгон оперативки бесполезен, а разгон процессора пустая трата электроэнергии
К такому выводу я пришел после самостоятельного изучения разгона Ryzen 5 1600 и оперативки. На.
Как поставить макс. температуру процессора в биосе?
Как включить настройку в биосе чтобы пк выключился или подал звуковой сигнал при приближении к.
Разгон FХ-6300 на Биосе F1
Собственно сабж, проц как известно имеет разлоченный множитель, но почему-то в биосе поменять я его.
ASRock K10N78D, как повысить или понизить вольтаж процессора в биосе?
подскажите как повысить или понизить вольтаж проца в биосе?мать:ASRock K10N78D проц:DualCore AMD.
a_shats, спасибо за помощь, благодаря Вам за полчаса нашёл правильные настройки, которые не мог найти несколько дней, потому что любая подсказка со стороны наталкивает на верную мысль. Немного поманипулировал, и получилось вот что:
Эти настройки пока стабильно держат частоту 2300 МГц.
По поводу шума вентиляторов. Я установил тихие десктопные, на полных оборотах слегка шуршат, температуру держат не более 70 град. в разгоне. Правда, пришлось из алюминиевых пластин делать переходники. А прибавка частоты в 300 МГц довольно существенна, прибавка производительности заметна.
Архив метки: BIOS
Cisco рекомендует для профиля электропитания High-Performance Computing для параметра All C-states установить значение enabled (и в этом профиле так и установлено), но для максимальной производительности параметр нужно не включать, а выключать disabled, а для этого настраивать свой план электропитания Custom.
BIOS: Collaborative Power Control
BIOS: Minimum Processor Idle Power Package State
У BIOS HPE параметру Minimum Processor Idle Power Package State установите значение No Package State. Смысл настройки похож на http://www.gilev.ru/bios-minimum-processor-idle-power-core-state/ лишь с тем отличием что здесь идет настройка не для отдельных ядер процессора а целиком для процессора.
BIOS: Minimum Processor Idle Power Core State
BIOS: Intel QPI Link Power Management
BIOS: HPE Power Regulator / HP Power Regulator
Настройка Power Regulator mode
для производительной работы 1С-систем выбирайте значение HP Static High Perfomance Mode
BIOS: HPE Power Profile / HP Power Profile
Выбирайте значение Maximum Perfomance для производительной работы 1С-систем.
Ниже таблица с расшифровкой значений
BIOS: Override OS Energy Performance
Override OS Energy Performance — отмена влияние настроек ОС на энергосбережние
есть смысл пробовать включать для старых операционных систем с целью управления через другие настройки биос
BIOS: ACPI T-States
Параметру “ACPI T-States” задать значение “Disable” для отключения пропуска тактов (тротлинга) и повышения производительности
BIOS: Software Controlled T-States
Параметру “Software Controlled T-States” присвоить значение “Disable” чтобы выключить управляемый программно тротлинг (пропуск тактов) для производительности 1С-систем
BIOS: Energy Performance BIAS
Параметр Energy Performance BIAS для производительности 1С-систем устанавливайте в значение Perfomance
BIOS: Energy Efficient Turbo
Energy Efficient Turbo во включенном состоянии означает, что электричество будет экономиться.
Для производительности 1С-систем выключайте этот параметр (Disable)
BIOS: ENERGY_PERF_BIAS_CFG
Параметру “ENERGY_PERF_BIAS_CFG” присвоить значение “Maximum Performance” для максимальной производительности 1С-систем
в более ранних версиях также может встречаться параметр Energy Performance
укажите значение Perfomance для производительности 1С-систем
BIOS: power technology
Параметру “Power Technology” присваивайте значение “Custom” для того чтобы включить управление более тонкими настройками питания.
BIOS: Intel SpeedStep (IST)
Старый режим энергосбережения процессора, предшествовавший Enhanced Intel SpeedStep Technology.
Для максимальной производительности 1С-систем выключайте этот режим, выберите значение Disable, а если его нет, то Maximum.
В отключенном режиме частота меняться не будет.
BIOS: Turbo Boost
Turbo Boost — это технология компании Intel для автоматического увеличения тактовой частоты процессора свыше номинальной, если при этом не превышаются ограничения мощности, температуры и тока в составе расчётной мощности (TDP). Это приводит к увеличению производительности однопоточных и многопоточных приложений. Фактически, это технология «саморазгона» процессора. Есть турбобуст 2 и 3й версии.
Параметр может называть также Turbo Mode (одно и тоже).
или Turbo Boost Tehnology.
Для производительной работы 1С-систем его надо включать обязательно (Enabled).
В биосе для HPE для параметра Intel(R) Turbo Boost Technology выбирайте значение Optimized for Performance
BIOS: Package C State
Может также встречаться Package C State Limit или Package C State Support
Возможные варианты значений:
Auto — Значение выбрано автоматически.
Enabled — Параметр включен.
C0/C1 — Поддержка C0/C1 состояний пакета.
C2 — Поддержка C2 состояния пакета.
C3 — Поддержка C3 состояния пакета.
C6 — Поддержка C6 состояния пакета.
Таким образом для всех ядер процессора вы задаете общий режим работы (парковки ядер). В выбранном режим падения частоты процессора не происходит.
BIOS: CPU C6 Report
CPU C6 Report — позволяет запретить (параметр [Disabled]) / разрешить (параметр [Enabled]) переход процессора в энергосберегающее состояние C6 (когда в состоянии C3 значения регистров записываются в постоянную память). В таком режиме CPU функционирует при очень незначительном напряжении питания, достаточном лишь для выхода его из этого состояния. При этом минимальная нагрузка на линию +12В может опускаться до 0,5 А, поэтому блок питания должен поддерживать такую возможность (определено в спецификации ATX12V 2.3).
Важно отметить, что некоторые производители не отделяют этот режим от С3.
Для повышения производительности 1С-систем рекомендуем выключать данный параметр.
BIOS: CPU C3 Report
Состояние процессора С3 сбрасывает кэш и понижает частоту (и питание) процессора.
Тут надо пояснить, что ядра процессора могут иметь различные состояния.
позволяет запретить (параметр [Disabled]) / разрешить (параметр [Enabled]) переход процессора в энергосберегающее состояние C3 (когда частота опускается до 0 МГц, отключается кэш-память L1 и L2, но при этом сохраняются значения всех регистров). В таком режиме CPU функционирует при очень незначительном напряжении питания, которое требуется лишь для хранения данных из регистров.
Для повышения производительности 1С-систем рекомендуем выключать данный параметр (Disable).
BIOS: Enhanced Halt State (C1E) «Улучшенное состояние простоя»
C1E — одна из функций энергосбережения процессоров (называемого также Enhanced Halt State). Состояние C1E позволяет снизить напряжение при переводе процессора в состояние HALT, применяемое при низком уровне загрузки системы. При этом снижается уровень энергопотребления системы при низкой загрузке процессора. При этом снижается частота процессора (и вольтаж). Это в свою очередь негативно сказывается на скорости работы 1С-систем.
Рекомендуется выключать данный режим (в англоязычных настройках Disable).
Другие варианты обозначения данного параметра:
Краткое руководство по управлению питанием процессора
Как центральный процессор может сокращать собственное энергопотребление? Основы этого процесса — в статье.
Центральный процессор (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.
Мониторинг счетчиков С-состояний (для ядра):