Wie kann eine CPU ihre Taktfrequenz dynamisch ändern?

15

Meine Intel-CPU ändert die Taktrate je nach Nutzung. Wie entscheidet sie jedoch, mit welcher Taktrate sie ausgeführt wird? Wird die Taktrate von der Betriebssystemsoftware mithilfe eines Algorithmus bestimmt oder ist sie hardwarebasiert? Ist es abhängig von der Anzahl der Interrupts? Der Cache-Umsatz? Stellt die CPU selbst eine eigene Uhr ein? Oder stellt ein separater Controller es ein? Oder Software?

Chloe
quelle
1
Um welche CPU handelt es sich? Eingebettete Systeme funktionieren normalerweise nicht so.
Leon Heller
Vielleicht noch was für SuperUser ?
Einige Embedded-Prozessorfamilien, wie beispielsweise PIC24F, verfügen über programmierbare Taktraten, mit denen Strom gespart werden kann. Ein externer Oszillator kann verwendet werden, damit die Uhr für zeitempfindliche Peripheriegeräte stabil bleibt.
Kaz

Antworten:

18

Der Kerntakt der CPU wird nicht direkt vom Motherboard empfangen. Dieser Takt ist normalerweise viel langsamer (oft um den Faktor 10 oder mehr) als die interne Frequenz der CPU. Stattdessen wird das Taktsignal von der Hauptplatine als Referenzfrequenz für einen Phasenregelkreis-Oszillator mit höherer Frequenz in der CPU verwendet. Der erzeugte Takt läuft mit einem Vielfachen des Referenztakts, und dieses Vielfache kann durch Setzen bestimmter Register in der CPU geändert werden. Die eigentliche Taktgenerierung erfolgt rein hardwaremäßig.

Um die Leistung noch weiter zu reduzieren, signalisiert die CPU dem Spannungsregler auch, dass er seine Kernspannung liefert, um bei einem niedrigeren Sollwert zu laufen. Bei niedrigeren Frequenzen kann die CPU störungsfrei mit einer niedrigeren Spannung betrieben werden. Da der Stromverbrauch proportional zum Quadrat der Spannung ist, kann bereits eine geringe Verringerung der Spannung viel Strom sparen.

Die Spannungs- und Frequenzskalierung wird von der Hardware vorgenommen, die Entscheidung für einen Energiesparmodus wird jedoch von der Software (dem Betriebssystem) getroffen. Wie das Betriebssystem den optimalen Modus für die Ausführung bestimmt, ist ein separates, unübersichtlicheres Problem, aber es hängt wahrscheinlich davon ab, wie viel Prozent der Zeit das System in letzter Zeit im Leerlauf war. Meistens im Leerlauf, senken Sie die Frequenz. Meistens beschäftigt, erhöhen Sie die Frequenz. Sobald das Betriebssystem die Frequenz für die Ausführung festgelegt hat, muss lediglich ein Register eingerichtet werden.

Referenz: " Erweiterte Intel SpeedStep-Technologie für den Intel Pentium M-Prozessor "

Theran
quelle
3
Features wie Intels Turbo Boost erfordern keine Software-Eingriffe, um den thermischen Spielraum durch Erhöhen der Taktfrequenz zu nutzen. Offensichtlich könnte Hardware auch Nicht-Rechenleistungsengpässe nachverfolgen (z. B. durch Zählen der Verzögerungszyklen aufgrund von Speicherzugriffen) und die Häufigkeit verringern, wenn die Rechenleistung nicht der primäre Engpass ist.
Paul A. Clayton
Übrigens sind die Einsparungen in Bezug auf die Schaltfrequenz fast linear und nicht so stark auf die Leitung zurückzuführen, was zu zwei Beziehungen führen würde
JonRB,
3

Nun, auf modernen Betriebssystemen gibt es so etwas wie "Task Scheduler". Es wird regelmäßig (sehr schnell) ausgeführt und wählt (aus einer Liste) die nächste auszuführende Aufgabe aus. Aufgaben können sich in vielen Zuständen befinden, z. B. Auswählen, Blockieren, Schlafen usw.

Wenn sich alle Tasks im Auswahlmodus befinden (auf etwas vom Betriebssystem warten) und nicht bedient werden können, oder wenn sich einige im Ruhezustand befinden usw., so dass der Prozessor nicht überlastet wird, ruft der Taskplaner eine spezielle Task mit dem Namen "Leerlauf" auf ".

Wenn der CPU-Treiber die Task-Scheduler-Tabelle überprüft und sicherstellt, dass die inaktive Task die meiste CPU-Zeit ausgeführt wird, sendet er einfach einen Befehl an die Taktgenerierungs-PLL-Schaltung der CPU, um den Takt zu verringern. Im Gegensatz dazu erhöht der CPU-Treiber die CPU-Geschwindigkeit, wenn die inaktive Task immer weniger CPU-Zeit in Anspruch nimmt (was bedeutet, dass die CPU stark ausgelastet ist).

Es ist nicht sehr schwer, aber es gibt eine Untergrenze, bei der die CPU nicht niedriger gedrosselt werden kann, da nicht alle CPUs vollständig statisch sind (so dass sie Auffrischungszyklen benötigen). Ein vollständig statischer CPU kann bis zu 0 (Null) MHz reichen, da kein Zustand verloren geht, wenn der Takt gestoppt wird.

Jorge Aldo
quelle