Newsgroup: it.comp.hardware.cpu
Titolo: Dubbio sulla Cache - rispondetemi...

So che esiste una Cache di primo livello e una di secondo livello. Per
esempio il processore Atlhon Thunderbird ha 128 Kb di cache di primo livello
e 256 Kb di cache di secondo livello. Quale viene utilizzata dal computer?
Servono tutte e due? Più cache c'e piu il processore e veloce? Datemi
spiegazioni approfondite.
-- 
Posted from 
IDENT:ro...@teleglobe.net
 [195.219.60.4] (may be forged) 
via Mailgate.ORG Server - 
http://www.Mailgate.ORG

spiegazioni approfondite.
La memoria cache e' una memoria particolarmente veloce (e quindi
particolarmente costosa) nella quale sono memorizzati i dati o le istruzioni
che si presume il processore richiedera' prossimamente dopo l'esecuzione
delle istruzioni in cui e' impegnato. Nel Tbird e nel Pentium III la cache
viaggia alla stessa frequenza della CPU ed e' integrata nel chip (difatti
guardando un Duron si nota immediatamente che e' piu' piccolo, poiche' ha
meno cache). Le dimensioni tuttavia contano solo relativamente. Cio' che
conta e' l'organizzazione interna della cache (solitamente divisa in cache
dati e cache istruzioni) e soprattutto l'algoritmo utilizzato per scegliere
le istruzioni e i dati giusti da immagazzinare (cioe' quelli che
effettivamente saranno richiesti). Ci sono vari modi per scegliere questi
dati, di cui non parlo per non dilungarmi troppo: comunque solitamente la
scelta migliore e' un compromesso tra i due principi della contiguita' nel
tempo e della contiguita' nello spazio. Ossia e' probabile che saranno
richiesti dati o istruzioni legati a quelli in uso, se non proprio gli
stessi, oppure che saranno richiesti dati o istruzioni vicini nello spazio
fisico della memoria. Inoltre e' importante anche la strategia utilizzate
per rimpiazzare i blocchi nella cache. Si pone infatti il problema di quali
dati rimpiazzare e quali conservare ad ogni ciclo di clock. Alcune strategie
un po' datate sono ad esempio la LRU (Least Recently Used) che elimina il
blocco usato meno recentemente, oppure la LFU (Least Frequently Used) che
cancella il dato usato meno frequentemente. Poiche' accedere alla RAM ogni
volta sarebbe troppo oneroso in termini di tempo, allora questi dati scelti
opportunamente vengono caricati nella cache. Quando la CPU ha bisogno di un
dato o di una istruzione la cerca innanzitutto nella cache di primo livello,
la piu' veloce. Se non trova cio' che cerca si ha un cache fault e la palla
passa alla cache di secondo livello. Se c'e' ancora un cache fault la
ricerca viene effettuata nella RAM e se infine (ahime') il dato non e'
neppure qui allora bisogna ricorrere al lentissimo Hard Disk con un perdita
di molti molti cicli di clock. Ovviamente ci sarebbe da parlare per ore,
forse sono stato troppo sintetico. Spero comunque di avere soddisfatto la
tua curiosita'.
Saluti
Marco


Se ce ne sono due vuol dire che servono no?:PP
Apparte gli scherzi, devi sapere che la prima (di primo livello) è
solitamente
quella più piccola, perchè, scusa se mi ripeto, devi sapere che la memoria
più
è piccola più è facile che sia veloce.
Non è detto naturalmente che una cache più piccola sia migliore di una più
grande
e neppure il contrario, come spesso avviene la soluzione sta in un
compromesso che
spetta ai vari costruttori bilanciare.
Dipenderà poi dalle applicazioni e dai programmi che svolgerai sulla tua CPU
se sarà migliore una cache di un tipo o di un altro.
Forse non sono stato esauriente, ma un trattato sull'archittura delle
memorie
non è facile da riassumere in 4 righe:)))
Saluti
Elrond:)