Назад | Перейти на главную страницу

Как ЦП может достаточно простаивать, чтобы войти в более глубокие состояния C.

Даже если ни один пользовательский процесс не запущен, не поддерживают ли процессы ядра ЦП достаточно активным, чтобы предотвратить его переход в более глубокое состояние C, такое как C1 или C2?

Процессоры (или отдельные ядра) могут быть переведены в "глубокие" C-состояния ядром ОС.

Вы думаете, что процессор «засыпает», когда «обнаруживает» бездействие. Это не так. Планировщик ОС определяет процент простоя системы на основе количества времени, проведенного в цикле простоя системы, чтобы обнаружить неактивность системы. Сам ЦП (по крайней мере, в мире x86) не знает, «что» он выполняет, и не имеет контекста для «обнаружения» циклов простоя самостоятельно.

Микропрограмма системы содержит таблицы ACPI, которые определяют возможности управления питанием оборудования. Эти таблицы читаются ОС при запуске. Драйвер процессора ядра ОС (или любой другой аналог для данной операционной системы) отвечает за мониторинг рабочей нагрузки ЦП и инструктирует аппаратное обеспечение перевести ЦП в состояние управления питанием, выбранное из таблиц ACPI встроенного ПО.

У Microsoft есть статья, описывающая управление питанием в Windows 7 и Server 2008 R2. У IBM есть статья (вероятно, датированная) о Система CPUfreq в Linux.

Редактировать:

Стоит отметить, что многие серверные компьютеры имеют встроенный аппаратный механизм для мониторинга и управления состояниями ЦП. Это тоже не делается «в ЦП», а скорее заменяет функции управления мощностью и производительностью ОС. По моему опыту, это часто дает экономию энергии, но за счет производительности системы.