Lernziele
In dieser Aufgabe …
- simulieren die Studierenden die Anwendung des MSI-Protokolls.
In der Vorlesung wurde das Cache-Kohärenz-Protokoll MSI vorgestellt, welches im Folgenden betrachtet wird.
Zwei Prozessoren (P1 und P2) und ein einheitlicher Hauptspeicher (en. Uniform Memory) sind über einen gemeinsamen Bus (en. Shared Bus) verbunden, der das MSI-Protokoll zur Cache-Kohärenz verwendet.
Im Speicher befindet sich eine Datenstruktur mit folgendem Aufbau:
A (8 Byte),B (24 Byte),C (8 Byte).Die Größe einer Cache-Zeile (en. Cache Line) beträgt 32 Byte, sodass A und B gemeinsam in Cache-Zeile X liegen, während C in einer separaten Cache-Zeile Y liegt.
Die Prozessoren P1 und P2 führen das folgende Programm aus:
// Prozessor P1
read(A);
read(B);
// arbeite mit A
read(B);
write(A);// Prozessor P2
read(B);
read(C);
// arbeite mit C
read(B);
write(C);
Die folgende Tabelle zeigt die Speicheroperationen der einzelnen Prozessoren in der Reihenfolge, in der sie auf dem gemeinsamen Bus erscheinen.
X und Y im jeweiligen Prozessor an.Zu Beginn befinden sich alle Cache-Zeilen im Zustand Invalid (I).
Diese Aufgabe wurde aus der Vorlesung "Advanced Operating Systems" der Professur für Betriebssysteme an der Technischen Universität Dresden übernommen.
Level 3: Anwenden
Füllen Sie die folgende Tabelle aus:
| P | Operation | P1 X / Y | P2 X / Y | Hauptspeicher-Transfers | Invalidierungen |
|---|---|---|---|---|---|
| I / I | I / I | - | - | ||
| 1 | read(A) | ||||
| 1 | read(B) | ||||
| 2 | read(B) | ||||
| 2 | read(C) | ||||
| 1 | read(B) | ||||
| 1 | write(A) | ||||
| 2 | read(B) | ||||
| 2 | write(C) |
| P | Operation | P1 X / Y | P2 X / Y | Hauptspeicher-Transfers | Invalidierungen |
|---|---|---|---|---|---|
| I / I | I / I | - | - | ||
| 1 | read(A) | S / I | I / I | Mem → X(P1) | - |
| 1 | read(B) | S / I | I / I | - | - |
| 2 | read(B) | S / I | S / I | Mem → X(P2) | - |
| 2 | read(C) | S / I | S / S | Mem → Y(P2) | - |
| 1 | read(B) | S / I | S / S | - | - |
| 1 | write(A) | M / I | I / S | - | X |
| 2 | read(B) | S / I | S / S | X(P1) → Mem (Write Back), Mem → X(P2) | |
| 2 | write(C) | S / I | S / M | - | Y |
In dieser Aufgabe …