Guten Tag,
ich hoffe es ist erlaubt hier auch Fragen über die Übungsblätter zu stellen, falls nicht tut es mir leid für die falsche Fragenstellung.
Eine Kommilitonin und ich sind uns bei der Aufgabe 2a) nicht sicher, wo der Fehler in
unserer Lösung liegt. Hier ist eine Zusammenfassung unseres Rechenwegs und unsere Lösung:
So wie wir die Aufgabenstellung verstehen sieht der Cache wie folgt aus:
und die Antworten zu den Fragen wären:
1. Total number of blocks in the cache:
Da jeder Block 2 Byte umfasst und der Cache insgesamt aus 32 Blöcken besteht haben wir 16 Blöcke.
2. Maximum number of blocks with the same tag that can be found in the cache any given time.
Diese Frage interpretieren wir so, dass man die maximale Anzahl an
Blöcken angeben soll, die sich zu ein und demselben Zeitpunkt mit dem
selben Tag im Cache befinden können, also gleichzeitig vorhanden sind
ohne das es zu einem writeback kommt. Ein tag gehört zu jeweils einem
Block, und da sich die tatsächliche Speicheradresse des Blocks im
Hauptspeicher daraus ergibt, dass man das Tag und die Bits zur
Addressierung der Sets zusammenfügt, kann es innerhalb eines Sets nur
einen Block mit dem selben Tag geben. Pro Set darf also nur ein Block
das selbe Tag haben und da wir 4 Sets haben wäre die Antwort: 4 Blöcke.
3. Number of bits required for the tag
Hierbei haben wir die folgenden Ausschnitte aus den Vorlesungsfolien "Cache Architecture" Folie 53 und Folie 54 benutzt:
Die Blöcke bestehen aus 2 Byte also ist b = 1
Die Sets bestehen aus 4 Blöcken also ist nk = 2
Der Cache besteht aus 16 Blöcken als ist sk = 4
Unsere Formel besagt dann:
Damit ergeben sich 5 Bits für das Tag.
4. Number of bits required for the index
Unsere Annahme ist, dass mit "Index" die Bits gemeint sind, die zur Addressierung des Sets benutzt werden.(?)
Daher ist unsere Lösung 2 Bit.
5. Number of used (valid) blocks in the cache after the following (block-)reads: 17,73,16,41,35,125,62,5,73
Die Addressen in Binär übersetzt ergibt:
Hier sind die Addressierungen an die Sets in denen gespeichert wird, farbig markiert.
Man kann erkennen, dass die Speicheradressen 16 und 17 teil des gleichen
Blocks sind. Daher wird beim Lesezugriff auf 17 der Block in den Cache
geladen, der auch die 16 enthält und es kommt zu einem Cache Hit. Um die
16 zu laden müssen wir also nicht erneut einen Block in das Set laden.
Das selbe gilt für die 73, diese wird hier zweimal gelesen und beim
zweiten Lesevorgang kommt es zu einem Cache Hit. Somit werden in das Set
00 nur 3 Blöcke geladen. Bei den anderen 4 Lesezugriffen auf die
anderen Sets kommt es zu keinen Cache hits, aber auch keinen Writebacks
da die Sets niemals voll werden.
Somit werden 7 Blöcke in den Cache geladen.
6. Number of writebacks for the mentioned read sequence
Bei unseren Lösungsweg kommt es zu keinem Writeback.
Somit ist unsere Lösung: 16,4,5,2,7,0
Wir haben versucht die Aufgabe im Abacus Simulator nachzustellen, und haben keinen Widerspruch zu unserer Lösung gefunden.
Könnten sie bitte uns einen Hinweis darauf geben, an welcher Stelle wir
einen Fehler gemacht haben bzw. ob unser Verständnis dieses Caches
richtig ist oder wir eine Annahme getroffen haben, die falsch ist?
Freundliche Grüße
Thomas Maximilian Kühn
(und nochmals Entschuldigung falls dies der falsche Ort ist für meine Frage)