Assoziativen Cache setzen: Größe des Tags berechnen?

8

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.

    
janderson 11.06.2014, 12:58
quelle

1 Antwort

6
  

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%     
Alwyn Mathew 03.06.2016 14:03
quelle

Tags und Links