La memoria cache
Tecniche di rimpiazzo
(1)
Problemi con le cache
°Ampiezza del blocco
°Tipi di Cache Misses
°Fully Associative Cache
°N-Way Associative Cache
°Politiche di rimpiazzo dei blocchi
(2)
Block Size
°Benefici dalla località spaziale
• Località spaziale: è probabile che le parole
che si trovano vicine ad una parola richiesta
siano nuovamente richieste in tempi brevi.
• La località spaziale emerge spontaneamente
nei programmi.
(3)
Block Size
• La frequenza di miss si riduce all’aumentare
della dimensione dei blocchi. (miss rate)
• Ma attenzione se la dimensione dei blocchi è
troppo grande la frequenza di miss aumenta
perchè si ridurrebbe il numero di blocchi
presenti nella cache.
• Il costo di una miss (miss penalty) aumenta al
crescere della dimensione del blocco.
(4)
Cache a confronto
°Cache contenente 8 blocchi
tag dati
tag dati tag dati
tag dati tag dati tag dati tag dati
4 vie
2 vie
tag dati tag dati tag dati tag dati tag dati tag dati tag dati tag dati
mappa diretta
(5)
completamente associativa
Esempio: mappa diretta
°Cache da 4 parole
°Sequenza di accessi: 0,8,0,6,8 (dim. Blocco=1B)
Indirizzo
blocco
0
6
8
(6)
Blocco da
accedere H/M
0
M
8
M
0
M
6
M
8
M
Blocco 0
Mem[0]
Mem[8]
Mem[0]
Mem[0]
Mem[8]
Blocco cache
0
2
0
Blocco 1
Blocco 2
Mem[6]
Mem[6]
Blocco 3
Associativa a 2 vie
°Cache da 4 parole
°Sequenza di accessi: 0,8,0,6,8
Indirizzo
blocco
0
6
8
Blocco da
accedere
0
8
0
6
8
(7)
H/M
M
M
H
M
M
Insieme 0
Mem[0]
Mem[0]
Mem[0]
Mem[0]
Mem[8]
Blocco cache
0
0
0
Insieme 0
Mem[8]
Mem[8]
Mem[6]
Mem[6]
Insieme 1
Insieme 1
Completamente associativa
°Cache da 4 parole
°Sequenza di accessi: 0,8,0,6,8
Blocco da
accedere
0
8
0
6
8
(8)
H/M
M
M
H
M
H
Blocco 0
Mem[0]
Mem[0]
Mem[0]
Mem[0]
Mem[0]
Blocco 1
Blocco 2
Mem[8]
Mem[8]
Mem[8]
Mem[8]
Mem[6]
Mem[6]
Blocco 3
Block Replacement Policy (1/2)
°Se abbiamo scelta dove andiamo a mettere
un nuovo blocco?
(9)
Block Replacement Policy (2/2)
°Se è tutto vuoto, generalmente scriviamo
il nuovo blocco nel primo.
°Se tuttavia tutte le locazioni hanno già un
blocco valido, possiamo usare una
politica di rimpiazzo.
(10)
Block Replacement Policy: LRU
°LRU (Least Recently Used)
• Idea: buttare fuori blocchi con accesso meno
recente.
• Pro: temporal locality => cose usate da poco
potrebbero essere riusate a breve.
Associatività:
2 vie
Dimensione
LRU
Random
16 KB
5.2%
5.7%
64 KB
1.9%
2.0%
256 KB
1.15%
1.17%
(11)
4 vie
LRU
Random
4.7%
5.3%
1.5%
1.7%
1.13%
1.13%
8 vie
LRU
Random
4.4%
5.0%
1.4%
1.5%
1.12%
1.12%
Esempio
°Abbiamo una 2-way set associative
cache con 4 word di capacità totale e
blocchi da 1 word.
° Supponiamo di voler effettuare gli
accessi in memoria ai blocchi:
0, 2, 0, 1, 4, 0, 2, 3, 5, 4
Che percentuale di miss e di hit otterremo
applicando la tecnica LRU?
(12)
Example: LRU
°Addresses 0, 2, 0, 1, 4, 0, ...
• 0: miss, bring into set 0 (loc 0)
• 2: miss, bring into set 0 (loc 1)
• 0: hit
• 1: miss, bring into set 1 (loc 0)
loc 0 loc 1
lru
set 0
0
set 1
set 0 lru
0
lru
2
set 1
set 0 lru
0
lru
0
1
lru
2
set 1
set 0
set 1
2
lru
• 4: miss, bring into set 0 (loc 1, replace 2)
set 0 lru0 lru2
4
lru
set 1
• 0: hit
set 0 lru0 lru4
lru
set 1
(13)
1
1
Scarica

LRU LRU