Ich habe Mühe, diese Frage zu lösen, ich habe mich umgesehen, aber all die ähnlichen Fragen sind fortgeschrittener als meine, indem wir Logs verwenden, es ist fortgeschrittener als in unserer Klasse. Hier ist die Frage:
Suppose you have a 4-way set associative cache which has in total
4096 bytes of cache memory and each cache line is 128 bytes. How many
sets are there is this cache? If memory is byte addressable and addresses
are 16 bits then how many bytes are used for the tag?
Folgendes habe ich bisher:
4096/128 = num lines
4096/128/4 = 8 = num sets (each set is 4 lines in 4-way set assoiative)
So, need 3 bits to choose set (2^3=8)
We have 16-3 = 13 bits left for the tag and word.
Da die Frage besagt, dass Speicher byteadressierbar ist, denke ich, dass dies bedeutet, dass das Wort 8 Bits (= 1 Byte) lang ist und somit das Tag 16-3-8 = 5 Bits lang ist.
Obwohl ich mir da nicht ganz sicher bin. Hat jemand eine Lösung für dieses Problem?
Danke.
Wenn der Speicher byteadressierbar ist
Diese Aussage sagt uns nur, dass der Hauptspeicher byteadressierbar ist, dh Architekturen, bei denen auf 8 Bits gleichzeitig zugegriffen werden kann, unabhängig von der Breite der Daten- und Adressbusse.
Dies hat keinen Einfluss auf die Anzahl der Bits, die das Tag hat.
Lösung:
4-Wege-Gruppe assoziativ
Gesamtcache-Speicher = 4096 Byte
Blockgröße (Cache-Zeile) = 128 Byte
Anzahl der Cachezeilen = 4096/128 = 32 Zeilen
Anzahl der Sätze im Cache = 32/4 = 8 Sätze
%Vor%Wortoffset = log 2 8 = 3 Bits
Setze Offset = log 2 128 = 7 Bits
Antwort:
Markierungsbit = 16 - (3 + 7) = 6 Bits
%Vor%Tags und Links caching