Newsgroup: it.comp.hardware
Titolo: A cosa serve....

A cosa serve la cache e perchè esiste anche quella di 2° livello ?
NewBie

Provo a risponderti... spero di essere esauriente e di non commettere
imprecisioni. Estendo un po' il discorso in modo che sia maggiormente
comprensibile.
Prima di tutto la cache è una memoria in linea, ovvero una delle memorie,
insieme alla memoria primaria e alla memoria secondaria, sempre a
disposizione del processore.
Ecco un breve schema della gerarchia di memoria: 'registri cpu' ->
'cache' -> 'memoria primariaì -> 'memoria secondaria' -> 'memoria di massa'.
L'obiettivo principale di un qualsiasi sistema di memoria è quello di
fornire un'adeguata capacità di memorizzazione con una adeguata
"prestazione" ("velocità") e ad un costo ragionevole. Si può perseguire
questo obiettivo utilizzando approcci diversi:
1) usare unità di memoria con differenti rapporti costo/prestazione ed
"organizzarle" in modo da         avere alte prestazioni a basso costo;
2) sviluppo di tecniche automatiche di immagazzinamento e allocazione per
rendere + efficiente         l'utilizzo della memoria disponibile;
3) sviluppo di tecniche di MEMORIA VIRTUALE che consentono all'utente di non
preoccuparsi     della gestione della memoria e rendono i programmi
sostanzialmente indipendenti dalla capacità     della memoria fisica;
4) comunicazioni veloci e dedicate tra memoria e cpu;
Tutti gli approcci precedenti sono usati in modo integrato e sinergico.
Il concetto di memoria virtuale è basato su quello di GERARCHIA DI MEMORIA.
Gestendo una gerarchia di memoria di almeno due livelli possiamo far
"vedere" alla cpu una memoria + grande e veloce di quella che sia ha in
realtà.
Molti sistemi di memoria virtuale impiegano una gerarchia a due livelli che
comprende una memoria primaria M1 di capacità S1 ed una memoria secondaria
M2 di capacità molto maggiore S2 (S2 >> S1). L'utente vede di fatto una sola
"grande memoria" poiché M1 ed M2 vengono gestite in modo che l'informazione
viene "passata" da una all'altra. Si cerca di far sì che le informazioni
cercate siano nella maggior parte dei casi in M1.
La memoria CACHE, che è una memoria piccola e molto veloce interposta fra la
cpu e la memoria primaria, ha lo scopo di far vedere alla cpu una memoria
primaria ad altissime prestazioni. A parte i registri interni alla cpu, la
cache è l'unità di memoria + veloce nella gerarchia e può essere vista come
una "memoria buffer" per la cpu. La cache viene sostanzialmente usata per
ridurre il tempo di accesso alla memoria primaria. Concettualmente il suo
uso si basa sul PRINCIPIO DI LOCALITA'
- NEL TEMPO: l'informazione che sarà usata nel futuro immediato ha alta
probabilità di essere già in uso.
- NELLO SPAZIO: nell'immediato futuro gli accessi alla memoria
coinvolgeranno con altà probabilità indirizzi vicini agli indirizzi usati +
recentemente.
-> devo fare in modo di fare riferimento alla memoria primaria solo in un
certo numero di casi.
Il discorso appena fatto per la gerarchia CACHE - MEMORIA PRIMARIA va esteso
nel caso CACHE DI PRIMO LIVELLO (L1) e CACHE DI SECONDO LIVELLO (L2)
(ovviamente la capacità di L2 è maggiore di quella di L1).
Quindi se non trovo il dato in L1 lo cercherò in L2. Se non lo trovo in L2
lo cerco nella memoria primaria (RAM). Dimensione della memoria e
probabilità di trovarvi il dato cercato sono ovviamente legate.
Non mi sembra il caso di introdurre i concetti di HIT TIME, HIT RATIO e
TEMPO MEDIO DI ACCESSO.
Antonello