« »

Kontextwechsel

In der Vorlesung wurde das Konzept des Kontextwechsels (en. Context Switch) vorgestellt. Um die Auswirkungen von Kontextwechseln zu verdeutlichen, sollen Sie eine vereinfachte Simulation durchführen. Wir nehmen folgende Eigenschaften des Prozessors an:

a)

Level 1: Wissen

Bei einem Kontextwechsel muss der Prozessor alle für den Prozess relevanten Eigenschaften zwischenspeichern. Welche Informationen müssen gespeichert werden und wo werden diese in der Regel gespeichert?

Lösung
  • zu speichernde Daten:
    • alle Registerinhalte (31 General-Purpose-Register – x0 ist immer Null, muss also nicht gesichert werden)
    • Programmzähler (en. Program Counter)
    • weitere Metadaten zum Prozess (Speicher, Zustand, Nutzer, Ressourcen, Zugriffsrechte …)
  • mögliche Speicherorte:
    • Stack des unterbrochenen Prozesses
    • zum Prozess gehöriger Process Control Block (PCB)
  • illustrativer Inhalt eines (rudimentären) PCBs:
typedef struct {
	// Register:
	uint32_t pc;           // Program Counter
	uint32_t sp;           // Stack Pointer
	//

	// Metainformationen:
	enum pstate state;     // Prozesszustand
	//
} PCB;

b)

Level 3: Anwenden

Berechnen Sie unter Annahme der oben genannten Systemeigenschaften, welche Zeit ein Kontextwechsel in Anspruch nimmt, also die Zeit zwischen dem Anstoß des Kontextwechsels und dem Beginn der Ausführung des nächsten Prozesses. Gehen Sie für diese Aufgabe davon aus, dass ein Speicherzugriff keine Verzögerungen verursacht.

Lösung

Berechnung der benötigten Taktzyklen für einen Kontextwechsel:

  • Speichern der Registerinhalte (sw): 32 Register · 5 Taktzyklen pro Instruktion = 150 Taktzyklen
  • Laden der Registerinhalte (lw): 32 Register · 5 Taktzyklen pro Instruktion = 150 Taktzyklen
  • Sprung zur nächsten Instruktion des Folgeprozesses: 5 Taktzyklen
  • insgesamt: 325 Taktzyklen

Ein Taktzyklus dauert $\frac{1}{2 \times 10^9} = 0.5$ ns.
Ein Kontextwechsel dauert also $325 \times 0.5$ ns = 162.5 ns.

Hinweis: Wir nehmen in dieser Lösung vereinfachend an, dass die Ausführung des Privilegienwechsels (mret-Instruktion) nur 5 Taktzyklen benötigt. In der Realität umfasst dies mehrere Instruktionen und dauert somit länger.

c)

Level 2: Verstehen

Wie schnell wäre der Kontextwechsel bei einem 100-MHz-System (z. B. bei einem eingebetteten System)?

Lösung

Der Kontextwechsel dauert 20-mal so lange wie mit 2 GHz, also 3.250 ns = 3,25 µs.

Lernziele

In dieser Aufgabe …

  • vergegenwärtigen sich die Studierenden, welche prozessbezogenen Metadaten beim Kontextwechsel beachtet werden müssen.
  • berechnen und interpretieren die Studierenden die Kosten von Rechenoperationen.