Wie läuft eine CPU im Leerlauf (oder läuft unter 100%)?

8

Ich habe zum ersten Mal erfahren, wie Computer in Form einer primitiven, einzelnen gespeicherten Programmmaschine funktionieren.

Jetzt lerne ich über Multitasking-Betriebssysteme, Terminplanung, Kontextwechsel usw. Ich denke, ich habe ein ziemlich gutes Verständnis von allem, bis auf eine Sache. Ich habe mir immer eine CPU als etwas vorgestellt, das gerade nonstop vorwärts fährt. Es weiß immer, wohin es als nächstes geht (Programmzähler), und es geht ad infinitum zu dieser Anweisung usw..

Dies ist eindeutig nicht der Fall, da die CPU meines Desktop-Computers nicht immer zu 100% läuft. Wie schaltet sich die CPU ab oder drosselt sich selbst, und welche Rolle spielt das Betriebssystem dabei? Ich nehme an, irgendwo gibt es eine Eingabe in der CPU, die es ermöglicht, das System auszuschalten ... und das OS kann dies einstellen, wenn es nichts zu planen hat, aber die nächste logische Frage ist, wie es wieder startet? Ich vermute eines von zwei Dingen:

  • Es wird nie vollständig heruntergefahren, sondern läuft nur mit einer sehr niedrigen Frequenz und wartet darauf, dass der Scheduler wieder beschäftigt ist
  • Es wird komplett abgeschaltet, aber durch Interrupts aufgeweckt

Ich habe überall nach Informationen darüber gesucht und kam ziemlich leer heraus. Jede Einsicht würde sehr geschätzt werden.

    
Dave Johnson 02.08.2013, 03:33
quelle

4 Antworten

3

Die Antwort ist, dass dies von der Hardware, dem Betriebssystem und der Art und Weise abhängt, wie das Betriebssystem konfiguriert wurde.

Und es könnte eine oder beide Strategien beinhalten, die Sie vorgeschlagen haben.

Eine weitere Möglichkeit für Maschinen, die auf der x86-Architektur basieren, ist, dass x86 eine HLT Anweisung hat, die den Kern verursacht zu stoppen, bis es einen externen Interrupt empfängt. So könnte die "Idle" -Aufgabe einfach HLT in einer engen Schleife ausführen.

    
Stephen C 02.08.2013, 03:51
quelle
2

Gehen Sie einfach zum Task-Manager, Registerkarte Leistung, und beobachten Sie die CPU-Nutzung, während Sie absolut nichts auf Ihrem Computer tun. es hört nie auf zu schwanken. Wenn ein Betriebssystem wie Windows läuft, wird die CPU IMMER funktionieren, sie wird niemals komplett heruntergefahren.

Wenn Ihr Monitor ein Bild anzeigt, muss Ihre CPU eine Funktion verarbeiten, die es erlaubt, alles anzuzeigen. usw.

Alles läuft durch die CPU, genau wie dein Gehirn, es steuert alles. ohne sie würde nichts funktionieren.

    
Sickest 02.08.2013 03:51
quelle
1

Wenn über die x86-Architektur gesprochen wird, wenn ein Betriebssystem nichts zu tun hat, kann es den HLT-Befehl verwenden. Der HLT-Befehl stoppt die CPU bis zum nächsten Interrupt. Einzelheiten finden Sie Ссылка .

Andere Architekturen haben ähnliche Anweisungen, um der CPU eine Pause zu geben.

    
LRA 02.08.2013 03:52
quelle
1

Einige CPUs haben eine 'Warte auf Unterbrechung' Anweisung, die es der CPU erlaubt, die Ausführung von Befehlen zu stoppen, wenn nichts zu tun ist, und sie wird nicht wieder aufleuchten, bis ein Interrupt-Ereignis eintritt. Dies ist besonders nützlich in Mikrocontrollern, wo sie für lange Zeit warten können, bis etwas passiert.

  • Intel = HLT (Halt)
  • ARM = WFI (Warte auf Unterbrechung)

Manchmal wird auch ein "busy wait" verwendet, bei dem die CPU in einer kleinen "Leerlauf" -Schleife sitzt und nach Aktivitäten sucht. In diesem Fall führt die CPU noch Anweisungen aus, das Betriebssystem befindet sich jedoch im Leerlaufzustand. Es ist nicht so effizient wie mit einem HLT.

Moderne CPUs können auch ihren Stromverbrauch anpassen und Taktraten reduzieren oder Teile der CPU, die nicht benutzt werden, herunterfahren. Auf diese Weise kann der Stromverbrauch während eines aktiven Ruhezustands geringer sein als während der aktiven Verarbeitung, obwohl die Kern-CPU noch immer Befehle ausführt und ausführt.

    
user1961169 02.08.2013 04:01
quelle