C A C H E

Transcript

C A C H E
Gerarchia di Memoria e Memorie Cache
Memoria virtuale:
comodità + sicurezza
ma rallenta
R / nW
Qui : modi di aumentare velocità di R / nW
Osservazione:
dati e codice non tutti uguali
alcuni si usano poco
altri tanto
Idea:
mem
CPU
<=>
Registri
<=>
piccola
mem
<=>
grande
veloce
lenta
costosa
basso
costo
Se possibile :
cache
in modo trasparente all' utente
dal francese
"casher"
1
Cache
<==>
CC
CPU
<====>
cache
+
RAM
1o
Registri
livello
A liv 2 e superiori si programma ignorando la cache
Anche
CPU ignora l'esistenza della cache
L'unico al corrente è il cache controller C C
Idea di funzionamento:
CPU
chiede dato/istruzione (operazione di lettura)
mandando indirizzo sul BUS
CC
intercetta
controlla se dato / istr.
è in cache
SI
lo manda a CPU
NO
lo preleva da RAM
lo manda a CPU
e decide se copiarlo in cache
Caso
SI
risposta ( molto ) piú veloce di RAM
NO
risposta un po' piú lenta
2
Linee guida per Cache Controller
studi statistici su programmi ===> 2 caratteristiche
proprietà di località
•
località nello spazio
se ora uso cella
•
presto forse userò cella vicina
località nel tempo
se ora uso cella presto forse la userò di nuovo
Località nel tempo
===>
se CPU chiede cella non in cache , la aggiungo
si parte con cache vuota e ......
PROBLEMA : cache piena ......
Località nello spazio ===>
se CPU chiede cella non in cache ,
aggiungo lei e le vicine
linee di cache
Linee di cache
• RAM divisa in linee
come pagine
ma piú piccole
• Linea = 2, 4, 8 parole (celle)
• se CPU chiede parola, si copia in cache intera linea
3
Cache piena:
politiche di rimpiazzamento
tante soluzioni
miglior compromesso tra semplicità e accuratezza:
tecnica L R U
Least Recently Used
per far posto a nuova linea, si butta via
linea che da piú tempo non si usa
valida sperimentalmente ed intuitivamente
PERO`
dipende anche da realizzazione della cache
-----------------------------------------------------------------------------
REALIZZAZIONE FISICA della Cache
Vogliamo recuperare dati in cache velocemente
1a Idea :
memoria associativa
( ricerca in parallelo )
4
Cache completamente associativa
Esempio (non su dispense)
RAM da 16 M
celle / parole ===> ind. fisici 24 bit
linee da 4 parole allineate ....
RAM
parola 0
parola 1
parola 2
parola 3
parola 4
parola 5
parola 6
parola 7
linea 0
da parola 0 a parola 3
linea 1
da parola 4 a parola 7
24
ind. fisico:
22 bit : num linea
bit
2 bit : offset in linea
Struttura cache:
TAG
INFO
VAL / DATA
num linea
libero / occup
copia della linea
di RAM
ultimo accesso
di RAM
USO:
Ind. fisico ---- > num linea ---> ricerca parallela su TAG
5
Cache a corrispondenza diretta
Cache completamente associativa bella
Poco usata
ma costosa
si usano tecniche che approssimano
Organizzazione a corrispondenza diretta (direct mapping)
approccio diametralmente opposto:
si parte da dispositivo semplice ed economico
poi si studia modo di utilizzarlo al meglio .....
Si usa RAM
normale
ma veloce (statica)
con ricerca solita per indirizzi ......
6
Esempio di prima ( questo è su dispense )
RAM da 16 M
celle / parole ===> ind. fisici 24 bit
linee da 4 parole allineate ....
Cache con
1 K linee :
indice:
copia
libero /
num linea
TAG
linea
occup:
di cache
12 bit
RAM
1 bit
0
1
................
2 10 - 1
↑
ind. fisico:
12 bit
10 bit
2 bit
num. linea di
num. linea
offset
RAM mod 1 K
di cache
num. linea di RAM
Corrispondenza diretta:
linee cache
possibile linea di RAM
0
0
1024
2^ 11
2 ^ 12.....
1
1
1025
j
linee k t.c. (k mod 2^10 ) = j
2^11 + 1 2^12 + 1
7
Vista in altro modo:
Linee RAM
linee CACHE
0
0
1
1
2
2
....................
....................
2^10 - 1
l 2^10 - 1
2^10
0
2^10 + 1
1
2^10 + 2
2
....................
....................
2^11 - 1
2^10 - 1
....................
....................
....................
....................
2^17
0
2^17 + 1
1
2^17 + 2
2
....................
....................
2^18 - 1
2^10 - 1
•
linea di RAM
•
linea n di RAM
<==> una sola posizione in cache
<===>
celle
4n
4n+1
4n+2
4n+3
8
linea di RAM
cosí
<==> una sola posizione in cache
ricerca veloce
1 solo accesso
a costi ridotti
MA
rimpiazzamento anche con cache semi-vuota
nessuna tecnica di rimpiazzamento (es LRU)
-----------------------------------------------------------------------------
Cache associativa ad insiemi
cache completamente associativa
troppo costosa
cache a corrispondenza diretta
troppo "rigida" non usa bene prop. di localita`
Compromesso:
organizzazione set-associative
E` QUELLO CHE SI USA
Idea:
tante cache a corrisp. diretta in parallelo
↑
2, 4, 8,
si dice: livello di associatività
Piú è alto e piú si avvicina a cache associativa .....
9
Cache associativa ad insiemi - associatività 2
Esempio di prima ( questo è su dispense )
RAM da 16 M
celle / parole ===> ind. fisici 24 bit
linee da 4 parole allineate ....
Cache : 1 K linee
MA divise in 2 cache a corr. diretta da 512 linee
ind. fisico:
13 bit
9 bit
2 bit
num. lin. RAM
num. linea
offset
mod 1/2 K
di cache
num. linea di RAM
Come prima
MA
13 + 9 bit invece di 12 + 10
• ogni linea di RAM ha 2 possibili posizioni .......
• ricerca in parallelo sulle due cache
• se non si trova:
due posizioni libere
si inserisce in una
una sola libera
si usa
nessuna libera
si libera una ..... LRU
VARIANTE:
1 cache per dati
altra per codice
10
Consistenza
Visto :
write-through
write-back
uso cache per operazioni di lettura
ma c'è anche scrittura
2 approcci:
WRITE - THROUGH
•
CPU chiede di scrivere in RAM
•
CC scrive in RAM
Lento
e in cache se presente
ma semplice e "coerente"
WRITE - BACK
• CPU chiede di scrivere in RAM
• CC scrive solo in cache ( crea nuova linea se non c'è )
Veloce
ma inconsistenza tra RAM e cache
bisogna aggiornare RAM "alla fine"
Write-through
ok se si scrive poco
in effetti : 1 write ogni 2 - 4 read .....
Write back
sfrutta meglio località nel tempo
scrivo più volte su stessa cella
in RAM solo risultato finale
però : bit per dire che linea è stata cambiata
11
sempre problema scrittura
Problema
:
Non è solo la CPU a scrivere in RAM ...
Se dispositivo DMA scrive in RAM
====>
possibile inconsistenza tra RAM e cache .....
Soluzione:
CC spia BUS : riconosce scrittura DMA
riconosce indirizzo
controlla se presente in cache
SI :
invalida copia cache oppure
aggiorna copia in cache
NOTA:
se divido
cache
in 2 : dati e codice
problema scrittura solo per cache dati ....
Infine:
registri mappati in memoria
es
I/O
indirizzi "non cachable"
12
Gerarchie di memoria e caching
" Velocità "
Latenza
Throughput
finora: abbiamo parlato di " velocità "
meglio chiarire ..............
Tempo di latenza:
tempo
tra
inizio operazione di accesso
invio indirizzo + segnali contr.
e
termine operazione di accesso
Misura di latenza
(in teoria)
cronometrando una operazione di accesso
Throughput:
num. di bit ( o byte ) letti o scritti per unità di tempo
Misura di throughput :
eseguire un gran numero di accessi
dividere poi quantità totale di dati
per il tempo totale richiesto
13
Fino ad ora :
"velocità"
<---->
latenza di una operazione
non throughput
Si vuole anche aumentare throughput
Per capire differenza:
sciacquone del WC
Grande serbatoio === tubo 1 ==>
vaschetta del WC == tubo 2 ===> WC
in genere:
scarico veloce
riempimento vaschetta lento
il throughput del WC ( num. di "scarichi" / ∆ T )
dipende da tutti e due .........
Portata di un tubo
<--->
sezione tubo
velocita` del liquido
Tornando ai computers .....
14
Gerarchia di memorie e Throughput
C
CPU
+
A
<====>
C
Registri
R
<===>
H
A
M
E
Cache veloce
bus tra CPU e Cache "stretto e veloce"
es:
bus dei dati : una parola
frequenza : 130 MHz
RAM lenta
bus tra Cache e RAM "largo e lento"
es:
bus dei dati : una linea
frequenza : 33 MHz
Obiettivo:
vogliamo
Q1 ≈ Q2
Q1 = quantita` di byte CPU -- Cache al secondo
Q2 = quantita` di byte RAM -- Cache al secondo
Esempio piu' dettagliato su dispense, con frequenze piu'
basse (20 - 100 MHz)
15
Gerarchia di memorie e livelli di caching
Cache di 1o livello
piccola ( es 64 KB ) integrata su cip CPU
velocita`
≈≈
velocita` della CPU
spesso divisa in due : cache dati -- cache codice
Cache di 2o livello
collegata con bus veloce,....
piu' grande ( es 1 MB ) ..... piu' lenta ...
Cache di 3o livello ......................
RAM .....
rispetto al disco e` una cache .....
memoria virtuale con swap su disco
MMU preleva pagine mancanti
attivando trasferimento DMA ....
................... eccetera
Cache dei Browser :
su disco i files prelevati da web piu' di recente ....
il meccanismo di cashing e` tutto software .....
16