Gerarchie di memoria

Transcript

Gerarchie di memoria
Gerarchie di memoria
© 2002 Roberto Bisiani
5/22/2002
1
Dove studiare
Trasparenze delle lezioni
Patterson & Hennessy Cap. 7
5/22/2002
2
Tendenze tecnologiche
Logica:
DRAM:
Dischi:
5/22/2002
Capacita'
2x in 3 anni
4x in 3 anni
4x in 3 anni
anno
1980
1983
1986
1989
1992
1995
DRAM
Size
64 Kb
1000:1! 256 Kb
1 Mb
4 Mb
16 Mb
64 Mb
Velocita‘ (latenza)
2x in 3 anni
2x in 10 anni
2x in 10 anni
2:1!
Cycle Time
250 ns
220 ns
190 ns
165 ns
145 ns
120 ns
3
Problema reale?
Differenza di prestazioni tra processore e DRAM (latenza)
Prestazioni
1000
100
10
µProc
60%/anno.
“Legge di Moore”
(2X/1.5anni)
Processore-memoria
Performance Gap:
(cresce 50% / anno)
CPU
DRAM
1980
1981
1982
1983
1984
1985
1986
1987
1988
1989
1990
1991
1992
1993
1994
1995
1996
1997
1998
1999
2000
1
DRAM
9%/anno.
(2X/10 anni)
5/22/2002
Anno
4
Organizzazione dellebit (data)
DRAM
lines
r
o
w
d
e
c
o
d
e
r
row
address
Each intersection represents
a 1-T DRAM Cell
RAM Cell
Array
word (row) select
Column Selector &
I/O Circuits
data
5/22/2002
Column
Address
u L’indirizzo
di colonna e riga
insieme selezionano un bit
5
Sistemi di memoria
indirizzo
n
Controllore
DRAM
2^n x 1
chip
n/2
w
AL BUS
Taccesso = Tcycle + Tcontroller + Tdriver
5/22/2002
6
Cycle Time vs. Access Time
Cycle Time
Access Time
Time
•Il tempo di accesso e quello di ciclo non
coincidono necessariamente
5/22/2002
7
Minimum PC memoria Size
Il numero di DRAM /sistema
diminuisce nel tempo
DRAM Generation
‘86
‘89
‘92
‘96
‘99
‘02
1 Mb 4 Mb 16 Mb 64 Mb 256 Mb 1 Gb
8
4 MB 32
16
4
8 MB
16 MB
8
2
32 MB
4
1
64 MB
8
2
128 MB
4
1
256 MB
5/22/2002
8
2
8
DRAM, situazione economica
u DRAM
sono “commodities”
u ⇒ grande volume, basso profitto, progetto
conservativo
– Poche innovazioni rispetto ai processori
(in 20 anni: page mode, EDO, Synch DRAM)
– Sempre meno DRAM per sistema
» Crescita bit/chip DRAM : 50%-60%/anno
» Crescita delle dimensioni del software (33%/anno for NT)
5/22/2002
9
DRAM, guadagni
DRAM Revenue per Quarter
$20,000
$15,000
$10,000
$7B
$5,000
$0
1Q
94
2Q
94
3Q
94
4Q
94
1Q
95
2Q
95
3Q
95
4Q
95
1Q
96
2Q
96
3Q
96
4Q
96
1Q
97
(Miillions)
$16B
5/22/2002
10
Situazione attuale
uSi
usano delle cache per limitare gli effetti
della differenza di prestazioni
uDifferenza di prestazioni delle istruzioni:
– Ogni istruzione che legge la memoria
richiederebbe un tempo paragonabile a quello di
qualche migliaio di istruzioni
5/22/2002
11
Goal
u Creare
l’illusione di una memoria grande,
veloce e poco costosa
» Fatto: le memorie grandi sono lente e quelle piccole
veloci
– Come fare?
» Gerarchia di memorie di diverse prestazioni e
dimensioni
» Accesso in parallelo
5/22/2002
12
Sistema di memoria gerarchizzato
Processore
Controllo
memoria
memoria
memoria
memoria
Velocita': molto veloce
Meno veloce
Dimensioni: Molto piccola
Molto grande
Costo:
5/22/2002
memoria
Datapath
Molto costosa
Livelli alti
Poco costosa
Livelli bassi
13
Perche’ un sistema gerarchico funziona
u Il
principio di localita’:
– Un programma accede a una parte molto piccola
del suo spazio di indirizzamento in ogni particolare
momento.
Probabilita’
di leggere
o scrivere
0
Spazio di indirizz.
2^n - 1
– Spaziale e temporale
5/22/2002
14
Come funziona una gerarchia di memoria
u Localita’
temporale :
=> Mantiene vicino al processore le informazione
alle quali si e’ acceduto piu’ recentemente
u Localita’
spaziale :
=> Sposta blocchi di celle contigue dai livelli bassi ai
livelli alti
Al Processore
Livello
alto
Livello
basso
Blk X
Dal Processore
5/22/2002
Blk Y
15
Terminologia
u Hit:
I dati sono disponibili in un livello alto
– Hit Rate: la frazione di accessi che trovano l’informazione
nel livello alto
– Hit Time: Tempo per accedere a un livello alto
Tempo di accesso alla RAM + tempo per sapere se e’ un hit
u Miss:
i dati non sono disponibili al livello alto e
devono essere presi da un livello basso
– Miss Rate = 1 - (Hit Rate)
– Miss Penalty: Tempo per trovare lo spazio per mettere un
blocco in un livello superiore e poi trasferirvelo
u Hit
5/22/2002
Time << Miss Penalty
16
Uso delle gerarchie
u Grazie
al principio di localita’ si puo’:
– Dare all’utente quanta memoria e’ possibile con la
tecnologia meno costosa...
– mantenendo i bassi tempi di accesso della
tecnologia piu’ costosa.
5/22/2002
17
Uso delle gerarchie
Processore
Control
On-Chip
Cache
5/22/2002
Registers
Datapath
Second
Level
Cache
(SRAM)
Main
memoria
(DRAM)
velocita' (ns): 1
1
10
100
Dimenzioni
(bytes):
K
M
M/G
100
Secondary
Storage
(Disk)
10,000,000
(10 ms)
G
Tertiary
Storage
(Disk)
10,000,000,000
(10 sec)
T
18
Come si gestisce la gerarchia?
u Registri
<-> memoria
– Compilatore e programmatore
u cache
<-> memoria
– In hardware
u memoria
<-> dischi
– Hardware e sistema operativo (memoria virtuale)
– Programmatore (file)
5/22/2002
19
Tecnologia
u Accesso
casuale:
– Tempo di accesso quasi uguale a tutte le locazioni
– DRAM: Dynamic Random Access memory
» Alta densita’, poco costosa, densa, lenta
» Deve essere “rinfrescata” periodicamente
– SRAM: Static Random Access memory
» Bassa densita’, alta potenza, costosa, veloce
» Il contenuto non deve essere rinfrescato
u Accesso
quasi casuale:
– Il tempo di accesso varia da locazione a locazione
– Esempi: Dischi, CDROM
u Accesso
sequenziale, il tempo di accesso dipende dalla
5/22/2002posizione (nastri)
20
Tecnologia
uI
primi due livelli di gerarchia gestiscono
solo memorie ad accessi casuali
u I livelli seguenti gestiscono anche memorie
ad accesso non casuale
5/22/2002
21
Sommario
u Due
tipi di localita’:
– Temporale: se si accede a un elemento di memoria,
probabilmente lo si referenzia di nuovo molto presto
– Spaziale: Se si accede a un elemento di memoria
probabilmente si accedera’ anche agli elementi vicini
(come indirizzo)
– Sfruttando la localita’:
» Si fornisce all’utente molta memoria a basso costo ma con una
velocita’ che si avvicina a quella delle memoria ad alto costo.
– DRAM e’ lenta ma economica e densa
– SRAM e’ veloce ma costosa e non densa
5/22/2002
22
Cache
u Due
problemi:
– Come facciamo a sapere che un dato e’ in
cache?
– Se e’ in cache come facciamo a sapere dov’e’?
u Primo
esempio:
– la cache gestisce un “word” alla volta
– "direct mapped“: per ogni elemento a livello
basso c’e’ un solo posto nel livello alto nel
quale puo’ essere messo.
5/22/2002
23
Direct Mapped Cache
u Mappatura:
l’indirizzo
e’ calcolato “modulo”
il numero di blocchi in
cache
5/22/2002
24
Direct Mapped Cache
Address (showing bit positions)
31 30
13 12 11
2 10
Byte
of fse t
Hit
10
20
Tag
Data
Index
Index Valid T ag
Data
0
1
2
1021
1022
1023
20
5/22/2002
32
25
Direct Mapped Cache
u Usando
anche la localita’ spaziale:
Address (showing bit positions)
31
16 15
16
Hit
4 32 1 0
12
2 Byte
offset
Tag
Data
Index
V
Block offset
16 bits
128 bits
Tag
Data
4K
entries
16
32
32
32
32
Mux
32
5/22/2002
26
Hits vs. Misses
– Read hits
» Quello che vuole ottenere!
– Read misses
» Ferma la CPU, leggi il blocco da un livello
inferiore, riparti
– Write hits:
» Write through: riscrive cache e memoria
» Write back: scrive la cache ma non la memoria (che
deve essere riscritta solo quando si cancella la
cache)
– Write misses:
5/22/2002
» Legge il blocco in cache, scrive
27
Strutture di memoria
u Semplice:
– CPU, Cache, Bus hanno la stessa
“larghezza”
(32 bit)
u Larga:
– CPU/Cache, 1 word
– Cache/memoria N word ad esempio: 64
bit & 256 bit)
u Interleaved:
– CPU, Cache, Bus 1 word: memoria N
Moduli
(ad esempio 4 moduli e l’accesso e’
5/22/2002 possibile in parallelo a ciascuno dei
moduli)
Indirizzi sequenziali
vanno a memorie
diverse!
28
Miglioramenti Hardware
CPU
CPU
CPU
Multiplexor
Cache
Cache
Cache
Bus
Memory
Memory
Bus
Bus
b. Wide memory organization
Memory
bank 0
Memory
bank 1
Memory
bank 2
Memory
bank 3
c. Interleaved memory organization
a. One-word-wide
memory organization
5/22/2002
29
Interleaving
CPU
memoria
•Senza interleaving:
D1 available
Start Access for D1
Start Access for D2
memoria
Bank 0
Con 4-way Interleaving:
Accesso Bank 0
CPU
memoria
Bank 1
memoria
Bank 2
memoria
Bank 3
Accesso Bank 1
5/22/2002
Accesso Bank 2
Accesso Bank 3
Si puo’ accedere di nuovo a 0
30
Prestazioni
u Se
il block size aumenta il miss rate
TENDE a diminuire
40%
35%
Miss rate
30%
25%
20%
15%
10%
5%
0%
4
16
64
Block size (bytes)
256
1 KB
8 KB
16 KB
64 KB
256 KB
5/22/2002
31
Dimensioni di un blocco
–Piu’ grande e’ il blocco piu’ si trae vantaggio dalla
localita’ spaziale MA:
» La miss penalty diventa maggiore:
u
Ci vuole piu’ tempo a caricare un blocco
» Se il blocco e’ troppo grande relativamente alle dimensioni
della cache il miss rate sale
–In gernerale, Tempo medio di accesso:
» = Hit Time x (1 - Miss Rate) + Miss Penalty x Miss Rate
Usa localita’
Miss
Penalty
5/22/2002
Block Size
Miss
Rate
Average
Access
Time
Pochi blocchi
Block Size
Block Size
32
Misses
uCompulsory:
primo riferimento a un blocco
– inevitabile
– Statisticamente non importante
uConflict
(collisione):
– Molte locazioni di memoria mappate nello stesso
blocco
– Soluizione 1: aumenta le dimensioni della cache
– Soluizione 2: aumenta l’associativita’
uCapacity:
– La cache non puo’ contenere tutte le locazioni usate da
un programma
– Soluzione : aumentare le dimensioni della cache
5/22/2002
33
Associativita’: migliorare il miss
rate
One-way set associative
(direct mapped )
Block
Tag Data
0
Two-wa y set associative
1
2
Set
3
0
4
1
5
2
6
3
Tag Data Tag Data
7
Four-way set associa tive
Set
Tag Data Tag Data Tag Data Tag Da ta
0
1
Eight -way set associat ive (fully associative)
Tag Data Tag Data Tag Data Tag Data Tag Data Tag Data Tag Data Tag Data
5/22/2002
34
Un’implementazione
Address
31 30
12 11 10 9 8
8
22
Index
0
1
2
V
Tag
Data
3 21 0
V
Tag
Data
V
Tag
Data
V
T ag
Data
253
254
255
22
32
4-to-1 multiplexor
Hit
5/22/2002
Data
35
Prestazioni
1 5%
1 2%
Miss rate
9%
6%
3%
0%
On e-w ay
Tw o-way
Four-way
Assoc iativ ity
5/22/2002
Eight-way
1 KB
16 KB
2 KB
4 KB
32 KB
8 KB
128 KB
64 KB
36
Livelli multipli per diminuire la miss
penalty
u Un
secondo livello di cache:
– La cache primaria e’ sul chip di CPU
– Si possono usare SRAM
5/22/2002
37
Prestazioni con piu’ livelli di cache
u Bisogna
ottimizzare lo hit rate sul primo
livello
u Bisogna ottimizzare la miss penalty sul
secondo
5/22/2002
38
Prestazioni
uA
volte si usano cache separate per dati e
istruzioni (split cache)
5/22/2002
39
Memoria virtuale
u La
memoria principale puo’ fare da “cache”
per il disco.
Fisici
Virtuali
Virtual addresses
Physical addresses
Address translation
Disk addresses
5/22/2002
40
Vantaggi
u Illusione
di avere piu’ memoria fisica
u Rilocazione dei programmi
u Protezione tra processi (es. Applicativi)
5/22/2002
41
Memoria virtuale
Virtual address
31 30 29 28 27
15 14 13 12
11 10 9 8
Virtual page number
3210
Page offset
Translation
29 28 27
15 14 13 12
11 10 9 8
Physical page number
3210
Page offset
Physical address
5/22/2002
42
Pagine: blocchi di memoria
virtuale
u Page
fault: I dati non sono in memoria e
devono essere presi dal disco
– miss penalty grandissima: le pagine devono
essere molto grandi (e.g., 4KB)
– E’ importante ridurre il numero di page fault
(ad esempio con piazzamento associativo e
LRU)
» Ma si possono gestire I fault in software invece che
in hardware
5/22/2002
– Si usa write-back perche’ write-through e’
troppo costoso
43
Page Tables
Virtual page
numb er
Valid
Page table
Physical page or
disk address
Physical m em ory
1
1
1
1
0
1
1
0
1
1
Disk stora ge
0
1
5/22/2002
44
Page Tables
P age table registe r
V irtua l a dd ress
31 30 29 28 27
1 5 14 1 3 12 11 1 0 9 8
Vir tua l page nu m ber
P age off set
20
V alid
3 2 1 0
12
P hysical pa ge num ber
P age table
18
If 0 then p age is not
presen t in m em ory
2 9 2 8 27
15 1 4 1 3 1 2 1 1 10 9 8
P hysical pa ge num ber
5/22/2002
Phy sic al addres s
3 2 1 0
P age off set
45
Velocita’ della traduzione
u TLB:
una cache per i numeri di pagina
Virtual page
number
TLB
Valid
Tag
P hysical page
address
1
1
Physical m emory
1
1
0
1
Page table
Physical page
V alid or disk address
1
1
1
Disk storage
1
0
1
1
0
1
1
0
5/22/2002
1
46
TLB e cache
Virtual address
TLB access
TLB miss
exception
No
Yes
TLB hit?
Physical address
No
Yes
Write?
Try to read data
from cache
No
Write protection
exception
Cache miss stall
No
Cache hit?
Yes
Write access
bit on?
Yes
Write data into cache,
update the tag, and put
the data and the address
into the write buffer
Deliver data
to the CPU
5/22/2002
47