Статус процессора что это
Много раз вы читали или слышали о Intelсостояния C и, возможно, связаны с их деактивацией для большей стабильности при разгонный процессор. В этой статье мы расскажем вам что такое Intel C State , для чего каждый из них и почему вы должны это учитывать.
C-состояния или C-состояния процессоров Intel не являются чем-то новым, и это то, что они были впервые представлены с процессорами Intel 486DX4 в марте 1994 года, хотя это правда, что в то время состояний было довольно мало, а также ограничено и со временем их вводили больше, и, таким образом, улучшалось то, что каждый из них делает.
Энергосберегающие режимы на практике
- Процессор в простое может снижать напряжение, из-за будет снижаться частота. Например у меня был проц Intel G3220, так его частота 3.00 ГГц, а мог скидывать до 800 МГц в простое.
- Минимальная частота процессора — это не только минимальное напряжение, но и низкий нагрев.
- В итоге — комп или ноутбук отдыхает. Температура падает, если это ноут — то его автономная работа в таком режиме увеличивается. Но частота может падать и немного, зависит от нагрузки, например при чтении она будет не полностью падать. Но даже в таком режиме снижается нагрев и потребление.
- При низкой частоте проца в принципе нагрузка на материнскую плату снижается, а это как бы увеличивает срок службы компьютера/ноутбука.
- Минус энергосберегающего режима. Есть мнение, что данный режим немного снижают производительность ПК. Незначительно. Как? Дело в том, что восстановление частоты занимает некие доли секунды, на практике это как микро-тормоза. Но чем мощнее проц, тем меньше таких тормоза, а то и вовсе могут отсутствовать. Но это не всегда, просто у меня так было — но почти незаметно, а если и есть, то длятся не более полсекунды. По факту мелочь.
Важно понимать, что все это может не работать. Почему? Из-за настроек электропитания Windows, в которых может в минимальном/максимальном состоянии процессора стоять 100%. Тогда проц будет постоянно работать на максимальной частоте. Открыть данные настройки можно так: Панель управления > значок Электропитание > напротив активной схемы нажимаем настройка > изменить дополнительные параметры > в самом низу раскрываем пункт Управление питанием процессора.
Свойства класса Win32_Processor – информация о процессоре
AddressWidth – Свойство позволяет получить значение адресной шины процессора в битах. На 32-разрядной операционной системе значение 32 и на 64-разрядной операционной системе - 64 (CIM_Processor).
Architecture – Архитектура процесса. Возможные значения:
- 0 (0x0) - x86
- 1 (0x1) - MIPS
- 2 (0x2) - Alpha
- 3 (0x3) - PowerPC
- 5 (0x5) - ARM
- 6 (0x6) - Itanium-based systems
- 9 (0x9) - x64
Availability - Доступность и состояние устройства, (CIM_LogicalDevice). Возможные значения:
- 1 (0x1) - Другое
- 2 (0x2) - Неизвестный
- 3 (0x3) - Запуск или полная мощность
- 4 (0x4) - Предупреждение
- 5 (0x5) - В состоянии теста
- 6 (0x6) - Не действует
- 7 (0x7) - Выключение питания
- 8 (0x8) – Off Line
- 9 (0x9) – Off Duty
- 10 (0xA) - Частичная потеря работоспособности
- 11 (0xB) - Не установлен
- 12 (0xC) - Ошибка установки
- 13 (0xD) - Энергосбережение - Неизвестный. Устройство находится в состоянии энергосбережения, но его точное состояние неизвестно.
- 14 (0xE) - Энергосбережение - Энергосберегающий режим. Устройство находится в состоянии энергосбережения, но все еще функционирует, и может идти к снижению производительности.
- 15 (0xF) - Энергосбережение - В режиме ожидания. Устройство не работает, но может быть быстро привлечено к полной мощности.
- 16 (0x10) - Цикл питания
- 17 (0x11) - Энергосбережение - Внимание. Устройство находится в состоянии предупреждения, хотя и в состоянии экономии энергии.
Caption – Короткое описание, (CIM_ManagedSystemElement).
ConfigManagerErrorCode - Указывает код ошибки диспетчера конфигураций Win32 (Возможных значений слишком много, поэтому описывать не буду, в случае чего, всегда можно обратится к документации Microsoft).
ConfigManagerUserConfig – Содержит логическое значение, определяющее, используется ли конфигурация пользователя, (CIM_LogicalDevice).
CpuStatus – Текущий статус процессора. Изменения статуса обуславливаются использованием самого процессора, а не его физическими характеристиками. Информация о процессоре. Возможные значения:
- 0 (0x0) - Неизвестный
- 1 (0x1) - Процессор включен
- 2 (0x2) - Процессор отключен пользователем через настройки BIOS
- 3 (0x3) - Процессор отключен в BIOS (POST Error)
- 4 (0x4) - CPU находится в режиме ожидания
- 5 (0x5) - Зарезервировано
- 6 (0x6) - Зарезервировано
- 7 (0x7) - Другое
CreationClassName – Класс создатель, (CIM_LogicalDevice).
CurrentClockSpeed – Частота процесса в МГц, (CIM_Processor).
CurrentVoltage - Напряжение питания процессора. Биты 0-6 содержат текущую величину напряжения питания процессора, умноженную на 10. Это свойство устанавливается только, когда значение напряжения указывается SMBIOS. Конкретные значения содержатся в свойстве VoltageCaps. Например: значение свойства для напряжения питания процессора 1.8 вольт будет равно 92h = 80h + (1.8 x 10) = 80h + 18 = 80h + 12h
DataWidth - Свойство позволяет получить значение максимальной ширины шины процессора в битах. На 32-разрядной операционной системе значение 32 и на 64-разрядной операционной системе – 64, (CIM_Processor).
Description – Описание, (CIM_ManagedSystemElement).
DeviceID – Идентификатор процессора, (CIM_LogicalDevice).
ErrorCleared - Логическое значение, указывающее, что ошибка, возвращенная свойством LastErrorCode устранена, (CIM_LogicalDevice).
ErrorDescription – Содержит дополнительную информацию об ошибке, указанной в свойстве LastErrorCode, и возможных способах ее устранения, информация о процессоре, (CIM_LogicalDevice).
ExtClock – Частота внешнего таймера в МГц, если данное значение неизвестно, то свойство вернет NULL.
Family – Тип семейства процессоров, (CIM_Processor). Возможные значения:
- 1 (0x1) - Другой тип
- 2 (0x2) - Неизвестно
- 3 (0x3) - 8086
- 4 (0x4) - 80286
- 5 (0x5) - Intel386™ Processor
- 6 (0x6) - Intel486™ Processor
- 7 (0x7) - 8087
- 8 (0x8) - 80287
- 9 (0x9) - 80387
- 10 (0xA) - 80487
- 11 (0xB) - Pentium Brand
- 12 (0xC) - Pentium Pro
- 13 (0xD) - Pentium II
- 14 (0xE) - Pentium Processor with MMX™ Technology
- 15 (0xF) - Celeron™
- 16 (0x10) - Pentium II Xeon™
- 17 (0x11) - Pentium III
- 18 (0x12) - M1 Family
- 19 (0x13) - M2 Family
- 24 (0x18) - AMD Duron™ Processor Family
- 25 (0x19) - K5 Family
- 26 (0x1A) - K6 Family
- 27 (0x1B) - K6-2
- 28 (0x1C) - K6-3
- 29 (0x1D) - AMD Athlon™ Processor Family
- 30 (0x1E) - AMD2900 Family
- 31 (0x1F) - K6-2+
- 32 (0x20) - Power PC Family
- 33 (0x21) - Power PC 601
- 34 (0x22) - Power PC 603
- 35 (0x23) - Power PC 603+
- 36 (0x24) - Power PC 604
- 37 (0x25) - Power PC 620
- 38 (0x26) - Power PC X704
- 39 (0x27) - Power PC 750
- 48 (0x30) - Alpha Family
- 49 (0x31) - Alpha 21064
- 50 (0x32) - Alpha 21066
- 51 (0x33) - Alpha 21164
- 52 (0x34) - Alpha 21164PC
- 53 (0x35) - Alpha 21164a
- 54 (0x36) - Alpha 21264
- 55 (0x37) - Alpha 21364
- 64 (0x40) - MIPS Family
- 65 (0x41) - MIPS R4000
- 66 (0x42) - MIPS R4200
- 67 (0x43) - MIPS R4400
- 68 (0x44) - MIPS R4600
- 69 (0x45) - MIPS R10000
- 80 (0x50) - SPARC Family
- 81 (0x51) - SuperSPARC
- 82 (0x52) - microSPARC II
- 83 (0x53) - microSPARC IIep
- 84 (0x54) - UltraSPARC
- 85 (0x55) - UltraSPARC II
- 86 (0x56) - UltraSPARC IIi
- 87 (0x57) - UltraSPARC III
- 88 (0x58) - UltraSPARC IIIi
- 96 (0x60) - 68040
- 97 (0x61) - 68xxx Family
- 98 (0x62) - 68000
- 99 (0x63) - 68010
- 100 (0x64) - 68020
InstallDate – Дата установки, (CIM_ManagedSystemElement).
L2CacheSize – Размер процессорного кеша второго уровня.
L2CacheSpeed – Частота процессорного кеша второго уровня.
L3CacheSize - Размер процессорного кеша третьего уровня..
L3CacheSpeed - Частота процессорного кеша третьего уровня. Данное свойство не поддерживается в Windows Server 2003 and Windows XP.
LastErrorCode – Код последней ошибки, которую вернуло устройство, (CIM_LogicalDevice).
Level – Тип процессора, значение зависит от архитектуры.
LoadPercentage – Показывает среднее значение загрузки процессора за последнюю секунду, (CIM_Processor).
Manufacturer – Изготовитель процессора.
MaxClockSpeed – Максимальная частота процессора в МГц, (CIM_Processor).
Name – Метка, (CIM_ManagedSystemElement).
NumberOfCores – Количество ядер, свойство не поддерживается в Windows Server 2003 and Windows XP.
NumberOfLogicalProcessors – Количество логических процессоров для данного экземпляра процессора, свойство не поддерживается в Windows Server 2003 and Windows XP.
OtherFamilyDescription – Используется когда свойство Family установлено в 1, если же значение свойства Family отличается от 1, то текущее значение свойства OtherFamilyDescription устанавливается в NULL, информация о процессоре, (CIM_LogicalDevice).
PNPDeviceID - Указывает Win32-идентификатор логического устройства Plug and Play, (CIM_LogicalDevice).
PowerManagementCapabilities – Параметры электропитания, свойство является массивом. Значения свойств можно просмотреть в документации Microsoft, (CIM_LogicalDevice).
PowerManagementSupported – Содержит логическое значение, которое определяет возможности управления электропитание, (CIM_LogicalDevice).
ProcessorId – Специфическая информация относительно возможностей процессора, фактически – маркировка процессора.
ProcessorType – Основная функция процессора. Возможные значения:
- 1 (0x1) - Другое
- 2 (0x2) - Неизвестный
- 3 (0x3) - Центральный процессор
- 4 (0x4) - Математический процессор
- 5 (0x5) - DSP процессор
- 6 (0x6) - видеопроцессор
Revision - Указывает номер редакции архитектуры системы. Значение этого свойства зависит от архитектуры процессора. Содержит то же значение, что и свойство Version, но в числовом формате, информация о процессоре.
Role – Роль процессора, фактически то же значение что и в свойстве ProcessorType, только в виде строки, (CIM_Processor).
SocketDesignation – Тип гнезда, который используется для микросхемы процессора.
Status – Текущее состояние, (CIM_ManagedSystemElement). Значения:
- OK
- Error
- Degraded
- Unknown
- Pred Fail
- Starting
- Stopping
- Service
- Stressed
- NonRecover
- NoContact
- LostComm
StatusInfo – Состояние логического устройства, (CIM_LogicalDevice). Значения:
- 1 (0x1) - Другое
- 2 (0x2) - Неизвестно
- 3 (0x3) - Включено
- 4 (0x4) - Отключено
- 5 (0x5) - Не действует
SystemCreationClassName – Имя класса системы, (CIM_LogicalDevice).
SystemName – Системное имя, (CIM_LogicalDevice).
UniqueId - Глобально уникальный идентификатор для процессора. Этот идентификатор может быть только уникальным в пределах семейства процессоров, (CIM_Processor).
UpgradeMethod - Информация о гнезде процессора, в том числе и дата обновления, (CIM_Processor). Значения:
- 1 (0x1) - Другое
- 2 (0x2) - Неизвестно
- 3 (0x3) - Daughter Board
- 4 (0x4) - ZIF Socket
- 5 (0x5) - Replacement or Piggy Back
- 6 (0x6) - None
- 7 (0x7) - LIF Socket
- 8 (0x8) - Slot 1
- 9 (0x9) - Slot 2
- 10 (0xA) - 370 Pin Socket
- 11 (0xB) - Slot A
- 12 (0xC) - Slot M
- 13 (0xD) - Socket 423
- 14 (0xE) - Socket A (Socket 462)
- 15 (0xF) - Socket 478
- 16 (0x10) - Socket 754
- 17 (0x11) - Socket 940
- 18 (0x12) - Socket 939
Version – Номер версии процессора, значение зависит от архитектуры.
VoltageCaps – Диапазон допустимых напряжения. Биты 0-3 представляют напряжения, которые могут использоваться для гнезда процессора. Все другие биты должны быть установлены в ноль. Гнездо поддерживает несколько конфигураций, если установлены несколько битов. Диапазон напряжений содержится в CurrentVoltage. Если значение свойства NULL, диапазон напряжений неизвестен. Значения:
- 1 (0x1) - 5 вольт
- 2 (0x2) - 3,3 вольт
- 4 (0x4) - 2,9 вольт
Далее привожу примеры сценариев на языке vbscript - Win32_Processor.vbs и jscript - Win32_Processor.js, которые выводят информацию об установленных в системе процессорах, я использовал не все свойства, при желании можете дополнить программный код.
Как центральный процессор может сокращать собственное энергопотребление? Основы этого процесса — в статье.
Центральный процессор (CPU) спроектирован на бесконечно долгую работу при определенной нагрузке. Практически никто не проводит вычисления круглые сутки, поэтому большую часть времени он не работает на расчетном максимуме. Тогда какой смысл держать его включенным на полную мощность? Здесь стоит задуматься об управлении питанием процессора. Эта тема включает в себя оперативную память, графические ускорители и так далее, но я собираюсь рассказать только про CPU.
Если вы знаете про C-состояния (C-states), P-состояния (P-states) и то, как процессор переходит между ними, то, возможно, в этой статье вы не увидите ничего нового. Если это не так, продолжайте читать.
Я планировал добавить реальные примеры из ОС Linux, но статья становилась все больше, так что я решил приберечь это для следующей статьи.
Основные источники информации, использованные в этом тексте:
Global C-State Control — что это такое?
Функция энергосбережения процессоров Ryzen. При активации проц будет скидывать частоту в простое, в результате меньше потребляет энергии и меньше нагрев.
Еще одна похожая функция — Power Supply Idle Control (чтобы отключить нужно выбрать Typical).
На форуме Overclockers один пользователь написал — данная функция обеспечивает парковку ядер. Смысл похож — при небольшой нагрузке процессор переносит задачи со всех ядер на одно, а остальные ядра переводит в режим бездействия.
Состояние питания процессоров Intel
Технически, увеличение числа состояний C процессора означает, что процессор переходит в более глубокий спящий режим, потребляя меньше энергии и выделяя меньше тепла, но также обеспечивая более низкую производительность. Все процессоры Intel имеют эти состояния, которые всегда можно включать и отключать из BIOS, но имейте в виду, что их отключение может привести к потере некоторых функций, например, перевод компьютера в спящий режим.
Давайте посмотрим, что они есть.
Следует учитывать, что эти состояния являются кумулятивными, то есть, если ядро процессора переходит, например, в состояние C3, также применяются все характеристики состояния C, которые оно имеет выше.
P-состояния, управляемые оборудованием
В этом случае ОС знает об аппаратной поддержке P-состояний и отправляет запросы с указанием нагрузки. В запросах не указывается конкретное P-состояние или частота. На основе информации от ОС, а также других факторов и ограничений оборудование выбирает подходящее P-состояние.
Я хочу рассказать об этом подробнее в следующей статье, но сейчас я поделюсь с вами своими мыслями. Мой домашний компьютер работает в этом режиме, я узнал это, проверив IA32_PM_ENABLE. Максимальный (но не гарантированный) уровень производительности — 39, минимальный — 1. Можно предположить, что существует 39 P-состояний. На данный момент уровень 39 установлен ОС как минимальный и как максимальный, потому что я отключил динамическое изменение частоты процессора в ядре.
Регулировка частоты из под Windows
Включенная опция Global C-State Control позволяет регулировать частоту проца из под Windows. Можно опустить частоту до минимума, регулируя в процентах. Открыть настройку можно зайдя в панель управления, выбрав значок Электропитание:
Далее слева выбираем Настройка отключения дисплея либо Настройка перехода в спящий режим. После — Изменить дополнительные параметры питания:
Появится небольшое окошко, где в самом низу можно в минимальном состоянии и максимальном указать в процентах производительность. Если выставить 0% везде — тогда проц будет всегда работать на минимальной частоте:
Для чего нужны С-состояния и почему вы должны их учитывать?
Как мы уже видели, C-состояния процессоров Intel - это режимы энергосбережения, в которых характеристики процессора постепенно снижаются, напряжение снижается, а компоненты отключаются. Это, очевидно, служит для экономии энергии и снижения температуры, хотя, правда, также снижает производительность.
Если вы разгоняете свой ЦП вы должны отключить их через BIOS, чтобы процессор всегда оставался в состоянии C0, чтобы напряжение не могло быть снижено из-за бездействия, поскольку это почти наверняка вызовет нестабильность системы. Однако вы также должны иметь в виду, что отключение состояния C предотвратит, например, то, что ваш компьютер может войти в Windows спящий режим или режим гибернации, так как он не сможет, помимо прочего, выключить процессор.
Приветствую. Современные процессоры, особенно топовые модели — могут сильно нагреваться при нагрузке, потреблять много энергии. Однако, чтобы процессор отдыхал при бездействии — существуют специальные технологии, про одну из них сегодня пойдет речь.
Что вынуждает ядро входить в определенное С-состояние?
Как отмечалось ранее, переходы между глубокими С-состояниями имеют высокие задержки и высокие энергетические затраты. Таким образом, такие переходы должны выполняться с осторожностью, особенно на устройствах, работающих от аккумуляторов.
Важные моменты
Функция в биосе ASUS:
Дополнительная информация, которая может быть полезной:
Состояния питания (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 означает максимальную производительность, то есть максимальные тактовую частоту, напряжение и энергопотребление.
Какое состояние C у процессоров Intel?
Состояния C - это способы управления мощностью процессора, и по этой причине они должны приниматься во внимание при разгоне, поскольку, когда вы выполняете эту практику, вам нужно, чтобы мощность процессора была не только максимальной, но и стабильной. процессор, чтобы вызвать нестабильность системы. Однако, когда процессор работает со значениями по умолчанию, они помогут не только снизить энергопотребление, но и снизить температуру. Кроме того, они позволяют выполнять дополнительные действия, как мы увидим ниже.
- В каждом состоянии ЦП потребляет разное количество энергии, и по этой причине они должны быть отключены при разгоне.
- Каждый из них по-разному влияет на производительность. Различное потребление позволяет разную скорость и производительность.
- Когда ядро процессора находится в режиме ожидания, оно может переключаться из одного состояния в другое для экономии энергии. Это означает, что состояния не обязательно должны быть включены для всех ядер процессора, но могут быть включены для отдельных ядер.
- Состояния идут от нуля до десяти, чем выше число, тем ниже потребление. Это означает, что состояние C 0 потребляет больше всего энергии, а 10 - меньше всего.
С-состояния
Вот базовые С-состояния (определенные в стандарте ACPI).
- C0: Active, процессор/ядро выполняет инструкции. Здесь применяются P-состояния, процессор/ядро могут работать в режиме максимальной производительности (P0) или в режиме энергосбережения (в состоянии, отличном от P0).
- C1: Halt, процессор не выполняет инструкций, но может мгновенно вернуться в состояние С0. Поскольку процессор не работает, то P-состояния не актуальны для состояний, отличных от С0.
- C2: Stop-Clock, схож с C1, но требует больше времени для возврата в C0.
- С3: Sleep. Возврат в C0 требует ощутимо большего времени.
Примечание: Из-за технологии 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.
Однако если ядро работает (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_idle для моего процессора (модель 0x5e). Подписи горизонтальной оси:
Имя C-состояния: специфичное для процессора состояние: специфичное суб-состояние.
Вертикальная ось обозначает задержку выхода и целевые резидентные значения из исходного кода. Задержка выхода используется для оценки влияния данного состояния в реальном времени (то есть сколько времени потребуется для возвращения в С0 из этого состояния). Целевое резидентное значение обозначает минимальное время, которое ядро должно находиться в данном состоянии, чтобы оправдать энергетические затраты на переход в это состояние и обратно. Обратите внимание на логарифмический масштаб вертикальной оси. Задержки и минимальное время нахождения в состоянии увеличивается экспоненциально с увеличением номера состояния.
Константы задержок выхода и целевых резидентных значении C-состояний в исходном коде intel_idle
Примечание: Хотя состояния С9 и С10 включены в таблицу, они имеют 0 суб-состояний и поэтому не используются в моем процессоре. Остальные процессоры из семейства могут поддерживать эти состояния.
Заключение
- CPU C-States — опция позволяет активировать энергосберегающие режимы процессора.
Надеюсь эта информация была полезной. Удачи и добра, до новых встреч друзья! и берегите себя!
Класс Win32_Processor позволяет получить информацию о процессоре, по сути, информация о процессоре хранится в свойствах экземпляра данного класса. Так как сейчас в большинстве систем находятся процессоры из нескольких ядер, то и экземпляров класс Win32_Processor будет несколько.
Для начала, давайте посмотрим, какую информацию о классе можно извлечь с помощью мой любимой утилиты WMI CIM Studio. Запускаем утилиту и в левой панели выбираем интересующий нас класс (если что, просто вбейте имя класса в поиск и все).
Сам класс является производным от класса CIM_Processor, ключевым свойством является DeviceID (об этом символизирует значок ключа возле имени свойства).
У класса есть два метода (Reset и SetPoverState), но они не реализованы. На вкладке Associations можно просмотреть ассоциативные связи. Win32_Process связан с классами Win32_CacheMemory (посредством ассоциативного класса Win32_AssociatedProcessorMemory) и Win32_ComputerSystem (посредством ассоциативного класса Win32_AssociatedProcessorMemory).
Теперь, если нажать на кнопку Instances, то можно получить список экземпляров класса, в которых содержится информация о процессоре (вернее одном из процессоров).
Сам класс Win32_Processor предоставляет провайдер подсистемы Win32, файлы: Cimwin32.mof и Cimwin32.dll, пространство имен \root\CIMV2.
Теперь давайте посмотрим как можно извлечь информацию о процессоре используя класс Win32_Processor средствами утилиты WMIC командной строки:
Выводим информацию о свойствах и методах класса Win32_Processor:
WMIC CLASS Win32_Processor
В виде таблица получаем значения свойств экземпляров класса и направляем вывод во внешний файл:
WMIC PATH Win32_Processor GET /FORMAT:HFORM>d:\work\info.htm
Список процессоров, которые есть в системе:
WMIC PATH Win32_Processor GET DeviceID
Заметки про Intel® Turbo Boost
Поскольку TDP (расчетная тепловая мощность) — это максимальная мощность, которую процессор может выдержать, то процессор может повышать свою частоту выше базовой, при условии что энергопотребление не превысит TDP. Технология Turbo Boost может временно повышать энергопотребление до границы PL2 (Power Limit 2) на короткий промежуток времени. Поведение Turbo Boost может быть изменено через подсказки оборудованию.
Возможно ли отключить С-состояния (всегда использовать С0)?
Это возможно, но не рекомендуется. В даташите (секция 4.2.2, страница 64) есть примечание: «Долгосрочная надежность не гарантируется, если все энергосберегающие состояния простоя не включены». Поэтому вам не стоит отключать С-состояния.
Как я могу узнать состояние процессора?
Существует не так много приложений, которые могут выводить эту информацию. Но вы можете использовать, например, CoreFreq.
Как прерывания влияют на процессор\ядро в состоянии сна?
Когда происходит прерывание, соответствующее ядро пробуждается и переходит в состояние С0. Однако, например Intel® Xeon® E3-1200 v5, поддерживает технологию Power Aware Interrupt Routing (PAIR), у которой есть два достоинства:
- для энергосбережения прерывание может быть переадресовано работающему ядру, чтобы не будить спящее ядро;
- для производительности прерывание может быть переадресовано от работающего на полную мощность ядра к простаивающему (С1) ядру.
Как снизить энергопотребление процессора во время его работы?
На процессорах для массового использования (мы не берем в расчет вещи, которые возможны при их проектировании) для снижения потребляемой энергии можно реализовать один из сценариев:
- Сократить энергопотребление подсистемы (ядра или другого ресурса, такого как тактовый генератор или кэш) путем отключения питания (уменьшив напряжение до нуля).
- Снизить энергопотребление путем снижения напряжения и/или таковой частоты подсистемы и/или целого процессора.
Второй вариант требует чуть больше объяснений. Энергопотребление интегральной схемы, которой является процессор, линейно пропорционально тактовой частоте и квадратично напряжению.
Примечание для тех, кто разбирается в цифровой электронике: Pcpu = Pdynamic + Pshort circuit + Pleak. При работающем процессоре Pdynamic является наиболее важной составляющей, именно эта часть зависит линейно от частоты и квадратично от напряжения. Pshort circuit пропорционально частоте, а Pleak — напряжению.
Более того, напряжение и тактовая частота связаны линейной зависимостью.
Высокая производительность требует повышенной тактовой частоты и увеличения напряжения, что еще больше влияет на энергопотребление.
Применима ли эта информация о C-состояниях и P-состояниях к мобильным и встраиваемым процессорам?
Для примера, недавний MacBook Air с процессором i5-5350U в основном поддерживает возможности, описанные выше (но я не уверен про P-состояния, контролируемые оборудованием). Я также смотрел документацию ARM Cortex-A, и, хотя там применяются другие термины, механизмы управления питанием выглядят похоже.
Состояния питания 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. Все сохраняется в энергонезависимую память, все системы обесточиваются.
Вот поддерживаемые состояния ACPI.
Особенности CPU
Согласно официальной странице продукта, мой процессор поддерживает следующие технологии:
- состояния простоя (Idle States);
- усовершенствованная технология Intel® SpeedStep (Enhanced Intel® SpeedStep Technology).
Теперь выясним, что значит каждое из этих определений.
P-состояния, управляемые операционной системой
В этом случае операционная система знает о P-состояниях и конкретном состоянии, запрошенным ОС. Проще говоря, операционная система выбирает рабочую частоту, а напряжение подбирается процессором в зависимости от частоты и других факторов. После того, как P-состояние запрошено записью в моделезависимый регистр (подразумевается запись 16 бит в регистр IA32_PERF_CTL), напряжение изменяется до автоматически вычисленного значения и тактовый генератор переключается на заданную частоту. Все ядра имеют одно общее P-состояние, поэтому невозможно установить P-состояние эксклюзивно для одного ядра. Текущее P-состояние (рабочий режим) можно узнать, прочитав информацию из другого моделезависимого регистра — IA32_PERF_STATUS.
Смена P-состояния мгновенна, поэтому в секунду можно выполнять множество переходов. Это отличает от переходов C, которые выполняются дольше и требуют энергетических затрат.
Каков предел энергопотребления процессора?
Это во многом зависит от процессора, но для процессора E3-1245 v5 @ 3.50 ГГц расчетная тепловая мощность (Thermal Design Power, TDP) составляет 80 ватт. Это среднее значение, которое процессор может выдерживать бесконечно долго (Power Limit, PL1 на изображении ниже). Системы охлаждения должны быть рассчитаны на это значение, чтобы быть надежными. Фактическое энергопотребление процессора может быть выше в течение короткого промежутка времени (состояния PL2, PL3, PL4 на изображении ниже). TDP измеряется при нагрузке высокой вычислительной сложности (худший случай), когда все ядра работают на базовой частоте (3.5 ГГц).
Как видно на изображении выше, процессор в состоянии PL2 потребляет больше энергии, чем заявлено в TDP. Процессор может находиться в этом состоянии до 100 секунд, а это достаточно долго.
Комбинации состояний ACPI G/S и С-состояний процессора
Приятно видеть все комбинации в таблице:
В состоянии G0/S0/C8 системы процессора запущены, но все ядра отключены.
В G1 (S3 или S4) некорректно говорить про С-состояния (это касается как CC-состояний, так и PC-состояний), так как процессор полностью обесточен.
Для G3 не существует S-состояний. Система не спит, она физически отключена и не может проснуться. Ей необходимо сначала получить питание.
Режимы работы процессора
Скажу сразу — что эти опции в биосе лучше не трогать или выставить значение Auto. Но вообще энергосберегающие режимы — это хорошо, потому что система будет меньше греться, меньше потреблять энергии, это особо актуально для ноутбуков.
Итак, я нашел информационную картинку-описание некоторых режимов работы процессора, смотрим (картинка правда большая, но зато инфа полезная):
PS: выше на картинке возможно данные уже устали, ведь появились новые процессоры, однако предназначение режимов — вряд ли изменилось.
P-состояния
P-состояния подразумевают, что ядро в состоянии С0, потому что ему требуется питание, чтобы выполнять инструкции. P-состояния позволяют изменять напряжение и частоту ядра (другими словами рабочий режим), чтобы снизить энергопотребление. Существует набор P-состояний, каждое из которых соответствует разных рабочим режимам (пары напряжение-частота). Наиболее высокий рабочий режим (P0) предоставляет максимальную производительность.
Процессор Intel® Xeon® E3–1200 v5 позволяет контролировать P-состояния из операционной системы (Intel® SpeedStep Technology) или оставить это оборудованию (Intel® Speed Shift Technology). Вся информация ниже специфична для семейства Intel® Xeon® E3-1200 v5, но я полагаю, это в той или иной степени актуально и для других современных процессоров.
Как это все работает, например, на Linux?
На этот вопрос я отвечу в другой статье.
CPU C-States — что это в биосе?
Сразу короткий ответ: опция активирует поддержку энергосберегательных режимов процессора.
Кроме этого возможно будут доступны настройки активации типов режимов, то есть так бы сказать подрежимов. Просто C-States — это общее название энергосберегательных режимов, их существует несколько. В биосе может быть такая картина — после активации функции CPU C States Support могут стать доступные и другие опции, которые отвечают за поддержку немного разных режимов энергосбережения:
В биосе ASRock UEFI эта опция находится как видите в разделе Advanced\CPU Configuration.
Как программно запросить переход в энергосберегающее С-состояние?
Современный (но не единственный) способ запросить переход в энергосберегающее состояние — это использовать инструкцию MWAIT или инструкцию HLT. Это инструкции привилегированного уровня, и они не могут быть выполнены пользовательскими программами.
Инструкция MWAIT (Monitor Wait) заставляет процессор перейти в оптимизированное состояние (C-состояние) до тех пор, пока по указанному (с помощью другой инструкции, MONITOR) адресу не будет произведена запись. Для управления питанием MWAIT работает с регистром EAX. Биты 4-7 используются для указания целевого С-состояния, а биты 0-3 указывают суб-состояние.
Примечание: Я думаю, что на данный момент только AMD обладает инструкциями MONITORX/MWAITX, которые, помимо мониторинга записи по адресу, работают с таймером. Это еще называется Timed MWAIT.
Инструкция HLT (halt) останавливает выполнение, и ядро переходит в состояние HALT до тех пор, пока не произойдет прерывание. Это означает, что ядро переходит в состояние C1 или C1E.
Читайте также: