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?
16
Réponses:
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 "
la source
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.
la source