Come calcolare il numero di tag, indice e bit di offset di diverse cache?


18

In particolare:

1) Una cache a mappatura diretta con 4096 blocchi / linee in cui ogni blocco ha 8 parole a 32 bit. Quanti bit sono necessari per i campi tag e index, assumendo un indirizzo a 32 bit?

2) Stessa domanda di 1) ma per cache completamente associativa ?

Correggimi se sbaglio, è:

bit tag = lunghezza bit indirizzo - esponente dell'indice - esponente dell'offset?

[L'offset = 3 è dovuto a 2 ^ 3 = 8 o è 5 da 2 ^ 5 = 32?]


alcune spiegazioni su tag, indice e offset in cs.stackexchange.com/questions/33818/…
Ran G.

Risposte:


20

La domanda come indicato non è del tutto rispondente. È stata definita una parola come 32 bit. Dobbiamo sapere se il sistema è "indirizzabile in byte" (è possibile accedere a un blocco di dati a 8 bit) o ​​"indirizzabile a parole" (il blocco accessibile più piccolo è a 32 bit) o ​​anche "indirizzabile a mezza parola" (il il più piccolo blocco di dati a cui puoi accedere è a 16 bit.) Devi sapere questo per sapere cosa ti dice il bit di ordine più basso di un indirizzo.

Quindi lavori dal basso verso l'alto. Supponiamo che il sistema sia indirizzabile in byte .

Quindi ogni blocco di cache contiene 8 parole * (4 byte / parola) = 32 = 2 5 byte, quindi l' offset è di 5 bit.

L' indice per una cache mappata diretta è il numero di blocchi nella cache (12 bit in questo caso, perché 2 12 = 4096.)

Quindi il tag è tutti i bit rimasti, come hai indicato.

Man mano che la cache diventa più associativa ma mantiene le stesse dimensioni, ci sono meno bit di indice e più bit di tag.


sì, è indirizzabile in byte, ma la domanda che ho esaminato non lo specificava nello specifico
compski

3

La tua formula per i bit dei tag è corretta.

Il fatto che l'offset sia di tre o cinque bit dipende dal fatto che il processore utilizzi l'indirizzamento di byte (ottetto) o l'indirizzamento di parole. Al di fuori dei DSP, quasi tutti i processori recenti utilizzano l'indirizzamento dei byte, quindi sarebbe sicuro assumere l'indirizzamento dei byte (e cinque bit di offset).


Non sapevo che esistessero tali distinzioni, sì, si tratta di indirizzamento in byte
compski

1
Prima della metà degli anni '70 potremmo ragionevolmente presumere che una "parola" fosse la dimensione della più piccola unità di dati indirizzabile. Questa tabella sulla pagina di Wikipedia su word è divertente (se ti piace quel genere di cose, (cosa che faccio.))
Wandering Logic

1

Sto imparando per l'esame finale della materia Computer System, ho cercato su Google per un po 'e ho trovato questa domanda. E questa parte della domanda è confusa: "in cui ogni blocco ha 8 parole a 32 bit". Una parola è di 4 byte (o 32 bit), quindi la domanda deve essere "... in cui ogni blocco ha 8 parole"

La risposta è: ogni blocco è di 32 byte (8 parole), quindi abbiamo bisogno di 5 bit di offset per determinare quale byte in ciascun blocco - Mappatura diretta => numero di set = numero di blocchi = 4096 => abbiamo bisogno di 12 bit di indice per determinare quale set

=> bit tag = 32-12-5 = 15

Per associativo, il numero di set è 1 => nessun bit di indice => bit di tag = 32 - 0 - 5 = 27


1

Non ci sono bit di indice in una cache completamente associativa. I bit di indice vengono utilizzati per identificare in modo univoco a quale set appartiene il blocco. In una cache completamente associativa, tutti i blocchi fanno essenzialmente parte dello stesso set.


-1

nell'indice di mappatura associato completo è 0 b / s come dici set = 1, quindi indice = registro di 1 nella base 2 = 0 set offset = registro della dimensione del blocco di byte base 2, quindi usa 8 = 2 ^ 3 o 32 = 2 ^ 5 tag = 32-0-5 = 27 per indice diretto = 2 ^ 12 = 12 offset = tag a 0 bit = 32-12-0 = 20


Lo trovo molto impossibile da leggere. Per favore, usa un po 'di punteggiatura.
David Richerby,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.