Arbeitsspeicher ist (im Vergleich zum Prozessor) langsam
Ohne Cache müsste die CPU ständig auf den Arbeitsspeicher warten
Cache enthält einen Teil der Daten aus dem Arbeitsspeicher – und zwar den, auf dem die CPU aktuell arbeitet
zeitliche und örtliche Lokalität
Bei Lesezugriff wird geprüft ob Datum im Cache
JA: Datum kann direkt aus Cache zurückgegeben werden
NEIN: Datum muss (langsam) aus Arbeitsspeicher gelesen werden und wird zusätzlich in Cache eingefügt
Hit-Rate = Treffer / Zugriffe
Wenn Datum geschrieben wird, dass nicht im Cache ist: in Cache und Arbeitsspeicher schreiben
Ist das Datum jedoch schon im Cache gibt es mehrere Verfahren
Write through: immer gleichzeitig in Arbeitsspeicher und Cache schreiben
Buffered write through: immer direkt in Cache; erst nachdem Puffer voll ist in Arbeitsspeicher
Write Back: nur in Cache + Kennzeichnung – wird das Datum dann aus Cache verdrängt → Schreiben in Arbeitsspeicher
Bei allen Verfahren: Konsistenz vs. Geschwindigkeit
Folie 5.46
Nicht einzelne Bytes werden gecached, sondern ganze Blöcke/Cache-Lines (z.B. 64 Byte)
Jeder Block wird in einem Blockrahmen (die Speicher“zelle”) gespeichert
Daher wird nicht ganze Adresse verglichen sondern immer nur die Basisadresse
Der Rest wählt das richtige Byte aus der Cache-Line aus
Mehrere Blockrahmen können zu Sets zusammengefasst werden
Wenn neues Datum in vollen Cache rein soll, dann muss eine Datum rausgeworfen werden, aber welches?
Nur nötig bei Voll-Assoziativ oder n-Way-Set-Associative