Memoria Cache - UniNa STiDuE

Transcript

Memoria Cache - UniNa STiDuE
Università di Trieste
Memoria Cache
Calcolatori Elettronici a.a. 2006-2007
Cache-1
Università di Trieste
Calcolatori Elettronici a.a. 2006-2007
Cache-2
Richiami sulla memoria centrale
Università di Trieste
BUS del
Calcolatore
(Indirizzi, Dati e Controllo)
Unità Funzionali
Porte BUS
indirizzi
Memoria
Centrale
dati
MFC
controllo
Read/Write
MFC: Memory Function Completed
Collegamenti della memoria all’interno del calcolatore
Calcolatori Elettronici a.a. 2006-2007
Cache-3
Università di Trieste
Suddivisione in parole della memoria centrale
byte
parola
(da 32 bit)
Spazio di
indirizzamento:
[0, 2k)
parola
(da 16 bit)
Memoria organizzata a parole (32 bit)
0
4
8
C
0
4
8
C
1
5
9
D
2
6
A
E
3
7
B
F
2k − 4
2k − 4
2k − 3
2k − 2
2k − 1
0
7 8 15 16 23 24 32
Capacità: 2k × 32
Calcolatori Elettronici a.a. 2006-2007
Cache-4
Gerarchia di memoria
Università di Trieste
MEMORIA
VIRTUALE
ciclo del
programma
carica le/i
istr./dati da
eseguire/
elaborare
MEMORIA
CACHE
ciclo del
programma
MEMORIA
CENTRALE
carica i
blocchi
entranti
in uso
blocco di istr.
pagina di istr.
carica le
pagine
entranti
in uso
blocco di dati
pagina di dati
blocco di istr.
PROCESSORE
blocco di dati
registri
scarica i
risultati
elaborati
scarica i
blocchi
non più
in uso
scarica le
pagine
non più
in uso
per la discussione sulla memoria cache interessa questa parte
Capacità (quantità di bit)
Velocità (tempo di accesso)−1
Calcolatori Elettronici a.a. 2006-2007
Cache-5
Università di Trieste
Cache
• Memoria piccola e veloce
– Tipicamente ~256kbytes (1998)
– 2 cycle access time
• Stesso “die” del processore
• “Off-chip” cache possible
– Utilizzo di RAM veloce (SRAM) piuttosto che Ram
dinamica più lenta
– al 2° levello della gerarchia di memoria
• “Caches” most recently used memory locations “closer” to the
processor
– closer = closer in time
Calcolatori Elettronici a.a. 2006-2007
Cache-6
Università di Trieste
Calcolatori Elettronici a.a. 2006-2007
Cache-7
Università di Trieste
Cache
• Etimologia
– cacher (Francese) = nascondere, celare
• Transparente ai programmmi
– Vanno semplicemente più piano se il sistema ne è
privo
• I moderni processori “contano” su di lei
– Riduce il “costo” degli accessi alla memoria
principale
– Enables instruction/cycle throughput
– Programmi tipici
• ~25% memory accesses
Calcolatori Elettronici a.a. 2006-2007
Cache-8
Università di Trieste
Cache
• Basata sul Principio di Località
– I programmi usano e riusano continuamente le
stesse locazioni di memoria
– Istruzioni
• loops,
• common subroutines
– Dati
• look-up tables
• “working” data sets
Calcolatori Elettronici a.a. 2006-2007
Cache-9
Università di Trieste
Cache - Principi di località
• Località temporale: se un’istruzione entra in
esecuzione al tempo t, con probabilità ≈ 1 la stessa
istruzione rientrerà in esecuzione al tempo t + dt
(dove dt è piccolo rispetto a t).
• Motivazione: siccome le istruzioni che vengono
rieseguite di frequente fanno parte, di solito, del
corpo di un ciclo, e siccome la presenza di un ciclo è
giustificata solo se esso viene reiterato molte volte
(altrimenti lo si potrebbe eliminare), se un’istruzione
appartenente a un ciclo entra in esecuzione, è molto
probabile che, entro il tempo di un’iterazione del
ciclo, essa venga rieseguita; e si noti che i cicli brevi
sono molto più numerosi di quelli lunghi.
Calcolatori Elettronici a.a. 2006-2007
Cache-10
Università di Trieste
Cache - Principi di località
• Località spaziale: se l’istruzione di indirizzo i
entra in esecuzione, con probabilità ≈ 1 anche
l’istruzione di indirizzo i + di entrerà in esecuzione
(dove di è un intero di piccolo valore).
• Motivazione: nella maggior parte dei casi le
istruzioni vengono eseguite in sequenza, pertanto
l’esecuzione di un’istruzione è, con elevata
probabilità, seguita dall’esecuzione dell’istruzione
collocata all’indirizzo successivo; i salti sono
relativamente rari, e spesso sono polarizzati, cioè i
due possibili esiti del salto hanno probabilità
significativamente-diverse
Calcolatori Elettronici a.a. 2006-2007
Cache-11
Università di Trieste
Calcolatori Elettronici a.a. 2006-2007
Cache-12
Università di Trieste
Cache - Principi di località
• Il principio di località spaziale è INDIPENDENTE
dal principio di località temporale!
• Se valgono entrambi
riassumere nel:
i
principi,
si
possono
• :
• 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.
Calcolatori Elettronici a.a. 2006-2007
Cache-13
Università di Trieste
Cache - Principi di località
• IL
PRINCIPIO DI
LOCALITÀ
SPAZIOTEMPORALE
È
STATISTICAMENTE
BEN
VERIFICATO NELLA MAGGIOR PARTE DEI
PROGRAMMI!
• Motivazione: la maggior parte delle istruzioni
eseguite dal processore appartiene ai cicli più
interni del programma; di norma tali cicli hanno
corpo sequenziale, di solito sono brevi e vengono
iterati numerose volte.
Calcolatori Elettronici a.a. 2006-2007
Cache-14
Università di Trieste
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
0: 000000
0: 00
1: 001
blocco
parola
0: 000000
63: 111111
2: 010
63: 111111
1
1: 01
1
2: 10
blocco
parola
3: 11
63: 111111
3: 011
4: 100
parola
0
0: 000000
43: 101011
blocco
libero
5: 101
2, 43: 10, 101011 = 10101011
6: 110
parola
24: 011000
(indirizzo di parola completo)
memoria ausiliaria
contenente i bit di
allocazione dei blocchi
6, 24: 110, 011000 = 110011000 7: 111
(indirizzo di parola completo)
Calcolatori Elettronici a.a. 2006-2007
Cache-15
Università di Trieste
• La memoria centrale e la memoria cache sono
organizzate a blocchi di parole, di uguale
dimensione.
• La memoria cache contiene solo copie di blocchi
della
memoria
centrale,
oppure
blocchi
correntemente liberi.
• Il sistema di cache è in grado di copiare (o
caricare) blocchi dalla memoria centrale alla
memoria cache, oppure di ricopiare (o 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 dimensione del sistema è pari alla capacità
della sola memoria centrale (perché la mem.
cache contiene solo copie di blocchi).
Calcolatori Elettronici a.a. 2006-2007
Cache-16
Operazioni della Cache
Università di Trieste
• La richiesta di lettura della memoria viene prima
effettuata nella cache
– Se la parola cercata è nella cache, essa è letta
dalla cache ( e aggiornata nella cache)
ÍCache hit
– Se non c’è, la richiesta è passata alla memoria
principale ed il dato è letto (scritto) nella stessa.
ÍCache miss
VA
CPU
MMU
D or I
Calcolatori Elettronici a.a. 2006-2007
PA
PA
Cache
D
or
I
Main
Mem
Cache-17
Efficienza della Cache
• Una “Frequenza dei successi” (Hit Rate) del 90% è
comune
Università di Trieste
– Esempio:
–
–
–
–
Tempo d’accesso alla memoria centrale 100ns
Tempo d’accesso alla cache 10ns
Valore medio dell’Hit Rate 90%
quindi il tempo impiegato per 10 accessi sarà:
– 100+9x10=190 ns
– Quindi la presenza della cache ha l’effetto di
ridurre il tempo (medio) di accesso alla memoria
dai 100 ns, in sua assenza, ai 19 ns
Calcolatori Elettronici a.a. 2006-2007
Cache-18
Università di Trieste
Efficienza della Cache
la “frequenza dei fallimenti” (miss rate), è
pari a miss rate = (1.0 – hit rate) è la
frazione di accessi alla memoria che non
hanno trovato il dato desiderato nel livello
superiore.
Calcolatori Elettronici a.a. 2006-2007
Cache-19
Università di Trieste
Organizzazione della Cache
In assenza di memoria cache, CPU e memoria
primaria sono direttamente collegate. La
CPU invia alla memoria indirizzi ad n bit e la
memoria contiene 2n celle. Poiché la cache è
del tutto trasparente alla CPU, quest’ultima
continua ad inviare indirizzi ad n bit alla
memoria primaria. Avendo pero’ la cache una
dimensione molto più piccola della memoria
primaria, tale numero di bit nell’indirizzo
risulta eccessivo. La cache non può pertanto
essere una RAM in quanto ha indirizzi di
ingresso a n bit e un numero di celle molto
minore di 2n mentre la RAM presenta un
legame fisso tra il numero di bit
dell’indirizzo e quello delle celle.
Calcolatori Elettronici a.a. 2006-2007
Cache-20
Università di Trieste
Organizzazione della Cache
La memorizzazione di dati in cache avviene
con una logica di tipo associativo, diversa da
quella della memoria centrale. Precisamente,
mentre in memoria centrale il riferimento
ad un dato viene effettuato tramite un
numero, il suo indirizzo, che identifica la
sua posizione, nella cache il dato viene
identificato per associazione con un'altra
informazione, che chiameremo etichetta
(tag). Questo meccanismo è simile a quello
della memoria umana: un numero di telefono
viene associato ad una persona.
Calcolatori Elettronici a.a. 2006-2007
Cache-21
Università di Trieste
Organizzazione della Cache
Una memoria cache ideale dovrebbe contenere
una serie di etichette, a ciascuna delle quali è
associata un'informazione, il controllore della
memoria dovrebbe essere in grado di
ricevere, mediante un opportuno registro, il
valore dell'etichetta e di scorrere il
contenuto della memoria alla ricerca di questa
etichetta. In caso di ritrovamento dovrebbe
restituire l'informazione associata a questa
etichetta; in caso contrario dovrebbe
restituire una segnalazione. Una memoria
cache di questo genere, che viene detta di
tipo completamente associativo, non è
realizzabile concretamente.
Calcolatori Elettronici a.a. 2006-2007
Cache-22
Università di Trieste
Organizzazione della Cache
In effetti, una ricerca di tipo sequenziale sulle
etichette richiederebbe tempi lunghi, in
contrasto con l'esigenza di garantire un
accesso veloce alle informazioni; una ricerca
rapida verrebbe garantita da un meccanismo
di ricerca parallela, ma questo implicherebbe
una notevole complessità del controllore, e
quindi un costo elevato.
Calcolatori Elettronici a.a. 2006-2007
Cache-23
Università di Trieste
Ogni blocco della cache possiede un'etichetta (tag)
che indica quali locazioni sono contenute nel
blocco. Quando si vuole leggere un dato, una prima
parte dell'indirizzo fisico viene utilizzata per
identificare il set in cui dovrebbe trovarsi il dato
cercato, un'altra parte serve da etichetta per
ricercare, all'interno del set, il blocco a cui
appartiene il dato, una terza parte indica lo
spiazzamento del dato rispetto al punto di partenza
del blocco. Una volta identificato il set, l'etichetta del
dato viene confrontata con l'etichetta di tutti i blocchi
appartenenti al set. Di fatto, la cache è divisa in due
parti: un ``tag array'' contiene le etichette dei blocchi
compresi nella cache, un ``data array'' contiene i
dati dei blocchi.
Calcolatori Elettronici a.a. 2006-2007
Cache-24
Università di Trieste
Completamente Associativa
Cache completamente Associativa
Corrispondenza di qualsiasi linea di
memoria centrale a qualsiasi linea di
memoria cache
Calcolatori Elettronici a.a. 2006-2007
Cache-25
Università di Trieste
Completamente Associativa
• Tutti i tags sono confrontati allo stesso
istante
• Le words possono usare ogni linea cache
Calcolatori Elettronici a.a. 2006-2007
Cache-26
Completamente Associativa
Università di Trieste
MEMORIA
CENTRALE
etichetta
IND. DI
BLOCCO
0 0 0
000
B0
IND. DI
BLOCCO
0 0 1
MEMORIA
CACHE
B1
C0
B2
0 1 0
00
0 1 1
01
C1
B3
1 0 0
10
C2
B4
C3
B5
Schema di
indirizzamento: ogni
blocco della memoria
centrale è copiabile (o
caricabile) in ogni blocco
della memoria cache.
Conflitti di allocazione:
(B0, B1, B2, B3, B4), …
1 0 1
11
1 1 0
B6
1 1 1
B7
Calcolatori Elettronici a.a. 2006-2007
Cache-27
Completamente Associativa
Università di Trieste
MEMORIA
CENTRALE
IND. DI
BLOCCO
0 0 0
B0
IND. DI
BLOCCO
0 0 1
MEMORIA
CACHE
B1
C0 = B0
B2
0 1 0
00
00
000
01
011
10
110
11
101
0 1 1
01
C1= B3
B3
1 0 0
10
C2= B6
B4
1 0 1
11
C3= B5
B5
1 1 0
B6
memoria associativa
contenente le etichette dei
blocchi allocati
Calcolatori Elettronici a.a. 2006-2007
Schema di
identificazione:
per identificare un
dato blocco nella
memoria cache
occorre
memorizzarne in
una memoria
associativa
l’etichetta
dell’indirizzo di
memoria centrale.
1 1 1
B7
Cache-28
Università di Trieste
Mappaggio diretto
In una cache completamente associativa (fully
associative) come abbiamo visto un blocco di
memoria può essere messo in una qualsiasi
posizione della memoria cache; poiché il
blocco può essere messo in un posto qualsiasi
della cache, al momento della ricerca tutti i
blocchi della cache dovranno essere
esaminati !!!.
Le memorie cache effettivamente disponibili
utilizzano invece un metodo di ricerca detto
"a mappaggio diretto", o direct mapping.
Calcolatori Elettronici a.a. 2006-2007
Cache-29
Università di Trieste
Mappaggio diretto
Questo meccanismo consiste nell'utilizzare
una parte dell'informazione che costituisce
l'etichetta al fine di selezionare la zona di
memoria cache dove effettuare la ricerca,
in modo da limitare la ricerca stessa.
Questo meccanismo riduce la flessibilità
della cache, in quanto un'informazione non
può essere memorizzata in qualunque
posizione (come avverrebbe per una cache
completamente associativa), ma solo in punti
selezionati in base al valore dell’etichetta.
La perdita di flessibilità rende però
concretamente realizzabile una memoria di
questo tipo.
Calcolatori Elettronici a.a. 2006-2007
Cache-30
Mappaggio diretto
Università di Trieste
• Cache a mappaggio diretto
– Ogni parola nella cache ha un tag
– Assumiamo che
• cache - 2k words
• machine words - p bits
• byte-addressed memory
– m = log2 ( p/8 ) bits not used to
address words
– m = 2 for 32-bit machines
Address
format
p bits
p-k-m
k
tag
cache address
Calcolatori Elettronici a.a. 2006-2007
m
byte
address
Cache-31
Università di Trieste
Mappaggio diretto
• La realizzazione della memoria cache a
mappaggio diretto avviene nel modo
seguente. La memoria cache viene
suddivisa in un certo numero di celle,
normalmente una potenza di 2, diciamo 2k
Ciascuna cella contiene due informazioni:
l'etichetta ed il dato corrispondente. La
lunghezza del dato, contata in bytes, è a
sua volta una potenza di 2, diciamo 2p.
L'etichetta utilizzata per identificare il
dato è l'indirizzo di memoria privato dei k
bit meno significativi (per tener conto
della lunghezza del dato in cache).
Calcolatori Elettronici a.a. 2006-2007
Cache-32
Università di Trieste
Mappaggio diretto
• La stringa di bit che costituisce
l’indirizzo di memoria viene spezzata in
tre parti: i k bit meno significativi non
vengono utilizzati per la ricerca, ma solo
per l'indirizzamento di un byte entro la
cella della cache; gli n bit successivi
identificano una delle
2n celle della
cache, candidata a contenere il dato; i
rimanenti p-m-k bit contengono la parte
di etichetta da confrontare con il
contenuto del campo etichetta nella cella
della cache
Calcolatori Elettronici a.a. 2006-2007
Cache-33
Mappaggio diretto
Università di Trieste
A cache line
data
tag
2k lines
memory
p
p-k-m
Hit?
CPU
p-k-m
k
tag
cache address
Calcolatori Elettronici a.a. 2006-2007
m
byte
address
Cache-34
Università di Trieste
Mappaggio diretto
Cache a mappaggio diretto
Corrispondenza di insiemi di linee di
memoria centrale a singole linee di
memoria cache.
Calcolatori Elettronici a.a. 2006-2007
Cache-35
Mappaggio diretto
Università di Trieste
etichetta
# blocco
MEMORIA
CENTRALE
IND. DI
BLOCCO
0 0 0
000
B0
IND. DI
BLOCCO
MEMORIA
CACHE
0 0 1
B1
0 1 0
00
C0
B2
C1
B3
0 1 1
01
1 0 0
10
C2
B4
1 0 1
11
C3
B5
Schema di
indirizzamento: ogni
blocco della memoria
centrale è copiabile
(o caricabile) in un
unico blocco della
memoria cache.
Conflitti di
allocazione: (B0,
B4), …
1 1 0
B6
1 1 1
B7
Calcolatori Elettronici a.a. 2006-2007
Cache-36
Mappaggio diretto
Università di Trieste
MEMORIA
CENTRALE
IND. DI
BLOCCO
0 0 0
B0
IND. DI
BLOCCO
MEMORIA
CACHE
0 0 1
B1
0 1 0
00
00
0
01
1
10
1
11
0
C0 = B0
B2
C1 = B5
B3
0 1 1
01
1 0 0
10
C2 = B6
B4
1 0 1
11
C3 = B3
B5
1 1 0
B6
memoria associativa
contenente le etichette
dei blocchi allocati
Calcolatori Elettronici a.a. 2006-2007
Schema di
identificazione:
per identificare un
dato blocco nella
memoria cache
occorre
memorizzarne in
una memoria
associativa
l’etichetta
dell’indirizzo di
memoria centrale
1 1 1
B7
Cache-37
Università di Trieste
Write-through o write-back?
AGGIORNAMENTO MEMORIA PRINCIPALE
Quando la CPU scrive sulla memoria cache si genera una
discrepanza fra il valore del dato nella memoria
principale e nella cache.
• Write-back o Copy-back.
Quando viene modificato un dato nella cache la linea
corrispondente viene marcata.
Quando una linea è scaricata viene ricopiata nella
memoria principale solo se marcata.
• Write-through o Copy-through
• In un programma il rapporto fra le operazioni di
lettura e di scrittura è dell'ordine di 10.
• Quando viene modificato un dato nella cache, lo stesso
viene modificato anche nella memoria principale.
Calcolatori Elettronici a.a. 2006-2007
Cache-38
Università di Trieste
Set Associative
Cache - Set Associative
Corrispondenza di insiemi di linee di
memoria centrale ad insiemi di linee
di memoria cache
Calcolatori Elettronici a.a. 2006-2007
Cache-39
Università di Trieste
Set Associative
2-way set
associative
Each line two words
two comparators only
Calcolatori Elettronici a.a. 2006-2007
Cache-40
Set Associative
Università di Trieste
etichetta
# gruppo
MEMORIA
CENTRALE
0 0 0
IND. DI
BLOCCO
0 0 0
B0
{
{
GRUPPI
IND. DI
BLOCCO
MEMORIA
CACHE
0 0 1
B1
0 1 0
00
C0
B2
C1
B3
G0
G1
0 1 1
01
1 0 0
10
C2
B4
1 0 1
11
C3
B5
1 1 0
B6
# DI GRUPPI
=2
DIM. GRUPPO = 2
Calcolatori Elettronici a.a. 2006-2007
Schema di
indirizzamento:
ogni blocco della
memoria centrale
è copiabile (o
caricabile) in un
dato gruppo di
blocchi della
memoria cache.
Conflitti di
allocazione: (B0,
B2, B4), …
1 1 1
B7
Cache-41
Set Associative
Università di Trieste
MEMORIA
CENTRALE
IND. DI
BLOCCO
000
B0
{
{
IND. DI
GRUPPO
IND. DI
BLOCCO
001
MEMORIA
CACHE
B1
C0 = B0
B2
010
00
0
00
00
01
11
10
10
11
01
1
011
01
C1 = B6
B3
100
10
C2 = B5
B4
101
11
C3 = B3
B5
110
B6
memoria associativa
contenente le etichette
dei blocchi allocati
Calcolatori Elettronici a.a. 2006-2007
111
Schema di
identificazione:
per identificare
un dato blocco
nella memoria
cache occorre
memorizzarne
in una memoria
associativa
l’etichetta
dell’indirizzo di
memoria
centrale.
B7
Cache-42
I limiti della memoria Cache
Università di Trieste
Non è conveniente aumentare le dimensioni della
memoria cache oltre una “capacità limite”, sopra cui
le prestazioni del sistema di memoria smettono di
aumentare o addirittura iniziano a diminuire.
guadagno di
prestazioni
guadagno di prestazioni =
velocità sistema con cache
velocità sistema senza cache
saturazione
limite di
guadagno
3
zona di
decadimento
zona di
crescita
2
capacità limite
1
10K
100K
1M
10M
100M
capacità cache
Calcolatori Elettronici a.a. 2006-2007
Cache-43
I limiti della memoria Cache
Università di Trieste
Motivazioni:
Quando le dimensioni della memoria 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 hanno “ora” frequenza di
accesso molto bassa (e che dunque si
potrebbero lasciare senza danno in
memoria centrale)
Calcolatori Elettronici a.a. 2006-2007
Cache-44
Università di Trieste
I limiti della memoria Cache
Motivazioni:
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 decadere.
Calcolatori Elettronici a.a. 2006-2007
Cache-45
Università di Trieste
Algoritmi di rimpiazzamento
Una volta che la cache è stata riempita di dati e
viene generato un miss, è necessario rimpiazzare
le linee di cache con altre linee provenienti dalla
memoria. Esistono tre principali algoritmi di
rimpiazzamento, dei quali sono riportate solo le
definizioni, senza gli algoritmi veri e propri che
esulano dal contesto del corso.
Algoritmo LRU
L’algoritmo LRU (Least Recently Used) rimpiazza
la linea di cache usata meno di recente, sono
quindi necessari dei bit aggiuntivi nel TAG per
indicare quale locazione è stata utilizzata meno
recentemente
Calcolatori Elettronici a.a. 2006-2007
Cache-46
Università di Trieste
Algoritmi di rimpiazzamento
Algoritmo RAND
L’algoritmo RAND rimpiazza una linea in maniera
casuale. Questo algoritmo ha prestazioni
comparabili con il precedente, in quanto il numero
di bit utilizzabile per segnalare la linea utilizzata
meno recentemente è molto limitato e quindi si
ottiene sempre un gruppo di celle passibili di
rimpiazzamento, fra le quali la scelta viene
effettuta in modo pseudo casuale-
Calcolatori Elettronici a.a. 2006-2007
Cache-47
Università di Trieste
Algoritmi di rimpiazzamento
Algoritmo FIFO
L’algoritmo FIFO (First In First Out), rimpiazza
la cella inserita in cache da più tempo. Si noti che
l’algoritmo LRU eFIFO non operano in maniera
analoga, in quanto LRU rimpiazza le celle utilizzate
meno recentemente (indipendentemente da
quando esse siano state inserite in cache), mentre
il FIFO rimpiazza le celle che sono da più tempo in
cache (indipendentemente da quanto esse siano
state utilizzate).
Calcolatori Elettronici a.a. 2006-2007
Cache-48
Università di Trieste
Esempio di cache: 80486
L’80486 possiede una cache on-chip con le seguenti
caratteristiche:
• dimensione: 8Kbyte
• dimensione dei blocchi: 16 byte
• meccanismo di aggiornamento: write-through
• organizzazione set associative, con 128 classi
composte da 4 insiemi ciascuna
• eventuale cache secondaria esterna
• algoritmo di rimpiazzamento: pseudo-LRU
• i risultati sperimentali indicano una hit-ratio del
96% per la generica applicazione DOS, e del 92%
per le applicazioni UNIX e OS/2.
Calcolatori Elettronici a.a. 2006-2007
Cache-49
Università di Trieste
Esempio di cache: 80486
Metodo pseudo-LRU
Per implementare una strategia LRU con 4 blocchi
per classe sarebbero richiesti 6 bit. Per
risparmiare hardware, nel 486 vi sono solo 3 bit, e
si implementa una strategia pseudo-LRU.
Ad ogni classe (composta da 4 insiemi L0, L1, L2 e
L3) sono associati 3 bit B0, B1 e B2.
Ogni volta che si fa accesso ad una classe, i 3 bit
vengono aggiornati secondo le seguenti regole:
• accesso ad L0 o L1: B0
1
• accesso ad L0: B1
1
• accesso ad L1: B1
0
• accesso ad L2 o L3: B0
0
• accesso ad L2: B2
1
• accesso ad L3: B2
0.
Calcolatori Elettronici a.a. 2006-2007
Cache-50
Università di Trieste
Esempio di cache: 80486
All’atto di caricare un blocco in memoria, la scelta
su dove metterlo nella cache viene fatta in base al
seguente albero di decisione:
• se c’è un insieme nel blocco che non è valido, il
nuovo blocco viene inserito al suo posto; altrimenti
• si testa B0: se ne deduce se l’ultimo insieme
utilizzato è stato L0 o L1, oppure L2 o L3
• si testa B1:
- se B0=0 e B1=0 si rimpiazza L0
- se B0=0 e B1=1 si rimpiazza L1
- se B0=1 e B2=0 si rimpiazza L2
- se B0=1 e B2=1 si rimpiazza L3.
Calcolatori Elettronici a.a. 2006-2007
Cache-51
Università di Trieste
Esempio di cache: 80486
L'80486 prevede un supporto per la gestione delle
cache da parte del programmatore:
• tra i bit di controllo scrivibili via software vi sono:
- CD: abilita (CD=0) e disabilita (CD=1) l'uso della
cache
- NW: abilita (NW=0) e disabilita (NW=1) il
meccanismo di write-through
• l'istruzione INVD causa lo scaricamento della
cache sulla memoria esterna (cache flush), e
segnala ad eventuali cache esterne di fare
altrettanto
• l'istruzione WBINVD ha la stessa funzione, ma
segnala anche ad un'eventuale cache esterna di tipo
write-back che prima di fare il flush deve eseguire
la scrittura in memoria del proprio contenuto.
Calcolatori Elettronici a.a. 2006-2007
Cache-52
Università di Trieste
Cache Dati-Cache Istruzioni
• Cache unificata
– Istruzioni e dati nella stessa cache
• Due Cache – (Cache Harvard)
* Istruzioni
* Dati
Consente al processore di prelevare
contemporaneamente le istruzioni dalla
cache istruzioni e i dati dalla cache dati.
ÍIncreases total bandwidth
Calcolatori Elettronici a.a. 2006-2007
Cache-53
Università di Trieste
Cache Dati-Cache Istruzioni
Un altro vantaggio di separare la cache dati dalla
cache istruzioni à quello che i programmi, di
solito, non modificano le loro stesse istruzioni
Calcolatori Elettronici a.a. 2006-2007
Cache-54
Cache a più livelli
Università di Trieste
In molti sistemi la
cache
viene
implementata con una
struttura gerarchica
a più livelli. In questi
casi è prassi comune
implementare il primo
livello (L1) con due
cache distinte dati e
istruzioni mentre gli
altri livelli (L2, L3)
sono cache unificate.
Calcolatori Elettronici a.a. 2006-2007
Processore
Cache(L1)
Istruzioni
Stesso package
Cache(L1)
Dati
Cache di secondo livello (L2)
Cache di terzo livello (L3)
Memoria Centrale
Cache-55
Università di Trieste
Cache a più livelli
Affinchè una cache a più livelli possa
migliorare significatamente il tempo di
accesso medio alla memoria di un sistema
ogni livello deve avere una capacità
notevolmente più grande del livello
gerarchico precedente in quanto la località
dei riferimenti vista da ogni livello
diminuisce scendendo verso il basso della
scala gerarchica. Le cache con capacità
maggiori tendono ad essere più lente, quindi
il vantaggio della velocità derivante dalla
separazione dei dati dalle istruzioni non è
più così significativo ed unito a quello di un
costo minore giustificano le cache (L2, L3)
unificate.
Calcolatori Elettronici a.a. 2006-2007
Cache-56
Università di Trieste
Calcolatori Elettronici a.a. 2006-2007
Cache-57
Università di Trieste
Lettura (read)
Scrittura (write)
METODI DI LETTURA / SCRITTURA (funzionamento completo)
Successo
cache hit
nessun problema
Il blocco è nella memoria cache. La parola viene letta dalla
copia del blocco risiedente nella memoria cache. Il
processore continua subito la propria attività.
PROBLEMA DELLA COERENZA: il blocco è nella memoria cache,
ma se si scrive la parola solo nella memoria cache la copia del
blocco in memoria centrale diventa “obsoleta” (cioè in definitiva non
è più valida).
sistono due differenti politiche di scrittura della parola:
•
Scrittura immediata (write through): il processore scrive la
parola sia nella memoria centrale sia nella cache, e continua subito
l’attività.
Scrittura differita (write back o copy back): il processore scrive
la parola solo nella cache e continua subito l’attività; il blocco nella
cache viene marcato come modificato (tramite un apposito bit) e in
seguito (anche non subito) andrà ricopiato (o scaricato) nella
memoria centrale, di solito quando verrà rimosso dalla cache per
liberare spazio.
Fallimento
cache miss
IL BLOCCO NON È NELLA MEMORIA CACHE: il
processore si sospende e il blocco va copiato (o caricato)
dalla memoria centrale alla memoria cache. Esistono due
differenti politiche di lettura della parola:
L
BLOCCO NON È NELLA MEMORIA CACHE: poiché
l’operazione di scrittura è molto meno frequente della lettura, in
generale non è obbligatorio copiare (o caricare) il blocco dalla
memoria centrale alla memoria cache. Esistono due differenti
politiche di scrittura della parola:
Lettura immediata (read through o load through o early
restart): il processore legge la parola non appena questa
viene copiata (o caricata) nella cache, e riprende subito
l’attività.
Scrittura immediata (write through): il processore bypassa la
cache e scrive la parola solo nella memoria centrale, poi continua
subito l’attività.
Lettura differita (read back): il processore attende che
l’intero blocco sia stato copiato (o caricato) nella memoria
cache, poi legge la parola e riprende l’attività.
Scrittura differita (write back): il processore copia (o carica) il
blocco interessato nella cache; poi si procede come nel caso “cache
hit / write back”.
Calcolatori Elettronici a.a. 2006-2007
Cache-58
Università di Trieste
Level
Access Time
Registers
1-3 ns
Level 1 Cache (onchip)
2-8 ns
Level 2 Cache (offchip)
Technology
Managed By
Custom CMOS
Compiler
8 KB-128 KB
SRAM
Hardware
5-12 ns
0.5 MB - 8 MB
SRAM
Hardware
Main Memory
10-60 ns
64 MB - 1 GB
DRAM
Operating System
Hard Disk
3,000,000 10,000,000 ns
20 - 100 GB
Magnetic
Operating
System/User
Calcolatori Elettronici a.a. 2006-2007
Typical Size
1 KB
Cache-59
Università di Trieste
Calcolatori Elettronici a.a. 2006-2007
Sintesi
Cache-60
Università di Trieste
Calcolatori Elettronici a.a. 2006-2007
Sintesi
Cache-61
Università di Trieste
Calcolatori Elettronici a.a. 2006-2007
Sintesi
Cache-62
Università di Trieste
Calcolatori Elettronici a.a. 2006-2007
Cache-63
Università di Trieste
Bibliografia
ftp://ftp.elet.polimi.it/outgoing/Luca.Breveglieri/Diploma
UWA University: prof. J. Morris, Computer Architecture
Lessons, CA406
Digital Equipment: Note tecniche, Cache memory.
Università di Parma: prof. G. Conte, Lezioni di Calcolatori
Elettronici I°
Politecnico di Torino, Dip. di Automatica e Informatica: prof. M.
Sonza Reorda: Lezioni di Calcolatori Elettronici
Politecnico di Milano: prof. C. Brandolese, Lezioni di Calcolatori
Elettronici
Calcolatori Elettronici a.a. 2006-2007
Cache-64