[Esercizio] Cache 8 vie Clicca QUI per vedere il messaggio nel forum |
niko_2307 |
Si progetti (espicitando le dimensioni di tutti i campi) una memoria cache a 4 vie, associata ad un processore con bus dati di 64 bit e bus indirizzi di 32 bit. La capacità totale della cache sia di 2 Mbyte e la dimensione del blocco di 16 parole. Se ne rappresenti lo schema dettagliato e si calcoli il valore (decimale) di tutti i campi di indirizzamento relativi all'indirizzo: 0xABC10ABC
era nell'ultimo appello....ho provato a svolgerlo ma non sono sicuro della sua correttezza....qualkuno mi aiuta così ke possa confrontare?? |
PrizeD |
nuooooooooooo mi sono dimenticato di calcolare il valore decimale.... :D
Cmq posta la tua risoluzione, magari qualcuno ti può dare consigli e correzioni |
niko_2307 |
mi sa ke ho sbagliato un passaggio perkè ho calcolato un blocco di 4 parole per via, invece di 16 x via
la mia risoluzione(presumo errata) è questa:
Bus dati 64 bit = parole da 8 byte
Capacità 2 Mbyte = 512 Kbyte per via
linea di chache = 8 byte * 4 (parole per blocco, qui mi sa ke c'è il mio errore, dovrebbe essere 16) = 32 byte
#linee = 512 kbyte / 32 byte = 16 K
indice = log2 (16K) = 15
tag = 32 (indirizzo) - 15 (indice) - 2 (word, anke li l'errore, dovrebbe essere 4) - 3 (byte) = 12
per quanto riguarda l'indirizzamento relativo all'indirizzo, non sapevo se la formula fosse uguale a quella per la chache a mappatura diretta
0xABC10ABC = 2.881.555.132 |
PrizeD |
Allora, la linea di cache è di 16 parole, quindi le linee sono tutte da 16*8=128 byte, questo errore ti porta anche a sbagliare il conto del numero di linee che sono (2^9 k)/2^7= 2^12 -> 4k
Quindi BO = 3 bit, WO=4 bit, index=12 bit, TAG= 32 - 12 - 4 - 3 = 13
Per l'indirizzamento metti tutto in binario: 1010 1011 1100 0001 0000 1010 1011 1100.
BO=100=byte numero 4 (contando il byte num 0 ovviamente :D)
WO=0111=parola numero 7
index=001000010101= blocco numero 533
TAG=1010101111000
Dovrebbe essere così, spero... :D |
niko_2307 |
allora avevo detto giusto...mi ha fregato quel cavolo di blocco:cry:
cmq non è ke mi potresti spiegare come hai fatto a calcolare gli offeset dell'indirizzo |
PrizeD |
Intendi questo? "...numero di linee che sono (2^9 k)/2^7= 2^12 -> 4k"
2^9 k (dimensione di ogni banco) = 2^9 * 2^10 = 2^19 byte
2^19/2^7= 2^12
2^7=128 byte è la dimensione della linea
quindi facendo così trovi il numero di linee, per rappresentare questo numero in binario ti occorrono 12 bit, che è l'index.
Mentre BO sono i bit di offset della parola che è da 8 byte, quindi 3 bit. Il WO invece lo vedi dalla dimensione della linea di cache... 16 parole... 4 bit. il TAG è quello che rimane.
C'è anche un altro modo (tipo prova del 9) per calcolare il TAG ma ora come ora non mi viene in mente :D |
niko_2307 |
no intedendevo:
si calcoli il valore (decimale) di tutti i campi di indirizzamento relativi all'indirizzo: 0xABC10ABC
ps. sei riuscito a superare lo scritto?? io sono stato ammesso all'orale ma mi sa ke non andrò....troppo poko:D |
PrizeD |
Si lo scritto l'ho passato, piuttosto bene anche :D
Cmq i campi di indirizzamento relativi a quell'indirizzo sono BO WO e INDEX, se non sbaglio. In decimale dovrebbero essere:
BO=100= 4
WO=0111= 7
index=001000010101= 533
TAG=1010101111000
Se ho sbagliato qualcuno mi corregga per favore perchè giovedì ho l'orale... |
|
|
|