Как процессор может динамически изменять свою тактовую частоту?

Мой процессор Intel изменяет тактовую частоту в зависимости от использования, но как он решает, с какой тактовой частотой работать? Тактовая частота определяется программным обеспечением ОС с использованием алгоритма или аппаратно? Зависит ли это от количества прерываний? Оборот кеша? Сам ЦП устанавливает свои собственные часы? Или его устанавливает отдельный контроллер? Или программное обеспечение?

Какой процессор? Встроенные системы обычно так не работают.
Возможно, что-то еще для SuperUser ?
Некоторые семейства встраиваемых процессоров, например, PIC24F, имеют программируемую тактовую частоту, и это можно использовать для экономии энергии. Можно использовать внешний генератор, чтобы часы чувствительных ко времени периферийных устройств оставались стабильными.

Ответы (2)

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

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

Масштабирование напряжения и частоты выполняется аппаратно, но решение о работе в режиме пониженного энергопотребления принимается программным обеспечением (ОС). То, как ОС определяет оптимальный режим для запуска, является отдельной, более сложной проблемой, но, скорее всего, она сводится в основном к тому, сколько времени система простаивала в последнее время. В основном бездействует, понизьте частоту. В основном занято, поднимите частоту. Как только ОС решает, на какой частоте работать, остается только установить регистр.

Ссылка: " Улучшенная технология Intel SpeedStep для процессора Intel Pentium M "

Такие функции, как Turbo Boost от Intel, не требуют вмешательства программного обеспечения для использования теплового запаса за счет увеличения тактовой частоты. Очевидно, что аппаратное обеспечение может также отслеживать узкие места производительности, не связанные с вычислениями (например, путем подсчета циклов простоя из-за доступа к памяти) и снижать частоту, когда производительность вычислений не является основным узким местом.
Между прочим, экономия в отношении частоты переключения почти линейна и не так велика из-за проводимости, которая была бы соотношением av ^ 2

Ну, в современных операционных системах есть нечто, называемое «планировщик заданий». Он запускается периодически (очень быстро) и выбирает (из списка), какую следующую задачу выполнить. Задачи могут находиться во многих состояниях, например, выбранные, заблокированные, спящие и т. д.

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

Если драйвер ЦП проверит таблицу планировщика задач и убедится, что бездействующая задача работает большую часть времени ЦП, он просто отправит команду схеме PLL генерации тактовой частоты ЦП, чтобы уменьшить ее тактовую частоту. Наоборот, если бездействующая задача занимает все меньше и меньше процессорного времени (это означает, что процессор интенсивно используется), драйвер ЦП увеличит скорость ЦП.

Это не очень сложно, но есть нижний предел, при котором ЦП нельзя снизить, потому что не все ЦП полностью статичны (поэтому им нужны циклы обновления). Полностью статический процессор может опускаться до 0 (ноль) МГц, потому что нет состояния, которое может быть потеряно, если часы остановлены.