Here you can ask questions and find or give answers to organizational, academic and other questions about studying computer science.

1.1k questions

1.3k answers

1.7k comments

556 users

0 votes
Ich habe eine Frage zur Altklausur von 2017 zur Aufgabe 2c). Manchmal ändert sich bei der Adressierung nichts außer der blockOffset und ich verstehe nicht wann das dann ein miss und wann ein hit ist. Bei 30 und 31 ändert sich nur blockOffset und das ist miss.Aber bei 32 und 33 ändert sich auch nur blockOffset,war da aber hit.

Müssen wir dann eigentlich für 2c auch 2b vollständig berechnen? Also auch die Zeilen zwischen 30 und 37 alle Tag und Index berechnen?

Vielen Dank im Voraus :)
in * TF "Emb. Sys. and Rob." by (200 points)

1 Answer

0 votes
Man kann aus der Adresse allein nicht ablesen, ob es ein hit oder miss geben wird. Das hängt von der Historie der vorausgegangen Lade-/Speicherbefehle ab. Sollten die bereits den erwünschten Block in den Cache geladen haben, haben wir einen hit, andernfalls einen miss.

Bei der Adresse 30 ist das zuerst ein miss, weil Block 7 (der diese Adresse enthält) noch nicht im Cache war. Lädt man danach die Adresse 31, die ebenfalls im Block 7 liegt, dann ergibt dies ein hit.

Lädt man danach Adresse 32, die zu Block 0 gehört, ergibt das wieder ein hit, weil zuvor Zeile 5 diesen Block in den Cache geladen hat. Lädt man dann die Adresse 33, so haben wir wieder einen hit, weil Block 0 immer noch im Cache ist.

Man muss im Grunde 2b auch vollständig berechnen bzw. durchschauen, um später 2c richtig machen zu können.
by (170k points)
Aber in der Musterlösung steht für 31 miss. Gibst es dann in der Musterlösung einen Fehler?
Ich bin bei meiner Erklärung oben davon ausgegangen, dass zwischen dem Laden von 30 und danach 31 keine weiteren Befehle diesen Block manipuliert hätten. In Aufgabe 2 der Klausur vom 28.03.2018 ist es aber so, dass der Befehl in Zeile 7 dazwischen Adresse 60 beschreibt und dafür ebenfalls Block 7 im Cache benötigt und dabei den von Adresse 30 geladenen Block wieder verdrängt. Daher führt das Laden von Adresse 31 danach wieder zu einem Miss. Wenn dies hier unklar erscheint, empfehle ich die Ausführung des Programms im Simulator (und dabei das Nachrechnen der Satzadresse und Tag), so dass man die Hits und Misses vor sich sieht. Wenn man das durchschaut hat, kann man das relativ schnell für das restliche Programm machen (es wiederholt sich dann alles).

Related questions

+1 vote
1 answer
0 votes
1 answer
0 votes
1 answer
+1 vote
1 answer
Imprint | Privacy Policy
...