Как процессоры контролируют свою тактовую частоту?

Недавно я наткнулся на STM-процессор с 2 генераторами на схеме — полагаю, один для высокоскоростной работы, а другой — для малой мощности.

Для чего-то вроде десктопного процессора, где тактовую частоту можно менять на любую желаемую частоту (в пределах разумного) — как он это делает физически ?

Как показывает ответ Алекса, частота процессора современного настольного компьютера не меняется постоянно. Обычно это происходит с шагом 100 или 133 МГц. (Связано: как современный процессор x86 решает , когда менять частоты, для «турбо» выше максимальной номинальной скорости, или если ОС передает полный контроль над управлением питанием ЦП (Intel Skylake): SKL имеет встроенный микроконтроллер с таким же количеством транзисторов, как 486, просто для принятия решений по частоте: почему эта петля задержки начинает работать быстрее после нескольких итераций без сна?

Ответы (3)

Это делается с помощью устройства, называемого контуром фазовой автоподстройки частоты или PLL. Вот блок-схема базовой PLL:

схематический

смоделируйте эту схему - схема, созданная с помощью CircuitLab

Генератор на материнской плате работает не на тактовой частоте процессора, а на частоте порядка 100 МГц. Этот генератор служит только в качестве известной стабильной опорной частоты. Внутри ЦП фактическая тактовая частота будет генерироваться генератором, управляемым напряжением , или VCO. ГУН можно настроить для генерации частот в относительно широком диапазоне, но сам по себе он не особенно стабилен или точен — при заданном управляющем напряжении частота будет варьироваться от части к части, а также в зависимости от напряжения питания и температуры. Затем контур фазовой автоподстройки частоты служит для привязки выходной частоты ГУН к заданному соотношению с опорной частотой.

Выходы как опорного генератора, так и ГУН делятся программируемыми делителями (с коэффициентом D для опорного и М для выхода ГУН), а затем сравниваются с фазовым и частотным детектором (PFD). Выход PFD фильтруется и используется для управления VCO. Это формирует контур управления, известный как контур фазовой автоподстройки частоты, поскольку он служит для приведения фазы разделенного ГУН в соответствие с фазой разделенного опорного сигнала. На входе ЧФД частота будет ф п Ф Д знак равно ф р е ф / Д знак равно ф о ты т / М . Результатом является выходная частота с определенной математической зависимостью от опорной частоты, ф о ты т знак равно ф р е ф * М / Д . Как видно из этого уравнения, делитель частоты на выходе ГУН умножает опорную частоту на ее коэффициент деления. Таким образом, PLL может эффективно генерировать гораздо более высокие частоты, чем опорная частота.

Например, предположим, что опорная частота равна 100 МГц, опорная частота делится на 1 (D), а VCO делится на 30 (M). Это приведет к выходной частоте 100 МГц * 30/1 = 3 ГГц. Это соотношение можно изменить, просто изменив настройки делителя, что можно сделать в программном обеспечении через управляющие регистры. Обратите внимание, что изменение частоты на лету может быть не таким простым, как простое изменение значений делителя, частота должна быть изменена таким образом, чтобы ЦП не видел никаких «глюков» или слишком коротких тактовых импульсов. Может оказаться необходимым использовать 2 PLL и переключаться между ними, или временно останавливать тактовый генератор, или переключаться на другой источник тактового сигнала, пока PLL не стабилизируется на новой частоте.

PLL используются повсеместно для генерации точных, легко настраиваемых частот из фиксированных, стабильных опорных сигналов. Ваша карта Wi-Fi и маршрутизатор Wi-Fi используют их для выбора соответствующего канала, генерируя так называемую частоту гетеродина, сигнал, используемый внутри радиостанции для преобразования с повышением и понижением частоты модулированных данных. Ваше FM-радио, скорее всего, использует его, чтобы включить программное управление частотой приема, что позволяет легко вызывать разные станции. PLL также используются для генерации высокочастотных тактовых сигналов, используемых для управления сериализаторами и десериализаторами для Ethernet, PCI Express, Serial ATA, Firewire, USB, DVI, HDMI, DisplayPort и многих других современных последовательных протоколов.

В дополнение к предыдущим ответам...

Ваш STM micro почти наверняка имеет второй осциллятор для часов реального времени. Это позволяет часам продолжать работать (потребляя минимальное количество энергии), в то время как остальная часть микросхемы и остальная часть схемы отключены. Затем устройство может поддерживать работу своих часов и календаря, и, как правило, оно также может перезапускать основной процессор по таймеру — все это полезно для встроенных устройств.

Часы реального времени обычно намного медленнее, чем основные часы (обычно 32 кГц), и из-за этого генератор часов реального времени и подключенная схема могут иметь очень низкое потребление тока.
@mkeith Низкая тактовая частота, конечно, важна, но в основном потому, что почти весь процессор выключен.
Грэм, исходный вопрос о том, почему существует два осциллятора. В принципе, вы можете частично отключить только один генератор, и таким образом вы сэкономите много энергии. Причина наличия второго генератора с более низкой скоростью заключается в том, что динамическое энергопотребление линейно коррелирует с тактовой частотой. Таким образом, динамическое энергопотребление схемы 32 кГц будет примерно в 300 раз меньше, чем динамическое энергопотребление схемы 10 МГц. На мой взгляд, сниженная тактовая частота является важной частью ответа.
@mkeith Это не «принципиально» - именно так это работает на каждом чипе с RTC. Конечно, часть RTC использует генератор с более низкой скоростью для экономии скорости. Но часть RTC никогда не использует более быстрые часы генератора — это совершенно отдельная схема на том же куске кремния; точно так же остальная часть чипа никогда не использует более медленную тактовую частоту генератора. Конечно, сам RTC потребляет меньше энергии, работая на более низкой тактовой частоте, но вся остальная часть чипа на 100% выключена и потребляет нулевой ток (ну, наноампер тока утечки, но это все).
Я не оспариваю ничего из того, что вы говорите. Но один из вопросов ОП: почему осцилляторов два? Это может быть не основной вопрос вопроса, но это подвопрос. Сказать, что один из них для RTC, это правда. Но зачем RTC нужен второй тактовый кристалл? Почему бы RTC просто не использовать тот же кристалл? Ответ заключается в том, что RTC работает на более низкой скорости, чем кристалл основного процессора. И это происходит потому, что работа на более низкой скорости экономит энергию. Извините, если я не очень хорошо объясняю свою точку зрения.
@mkeith Конечно, и я согласен (хотя частота кристаллов RTC исторически возникает из-за кварцевых электромеханических механизмов в часах, а не из-за энергосбережения в электронике). Я просто хотел уточнить для OP, что более медленные часы предназначены не для режима «с низким энергопотреблением» на основном процессоре, а для совершенно отдельного периферийного устройства.

очень осторожно !

введите описание изображения здесь

ЦП имеют двоичные программируемые предварительные скаляры и PLL с VCO для управления счетчиком, чтобы он умножал тактовую частоту передней шины, FSB (скажем, 100 МГц).
Этот динамический режим энергосбережения выбирается автоматически, когда загрузка ЦП низкая с правильными драйверами ЦП, ЦП, ОС и BIOS.

Мой i7 (8 процессоров) переходит с 3101 МГц на 800 МГц и мгновенно делает шаги 1100, 1300, 1500... и т. д.

Если биос выбирает x31 как в моем случае, то процессор работает на частоте 100MHz x 3100MHz и с двоичным счетчиком в CPU выбираете от x8 до x15, чтобы уменьшить мощность процессора, в то же время он регулирует напряжение чипа процессора в 0,9В. регион все для экономии энергии.

Я могу отображать курсор в правом верхнем углу на Win8.1 вместе с % ЦП и % памяти

введите описание изображения здесь