Friedrich-Alexander-Universität Erlangen-Nürnberg  /   Technische Fakultät  /   Department Informatik
CPU-Namensbereichsreferenz

Implementierung einer Abstraktion fuer den Prozessor. Mehr ...

Klassen

class  CR
 Zugriff auf die Control Register. Mehr ...
 
class  MSR
 Zugriff auf die Model Specific Register. Mehr ...
 

Funktionen

void pause ()
 Prozessor einen Hinweis auf einen Spinloop geben und "kurz" anhalten. Mehr ...
 
void idle ()
 Prozessor bis zum nächsten Interrupt anhalten. Mehr ...
 
void die ()
 Prozessor dauerhaft anhalten. Mehr ...
 
void halt ()
 Prozessor anhalten. Mehr ...
 

Ausführliche Beschreibung

Implementierung einer Abstraktion fuer den Prozessor.

Derzeit wird angeboten: Interrupts zuzulassen, zu verbieten, den Prozessor in den Haltmodus zu schicken oder ganz anzuhalten.

Dokumentation der Funktionen

◆ die()

void CPU::die ( )
inline

Prozessor dauerhaft anhalten.

Hält den Prozessor an. Intern werden dazu die Interrupts mit cli gesperrt und anschließend der Prozessor mit hlt angehalten. Da der Haltezustand nur durch einen Interrupt verlassen werden könnte, ist somit garantiert, dass die CPU bis zum nächsten Kaltstart "steht". Das Programm kehrt aus die() nie zurück. In einer Multiprozessorumgebung hat die Ausführung der Funktion nur Auswirkungen auf die CPU, die ihn ausführt. Die anderen CPUs laufen weiter.

◆ halt()

void CPU::halt ( )
inline

Prozessor anhalten.

Hält den Prozessor an. Intern wird dazu die hlt Instruktion ausgeführt. In diesem Zustand verbraucht der Prozessor sehr wenig Strom. Nur ein Interrupt kann den Prozessor aufwecken.

◆ idle()

void CPU::idle ( )
inline

Prozessor bis zum nächsten Interrupt anhalten.

Versetzt den Prozessor in den Haltezustand, aus dem er nur durch einen Interrupt wieder erwacht. Intern werden dazu die Interrupts mit sti freigegeben und der Prozessor mit hlt angehalten. Intel garantiert, dass die Befehlsfolge sti hlt atomar ausgeführt wird.

◆ pause()

void CPU::pause ( )
inline

Prozessor einen Hinweis auf einen Spinloop geben und "kurz" anhalten.

Fördert die CPU Performance während eines Spinloops, indem ein kleiner Moment gewartet wird und nicht auf den Speicher zugegriffen wird.