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

12

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

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

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

Ответы:

21

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

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

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

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

fPFD=fref/D=fout/Mfout=frefM/D

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

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

alex.forencich
источник
7

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

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

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

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

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

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

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

Если Bios выбирает x31, как в моем случае, то процессор работает на частоте 100 МГц x 3100 МГц и с двоичным счетчиком в ЦП выберите значение от x8 до x15, чтобы уменьшить мощность ЦП одновременно с регулированием напряжения на чипе ЦП в 0,9 В регион все для сохранения власти.

Я могу отобразить курсор в правом верхнем углу на Win8.1 вместе с CPU% и memory%

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

Тони Стюарт Sunnyskyguy EE75
источник