Ich habe eine Präsentation zu CPU's und es gibt einige Dinge, die ich klarstellen möchte, die in vielen Forschungsberichten definiert sind, bei denen ich nicht ganz sicher bin.
Wie kann die CPU jemals im Leerlauf sein? Ich meine, solange Sie das Betriebssystem ausführen, heißt das nicht, dass ständig einige Anweisungen gesendet werden, die ausgeführt werden sollen? Oder wie kommt es überhaupt zu CPU-Leerlaufzyklen? Sollte der Taskplaner nicht immer einen Auftrag für die CPU haben, wie beispielsweise einen Auftrag mit niedriger Priorität, oder ein Programm, das nur ausgeführt wird, wenn nichts zu tun ist?
Was bedeutet es physikalisch, wenn die CPU in den Energiesparmodus wechselt? Reduziert es einfach die Frequenz, mit der es ausgeführt wird?
Wie funktionieren CPU-Zyklen auf Architekturen mit mehreren Kernen? Gibt es eine globale Uhr für alle Kerne und eine interne Uhr in jedem dieser Kerne, die global synchronisiert wird? Und im Fall von Multi-Core-CPUs, nehme ich an, können wir Zyklen wirklich unabhängig voneinander ablaufen lassen und Nachrichten aneinander weiterleiten, wenn dies erforderlich ist?
Antworten:
Die CPU verfügt über verschiedene Befehle und Energiemodi für die Energieverwaltung: C-Zustände und P-Zustände (und viele andere Zustände) sowie Befehle wie HLT.
http://ilinuxkernel.com/?p=1990
HLT versetzt die CPU in einen völlig funktionsunfähigen Modus, bis der nächste Interrupt (z. B. Timer) eingeht. Wenn es sich um einen Interrupt zwischen den CPUs handelt, versucht eine andere CPU, ihn aufzuwecken.
Dann gibt es die P-Zustände und C-Zustände:
Bildbeschreibung hier eingeben
Und die Regel bei der Energieverwaltung ist, dass die Boot-CPU (cpu0) niemals heruntergefahren wird, nur andere Nicht-Boot-Kerne:
Bildbeschreibung hier eingeben
quelle