Sie sind auf Seite 1von 1

CACHE Also reagiert der direct mapped cache gegen Instruktionsströme z. B.

aus Programmschleifen mit


Befehlen oder Daten, die sich an der Adresse „x“ Modulo der Cachegröße befinden anfällig, da
In einem 32-Bit Mikrorechnersystem ist ein Cache von 1kbyte vorhanden. jede Speicherzelle nur einen einzigen Eintrag in der Cache-Kopie besitzt. Gibt es nun beim Zugriff
Das Laden des Caches erfolgt in Rahmen zu je 8 Bytes. auf einen solchen Cache einen Fehlversuch bei einer bestimmten Adresse „n“, muß die Maschine
einen Buszylus zum Hauptspeicher initieren und man erhält solange die Schleife läuft, immer ein
Die Hauptspeicheradresse ist 24 Bit lang.
Miss , da man immer die gerade benötigte Instruktion durch eine neue ersetzen muß. Das nennt
man auch „Trashing“. Durch die feste Zuordnung ist nur eine Blockversetzungstrategie möglich,
1 Byte = 8 Bit 2 Word = 1 DWord die auf zurückliegende Zugriffe keine Rücksicht nimmt. Ist der Cache höher assoziativ organisiert,
2 Byte = 1 Word 4 Word = 2 DWords n Bytes = n/4 DWords hat man also pro Hauptspeicheradresse mehrere Einträge, tritt dieser Kollisionsfall nicht oder viel
seltener auf.
a) Wieviele Zeilen umfaßt der Cache ?
Die Cache Größe kann man mit folgender Formel berechnen: Eingesetzt in (2) wird also S = 1024 Byte / 2 D * 4 Byte = 128 Zeilen

Num (Sets) * Frames * Num (DW´s) * DW = Cache Size [Bytes] D.h. der Cache hätte dann eine Länge von 128 Zeilen.

Formel : C = S * F * D * DW, wobei Beispiele für 32 Bit Prozessoren:

F = Frames, Assozität DW = DW µP NS32532: 32 Sets * 2 Frames * 4 DW´s * 4 Bytes/DW = 1024 Bytes ≈ 1 KB


D = Num (DW´s) C = Cache Size [Bytes] µP i486 128 Sets * 4 Frames * 4 DW´s * 4 Bytes/DW = 8192 Bytes ≈ 8 KB
S = Num (Sets) ; Sets sind Sätze, Zeilen, oder Lines, µP 68040 64 Sets * 4 Frames * 4 DW´s * 4 Bytes/DW = 4096 Bytes ≈ 4 KB
µP 601 64 Sets * 8 Frames * 8 DW´s * 8 Bytes/DWord = 32768 Bytes ≈ 32 KB
Die gesuchte Anzahl an Zeilen entspricht den Sets, d.h.: S = C / ( F * D * DW ) (2)
b) Wie sieht die Unterteilung des Hauptspeicher aus ?
Da bei der Aufgabe keine Angabe über die Assozität gegeben ist, setzen wir als Der vollassoziative Cache hat die größte Flexibilität, da jeder Block des Hauptspeichers
Einfachstes einen direct-mapped cache an. Damit wird Frames zu 1.Genauso könnte man jeden Rahmen des Caches belegen kann. Der direct mapped cache unterteilt dagegen den
natürlich argumentieren, daß man einen vollassoziativen Cache annimmt, oder einen gesamten Arbeitsspeicher im Umfang von 2n Adressen bei 2i Einträgen in 2n-i Seiten mit
üblichen 4-fach assoziativen Cache. Dies wirkt sich natürlich auf die Anzahl an jeweils 2i langen Blöcken
notwendigen Adresskomparatoren aus, die bei voll assoziativem Cache gleich der
Rahmenanzahl sind und bei n fach assoziativem Cache gleich der Anzahl Ramen pro Set c) Wieviele und welche Bitvergleicher werden in beiden Varianten benötigt ?
sind. Bei Direct mapped cache braucht man nur noch einen Komparator. Beim Die Anzahl an notwendigen paralleler Adresskomparatoren ist bei voll assoziativem
vollassoziativen Cache ist die Blockversetzungs-strategie sehr aufwendig. Die kann z.B. Cache gleich der Rahmenanzahl. D.h. bei einem aus n = 4 Byte breiten System ergibt sich
nach dem LRU-Prizip oder zufällig erfolgen. für die Breite der Adresskomparatoren am Tag-Ram folgende Formel
Ein direct mapped Cache hat die Gefahr der Kollision. Das sogennante Trashingproblem
tritt insbesondere in diesen Architekturen auf, da jede Speicherzelle nur einen einzigen n * 8 - (2 * ld n) = 4 * 8 Bit/Byte - 2 * 2 = 28 Bit.
Eintrag in der Cache-Kopie besitzt. Gibt es nun beim Zugriff auf einen solchen Cache
einen Fehlversuch bei einer bestimmten Adresse „n“, muß die Maschine einen Buszyklus Bei n-fach assoziativem Cache sind die benötigten Adress-komparatoren gleich der
zum Haupt-speicher initiieren. Kommt man im Instruktionsstrom, z.B. innerhalb einer Anzahl Ramen pro Set. Bei direct mapped cache braucht man nur noch einen einfachen 1
Programmschleife, an einen Befehl oder an eine Datum, das sich im Hauptspeicher an der aus n Decoder als Komparator, wobei n gleich der Anzahl an Zeilen des Caches ist.
Adresse „x“ Modulo der Cache-Größe befindet, wird man erneut ein „Cache miss“ haben
und einr gerade benötigte Instrukiotn durch eine neue ersetzten müssen. Solange man sich
in der Programmschleife befindet, wird sich dieser Fall ständig wiederholen - man
produziert ein „Cache miss“ nach dem anderen.