Comment les processeurs contrôlent-ils leur vitesse d'horloge?


12

J'ai récemment rencontré un processeur STM avec 2 oscillateurs sur le circuit - je suppose que l'un pour un fonctionnement à haute vitesse et l'autre pour une faible puissance.

Pour quelque chose comme un processeur de bureau où la vitesse d'horloge peut être modifiée à n'importe quelle fréquence souhaitée (dans des limites raisonnables) - comment cela fait-il physiquement ?


1
Comme l'indique la réponse d'Alex, la fréquence du processeur de bureau moderne n'est pas variable en continu. Il va généralement par pas de 100 ou 133 MHz. (Connexes: comment un processeur x86 moderne décide-t-il quand changer les fréquences, pour "turbo" au-dessus de la vitesse nominale maximale, ou si le système d'exploitation cède le contrôle total de la gestion de l'alimentation au processeur (Intel Skylake): SKL a un sur-die microcontrôleur avec autant de transistors qu'un 486, juste pour prendre des décisions de fréquence: pourquoi cette boucle de retard commence-t-elle à fonctionner plus rapidement après plusieurs itérations sans sommeil?
Peter Cordes

Réponses:


21

Cela se fait à l'aide d'un périphérique appelé boucle à verrouillage de phase , ou PLL. Voici un schéma de principe d'une PLL de base:

schématique

simuler ce circuit - Schéma créé à l'aide de CircuitLab

L'oscillateur de la carte mère ne fonctionne pas à la fréquence d'horloge du processeur, mais à une fréquence de l'ordre de 100 MHz. Cet oscillateur sert uniquement de fréquence de référence connue et stable. À l'intérieur du CPU, la fréquence d'horloge réelle sera générée par un oscillateur commandé en tension , ou VCO. Le VCO peut être réglé pour générer des fréquences sur une plage relativement large, mais en soi, il n'est pas particulièrement stable ou précis - pour une tension de commande donnée, la fréquence variera d'une partie à l'autre et avec la tension d'alimentation et la température. Une boucle à verrouillage de phase sert alors à verrouiller la fréquence de sortie du VCO dans une relation spécifique avec la fréquence de référence.

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

Par exemple, supposons que la fréquence de référence est de 100 MHz, la référence est divisée par 1 (D) et le VCO est divisé par 30 (M). Il en résulterait une fréquence de sortie de 100 MHz * 30/1 = 3 GHz. Cette relation peut être modifiée en changeant simplement les paramètres du diviseur, ce qui peut être fait dans le logiciel via les registres de contrôle. Notez que changer la fréquence à la volée peut ne pas être aussi simple que de simplement changer les valeurs du diviseur, la fréquence doit être modifiée de manière à garantir que le CPU ne voit pas de `` pépins '' ou d'impulsions d'horloge trop courtes. Il peut être nécessaire d'utiliser 2 PLL et de basculer entre elles, ou d'arrêter temporairement l'horloge ou de passer à une autre source d'horloge jusqu'à ce que la PLL se stabilise à la nouvelle fréquence.

Les PLL sont utilisées partout pour générer des fréquences précises et facilement accordables à partir de références fixes et stables. Votre carte Wi-Fi et votre routeur Wi-Fi les utilisent pour sélectionner le canal approprié en générant ce que l'on appelle la fréquence de l'oscillateur local, un signal utilisé à l'intérieur de la radio pour convertir en amont et en aval les données modulées. Votre radio FM en utilise probablement un pour activer le contrôle du logiciel sur la fréquence de réception, permettant un rappel facile des différentes stations. Les PLL sont également utilisées pour générer les signaux d'horloge haute fréquence utilisés pour piloter les sérialiseurs et désérialiseurs pour Ethernet, PCI express, série ATA, Firewire, USB, DVI, HDMI, DisplayPort et de nombreux autres protocoles série modernes.


7

En plus des réponses précédentes ...

Votre micro STM a presque certainement le deuxième oscillateur pour l'horloge en temps réel. Cela permet à l'horloge de continuer à fonctionner (consommant un minimum d'énergie) tandis que le reste de la puce et le reste du circuit sont hors tension. L'appareil peut ensuite garder son horloge et son calendrier en cours d'exécution, et généralement il peut également redémarrer le processeur principal sur une minuterie également - toutes choses utiles pour les appareils intégrés.


L'horloge en temps réel est généralement beaucoup plus lente que l'horloge principale (32 kHz est typique), et à cause de cela, l'oscillateur d'horloge en temps réel et le circuit connecté peuvent avoir une consommation de courant très faible.
mkeith

@mkeith La faible vitesse d'horloge est importante, bien sûr, mais c'est principalement parce que presque tout le processeur est éteint.
Graham

Graham, la question initiale est de savoir pourquoi il y a deux oscillateurs. En principe, vous pourriez avoir un arrêt partiel avec un seul oscillateur et économiser beaucoup d'énergie de cette façon. La raison pour laquelle il existe un deuxième oscillateur à vitesse inférieure est que la consommation d'énergie dynamique est corrélée linéairement avec la fréquence d'horloge. Ainsi, la consommation d'énergie dynamique d'un circuit à 32 kHz sera environ 300x inférieure à la consommation d'énergie dynamique d'un circuit à 10 MHz. La vitesse d'horloge réduite est un élément important de la réponse, à mon avis.
mkeith

@mkeith Ce n'est pas "en principe" - c'est exactement ainsi que cela fonctionne sur chaque puce avec un RTC. Bien sûr, la partie RTC utilise un oscillateur à vitesse inférieure pour économiser la vitesse. Mais la partie RTC n'utilise jamais l'horloge d'oscillateur plus rapide - c'est un circuit entièrement séparé sur le même morceau de silicium; et de même le reste de la puce n'utilise jamais l'horloge d'oscillateur plus lente. Le CCF lui-même consomme moins d' énergie en courant à une vitesse d'horloge plus lente, bien sûr, mais l' ensemble du reste de la puce est de 100% hors tension et prend courant nul (bien, nanoampères de courant de fuite, mais qui est tout).
Graham

1
@mkeith Bien sûr, et je suis d'accord (bien que la fréquence des cristaux RTC provienne historiquement des mouvements électromécaniques à quartz des horloges et des montres, et non des économies d'énergie dans l'électronique). Je voulais juste clarifier pour l'OP que l'horloge plus lente n'est pas pour un mode "basse consommation" sur le processeur principal - c'est pour un périphérique entièrement séparé.
Graham

0

très soigneusement !

entrez la description de l'image ici

Les processeurs ont des prescalaires programmables binaires et une PLL avec VCO pour piloter le compteur afin qu'il multiplie l'horloge FSB du bus frontal (disons 100 MHz).
Ce mode d'économie d'énergie dynamique est automatiquement sélectionné lorsque l'utilisation du processeur est faible avec les bons pilotes de CPU, CPU, OS et BIOS.

Mon i7 (8cpu) passe de 3101 MHz à 800 MHz et passe instantanément à 1100, 1300, 1500 ... etc

Si le BIOS choisit x31 comme dans mon cas, le processeur fonctionne à 100 MHz x 3100 MHz et avec un compteur binaire dans le processeur, choisissez de x8 à x15 pour réduire la puissance du processeur en même temps qu'il régule la tension de la puce du processeur dans le 0,9 V région tout pour économiser l'énergie.

Je peux afficher mon curseur dans le coin supérieur droit sur Win8.1 avec CPU% et memory%

entrez la description de l'image ici

En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.