Cache im Computer vollassoziativ Aufgabe?

1 Antwort

Gemäß der wenigen Angaben die du hier anbringst:

Der Cache hat 4 Lines, wobei jeder Block 64 KiBi hat. Die hinteren 16 Bit der Adresse sind also der Offset (innerhalb des Blocks).

Die von Dir angegeben HexaDezzahlen sind 32 Bit, d.h. die vorderen 15 Bit (4 Hexstellen) sind das Tag.

Ist eienr der Cachebläche mit diesem Tag z.B. 9AAF getagged, dann ist es ein Hit, sonst ein Miss.


RedDevil1982 
Fragesteller
 26.07.2023, 09:44

Ok, Verstanden!

0x9AAF 4D5A
Die Adresse liegt vom Hauptspeicher vor. Der Cache ist momentan leer. Tag-Vergleich mit 9AAF => Cache miss. Also wird 0x9AAF 4D5A in den Cache übernommen.

Nächste Adresse

0x9AAB CF43 selbes Spiel. Cache miss. Wird übernommen in Cache...

Jetzt hat man eine Adresse 0x9AAF 3FFF
Die Tags werden verglichen. Ergibt einen Cache Hit, da ja 0x9AAF schon im Cache ist (1. Anweisung). Der Offset ist aber ein anderer.

Wird das 4D5A nun ersetzt durch das 3FFF?

Was passiert nun?

0
KarlRanseierIII  26.07.2023, 17:03
@RedDevil1982

Der Cache cached ja den gesamten Block, beim Tag 0x9AAF also alles von 0x9AAF 0000 bis 0x9AAF FFFF.

D.h. bei Deinem Beispiel: mit 0x9AAF 4D5A und dessen miss, wird einer der freien Blöcke des Caches genommen (oder einer verdrängt) und danach der gesamte Speicherbereich von 64 KiBi in den Cache geholt. Von daher gibt es nichts zu ersetzen, sondern es wird bei 0x9AAF 3FFF aus dem Cacheblock mit Tag 0x9AAF an Offsert 3FFF gelesen.

Von daher sind 64 KiBi als Blockgröße auch eher nicht praxisnah, während die Reduktion auf 4 Blöcke die Aufgabe vermutlich deutlich vereinfacht.

0