Legende:
- Blau: prüfen
- Rot: Konflikt (cache miss)
- Rosa: schreiben
- Orange: lesen
- Gelb: Zelle frei
- Grün: cache hit
Cache Simulation
Im Applet sind Speicher, Cache und Register dargestellt. Einstellbar sind Asoziativität und Schreibverhalten (write through oder write back) des Cache. Speicher- und Cachegröße sowie Anzahl der Register sind dagegen unveränderbar. Speicher besteht aus 256 Bytes (in Wörtern zusammengefasst), Cache - aus 16 4-Byte Zellen und Anzahl der Register beträgt 8.
In der oberen linken Ecke kann man Befehl auswählen (laden oder speichern), die Speicheradresse eingeben, Ziel- bzw. Quellregister auswählen und Befehlausführung starten. Speicheradresse soll ein vielfaches von von vier sein, da nur mit ganzen Wörtern gearbeitet wird.
Bei jedem Befehl passiert als erstes:
- Aus der Speicheradresse werden Tag und Adresse des Sets im Cache berechnet
- In allen Zellen des Sets wird nun nach dem errechneten Tag gesucht und gleichzeitig Valid-Bit geprüft
Beim Laden der Speicherzelle:
- Falls Tag gefunden und Valid-Bit gesetzt ist, wird Inhalt der Cache-Zelle in das Register geschrieben
- Sonst:
- Falls alle Zellen im Set belegt sind wird eine zufällig zum Überschreiben ausgewählt. Falls Strategie write back ist, wird erst Zelleninhalt in den Speicher geschrieben (falls Dirty-Bit gesetzt ist). Dann wird der Ihnalt des Speichers in die Zelle geladen.
- Sonst wird Speicherinhalt in die erste freie Zelle geladen und Valid-Bit gesetzt.
Beim Schreiben in die Speicherzelle:
- Write back:
- Falls Tag gefunden und Valid-Bit gesetzt ist, schreibe Registeinhalt in die Cache-Zelle.
- Sonst analog wie beim lesen wird die zufällige Zelle nach dem ev. Rückschreiben überscrieben oder erste freie beschrieben.
- in allen Fällen wird Dirty-Bit gesetzt.
- Write through:
- wie bei Write back, nur wird ist der Dirty-Bit nicht vorhanden und es wird bei jedem Schreiben auch in den Speicher geschrieben.
Ludmila und Leonid Scharf im Rahmen der Veranstaltung "Rechner Architektur" an der FU-Berlin, Institut für Informatik.
September 2000.