|
|
|
|
| |
|
lSical |
Esercizio CACHE IV Compitino |
06-06-2008 22:02 |
|
|
lSical |
.consigliere.
Registered: Mar 2008
Posts: 102 (0.02 al dì)
Location:
Corso: Informatica
Anno: 1
Time Online: 5 Days, 1:00:41 [...]
Status: Offline
Edit | Report | IP: Logged |
Esercizio CACHE IV Compitino
Ciao, qualcuno potrebbe gentilmente aiutarmi ad interpretare questo esercizio prensente nel compitino dell'anno scorso:
Disegnate una cache per un’architettura MIPS, a 4 vie di 1KByte per banco, e linee di 4 parole (per ciascun banco). Supponiamo
che l’indirizzamento della memoria principale sia su 32 bit. Disegnare il circuito di scrittura della cache. Definire cosa rappresenta il
campo TAG e dimensionarlo. Supponiamo che all’inizio i bit di validità siano tutti a 0. Definire cosa succede in corrsipondenza di
questo frammento di codice (se si verifica una miss, una hit e dove vengono scritti / letti i dati della cache, quale indirizzo e quale tag
vengono associati ad ogni istruzione):
sw $t0, 20($zero)
lw $t0, 64($zero)
lw $t0, 60($zero)
sw $t0, 56($zero)
sw $t0, 0($zero)
lw $t0, 20($zero)
lw $t0, 64($zero)
lw $t0, 128($zero)
vorrei sapere cosa si intende con l’indirizzamento della memoria principale sia su 32 bit, e che la cache è a 4 vie di 1KByte per banco (cioè 4 blocchi a 1kByte per via?)
Per ora credo di aver capito che:
-Se è una cache a 4 vie allora è in grado di memorizzare 4 blocchi diversi per ogni indice.
- 1kByte/4 word = 256 word all'interno della cache ?
quindi 256 word/ 4 vie = 64 =2^6 pari a 6 bit per l'indice?
perciò il tag sarebbe 32-2-6=24
poi come faccio a determinare il numero di linee?
Grazie dell'aiuto , Ciao!!!
|
06-06-2008 22:02 |
|
|
| |
|
marcodili |
no guarda.. secondo me stai sbagliando..
... |
07-06-2008 13:35 |
|
|
marcodili |
.fedelissimo.
Registered: Apr 2007
Posts: 41 (0.01 al dì)
Location:
Corso: informatica
Anno: terzo
Time Online: 1 Day, 9:48:29 [...]
Status: Offline
Edit | Report | IP: Logged |
no guarda.. secondo me stai sbagliando..
praticamente 4 vie 1k byte per banco vuol dire in totale una cache da 4 kbyte.
ci sono quattro banchi da 1k byte ciascuno... ogni banco ha linee che contengono 4 parole (quindi vuol dire che ogni banco ha quattro blocchi)
quindi:
K = 32 - log2 (2^10) = 32-10= 22 bit di tag
poi sono quattro blocchi per banco quindi avra bisogno di 2 bit per rappresentare i blocchi
quindi n bit di indice = 32 - 22 -2 -2(bit unused) = 6
quindi hai in totale 2^6 = 64 linee
per riassumere = 22 bit di tag, 6 di indice, 2 di blocco, 2 di unused
io lo ho svolto così. Cmq fare un disegno della cache può sempre aiutare.
|
07-06-2008 13:35 |
|
|
| |
|
lSical |
Ciao, Innanzitutto grazie mille della risposta :ra ... |
07-06-2008 18:33 |
|
|
lSical |
.consigliere.
Registered: Mar 2008
Posts: 102 (0.02 al dì)
Location:
Corso: Informatica
Anno: 1
Time Online: 5 Days, 1:00:41 [...]
Status: Offline
Edit | Report | IP: Logged |
Ciao, Innanzitutto grazie mille della risposta
adesso ho capito , quindi quando dice "Supponiamo
che l’indirizzamento della memoria principale sia su 32 bit" vuol dire che l'indirizzo è su 32 bit? e poi ma i due bit unused ci sono sempre???
o come faccio a stabilire se ci sono o no?(perchè su alcuni esercizi ho visto che per ottenere l'indice fanno: dimensione banco/ numero vie= 2^n dove n è l'indice)?
poi le seguenti istruzioni sono giuste: ho scritto gli ultimi 10 bit, 6 bit per l'indice, 2 per i blocchi e 2 unused
sw $t0, 20($zero)= (|00 0001| 01|00) quindi ho una hit visto che è una store word, suppongo di scrivere sul banco 0, indice = 1 quindi linea 1, blocco 1 e tag 0, bit v=1
lw $t0, 64($zero)= (|00 0100| 00|00) quindi miss perchè il dato non c'è,(confronto il tag di tutte le linee di posizione 4 nei vari banchi) scrivo ancora sul banco 0(posso scrivere sul banco che voglio vero? visto che la corrispondenza è associativa?), indice =4 = linea 4, blocco 0 e tag 0, bit v=1
lw $t0, 60($zero) (|00 0011| 11|00) miss perchè dato non presente
(confronto il tag di tutte le linee di posizione 3 nei vari banchi), scrivo ancora sul banco 0, indice = 3=linea 3, blocco 3 tag 0, bit v =1
sw $t0, 56($zero) (|00 0011| 10|00) HIT perchè dato presente al banco 0, indice= linea 3 e bit di validate = 1 e il tag è uguale, quindi non lo riscrivo?
blocco 2, tag=0
sw $t0, 0($zero) Hit come la sw precedente ?
lw $t0, 20($zero) (|00 0001| 01|00) HIT perchè dato presente al banco 0, linea=1 e tag =0 quindi ricarico il dato
.... e cosi via ....
Grazie ancora delle risposte!!
Last edited by lSical on 08-06-2008 at 08:54
|
07-06-2008 18:33 |
|
|
| |
|
LG2100 |
Tra l'altro l'esercizio chiede di disegnare il cir ... |
08-06-2008 10:41 |
|
|
LG2100 |
.fedelissimo.
Registered: Nov 2007
Posts: 44 (0.01 al dì)
Location: Milano
Corso: Informatica magistrale
Anno: Laureato
Time Online: 4 Days, 23:21:25 [...]
Status: Offline
Edit | Report | IP: Logged |
Tra l'altro l'esercizio chiede di disegnare il circuito di scrittura della cache, ma io non l'ho trovato da nessuna parte. Qualcuno sa dirmi dov'è spiegato? Oppure bisogna improvvisarne uno?
|
08-06-2008 10:41 |
|
|
| |
|
lSical |
ciao!, guarda che c'è nella slide della lezione 2 ... |
08-06-2008 10:44 |
|
|
lSical |
.consigliere.
Registered: Mar 2008
Posts: 102 (0.02 al dì)
Location:
Corso: Informatica
Anno: 1
Time Online: 5 Days, 1:00:41 [...]
Status: Offline
Edit | Report | IP: Logged |
ciao!, guarda che c'è nella slide della lezione 28, (26/36)
scusa hai provato se le istruzioni sono giuste?
Last edited by lSical on 08-06-2008 at 10:48
|
08-06-2008 10:44 |
|
|
| |
|
LG2100 |
Ho svolto l'esercizio e mi vengono le HIT/MISS com ... |
08-06-2008 11:13 |
|
|
LG2100 |
.fedelissimo.
Registered: Nov 2007
Posts: 44 (0.01 al dì)
Location: Milano
Corso: Informatica magistrale
Anno: Laureato
Time Online: 4 Days, 23:21:25 [...]
Status: Offline
Edit | Report | IP: Logged |
Ho svolto l'esercizio e mi vengono le HIT/MISS come a te. Credo sia giusto. L'unico dubbio che ho è sulle sw che accedono a blocchi non in cache se anche per loro si hanno hit o miss. Pensandoci, se si cerca di scrivere una word su un blocco in cui il bit di validate è a 0 bisogna per forza recuperare dalla ram il resto del blocco con conseguente ritardo di tempo e poi mettere il bit di validate a 1.... peccato che sulle slide non ci siano esempi con le sw...
La slide 26 della lezione 28 mi sembra un circuito di lettura, non di scrittura. In input prende l'indirizzo e fornisce un dato in output...
Last edited by LG2100 on 08-06-2008 at 14:30
|
08-06-2008 11:13 |
|
|
| |
|
lSical |
è vero, quello è il circuito di lettura xD:D, .. ... |
08-06-2008 11:34 |
|
|
lSical |
.consigliere.
Registered: Mar 2008
Posts: 102 (0.02 al dì)
Location:
Corso: Informatica
Anno: 1
Time Online: 5 Days, 1:00:41 [...]
Status: Offline
Edit | Report | IP: Logged |
è vero, quello è il circuito di lettura xD, ...comunque se la cache è la copia della memoria principale allora quando faccio una sw vedo se il dato è presente in essa quindi alla fine lo seleziono dalla cache e quindi forse il grafico è lo stesso(almeno credo ), poi per la sw, credo di aver sentito a lezione che si ha sempre hit perchè scrivo direttamente sulla memoria,
quindi tipo per l'istruzione
sw $t0, 56($zero) visto che il dato è presente sulla cache allora non faccio altro che prenderlo, di conseguenza ho una HIT
|
08-06-2008 11:34 |
|
|
| |
|
LG2100 |
Se il dato è già in cache non ci sono dubbi. Il ... |
08-06-2008 11:58 |
|
|
LG2100 |
.fedelissimo.
Registered: Nov 2007
Posts: 44 (0.01 al dì)
Location: Milano
Corso: Informatica magistrale
Anno: Laureato
Time Online: 4 Days, 23:21:25 [...]
Status: Offline
Edit | Report | IP: Logged |
Se il dato è già in cache non ci sono dubbi. Il problema è se il dato non c'è. Però probabilmente si verifica hit o miss solo se l'operazione è di lettura
|
08-06-2008 11:58 |
|
|
| |
|
lSical |
Si infatti, se non c'è, cerchi una linea libera i ... |
08-06-2008 12:03 |
|
|
lSical |
.consigliere.
Registered: Mar 2008
Posts: 102 (0.02 al dì)
Location:
Corso: Informatica
Anno: 1
Time Online: 5 Days, 1:00:41 [...]
Status: Offline
Edit | Report | IP: Logged |
Si infatti, se non c'è, cerchi una linea libera in qualunque blocco e scrivi direttamente , per il grafico al massimo disegno quello che c'è sperando mi dia qualche punto
Last edited by lSical on 08-06-2008 at 14:33
|
08-06-2008 12:03 |
|
|
| |
|
Shaper |
Ma quindi, quando si tratta di sw, non avrebbe nem ... |
09-06-2008 09:30 |
|
|
Shaper |
.consigliere.
Registered: Sep 2007
Posts: 147 (0.02 al dì)
Location: Milano
Corso: Informatica
Anno: Secondo anno
Time Online: 1 Day, 11:23:27 [...]
Status: Offline
Edit | Report | IP: Logged |
Ma quindi, quando si tratta di sw, non avrebbe nemmeno senso parlare di hit o miss? E quindi che ci scrivo? La cosa mi lascia perplesso...
__________________
Eidolon64|Blog
|
09-06-2008 09:30 |
|
|
| |
|
marcodili |
ragazzi cmq il fatto della sw è spiegata in teori ... |
09-06-2008 16:28 |
|
|
marcodili |
.fedelissimo.
Registered: Apr 2007
Posts: 41 (0.01 al dì)
Location:
Corso: informatica
Anno: terzo
Time Online: 1 Day, 9:48:29 [...]
Status: Offline
Edit | Report | IP: Logged |
ragazzi cmq il fatto della sw è spiegata in teoria.. il tempo della sw dipende se avviene in writethrough o in write back... guardate bene sulle dispense cosa c'è scritto. Writethrough scrive sia in cache che in memoria (quindi probabilmente il tempo sarà paragonabile a quello di una miss), writeback scrive in cache e rimanda la scrittura in memoria solo quando viene sovrascritta la linea di cache(quindi il tempo sarà paragonabile a una hit).
Cmq nel caso in cui ci sia da calcolare qualche tempo o dice il professore quale delle 2 viene utilizzata oppure scegliamo noi credo! Cmq nei compitini non ha mai chiesto di calcolare il tempo totale di un tot di istruzioni!
Questa mi sembra la soluzione migliore.
|
09-06-2008 16:28 |
|
|
| |
|
Shaper |
[QUOTE][i]Originally posted by marcodili [/i]
... |
09-06-2008 16:59 |
|
|
Shaper |
.consigliere.
Registered: Sep 2007
Posts: 147 (0.02 al dì)
Location: Milano
Corso: Informatica
Anno: Secondo anno
Time Online: 1 Day, 11:23:27 [...]
Status: Offline
Edit | Report | IP: Logged |
Originally posted by marcodili
ragazzi cmq il fatto della sw è spiegata in teoria.. il tempo della sw dipende se avviene in writethrough o in write back... guardate bene sulle dispense cosa c'è scritto. Writethrough scrive sia in cache che in memoria (quindi probabilmente il tempo sarà paragonabile a quello di una miss), writeback scrive in cache e rimanda la scrittura in memoria solo quando viene sovrascritta la linea di cache(quindi il tempo sarà paragonabile a una hit).
Cmq nel caso in cui ci sia da calcolare qualche tempo o dice il professore quale delle 2 viene utilizzata oppure scegliamo noi credo! Cmq nei compitini non ha mai chiesto di calcolare il tempo totale di un tot di istruzioni!
Questa mi sembra la soluzione migliore.
Sì, il discorso del writeback fila, ma siccome ci chiede di scrivere se si verifica una hit o una miss, noi che gli scriviamo nel caso della sw?
__________________
Eidolon64|Blog
|
09-06-2008 16:59 |
|
|
| |
|
marcodili |
guarda.. secondo me basta che gli scrivi solo scri ... |
09-06-2008 17:01 |
|
|
marcodili |
.fedelissimo.
Registered: Apr 2007
Posts: 41 (0.01 al dì)
Location:
Corso: informatica
Anno: terzo
Time Online: 1 Day, 9:48:29 [...]
Status: Offline
Edit | Report | IP: Logged |
guarda.. secondo me basta che gli scrivi solo scrittura... e poi al max se vuoi far vedere che hai studiato scrivi :ipotizzando writethrough, tempo paragonabile ad una miss.
|
09-06-2008 17:01 |
|
|
| |
|
Shaper |
[QUOTE][i]Originally posted by marcodili [/i]
... |
09-06-2008 17:03 |
|
|
Shaper |
.consigliere.
Registered: Sep 2007
Posts: 147 (0.02 al dì)
Location: Milano
Corso: Informatica
Anno: Secondo anno
Time Online: 1 Day, 11:23:27 [...]
Status: Offline
Edit | Report | IP: Logged |
Originally posted by marcodili
guarda.. secondo me basta che gli scrivi solo scrittura... e poi al max se vuoi far vedere che hai studiato scrivi :ipotizzando writethrough, tempo paragonabile ad una miss.
Sì, penso sia la cosa migliore...
__________________
Eidolon64|Blog
|
09-06-2008 17:03 |
|
|
| |
|
ste182 |
[QUOTE][i]Originally posted by marcodili [/i]
... |
17-06-2009 15:04 |
|
|
ste182 |
.arcimaestro.
Registered: Oct 2004
Posts: 258 (0.03 al dì)
Location:
Corso: informatica
Anno:
Time Online: 2 Days, 5:06:07: [...]
Status: Offline
Edit | Report | IP: Logged |
Originally posted by marcodili
no guarda.. secondo me stai sbagliando..
praticamente 4 vie 1k byte per banco vuol dire in totale una cache da 4 kbyte.
ci sono quattro banchi da 1k byte ciascuno... ogni banco ha linee che contengono 4 parole (quindi vuol dire che ogni banco ha quattro blocchi)
quindi:
K = 32 - log2 (2^10) = 32-10= 22 bit di tag
poi sono quattro blocchi per banco quindi avra bisogno di 2 bit per rappresentare i blocchi
quindi n bit di indice = 32 - 22 -2 -2(bit unused) = 6
quindi hai in totale 2^6 = 64 linee
per riassumere = 22 bit di tag, 6 di indice, 2 di blocco, 2 di unused
io lo ho svolto così. Cmq fare un disegno della cache può sempre aiutare.
so che è una discussione un pò vecchia ma sto studiando per l'appello di domani e mi servirebbe capire.
io l'ho fatto diversamente:
- una linea= 4(blocchi) * 32bit (suppongo che una word sia di 4byte dato che il bus è a 32bit) = 128 bit di linea
- numero di linee = 1024(1KB) / 128bit = 8
- indice = log2(8) = 3 bit
- 2 bit di offset
- tag = 32 -2 -2 -3 = 25 bit
ricapitolando:
25bit di tag | 3bit di indice | 2bit di offset | 2 bit unused
no??
__________________
Live Fast, Die Fun
|
17-06-2009 15:04 |
|
|
| |
|
All times are GMT. The time now is 11:55. |
|
|
|
|
|
|
|
| |
Forum Rules:
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts
|
HTML code is OFF
vB code is ON
Smilies are ON
[IMG] code is ON
|
|
|
|
|
|