cache Clicca QUI per vedere il messaggio nel forum |
wiseupdoc |
ho un problema nel esercizio della cache...
fino a quando mi si chiede di dimensionare o disegnare la cache non ho problemi, i problemi nascono quando si chiede di:
Mostrare dove viene memorizzato, nella cache, il byte di memoria situato all'indirizzo A: 2^24+2^18+2^12+2^8+15....
aiutatemi per favore ve ne sarei molto grato...non so proprio che fare!!!!
grazie |
wake |
devi semplicemente trasformare l'indirizzo in binario. Per esempio alla posizione 2^24 corrisponderà un 1 poi dalla 2^23 fino alla 2^17 metterai degli 0 e così via. Dovrebbe venirti:
1000001000001000100001111.
Anche il 15 dovrai trasformare. Inoltre dalla posizione 2^29 in poi devi aggiungere 0 fino ad arrivare alla lunghezza del bus indirizzi che hai trovato in precedenza. Per esempio se il bus indirizzi è a 32 bit il numero verrà:
0001000001000001000100001111. (cioè arrivi alla posizione 2^31 xkè si parte da 2^0)
Una volta ottenuto tutto il numero partendo da destra lo suddividi in base al BO,WO,index e tag. Esempio se il BO è a 1 bit raccogli il primo bit a destra("1"), se il WO è a 4 bit(0111), ecc.
Spero di essere stato chiaro ora dovrei chiederti io una cosa XD. Visto che hai scritto che non hai avuto problemi con la parte precedente dell'esercizio, mi spiegheresti come faccio a trovare il bus indirizzi(quando il prof non ce lo da come dato) dalla memoria principale??
Grazie!! ciaooo |
wiseupdoc |
grazie mille per la spiegazione, mi aiutato tantissimo....
per trovare il bus indirizzi basta che trasformi il dato di spazio di indirzzamento della memoria in potenza di 2
esempio:
1GB=2^30--- 64GB=2^36
il 30 (o 36) sono i bit che devi sottrarre per trovare il campo TAG.
TAG=30-indice-word-byte
spero di essere stato d'aiuto.. |
wake |
ok capito grazie!!. Ma ora mi sorge un dubbio eheh, questo vale sia per la cache a mappatura diretta, sia per quella a più vie?
Cioè mi sembra di ricordare ma forse mi sbaglio(molto probabile) che quando c'erano le vie dovevo dividere la capacita della memoria principale per le vie. Tipo:
C=64GB=2^36
4 vie=2^2
bus indirizzi=2^36 : 2^2=2^34= 34 bit
Possibile? e un'ultima cosa...l'index puo' venire piu grande del tag? |
CowBoy |
Una volta che trovi il numero di bit necessari per indirizzare le parole di memoria devi soltanto dividerli partendo dalla cache.
Il numero di vie ti serve per dividere la capacità della cache e non la memoria principale.
Es: Cache di capacità 1MB a 2 vie vuol dire che ogni blocco ha capacità [C.cache]/[N.blocchi] 1MB/2blocchi = 2^19 Byte per blocco.
I campi index e tag invece variano in base alla C.cache e C.mp, quindi possono essere più grandi o più piccoli. |
|
|
|