PDA

View Full Version : Mi spiegate 2 cose sulla cache?


dottorkame
22-05-2003, 17:12
Leggendo gli appunti di scuola sulla cache non mi sono chiare alcune cose:

1 Nella cache sono scritte le istruzioni per il proc. oppure vengono scritti solo gli indirizzi delle istruzioni?
2 la cache di livello 2 serve come via di mezzo tra la cache di livello 1 e la memoria centrale per velocizzare di piu' le operazioni o e' solo un ampliamento della cache di livello 1?
3 miss penalty e miss rate, cosa servono e cosa sono?
4 cos' e' il cpi?

http://forum.hwupgrade.it/faccine/27.gifhttp://forum.hwupgrade.it/faccine/33.gifhttp://forum.hwupgrade.it/faccine/63.gif

jappilas
22-05-2003, 18:18
allora...

1)la cache contiene dati E istruzioni che devono essere usati dalla cpu (però al primo livello vi sono le famigerate 2 cache separate - ma sincronizzate attraverso controlli incrociati- per evitare problemi in caso code morphing)
l' indirizzamento e l' organizzazione delle cache però è peculiare...
i "dati" vengono messi anche a gruppi, in "blocchi", e a ogni blocco è assegnata una cella supplementare contenente una parte di indirizzo quando un dato serve si manda fuori l' indirizzo richiesto... una parte serve per indirizare la cella della cache, l'altra per fare un confronto nella cella ausiliaria per verificare che il dato contenuto sia proprio quello cercato

2) la cache di 2o livello è solitamente un "ampliamento", ma nel senso che quella di primo livello ne contiene un sottoinsieme dei dati, (tranne che nei primi athlon/duron dove era una espansione di cache con diversa associatività)

2/3)nella "gerarchia" della cache di solito si fa una ricerca in parallelo sul 1o e 2o livello, in modo che si minimizzi la miss penalty (cicli di clock persi in attesa del dato richiesto) se il dato era nel 2o ma non nel 1o
mentre la hit (miss) rate è n pratica una percentuale che indica la probabilità di "successo" (fallimento) nel cercare dati in cache ..
è importante perchè se la cache in una data occasione non è servita , si deve ricorrere alla RAM che è (sempre stata) più lenta rispetto alla cpu (collo di bottiglia)

4) il cpi , che mi ricordo io, è il clock per istruzione, ovvero quanti cicli di clock servono a una cpu per eseguire una data istruzione ; poichè ogni tipo di istruzione (somma intera, moltiplicazioneintera, load/store, operazioni virgola mobile, ) ha un diverso valore di cpi nello stesso processore, si considera una media, pesata sulla base della percentuale dei vari tipi di istruzioni in un tipico programma

dottorkame
22-05-2003, 18:29
Grazie! :sofico: :sofico: :sofico:

sempre parlndo di memorie, nei calcolatori moderni e' utile tenere memoria virtuale? Visto che risiede su HD non rallenta il computer?
Conviene azzerarla?

jappilas
22-05-2003, 18:51
sì .. il sistema in effetti rallenta quando l' harddisk deve lavorare al posto della ram perchè questa scarseggia (l' apertura di più programmi e/o documenti tutti assieme causa un massiccio backup della roba che non sta in ram e quindi il tipico frullare )

il rimedio in questo caso è noto: aggiungere altra ram ..

però la memoria virtuale non andrebbe rimossa del tutto: pare che i programmi che usano spazi di indirizzi molto grandi (al di là dei soliti 32 bit , equivalenti 4 GB), e che quindi si appoggerebbero ANCHE al filesystem (alcuni filesystem hanno un indirizzamento a 64 bit ad esempio) per organizzare i dati, non funzionerebbero...
sotto linux consigliano di lasciare una partizione di swap grande tanto quanto la ram installata
sotto windows si potrebbe lasciare il settaggio della dimensione in automatico

cionci
22-05-2003, 18:53
Originally posted by "jappilas"

tranne che nei primi athlon/duron dove era una espansione di cache con diversa associatività)
Anche la cache degli ultimi Athlon e Opteron è esclusiva...quello che c'è nella L1 non c'è nella L2...

Una cache set associative (associativa ad insiemi) è costituita da un numero N di parti uguali (cache N-way set associative, nella L2 degli Athlon ad esempio N = 16).

0 R V Etichetta Blocco V Etichetta Blocco ... V Etichetta Blocco
1 R V Etichetta Blocco V Etichetta Blocco ... V Etichetta Blocco
.
.
M R V Etichetta Blocco V Etichetta Blocco ... V Etichetta Blocco

V è il bit di validità, R è un campo che serve ad implementare una politica di rimpiazzamento (solitamente Least Recently Used)...la dimensione di R dipende direttamente dalla cardinalità (nel caso dell'Athlon come già detto è 16)...

L'indirizzo viene suddiviso in 3 componenti :

| Etichetta | Indice | Spiazzamento |

M = (2^numero di bit di indice)-1

I campi Blocco contengono i dati...il numero di bit di Spizzamento dipende dalla numero di byte presenti in ogni blocco... Dimensione Blocco = (2^numero bit di spiazzamento) byte...

Il campo Etichetta contiene il resto dell'indirizzo...

Quando viene fornito un indirizzo al controllore della cache (che non è altro che uno o più banchi di ram statica organizzata a dovere) si individua la riga tramite l'Indice... Le Etichette di quella riga vanno ad un comparatore che le confronta con l'Etichetta dell'indirizzo proposto al controller, se una comparazione ha successo e il bit di validità è a 1 si un cache hit...
Se nessuna Etichetta corrisponde a quella dell'indirizzo...oppure c'è una corrispondenza, ma il bit di validità è a 0 si un cache miss...

Il/i byte cercati sono individuati dallo spiazzamento all'interno del Blocco che ha generato un hit...