Comment un processeur peut-il changer dynamiquement sa fréquence d'horloge?


16

Mon processeur Intel change la vitesse d'horloge en fonction de l'utilisation, mais comment décide-t-il de la vitesse d'horloge à exécuter? La vitesse d'horloge est-elle déterminée par le logiciel du système d'exploitation à l'aide d'un algorithme ou est-elle basée sur le matériel? Dépend-il du nombre d'interruptions? Le chiffre d'affaires du cache? Le CPU lui-même règle-t-il sa propre horloge? Ou un contrôleur séparé le définit-il? Ou un logiciel?


1
De quel processeur s'agit-il? Les systèmes embarqués ne fonctionnent généralement pas comme ça.
Leon Heller

Peut-être plus pour SuperUser ?

Certaines familles de processeurs intégrés, comme par exemple PIC24F, ont des fréquences d'horloge programmables, et cela peut être utilisé pour économiser de l'énergie. Un oscillateur externe peut être utilisé pour que l'horloge des périphériques sensibles au temps reste stable.
Kaz

Réponses:


18

L'horloge de base du CPU n'est pas reçue directement de la carte mère. Cette horloge est généralement beaucoup plus lente (souvent d'un facteur 10 ou plus) que la fréquence interne du processeur. Au lieu de cela, le signal d'horloge de la carte mère est utilisé comme fréquence de référence pour un oscillateur commandé par boucle verrouillée en phase de fréquence plus élevée à l'intérieur du CPU. L'horloge générée fonctionne à un multiple de l'horloge de référence, et ce multiple peut être modifié en définissant certains registres dans le CPU. La génération réelle de l'horloge est purement matérielle.

Pour réduire encore plus la puissance, le CPU signale également au régulateur de tension fournissant sa tension de base pour fonctionner à un point de consigne inférieur. À des fréquences plus basses, le CPU peut fonctionner à une tension inférieure sans dysfonctionnement, et parce que la consommation d'énergie est proportionnelle au carré de la tension, même une petite réduction de tension peut économiser une grande quantité d'énergie.

La mise à l'échelle de la tension et de la fréquence est effectuée par le matériel, mais la décision de fonctionner en mode basse consommation est prise par le logiciel (le système d'exploitation). La façon dont le système d'exploitation détermine le mode optimal pour s'exécuter est un problème distinct et plus compliqué, mais cela se résume probablement au pourcentage de temps pendant lequel le système a été inactif récemment. Généralement inactif, abaissez la fréquence. Généralement occupé, augmentez la fréquence. Une fois que le système d'exploitation décide de la fréquence d'exécution, il suffit de définir un registre.

Référence: " Technologie Intel SpeedStep améliorée pour le processeur Intel Pentium M "


3
Des fonctionnalités telles que Turbo Boost d'Intel ne nécessitent aucune intervention logicielle pour exploiter la marge thermique en augmentant la fréquence d'horloge. De toute évidence, le matériel pourrait également suivre les goulots d'étranglement des performances non liées au calcul (par exemple, en comptant les cycles de décrochage dus aux accès à la mémoire) et réduire la fréquence lorsque les performances de calcul ne sont pas le principal goulot d'étranglement.
Paul A. Clayton

Btw les économies par rapport à la commutation de fréquence sont presque linéaires et moins en raison de la conduction, ce qui serait des relations av ^ 2
JonRB

3

Eh bien, sur les systèmes d'exploitation modernes, il existe quelque chose appelé "planificateur de tâches". Il s'exécute périodiquement (très rapidement) et sélectionne (dans une liste) la prochaine tâche à exécuter. Les tâches peuvent être dans de nombreux états, comme sélectionner, bloqué, dormir, etc.

Si toutes les tâches sont en mode de sélection (en attente de quelque chose du système d'exploitation) et ne peuvent pas être exécutées, ou si certaines sont en sommeil, etc., il n'y a donc pas d'utilisation intensive du processeur en cours, le planificateur de tâches invoquera une tâche spéciale appelée "inactive" ".

Si le pilote CPU vérifie la table du planificateur de tâches et vérifie que la tâche inactive s'exécute la plupart du temps CPU, il enverra simplement une commande au circuit PLL de génération d'horloge de la CPU pour réduire son horloge. Au contraire, si la tâche inactive prend de moins en moins de temps CPU (ce qui signifie que le CPU est utilisé de manière intensive), le pilote du CPU augmentera la vitesse du CPU.

Ce n'est pas très difficile, mais il y a une limite inférieure où le processeur ne peut pas être étranglé plus bas car tous les processeurs ne sont pas entièrement statiques (ils ont donc besoin de cycles de rafraîchissement). Les processeurs entièrement statiques peuvent descendre jusqu'à 0 (zéro) MHz car il n'y a aucun état à perdre si l'horloge est arrêtée.

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.