Organizzazione dei calcolatori
Gerarchie di memoria
Politecnico di Milano
Gerarchia di memoria
Introduzione
Prof. William Fornaciari
Politecnico di Milano
[email protected]
www.elet.polimi.it/~fornacia
www.elet.polimi.it/~fornacia
©2004 William Fornaciari
Sommario
Le esigenze di memoria
Il principio di località dei programmi
La gerarchia di memoria
Principio di funzionamento della memoria cache
I problemi di progetto delle memorie cache
Prestazioni e ottimizzazioni (cenni)
Approfondimenti:
H&P, Hamacher, Stallings
Gerarchie di memoria
©2004 William Fornaciari
-2-
©2004 William Fornaciari
1
Organizzazione dei calcolatori
Gerarchie di memoria
Elementi di memoria di un
elaboratore
Processore
Nuovo elemento
dell’architettura
Reg
Cache
Memory-I/O bus
Memoria
I/O
controller
disk
Disk
disk
Disk
Gerarchie di memoria
I/O
controller
I/O
controller
Display
Network
-3-
©2004 William Fornaciari
La memoria di un sistema
d’elaborazione
Esigenze
Elaborazione
Archiviazione
Caratteristiche importanti
Velocità, Capacità, Persistenza, Costo
Tecnologie più comuni
Elettronica: veloce, costosa, volatile
Magnetica: lenta, economica, permanente
Ottica: lenta, economica, difficilmente modificabile
Obiettivi
Unire le tecnologie per giungere a una memoria,
veloce, capace e persistente a costi di mercato
Gerarchie di memoria
©2004 William Fornaciari
-4-
©2004 William Fornaciari
2
Organizzazione dei calcolatori
Gerarchie di memoria
Tecnologie di memoria
Capacità (quantità di bit)
nastro magnetico
Costo (in $ per bit)
disco magnetico rigido
100 Gbit
1 Gbit
disco ottico
memoria centrale
10 Mbit
cache di 2° livello
100 Kbit
cache di 1° livello
1 Kbit
disco magnetico flessibile
banco dei registri
1 bit
bistabile
< 1 ns
1 ns
5 ns
10 ns
50 ns
10 ms
1 sec
Tempo di accesso
Gerarchie di memoria
-5-
©2004 William Fornaciari
Il principio di località dei
programmi
Località spaziale
se l’istruzione di indirizzo i entra in esecuzione, con
probabilità ≈ 1 anche l’istruzione di indirizzo i + di
entrerà in esecuzione (di è un intero piccolo)
Motivazione
di solito le istruzioni sono eseguite in sequenza
i salti sono relativamente rari o comunque spesso sono
polarizzati verso un ramo
Gerarchie di memoria
©2004 William Fornaciari
-6-
©2004 William Fornaciari
3
Organizzazione dei calcolatori
Gerarchie di memoria
Il principio di località dei
programmi
Località temporale
se un’istruzione entra in esecuzione al tempo t, con
probabilità ≈ 1 la stessa istruzione sarà rieseguita al
tempo t + dt (dove dt è piccolo rispetto a t)
Motivazione
spesso le istruzioni rieseguite fanno parte di un ciclo,
la cui presenza è giustificata solo se esso viene
reiterato molte volte
se un’istruzione appartenente a un ciclo entra in
esecuzione, è molto probabile che, entro il tempo di
un’iterazione del ciclo, essa venga rieseguita
i cicli brevi generalmente sono molto più numerosi di
quelli lunghi
Gerarchie di memoria
-7-
©2004 William Fornaciari
Il principio di località dei
programmi
Località spaziale e temporale sono indipendenti
Se valgono entrambi, sono riassunti nel principio di
località spazio-temporale
se l’istruzione di indirizzo i entra in esecuzione al
tempo t, con probabilità ≈ 1 l’istruzione di indirizzo
i + di entrerà in esecuzione al tempo t + dt, dove di e
dt sono piccoli rispetto a i e t, rispettivamente
La località spazio-temporale è statisticamente ben
verificata dalla maggior parte dei programmi
la maggioranza delle istruzioni appartiene a cicli
interni, con corpo sequenziale, brevi, iterati
numerose volte e operanti su dati contigui
legge empirica: 90% del tempo è speso sul 10% codice
Gerarchie di memoria
©2004 William Fornaciari
-8-
©2004 William Fornaciari
4
Organizzazione dei calcolatori
Gerarchie di memoria
Interpretazione del principio di
località
Le istruzioni del programma si possono raggruppare
in “blocchi” di istruzioni consecutive
se un’istruzione (qualsiasi) di un blocco entra in
esecuzione, allora l’intero blocco di istruzioni verrà
eseguito
se un blocco (qualsiasi) entra in esecuzione, allora
entro breve tempo lo stesso blocco verrà rieseguito
I blocchi sono per esempio i “corpi” dei cicli più
interni al programma
Anche i dati (oltre alle istruzioni) possono soddisfare
al principio di località spazio-temporale
Gerarchie di memoria
-9-
©2004 William Fornaciari
La gerarchia di memoria
La
memoria
viene
organizzata
in
livelli
caratterizzati da velocità, dimensioni e costi diversi
I blocchi possono essere trasferiti da un livello
inferiore a uno superiore
Cerco di tenere i blocchi di informazione usati più di
frequente vicino alla CPU, per ottimizzare i tempi
Il dimensionamento del sistema e le politiche di
gestione derivano da analisi statistico/quantitative
delle applicazioni
L’obiettivo è fornire la sensazione di una memoria
con la velocità del primo livello e la capacità del
(dei) successivo(i)
Gerarchie di memoria
©2004 William Fornaciari
- 10 -
©2004 William Fornaciari
5
Organizzazione dei calcolatori
Gerarchie di memoria
La gerarchia di memoria: il livello
cache
parte di interesse per la discussione sulla cache
MEMORIA
VIRTUALE
ciclo del
programma
carica le/i
istr./dati da
eseguire/
elaborare
ciclo del
programma
MEMORIA
CACHE
carica i
blocchi
entranti
in uso
MEMORIA
CENTRALE
blocco di istr.
blocco di dati
pagina di istr.
carica le
pagine
entranti
in uso
pagina di dati
blocco di istr.
PROCESSORE
blocco di dati
registri
scarica i
risultati
elaborati
scarica i
blocchi
non più
in uso
Velocità, costi
Gerarchie di memoria
scarica le
pagine
non più
in uso
Capacità (quantità di bit)
- 11 -
©2004 William Fornaciari
Terminologia
Hit: tentativo di accesso(lett./scritt.) con successo
a un determinato livello della gerarchia
Miss: tentativo di accesso(lett./scritt.) andato a
vuoto
Hit time: tempo di accesso a livello superiore della
gerarchia (incluso rilevazione ev. fallimento)
Miss penality: tempo per sostituire un blocco nel
livello superiore con uno del livello inferiore, più il
tempo di lettura del dato cercato
Hit rate, Miss rate: percentuale dei tentativi di
accesso che hanno successo o falliscono (Mr=1-Hr)
Gerarchie di memoria
©2004 William Fornaciari
- 12 -
©2004 William Fornaciari
6
Organizzazione dei calcolatori
Gerarchie di memoria
Organizzazione di una memoria
cache
Memoria centrale e cache sono organizzate a
blocchi di parole, di uguale dimensione
La memoria cache contiene copie di blocchi della
memoria centrale, oppure blocchi liberi
Il sistema di gestione della cache è in grado di
copiare (caricare) blocchi dalla memoria centrale
alla memoria cache, oppure di ricopiare (scaricare)
blocchi dalla memoria cache alla memoria centrale,
tramite un’apposita unità funzionale
Normalmente il processore accede solo alla
memoria cache (tranne casi particolari)
La capacità del sistema è pari a quella della sola
memoria centrale (la cache contiene solo copie )
Gerarchie di memoria
- 13 -
©2004 William Fornaciari
Struttura della memoria cache
unità funzionale di
copiatura / ricopiatura
(carico /scarico)
dei blocchi di memoria
IND. DI
BLOCCO
MEMORIA
CENTRALE
512 × 32
parola
0: 000
IND. DI
PAROLA
0: 000000
63: 111111
FLAG DI IND. DI
BLOCCO BLOCCO
MEMORIA
CACHE
256 × 32
IND. DI
PAROLA
parola
1
1: 001
0: 000000
0: 00
blocco
parola
0: 000000
63: 111111
2: 010
63: 111111
1
1: 01
1
2: 10
0
3: 11
blocco
0: 000000
parola
63: 111111
parola
43: 101011
3: 011
4: 100
blocco
libero
5: 101
6: 110
2, 43: 10, 101011 = 10101011
parola
24: 011000
(indirizzo di parola completo)
memoria ausiliaria
contenente i bit di
allocazione dei blocchi
Gerarchie di memoria
©2004 William Fornaciari
6, 24: 110, 011000 = 110011000 7: 111
(indirizzo di parola completo)
- 14 -
©2004 William Fornaciari
7
Organizzazione dei calcolatori
Gerarchie di memoria
Istruzioni: funzionamento base
Il processore preleva istruzione dalla memoria cache
(non dalla memoria centrale)
Se il blocco contenente l’istruzione da prelevare si
trova nella memoria cache, l’istruzione viene letta
e il processore prosegue l’esecuzione
Se l’istruzione da prelevare non si trova nella cache
il processore sospende l’esecuzione
il blocco contenente l’istruzione da prelevare (ed
eseguire) viene caricato dalla memoria centrale in un
blocco libero della memoria cache
il processore preleva l’istruzione dalla memoria cache
e riprende l’esecuzione
Gerarchie di memoria
- 15 -
©2004 William Fornaciari
Dati: funzionamento base
Il processore deve leggere il dato dalla memoria
cache, oppure deve scrivere il dato nella memoria
cache
Se il dato da leggere/scrivere non si trova nella
memoria cache, si procede in modo simile alle
istruzioni (con qualche differenza, soprattutto nel
caso della scrittura)
Casi particolari
in determinate situazioni o sistemi è richiesto che il
processore possa accedere direttamente alla memoria
centrale, bypassando la cache
Gerarchie di memoria
©2004 William Fornaciari
- 16 -
©2004 William Fornaciari
8
Organizzazione dei calcolatori
Gerarchie di memoria
I principali problemi di progetto
Metodo di indirizzamento
come scegliere il blocco della cache in cui copiare un
dato blocco di memoria centrale (mapping)
Metodo di identificazione
come localizzare un dato blocco di istruzioni o dati
all’interno della cache
Metodo di lettura
come comportarsi quando si deve leggere una parola
contenuta in un blocco della memoria cache
Metodo di scrittura (problema della coerenza)
come comportarsi quando si deve leggere una parola
contenuta in un blocco della memoria cache
Metodo di sostituzione
Come si sostituiscono i blocchi della cache al fine di
liberare spazio per caricarne altri
Gerarchie di memoria
- 17 -
©2004 William Fornaciari
Indirizzamento diretto
Ogni blocco della memoria
centrale è caricabile in un solo
blocco della cache
Il blocco j in mem principale
è tradotto in blocco
j MOD #blocchi in cache
Alta velocità, basso costo,
numerosi conflitti di
allocazione
etichetta
Gerarchie di memoria
©2004 William Fornaciari
- 18 -
MEMORIA
CENTRALE
IND. DI
BLOCCO
0 0 0
000
B0
IND. DI
BLOCCO
Es. se debbo accedere a
informazioni in blocco B0 e B4,
anche se il resto della cache è
vuota, ho continui conflitti
# blocco
0 0 1
MEMORIA
CACHE
B1
C0
B2
C1
B3
C2
B4
C3
B5
0 1 0
00
0 1 1
01
1 0 0
10
1 0 1
11
1 1 0
B6
1 1 1
B7
©2004 William Fornaciari
9
Organizzazione dei calcolatori
Gerarchie di memoria
Indirizzamento diretto e
identificazione
Per identificare un blocco in
cache occorre memorizzare in
memoria associativa
l’etichetta dell’indirizzo di
memoria centrale
L’indirizzo di memoria centrale
e suddiviso in tre sezioni
etichetta
# blocco
MEMORIA
CENTRALE
IND. DI
BLOCCO
0 0 0
000
B0
IND. DI
BLOCCO
0 0 1
MEMORIA
CACHE
B1
C0
B2
C1
B3
C2
B4
C3
B5
0 1 0
00
0 1 1
01
1 0 0
10
1 0 1
11
etichetta
quale blocco di mem
centrale, fra i possibili,
è realmente caricato in
cache
blocco
parola
1 1 0
blocco della cache
ove memorizzare il
blocco della centale
Gerarchie di memoria
quale parola fra
quelle del blocco
B6
1 1 1
B7
- 19 -
©2004 William Fornaciari
Indirizzamento diretto:
esecuzione
La CPU genera indirizzo e subito analizza la cache
I bit del campo blocco puntano a blocco particolare
della cache
I bit più significativi, quelli dell’etichetta, sono
confrontati con l’etichetta associata al blocco cache
se sono uguali
OK, la parola è in quel blocco di cache
se sono diversi
debbo leggere e caricare blocco contenente la parola
desiderata dalla memoria centrale
Gerarchie di memoria
©2004 William Fornaciari
- 20 -
©2004 William Fornaciari
10
Organizzazione dei calcolatori
Gerarchie di memoria
Indirizzamento diretto: esempio
Mostrare la struttura degli indirizzi di memoria per
il seguente sistema
mem principale di 4 M parole
blocchi da 64 parole
mem cache di 1K parole
Risposta
ind memoria = 22 bit totali (222= 22 *220= 4 M)
campo parola= 6 bit (indirizzo le 26=64 parole del
blocco)
# blocchi: dim cache/dim blocchi = 1K/64= 16 blocchi
nella cache che posso identificare con 4 bit
Etichetta= 12 (22-4-6), infatti
64K blocchi in mem princip/16 blocchi cache = 212
Gerarchie di memoria
- 21 -
©2004 William Fornaciari
Indirizzamento associativo
Ogni blocco delle memoria
centrale è caricabile in un
blocco qualunque della
cache
Ho pochi conflitti di
allocazione ma costo
elevato
Riduco al minimo la
presenza di blocchi liberi
non sfruttati in cache
MEMORIA
CENTRALE
etichetta
IND. DI
BLOCCO
0 0 0
000
B0
IND. DI
BLOCCO
0 0 1
MEMORIA
CACHE
B1
C0
B2
C1
B3
C2
B4
C3
B5
0 1 0
00
0 1 1
01
1 0 0
10
1 0 1
11
1 1 0
B6
1 1 1
B7
Gerarchie di memoria
©2004 William Fornaciari
- 22 -
©2004 William Fornaciari
11
Organizzazione dei calcolatori
Gerarchie di memoria
Indirizz. associativo e
identificazione
In una memoria associativa
viene memorizzata
l’etichetta dell’indirizzo di
memoria centrale
L’indirizzo di memoria
centrale e suddiviso in due
sole sezioni
MEMORIA
CENTRALE
0 0 0
B0
IND. DI
BLOCCO
0 0 1
MEMORIA
CACHE
B1
C0 = B0
B2
C1= B3
B3
C2= B6
B4
C3= B5
B5
0 1 0
00
00
000
01
011
10
110
11
101
0 1 1
01
1 0 0
10
1 0 1
11
etichetta
quale blocco di mem
centrale è caricato in cache
Gerarchie di memoria
IND. DI
BLOCCO
parola
1 1 0
quale parola fra
quelle del blocco
B6
memoria associativa
contenente le etichette dei
blocchi allocati
- 23 -
1 1 1
B7
©2004 William Fornaciari
Indirizzamento associativo:
esecuzione
La CPU genera un indirizzo e subito viene analizzata
la cache
I bit di etichetta dell’indirizzo di memoria centrale
sono confrontati in modo associativo con tutti quelli
della cache per vedere se il blocco è presente in
cache
Etichette lunghe
mem associativa più grossa, costosa e lenta del
diretto
Uso lo spazio più efficientemente
un blocco esce dalla cache solo se è piena
riduco in numero di miss (penalità)
Gerarchie di memoria
©2004 William Fornaciari
- 24 -
©2004 William Fornaciari
12
Organizzazione dei calcolatori
Gerarchie di memoria
Indirizzamento associativo:
esempio
Mostrare la struttura degli indirizzi di memoria per
il seguente sistema
mem principale di 4 M parole
blocchi da 64 parole
mem cache di 1K parole
Risposta
ind memoria = 22 bit totali (222= 22 *220= 4 M)
campo parola= 6 bit (indirizzo le 26=64 parole del
blocco)
Etichetta= 16 (22-6), infatti
4M/64= 64K (216) blocchi in mem principale
Gerarchie di memoria
- 25 -
©2004 William Fornaciari
Indirizzamento set-associativo
I blocchi della cache sono
suddivisi in gruppi (set)
Ogni blocco della
memoria centrale è
caricabile in un dato set
Ho alcuni conflitti di
allocazione, costi e
velocità medi
È la soluzione intermedia
fra la soluzione diretta e
associativa
Gerarchie di memoria
©2004 William Fornaciari
etichetta
# gruppo
MEMORIA
CENTRALE
IND. DI
BLOCCO
0 0 0
0 0 0
B0
{
{
GRUPPI
- 26 -
IND. DI
BLOCCO
0 0 1
MEMORIA
CACHE
B1
C0
B2
C1
B3
C2
B4
C3
B5
0 1 0
00
G0
G1
0 1 1
01
1 0 0
10
1 0 1
11
1 1 0
B6
# DI GRUPPI
=2
DIM. GRUPPO = 2
1 1 1
B7
©2004 William Fornaciari
13
Organizzazione dei calcolatori
Gerarchie di memoria
Indirizz. set-associativo e
identificazione
Per identificare un blocco in
cache occorre memorizzare
in memoria associativa
l’etichetta dell’indirizzo di
memoria centrale relativi ai
blocchi effettivamente
allocati nel set
L’indirizzo di memoria
centrale è suddiviso in tre
sezioni etichetta blocco
parola
quale blocco di mem
centrale, fra i possibili per
un dato set, è realmente
caricato in cache
Gerarchie di memoria
set della memoria
cache nel quale è
caricato il blocco
MEMORIA
CENTRALE
IND. DI
BLOCCO
0 0 0
B0
{
{
IND. DI
GRUPPO
IND. DI
BLOCCO
0 0 1
MEMORIA
CACHE
B1
C0 = B0
B2
C1 = B6
B3
C2 = B5
B4
C3 = B3
B5
0 1 0
00
0
00
00
01
11
10
10
11
01
1
0 1 1
01
1 0 0
10
1 0 1
11
1 1 0
B6
memoria associativa
contenente le etichette
dei blocchi allocati
1 1 1
B7
quale parola fra
quelle del blocco
- 27 -
©2004 William Fornaciari
Indirizz. set-associativo:
esecuzione
I bit di etichetta dell’indirizzo di memoria centrale
sono confrontati in modo associativo con le
etichette dei blocchi dell’insieme da controllare,
per vedere se il blocco è presente in cache
Etichette di lunghezza intermedia
mem associativa più piccola del caso precedente, più
veloce e meno costosa (più grossa del diretto)
Conflitti
ho meno conflitti del diretto ma ho meno scelta nel
posizionare il blocco rispetto al caso associativo
Casi limite
1 blocco per set: indirizzamento diretto
1 solo insieme: indir. completamente associativo
Gerarchie di memoria
©2004 William Fornaciari
- 28 -
©2004 William Fornaciari
14
Organizzazione dei calcolatori
Gerarchie di memoria
Indirizz. set-associativo: esempio
Mostrare la struttura degli indirizzi di memoria per
il seguente sistema
mem principale di 4 M parole
blocchi da 64 parole
mem cache di 1K parole
2 blocchi per insieme
Risposta
ind memoria = 22 bit totali (222= 22 *220= 4 M)
campo parola= 6 bit (indirizzo le 26=64 parole del
blocco)
blocco: 3 bit; dim cache/dim set = 1K/64*2 = 23 set
Etichetta: 13 bit (22-6-3)
Gerarchie di memoria
- 29 -
©2004 William Fornaciari
Cache hit: metodi di scrittura
Problema della coerenza
il blocco è in cache, ma scrivendo la parola solo in
cache la memoria centrale non è più allineata
Politiche di scrittura della parola
Write-through (immediata)
il processore scrive la parola sia in memoria centrale,
sia nella cache e prosegue la sua attività
Write-back (differita)
il processore scrive solo in cache e prosegue attività
il blocco viene marcato come modificato e in seguito
(tipicamente all’atto della rimozione per fare spazio)
verrà ricopiato in cache
Gerarchie di memoria
©2004 William Fornaciari
- 30 -
©2004 William Fornaciari
15
Organizzazione dei calcolatori
Gerarchie di memoria
Cache hit: metodi di lettura
Nessun problema!
Il blocco è nella cache
la parola viene letta dalla copia residente in cache
Il processore continua subito la propria attività
Gerarchie di memoria
- 31 -
©2004 William Fornaciari
Cache miss: lettura
Il processore si sospende e il blocco deve essere
caricato da mem centrale in mem cache
Politiche di lettura della parola
Read-through (immediata)
il processore legge la parola non appena viene caricata
in cache e riprende subito l’attività
Read-back (differita)
il processore attende che l’intero blocco sia stato
caricato in cache, poi legge la parola e riprende attività
Gerarchie di memoria
©2004 William Fornaciari
- 32 -
©2004 William Fornaciari
16
Organizzazione dei calcolatori
Gerarchie di memoria
Cache miss: scrittura
L’operazione di scrittura è molto meno frequente
della lettura
in generale non è obbligatorio caricare il blocco dalla
mem centrale in cache
Politiche di scrittura della parola
Write-through (immediata)
il processore bypassa la cache, scrive la parola solo in
mem centrale e riprende attività
Write-back (differita)
il processore copia il blocco interessato nella cache
il processore scrive solo in cache e prosegue attività
il blocco viene marcato come modificato e in seguito
(come nel caso write-back hit) verrà ricopiato in cache
Gerarchie di memoria
- 33 -
©2004 William Fornaciari
Metodo di sostituzione
Problema
si deve caricare un blocco in cache ma non esistono
più blocchi liberi per accoglierlo
Soluzione
sostituzione: scegliere un blocco della mem cache e
liberarlo, per fare posto al nuovo
L’algoritmo di sostituzione individua il blocco della
cache da sostituire
per indirizzamento diretto il blocco è fissato
Least Recently Used (LRU): si sostituisce il blocco di
memoria usato meno recentemente
Random: scelta a caso, realizzazione semplice
FIFO: tratto il set come coda circolare, rimpiazzo
blocco in testa, realizzazione semplice
Gerarchie di memoria
©2004 William Fornaciari
- 34 -
©2004 William Fornaciari
17
Organizzazione dei calcolatori
Gerarchie di memoria
Algoritmo LRU
Ogni blocco di memoria cache è dotato di un
contatore di invecchiamento
registro di n bit, se la memoria cache ha 2n blocchi
Ad ogni cache hit il contatore del blocco di
memoria cache interessato viene azzerato, e inoltre
i contatori dei blocchi più “giovani” (<) vengono
incrementati
i contatori dei blocchi più “vecchi” (>) restano
invariati
Gerarchie di memoria
- 35 -
©2004 William Fornaciari
Algoritmo LRU
Ad ogni cache miss occorre caricare in cache un
nuovo blocco
se in cache c’è un blocco libero, lo si occupa
caricando il blocco e azzerandone il contatore
se in cache non c’è alcun blocco libero, si sostituisce
il blocco avente contatore di valore massimo,
azzerandolo
In entrambi i casi i contatori di invecchiamento
degli altri blocchi occupati vengono incrementati
Proprietà di LRU
scelta univoca: ad ogni istante esiste un solo blocco
nella cache con contatore di invecchiamento di valore
massimo
Gerarchie di memoria
©2004 William Fornaciari
- 36 -
©2004 William Fornaciari
18
Organizzazione dei calcolatori
Gerarchie di memoria
Limiti della cache
Non serve aumentare le dimensioni della cache oltre
una capacità limite, sopra cui le prestazioni del
sistema di memoria smettono di aumentare o
addirittura iniziano a diminuire
guadagno di
prestazioni
saturazione
guadagno di prestazioni =
velocità sistema con cache
velocità sistema senza cache
limite di
guadagno
3
zona di
decadimento
zona di
crescita
2
capacità limite
capacità cache
1
10K
Gerarchie di memoria
100K
1M
10M
100M
- 37 -
©2004 William Fornaciari
Limiti delle cache: motivazioni
Se le dimensioni della cache superano i limiti di validità dei
principi di località dei programmi, nella cache, oltre ai blocchi
usati in modo intenso, vengono inevitabilmente a trovarsi
blocchi spesso liberi (e dunque sprecati)
blocchi invecchiati, che dopo un periodo di uso intenso
vengono ormai acceduti poco di frequente (e che dunque si
potrebbero lasciare senza danno in memoria centrale)
Questo impedisce la crescita indefinita del guadagni di
prestazioni, all’aumentare della capacità della cache
(fenomeno di saturazione)
Inoltre, all’aumentare delle dimensioni della cache il tempo di
accesso alla cache aumenta (per motivi tecnologici), e dunque
superando la capacità limite della cache le prestazioni del
sistema di memoria dotato di cache iniziano a dacadere
Gerarchie di memoria
©2004 William Fornaciari
- 38 -
©2004 William Fornaciari
19
Organizzazione dei calcolatori
Gerarchie di memoria
Prestazioni delle cache
h
C
M
hit rate, tipicamente > 90%
tempo per accedere alle informazioni in cache
penalità di fallimento
tempo addizionale per portare le info nella cache in
caso di miss, la cpu è in stallo
tavg tempo medio di accesso sperimentato dalla CPU
tavg = h C + (1-h) M
Guadagno di prestazioni
tavg con cache/ t senza cache
Gerarchie di memoria
- 39 -
©2004 William Fornaciari
Prestazioni delle cache:
miglioramento h
Aumento dimensione
anche $$$ sale
Aumento dim blocchi a parità dim cache per meglio
sfruttare la località spaziale
ho penalità maggiore in caso di miss
con blocchi grossi molti elementi possono rimanere
inutilizzati
Il progetto deve essere guidato da fattori
costo/prestazione e possibilmente orientato
all’applicazione
Gerarchie di memoria
©2004 William Fornaciari
- 40 -
©2004 William Fornaciari
20
Organizzazione dei calcolatori
Gerarchie di memoria
Tecniche avanzate (cenni)
Portare la cache sullo stesso chip della CPU
costoso, non praticabile se le dim sono grandi
Aggiungo un livello intermedio
L1 typ on-chip, ck elevato (typ dim. decine di Kbyte)
L2 typ off-chip, dim L2> dimL1 (anche Mbyte)
tavg= h1C1 + (1-h1)h2C2 + (1-h1)(1-h2)M
se h1~ h2 ~ 90%: (1-h1)(1-h2) ~ 1%, M poco influente
Cache dati e istruzioni separate
aumento il parallelismo
tuning mirato dei parametri
elevata complessità
Gerarchie di memoria
- 41 -
©2004 William Fornaciari
Dimensione, costo e velocità:
valori tipici ai vari livelli della
gerarchia
cache
CPU
Reg.
dimesione: 200 B
velocità:
3 ns
$/Mbyte:
dim. blocco: 4 B
Gerarchie di memoria
©2004 William Fornaciari
4B
C
a
c
h
e
8B
32 KB / 4MB
6 ns
$256/MB
8B
- 42 -
Memoria virtuale
Memoria
128 MB
100 ns
$2/MB
4 KB
4 KB
disco
20 GB
10 ms
$0.8/MB
©2004 William Fornaciari
21
Organizzazione dei calcolatori
Gerarchie di memoria
Evoluzione della tecnologia
Le previsioni riportate, risalenti al 1992, sono state
già abbondantemente superate
Anno
1992
1995
1998
2001
2004
2007
Feature size 0.5
0.35
0.25
0.18
0.12
0.10
DRAM cap
16M
64M
256M
1G
4G
16G
Gates/chip
300K
800K
2M
5M
10M
20M
2.5
4.0
6.0
8.0
10.0
12.5
off chip MHz 60
100
175
250
350
500
on chip MHz 120
200
350
500
700
1000
Chip
cm2
Gerarchie di memoria
- 43 -
©2004 William Fornaciari
Il gap fra processore e memoria
■
1000
▲
●
Access time (ns)
▲
■
●
▲
100
▲
■
●
●
10
■
1
1980
1985
1990
1995
Year
■
microprocessor clock periods
Gerarchie di memoria
©2004 William Fornaciari
●
SRAM access time
- 44 -
▲
DRAM access time
©2004 William Fornaciari
22
Organizzazione dei calcolatori
Gerarchie di memoria
Evoluzione del Prezzo/Mbyte
100000
■
●
10000
■
1000
$/Mbyte
▲
SRAM
●
DRAM
▲
disk
●
■
■
●
▲
100
■
●
10
▲
1
▲
0.1
1980
1985
1990
1995
Year
Gerarchie di memoria
- 45 -
©2004 William Fornaciari
Esempi di cache in sistemi
commerciali
Esempio di cache
integrata nello
stesso package
del processore
Caratteristica
Organizzazione della cache
Intel Pentium Pro
PowerPC 604
Cache dati e istruzioni separate Cache dati e istruzioni separate
Dimensione della cache
8 KB ciascuna (istr./dati)
Associatività
set associativa a 4 vie
set associativa 4 vie
Politica rimpiazzamento
Dimensione blocco
LRU (approssimato)
32 byte
LRU
32 byte
Politica scrittura
Write-back
Write-back o write-through
Gerarchie di memoria
©2004 William Fornaciari
- 46 -
16 KB ciascuna (istr./dati)
©2004 William Fornaciari
23
Organizzazione dei calcolatori
Gerarchie di memoria
Alpha 21164 Chip
Cache
L1 dati
L1 istruzioni
L2 unificata
TLB
Branch
history
Gerarchie di memoria
- 47 -
©2004 William Fornaciari
Alpha 21164 Chip: cache
L2
Control
Right Half
L2
L1
Data
L1
I
n
s
t
r.
Right Half
L2
Gerarchie di memoria
©2004 William Fornaciari
Cache
L1 dati
L1 istruzioni
L2 unificata
TLB
Branch
history
L2
Tags
- 48 -
©2004 William Fornaciari
24
Organizzazione dei calcolatori
Gerarchie di memoria
Alpha 21164: gerarchia
Obiettivo di progetto primario
migliorare prestazioni della memoria, le prime
versioni di Alpha erano soggette a molti stalli
Regs.
L1 Data
1 cycle latency
8KB, direct
Write-through
Dual Ported
32B lines
L1 Instruction
8KB, direct
32B lines
L2 Unified
8 cycle latency
96KB
3-way assoc.
Write-back
32B/64B lines
L3 Unified
1M-64M
direct
Write-back
Main
Memory
Up to 1TB
32B or 64B
lines
Processor Chip
Gerarchie di memoria
©2004 William Fornaciari
- 49 -
©2004 William Fornaciari
25