Я ищу функцию Windows, структуру, API, которые управляют множителем скорости шины процессора. Другими словами, я пытаюсь отрегулировать частоту процессора, изменяя множитель. В настоящее время я регулирую скорость процессора, изменяя схему питания, используя следующую функцию.
PowerWriteDCValueIndex(…,…,…,…)
И настроить
THROTTLE_MAXIMUM; & THROTTLE_MINIMUM;
Тем не менее, это позволяет мне изменять скорость процессора в%, что не является точным.
Надеюсь, мой вопрос ясен, и вы можете помочь.
Благодарю.
Обработка состояний питания в ОС выполняется модулем драйвера ядра, который будет специфичен, по крайней мере, для конкретного поставщика ЦП, иногда также для модели ЦП (например, операции выполняются в 64-битном процессоре AMD иначе, чем в модели). в 32-битном процессоре AMD. Однажды я играл с драйверами Linux, чтобы установить тактовые частоты процессоров AMD).
Этот драйвер будет управляться процессом «регулятора», который принимает в качестве входных данных параметры конфигурации (политику), которые вы уже используете, текущую нагрузку на ЦП (и часто также некоторую «историю загрузки», чтобы уменьшить слишком много коммутаторов) и другие источники, такие как температура процессора, оставшееся в батарее питание (если применимо). [В мобильных устройствах температура ЦП, безусловно, является входом в уравнение, поскольку большинство современных ЦП и графических процессоров способны потреблять гораздо больше энергии, чем может рассеивать устройство, что приводит к перегреву микросхемы, если настройка мощности остается высокой. слишком долго
К сожалению, вам нужно знать гораздо больше деталей, чем «Я хочу запустить это быстро», прежде чем вы сможете сделать это. Существуют таблицы BIOS (ACPI и / или таблицы других поставщиков), которые определяют, какое напряжение использовать на какой частоте, и вам нужно будет сначала установить напряжение, затем тактовую частоту при увеличении скорости и тактовую частоту, затем напряжение при снижении скорости. Таблицы чаще всего содержат не ВСЕ скорости, с которыми может работать ЦП, а настройки «полная скорость», «средняя скорость» и «медленная скорость». [И будет несколько таблиц для разных типов процессоров, так как BIOS не знает, будет ли человек, строящий систему, использовать высокопроизводительный высокоскоростной процессор или низкоскоростной, маломощный процессор].
Существуют также регистры, которые необходимо запрограммировать, чтобы определить, как долго ЦП должен «спать», прежде чем он переключится на новую скорость, чтобы позволить PLL (которые управляют умножителями тактовой частоты) стабилизироваться. Это означает, что вы не хотите переключаться слишком часто.
Системе также необходимо знать, что тактовая частота изменилась, так что любая обработка, которая зависит от скорости процессора, может быть скорректирована (например, вещам, которые используют инструкцию RDTSC на x86 для измерения коротких времен, потребуется отрегулировать свои тайминги на основе новая настройка).
Если вы не сделаете ВСЕ эти вещи безупречными, у вас будет нестабильная система (а в мобильном устройстве вы даже можете «жарить» чип — или пользователя!).
Непонятно, что вы намерены делать, но в целом лучше оставить эти вещи губернатору, который уже находится в системе, чем пытаться сделать лучшую систему — почти все попытки сделать это «лучше» потерпят неудачу.
Других решений пока нет …