Esercizi sulla memoria cache - Informatica 2

Transcript

Esercizi sulla memoria cache - Informatica 2
Esercizio 1
Sia data una memoria cache di tipo a “indirizzamento diretto” (direct-mapped), con blocchi di
dimensioni pari a una sola parola per blocco, e contenente 8 blocchi. La parola è lunga 16
bit, e la memoria principale ha dimensioni pari a 64 K parole. Svolgere i punti seguenti:
1. Definire le dimensioni e la struttura degli indirizzi per la memoria cache.
2. Disegnare l’architettura della memoria cache e determinare il numero globale di bit
necessario a realizzare tale memoria cache, spiegandone il funzionamento.
TRACCIA DI SOLUZIONE ALL'ESERCIZIO 1
Il caso proposto nella domanda è un po’ particolare, perché un blocco di memoria cache ha
dimensione pari a una sola parola. Ecco la struttura dell’indirizzo, nel caso proposto:
•
# di blocchi in memoria centrale: 64 K parole / 1 parola = 64 K blocchi
•
# di blocchi in memoria cache: 8 parole / 1 parola = 8 blocchi
•
indirizzo di memoria centrale: log2 64 K = 16 bit
•
numero di blocco in memoria cache: log2 8 = 3 bit
Ne consegue che l’indirizzo di memoria centrale va così suddiviso:
ETICHETTA
# BLOCCO
DEL BLOCCO
13 bit
3 bit
INDIRIZZO
DELLA
PAROLA ALL’INTERNO
DEL BLOCCO
0 bit
L’indirizzo di parola nel blocco non esiste, giacché ogni blocco è formato da una singola
parola; il numero di blocco è espresso da 3 bit; e l’etichetta da memorizzare nella memoria
associativa della cache è formata, per differenza, da 16 − 3 = 13 bit.
Le due figure seguenti mostrano, in un caso particolare (non coincidente con quello dato nel
testo della domanda), l’architettura della gerarchia di memoria comprendente una memoria
cache a indirizzamento diretto (direct-mapped): ogni blocco della memoria centrale può
essere caricato in un unico blocco della memoria cache. Naturalmente, poiché in generale la
memoria centrale ha dimensioni superiori alla memoria cache, ogni blocco della memoria
cache è messo in corrispondenza con più blocchi della memoria centrale.
Esercizi sulla memoria cache - Informatica 2 - L. Breveglieri
1
MEMORIA
CENTRALE
IND. DI
BLOCCO
MEMORIA
CENTRALE
0 0 0
M0
IND. DI
BLOCCO
0 0 0
M0
IND. DI
BLOCCO
0 0 1
MEMORIA
CACHE
M1
C0
M2
C1
M3
C2
M4
C3
M5
IND. DI
BLOCCO
0 1 0
00
0 1 1
01
1 0 0
10
0 0 1
MEMORIA
CACHE
M1
C0 = M0
M2
C1 = M5
M3
C2 = M6
M4
C3 = M3
M5
0 1 0
00
0 1 1
01
1 0 0
10
1 0 1
11
1 0 1
11
1 1 0
M6
1 1 0
M6
1 1 1
M7
1 1 1
M7
Memoria cache a indirizzamento diretto.
Caricamento di alcuni blocchi in cache.
Esercizi sulla memoria cache - Informatica 2 - L. Breveglieri
2
La struttura della memoria cache nel caso proposto dalla domanda è la seguente:
Memoria Associativa
delle Etichette
1
2
Bit di
Validità
13
Memoria dei Blocchi
1
2
16
E1
C1
E2
C2
E3
C3
E4
C4
E5
C5
E6
C6
E7
C7
INDIRIZZO
DATO
16 bit
16 bit
Unità di Controllo della Memoria Cache
Comando
di Scrittura
Comando
di Lettura
Miss
La memoria cache ad indirizzamento diretto è formata dalle parti seguenti:
•
Memoria dei blocchi, che contiene gli 8 blocchi dati da una parola di 16 bit ciascuno.
•
Memoria associativa delle etichette, che contiene le 8 etichette associate agli 8 blocchi
caricabili nella cache; ogni etichetta è da 13 bit.
•
Memoria dei bit di validità, che contiene il bit di modifica per ogni blocco. Tale bit indica
se il blocco in cache è occupato oppure no.
•
Unità di controllo, che coordina il funzionamento delle parti restanti.
Dalla figura si può constatare come il numero di bit necessari sia il seguente:
•
# bit della memoria associativa delle etichette: 8 parole × 13 bit = 104 bit
•
# bit della memoria dei blocchi: 8 parole × 16 bit = 128 bit
•
# bit di validità: 8 bit
Dunque, la memoria cache proposta richiede in totale 104 + 128 + 8 = 240 bit. La memoria
cache è comunque dotata anche di un’unità di controllo, che coordina il funzionamento delle
altre parti. Tale unità di controllo potrebbe anche essere di natura sequenziale, e pertanto
contenere dei bistabili di qualche tipo.
Esercizi sulla memoria cache - Informatica 2 - L. Breveglieri
3
Esercizio 2
Si consideri un sistema costituito da un processore, avente a sua disposizione una memoria
cache (cache dati) per memorizzare i dati, una memoria cache per memorizzare le istruzioni
(cache istruzioni), e un bus indirizzi e un bus dati, entrambi da 32 bit, per leggere e scrivere
in memoria centrale.
La cache istruzioni utilizza la tecnica di indirizzamento diretto e ha dimensioni di 4Kbyte,
con blocchi da 8 byte ciascuno. La frequenza di fallimento (miss rate) di questa cache è pari
al 2% degli accessi in memoria.
La cache dati utilizza anch’essa la tecnica a indirizzamento diretto, ha dimensioni totali di
8Kbyte e blocchi da 8 byte ciascuno. La frequenza di fallimento di questa cache (miss rate) è
pari al 15% degli accessi in memoria.
Si chiede di svolgere i punti seguenti:
1. Disegnare la struttura degli indirizzi della cache istruzioni e della cache dati, supponendo
che ogni byte sia indirizzabile.
2. Disegnare lo schema dell’architettura della cache dati, spiegando come avviene la ricerca
di un elemento e quali sono i bit di controllo necessari per il corretto funzionamento della
cache.
3. Si supponga che in media il 40% delle istruzioni di un programma rappresenti un accesso
ai dati (esecuzione di un’istruzione di tipo load oppure store). Il trasferimento di un dato
dalla cache dati o istruzioni alla CPU richiede 1 ciclo di clock. Si assuma che la memoria
principale abbia tempo di accesso pari a 50 cicli di clock per la prima parola (32 bit)
mentre per le parole successive (sempre da 32 bit) sono necessari solo 20 cicli di clock.
Calcolare il tempo medio di trasferimento di un dato o istruzione dalla memoria centrale,
ricordando che un trasferimento tra memoria e cache consiste sempre di un blocco intero
(8 byte).
TRACCIA DI SOLUZIONE ALL’ESERCIZIO 2
L’indirizzo di memoria centrale è da 32 bit.
STRUTTURA DELLE ETICHETTE
Cache dati:
•
•
•
i 3 bit meno significativi dell'indirizzo di memoria centrale servono per indirizzare un byte
nel blocco
si hanno 8K / 8 = 1024 blocchi nella cache
si hanno log2 1024 = 10 bit per indirizzare il blocco
•
i rimanenti 32 − 3 − 10 = 19 bit servono per l’etichetta
Cache istruzioni:
•
•
i 3 bit meno significativi dell'indirizzo di memoria centrale servono per indirizzare un byte
nel blocco
si hanno 4K / 8 = 512 blocchi nella cache
•
si hanno log2 512 = 9 bit per indirizzare il blocco
•
i rimanenti 32 − 3 − 9 = 20 bit servono per l’etichetta
CALCOLO DELLE PRESTAZIONI MEDIE
Supponendo di fare uguale a 100 il numero di istruzioni, si hanno 100 accessi alla memoria
di programma per leggere le istruzioni stesse, e 40 di queste istruzioni fanno un ulteriore
Esercizi sulla memoria cache - Informatica 2 - L. Breveglieri
4
accesso alla memoria dati per leggere un dato ciascuna. Dunque, in totale si hanno 140
accessi alla memoria (senza distinguere se si tratta della memoria di programma o della
memoria dati). In termini percentuali, si ha che sul totale di accessi alla memoria, una
frazione pari a 1 / 1,4 = 0,71 = 71% è di lettura di un'istruzione, mentre una frazione di 0,4 /
1,4 = 0,28 = 28% è di lettura di un dato; giacché dati e istruzioni hanno la stessa dimensione
(32 bit), tra questi due tipi di accesso non c'è differenza sostanziale. Naturalmente la somma
1 / 1,4 + 0,4 / 1,4 vale 1 (a meno di arrotondamenti).
Si ha dunque che il valore medio Ttotale di accesso alla memoria è dato dalla formula
seguente:
Ttotale
= 1 / 1,4 ∗ Tistruzioni + 0,4 / 1,4 ∗ Tdati = 0,71 ∗ Tistruzioni + 0,28 ∗ Tdati
Per prima cosa, è necessario calcolare il valore medio di Tistruzioni:
Tistruzioni
= Hit_rate ∗ Taccesso alla mem. cache + Miss_rate ∗ Tpenalità di fallimento
che richiede il calcolo dei valori medi di Taccesso alla mem. cache e di Tpenalità di fallimento. Per
quest'ultimo si deve ricordare che la memoria centrale ha parole da 32 bit, mentre la
memoria cache ha parole da 8 bit (un byte); ne consegue che una parola di memoria
centrale contiene 4 parole di memoria cache. Dunque, un blocco di memoria cache, formato
da 8 byte, viene caricato dalla memoria centrale in due colpi: nel primo si leggono i primi 4
byte, nel secondo i rimanenti 4 byte.
Taccesso alla mem. cache = 1 ciclo di clock
Tpenalità di fallimento
cache =
= Taccesso primi 4 byte in mem. centrale + Taccesso secondi 4 byte in mem. centrale + Taccesso alla mem.
= 50 + 20 + 1 = 71 cicli di clock
Tistruzioni
= 0,98 ∗ 1 + 0,02 ∗ 71 = 2,4 cicli di clock
Come seconda cosa, è necessario calcolare il valore medio di Tdati; il calcolo è molto simile a
quello di Tistruzioni:
Tdati
= Hit_rate ∗ Taccesso alla mem. cache + Miss_rate ∗ Tpenalità di fallimento =
= 0,85 ∗ 1 + 0,15 ∗ 71 = 11,5 cicli di clock
Infine, il calcolo del valore medio di Ttotale:
Ttotale
= 0,71 ∗ 2,4 + 0,28 ∗ 11,5 = 4,9 cicli di clock
Possiamo chiederci se le prestazioni della cache così calcolate siano buone oppure no.
Supponendo che la memoria venga letta in modo puramente sequenziale, si ha che:
Ttotale senza cache = Taccesso secondi 4 byte in mem. centrale / 4 = 20 / 4 = 5 cicli di clock
Il guadagno varrebbe dunque 5 / 4,9 ≈ 1, che è modestissimo.
Esercizi sulla memoria cache - Informatica 2 - L. Breveglieri
5
Esercizio 3
Data una gerarchia di memoria con una memoria cache e una memoria centrale, discutere,
in base alle tre organizzazioni di cache disponibili, a indirizzamento diretto (direct-mapped),
completamente associativo (fully-associative), e associativo a gruppi (set-associative), come
avvengono le operazioni seguenti:
1. posizionamento di un blocco nella cache;
2. verifica della presenza di un blocco nella cache;
3. scelta del blocco da sostituire nella cache in caso di fallimento di un'operazione di
lettura;
4. scrittura di un blocco.
TRACCIA DI SOLUZIONE ALL'ESERCIZIO 3
Posizionamento di un blocco:
Indirizzamento diretto:
Posizione univoca: indirizzo di memoria modulo numero dei blocchi in cache
Completamente associativa:
Posizione qualunque all’interno della cache
Associativo a gruppi
Posizione libera all’interno del gruppo
Insieme = (indirizzo di memoria / numero dei blocchi) modulo numero dei gruppi
Identificazione del blocco
Indirizzamento diretto:
Calcolo posizione
Verifica etichetta e verifica bit di validità
Completamente associativo:
Confronta etichetta in ogni blocco e verifica bit di validità
Associativo a gruppi
Identifica il gruppo
Confronta etichette del gruppo e verifica bit di validità
Sostituzione del blocco
Definito dall’indirizzo nelle cache a indirizzamento diretto
Cache associativa a gruppi oppure completamente associativa:
Casuale
LRU (Least Recently Used)
Strategia di scrittura
Write through (o scrittura immediata)
Write back (o scrittura differita)
Esercizi sulla memoria cache - Informatica 2 - L. Breveglieri
6
Esercizio 4
È dato un sistema di memoria facoltativamente dotato di cache a indirizzamento diretto
(direct-mapped); il sistema di memoria ha le caratteristiche seguenti:
•
Capacità di memoria centrale: 32 K × 8, e tempo di accesso: 100 ns
•
Dimensione del blocco: 128 parole da 8 bit ciascuna
•
Capacità di memoria cache: 4 blocchi, e tempo di accesso: 10 ns
•
Politica di lettura in cache: lettura differita (read back)
Un programma legge ciclicamente per 10 volte un vettore di 640 parole da 8 bit ciascuna.
All’inizio il vettore si trova tutto in blocchi consecutivi della memoria centrale. Svolgere i punti
seguenti:
1. Calcolare la dimensione delle etichette di blocco da conservare nella memoria
associativa facente parte della cache.
2. Spiegare brevemente in cosa consistono le politiche di lettura e scrittura differita (read
back e write back, rispettivamente).
3. Calcolare il guadagno di tempo di lettura del vettore:
guadagno =
Tempo di lettura del vettore sul sistema senza cache
Tempo di lettura del vettore sul sistema con cache
ottenuto passando dal sistema senza cache al sistema con cache.
Si rammenta che per risolvere il punto (3) occorre fare una breve simulazione del
comportamento della memoria cache; le tabelle riportate di seguito sono liberamente usabili
per questo scopo.
1° ciclo di lettura del vettore
2° ciclo di lettura del vettore
C1
C1
C1
C1
C2
C2
C2
C2
C3
C3
C3
C3
C4
C4
C4
C4
3° ciclo di lettura del vettore
eccetera …
C1
C1
C1
C1
C2
C2
C2
C2
C3
C3
C3
C3
C4
C4
C4
C4
Esercizi sulla memoria cache - Informatica 2 - L. Breveglieri
7
TRACCIA DI SOLUZIONE ALL'ESERCIZIO 4
Memoria centrale:
•
32 K / 128 = 256 blocchi
•
spazio di indirizzamento della memoria centrale memoria = 32 K, pertanto l’indirizzo
di memoria centrale è di log2 32 K = 15 bit
•
per identificare uno dei 4 blocchi della memoria cache bastano 2 bit
•
ogni blocco è di 128 parole, indirizzabili mediante log2 128 = 7 bit
•
pertanto, la dimensione dell’etichetta è di 15 bit − 2 bit − 7 bit = 6 bit
Etichetta
# Blocco
Parola
6 bit
2 bit
7 bit
Occupazione blocchi da parte del vettore: 640 / 128 = 5 blocchi
Andamento della simulazione: si immagini di numerare i 5 blocchi del vettore come V0, V1,
V2, V3 e V4.
1° ciclo di lettura del vettore
4 miss
2° ciclo di lettura del vettore
1 miss
1 miss
1 miss
C1
V0
C1
V4
C1
V0
C1
V4
C2
V1
C2
V1
C2
V1
C2
V1
C3
V2
C3
V2
C3
V2
C3
V2
C4
V3
C4
V3
C4
V3
C4
V3
3° ciclo di lettura del vettore
1 miss
eccetera …
1 miss
ecc.
ecc.
C1
V0
C1
V4
C1
V0
C1
V4
C2
V1
C2
V1
C2
V1
C2
V1
C3
V2
C3
V2
C3
V2
C3
V2
C4
V3
C4
V3
C4
V3
C4
V3
Esercizi sulla memoria cache - Informatica 2 - L. Breveglieri
8
Alla prima iterazione si hanno 5 miss, poi solo 2 per ogni iterazione successiva.
# miss = 5 + 9 × 2 = 23 miss
# hit = (10 × 640) − 23 = 6377 hit
Tsenza cache = 10 × 640 × 100 ns = 640 µs
Tcon cache = 6377 × 10 ns + 23 × (128 × 100 ns + 10 ns) = 358,4 µs
Con la politica “read back” il processore attende che il blocco sia stato interamente copiato nella
memoria cache prima di leggere la parola cercata. Con la politica “write back” il processore scrive
solo nella cache, senza aggiornare la copia del blocco in memoria centrale; questa viene
aggiornata in seguito, di solito quando occorre espellere il blocco dalla cache.
Infine, si ha:
Guadagno = Tsenza cache / Tcon cache = 640 µs / 358,4 µs = 1,78
In conclusione, il sistema dotato di memoria cache è il 78% più veloce del sistema senza memoria
cache.
Esercizi sulla memoria cache - Informatica 2 - L. Breveglieri
9
Esercizio 5
Supponendo di avere una memoria centrale da 64 K × 32, divisa un blocchi da 32 × 32, e una
memoria cache da 1K × 32, anch’essa suddivisa in blocchi da 32 × 32, mostrare come va
scomposto l’indirizzo di una parola in memoria centrale, nei tre casi seguenti:
CACHE A INDIRIZZAMENTO DIRETTO (direct-mapped):
ETICHETTA
# BLOCCO
PAROLA
CACHE A INDIRIZZAMENTO ASSOCIATIVO (fully-associative):
ETICHETTA
PAROLA
CACHE A INDIRIZZAMENTO A GRUPPI (set-associative): si supponga che ogni gruppo
contenga 4 blocchi.
ETICHETTA
# GRUPPO
PAROLA
TRACCIA DI SOLUZIONE ALL'ESERCIZIO 5
L’indirizzo di memoria centrale è a 16 bit, quello di memoria cache è a 10 bit, quello di parola
all’interno del blocco è a 5 bit; la memoria centrale contiene 64K / 32 = 2048 blocchi, la memoria
cache contiene 1K / 32 = 32 blocchi che, nella versione a gruppi, sono organizzati in 32 / 4 = 8
gruppi.
Pertanto:
# di bit dell’indirizzo della parola in memoria centrale: 16
# di bit dell’indirizzo della parola nel blocco: 5
# di gruppi contenuti nella cache:
indirizzamento diretto: 32
indirizzamento associativo: 1
indirizzamento a gruppi: 8
Esercizi sulla memoria cache - Informatica 2 - L. Breveglieri
10
REGOLA GENERALE:
m: # di bit dell’indirizzo della parola in memoria centrale
b: # di bit dell’indirizzo della parola nel blocco
g: # di gruppi contenuti nella cache
e: # di bit dell’etichetta di blocco da memorizzare nella memoria associativa
m = b + log2g + e
Pertanto: e = m − b − log2g
CACHE A INDIRIZZAMENTO DIRETTO (direct-mapped):
ETICHETTA
# BLOCCO
PAROLA
6 bit
5 bit
5 bit
Poiché m = 16, b = 5 e g = 32, si ha e = 16 − 5 − log232 = 16 − 5 − 5 = 6
CACHE A INDIRIZZAMENTO ASSOCIATIVO (fully-associative):
ETICHETTA
PAROLA
11 bit
5 bit
Poiché m = 16, b = 5 e g = 1, si ha e = 16 − 5 − log21 = 16 − 5 − 0 = 11
CACHE A INDIRIZZAMENTO A GRUPPI (set-associative): ogni gruppo contiene 4 blocchi.
ETICHETTA
# GRUPPO
PAROLA
8 bit
3 bit
5 bit
Poiché m = 16, b = 5 e g = 8, si ha e = 16 − 5 − log28 = 16 − 5 − 3 = 8
Esercizi sulla memoria cache - Informatica 2 - L. Breveglieri
11
Esercizio 6
Si supponga di avere una memoria centrale da 64 K × 32, divisa un blocchi da 64 × 32, e una
memoria cache da 512 × 32, anch’essa suddivisa in blocchi da 64 × 32, di tipo a indirizzamento
diretto (direct-mapped).
Un programma legge ciclicamente per 4 volte un vettore lungo 640 parole. Si calcoli il guadagno di
prestazione che si ottiene nella lettura del vettore, eseguendo il programma in questione su un
calcolatore dotato della cache descritta rispetto a eseguire lo stesso programma su un calcolatore
che non dispone di tale cache, ma solo della memoria centrale indicata. Il guadagno di prestazione
si esprime così:
guadagno lettura vettore =
Tempo di lettura vettore sul sistema senza cache
Tempo di lettura vettore sul sistema con cache
Si supponga che il processore impieghi 10 ns per leggere una parola dalla memoria cache e 100
ns per leggere una parola dalla memoria centrale. Si supponga anche che l’unità funzionale che
carica i blocchi di memoria centrale in cache impieghi 64 × 100 ns = 6400 ns = 6,4 µs per caricare
un blocco in memoria cache. Si supponga infine che il sistema di cache adotti il metodo di lettura
read back (o di lettura differita). All’inizio il vettore si trova tutto in memoria centrale e tutti i blocchi
della cache sono liberi.
TRACCIA DI SOLUZIONE ALL'ESERCIZIO 6
Tempo di lettura vettore sul sistema senza cache:
T1 = # iterazioni ciclo × lunghezza vettore × tempo lettura parola in mem. centrale
# di iterazioni ciclo = 4
lunghezza del vettore = 640
tempo di lettura della parola in memoria centrale = 100 ns
T1 = 4 × 640 × 100 ns = 256000 ns = 256 µs
Tempo di lettura vettore sul sistema con cache:
T2 = si ricava per simulazione
I blocchi sono da 64 parole. Il vettore è formato da 640 / 64 = 10 blocchi, che si possono numerare
B0, … B9. La memoria cache contiene 8 blocchi. Chiaramente, in cache ci possono stare al
massimo 8 dei 10 blocchi che formano il vettore. Ecco i passi di simulazione:
Esercizi sulla memoria cache - Informatica 2 - L. Breveglieri
12
1a iterazione
2a iterazione
3a iterazione
4a iterazione
B0
B0
B0
B0
B1
B1
B1
B1
B2
B2
B2
B2
B3
B3
B3
B3
B4
B4
B4
B4
B5
B5
B5
B5
B6
B6
B6
B6
B7
B7
B7
B7
8 blocchi
8 blocchi
8 blocchi
8 blocchi
8 miss
2 miss
2 miss
2 miss
B8
B8
B8
B8
B9
B9
B9
B9
B2
B2
B2
B2
B3
B3
B3
B3
B4
B4
B4
B4
B5
B5
B5
B5
B6
B6
B6
B6
B7
B7
B7
B7
10 blocchi
10 blocchi
10 blocchi
10 blocchi
2 miss
2 miss
2 miss
2 miss
Dalla simulazione si ha che:
# miss = 8 + 2 + 2 + 2 + 2 + 2 + 2 + 2 = 22
Siccome in totale vengono lette 640 × 4 = 2560 parole, il numero di hit vale:
# hit = # parole lette − # miss = 2560 − 22 = 2538
In caso di miss, il processore si sospende per: tempo caricamento blocco + tempo lettura parola in
cache, perché la politica di lettura è read back e dunque prima si carica tutto il blocco in cache e
poi si legge la parola.
Dunque, il tempo necessario vale:
T2 = # hit × tempo lettura parola in cache + # miss × (tempo caricamento blocco + tempo
lettura parola in cache)
T2 = 2538 × 10 ns + 22 × (6400 ns + 10 ns)
T2 = 25380 ns + 22 × 6410 ns = 166400 ns = 166,4 µs
E infine si calcola il guadagno:
Esercizi sulla memoria cache - Informatica 2 - L. Breveglieri
13
guadagno lettura vettore =
T1
256 µs
=
≈ 1,53
T2
166,4 µs
Pertanto, il guadagno è di circa il 53%.
Estensione: rifare il calcolo del guadagno supponendo che il numero di iterazioni del ciclo di
lettura del vettore tenda a infinito.
Soluzione (facile): è chiaro che asintoticamente ci sono 4 miss per iterazione, pertanto ragionando
su 4 iterazioni (come prima) i miss sono 16:
T2 = # hit × tempo lettura parola in cache + # miss × (tempo caricamento blocco + tempo
lettura parola in cache)
T2 = 2538 × 10 ns + 16 × (6400 ns + 10 ns)
T2 = 25380 ns + 16 × 6410 ns = 127940 ns = 127,94 µs
guadagno lettura vettore =
T1
256 µs
=
≈ 2 µs
T2
127,9 µs
Pertanto, il guadagno è di circa il 100%. Tale limite non è superabile con lo schema di
indirizzamento proposto.
Altra estensione: rifare il calcolo del guadagno supponendo che la cache sia di tipo associativo
(fully-associative). VEDERE SCHEMA IN FONDO.
(vengono 40 miss, che è il massimo!)
Altra estensione ancora: rifare il calcolo del guadagno supponendo che la cache sia di tipo a
gruppi (set-associative), con 2 blocchi per gruppo.
(vengono 28 miss, che è una situazione intermedia tra indirizzamento diretto e associativo).
VEDERE SCHEMA IN FONDO.
Esercizi sulla memoria cache - Informatica 2 - L. Breveglieri
14
Esercizio 7
È data la seguente memoria cache a indirizzamento associativo (fully-associative). I blocchi sono
da 64 parole, la cache contiene 4 blocchi e la memoria centrale contiene 8 blocchi. Il sistema di
cache utilizza l’algoritmo di sostituzione LRU.
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
Si supponga che ogni blocco nella cache possieda un “contatore di invecchiamento” da 2 bit (che
assume valori 0, 1, 2, e 3). La cache inizialmente ha i 4 blocchi tutti liberi. È quindi data la
seguente successione di operazioni di lettura di parole a certi indirizzi, accompagnata in parte dalla
relativa successione di “cache hit” e “cache miss”:
Operazione
Esito Azione
C0
C1
C2
Legge a ind. 000010101
Miss
Carica: C0 ← B0
B0, 0
Legge a ind. 000111111
Hit
Nessuna
B0, 0
Legge a ind. 000110011
Hit
Nessuna
B0, 0
Legge a ind. 101001010
Miss
Carica: C1 ← B5
B0, 1
B5, 0
Legge a ind. 010000000
Miss
Carica: C2 ← B2
B0, 2
B5, 1
B2, 0
Legge a ind. 010101100
Hit
Nessuna
B0, 2
B5, 1
B2, 0
Legge a ind. 111110010
Miss
Carica: C3 ← B7
B0, 3
B5, 2
B2, 1
C3
B7, 0
Legge a ind. 111000111
Legge a ind. 101000000
Legge a ind. 100000000
Legge a ind. 101101100
Legge a ind. 110000000
Legge a ind. 111011100
Completare la tabella di simulazione riempiendo le celle lasciate vuote, secondo l’algoritmo LRU.
Nelle colonne C0, C1, C2 e C3, che rappresentano lo stato dei 4 blocchi della cache, vanno scritti
il blocco caricato in cache e il contatore di invecchiamento, oppure nulla (grigio) se il blocco di
cache è libero.
Esercizi sulla memoria cache - Informatica 2 - L. Breveglieri
15
TRACCIA DI SOLUZIONE ALL'ESERCIZIO 7
Si prosegue la simulazione LRU
Operazione
Esito Azione
C0
Legge a ind. 000010101
Miss
Carica: C0 ← B0
B0, 0
Legge a ind. 000111111
Hit
Nessuna
B0, 0
Legge a ind. 000110011
Hit
Nessuna
B0, 0
Legge a ind. 101001010
Miss
Carica: C1 ← B5
B0, 1
B5, 0
Legge a ind. 010000000
Miss
Carica: C2 ← B2
B0, 2
B5, 1
B2, 0
Legge a ind. 010101100
Hit
Nessuna
B0, 2
B5, 1
B2, 0
Legge a ind. 111110010
Miss
Carica: C3 ← B7
B0, 3
B5, 2
B2, 1
B7, 0
Legge a ind. 111000111
Hit
Nessuna
B0, 3
B5, 2
B2, 1
B7, 0
Legge a ind. 101000000
Hit
Nessuna
B0, 3
B5, 0
B2, 2
B7, 1
Legge a ind. 100000000
Miss
Sost: C0 ← B4
B4, 0
B5, 1
B2, 3
B7, 2
Legge a ind. 101101100
Hit
Nessuna
B4, 1
B5, 0
B2, 3
B7, 2
Legge a ind. 110000000
Miss
Sost: C2 ← B6
B4, 2
B5, 1
B6, 0
B7, 3
Legge a ind. 111011100
Hit
Nessuna
B4, 3
B5, 2
B6, 1
B7, 0
Esercizi sulla memoria cache - Informatica 2 - L. Breveglieri
C1
C2
C3
16
SIMULAZIONE CON SCHEMA DI INDIRIZZAMENTO ASSOCIATIVO (fully-associative)
si ricordi che l’algoritmo di sostituzione è LRU
1a iterazione
2a iterazione
3a iterazione
4a iterazione
B0
B8
B6
B4
B1
B9
B7
B5
B2
B0
B8
B6
B3
B1
B9
B7
B4
B2
B0
B8
B5
B3
B1
B9
B6
B4
B2
B0
B7
B5
B3
B1
8 blocchi
8 blocchi
8 blocchi
8 blocchi
8 miss
6 miss
4 miss
2 miss
B8
B6
B4
B2
B9
B7
B5
B3
B2
B8
B6
B4
B3
B9
B7
B5
B4
B2
B8
B6
B5
B3
B9
B7
B6
B4
B2
B8
B7
B5
B3
B9
10 blocchi
10 blocchi
10 blocchi
10 blocchi
2 miss
4 miss
6 miss
8 miss
Esercizi sulla memoria cache - Informatica 2 - L. Breveglieri
17
SIMULAZIONE CON SCHEMA DI INDIRIZZAMENTO A GRUPPI (set-associative)
1a iterazione
2a iterazione
B0
B4
B4
B0
B1
B5
B5
B1
B2
B2
B6
B6
B3
B3
B7
B7
8 blocchi
8 blocchi
8 miss
4 miss
B8
B4
B4
B8
B9
B5
B5
B9
B2
B2
B6
B6
B3
B3
B7
B7
10 blocchi
10 blocchi
2 miss
2 miss
Esercizi sulla memoria cache - Informatica 2 - L. Breveglieri
18
3a iterazione
4a iterazione
B0
B4
B4
B0
B1
B5
B5
B1
B2
B2
B6
B6
B3
B3
B7
B7
8 blocchi
8 blocchi
4 miss
4 miss
B8
B4
B4
B8
B9
B5
B5
B9
B2
B2
B6
B6
B3
B3
B7
B7
10 blocchi
10 blocchi
2 miss
2 miss
Esercizi sulla memoria cache - Informatica 2 - L. Breveglieri
19
Esercizio 8
Si consideri un sistema di memoria costituito da una memoria centrale di 16 M parole e da una
memoria cache di 16 K parole, con 64 parole per blocco. Si chiede di illustrare la struttura degli
indirizzi in caso di:
1. Indirizzamento diretto (direct-mapped)
2. Indirizzamento completamente associativo (fully-associative)
3. Indirizzamento associativo a gruppi (set-associative), con 4 blocchi per gruppo
Si supponga ora che la memoria cache con schema di indirizzamento diretto (direct-mapped) sia
inizialmente vuota. La CPU esegue un ciclo nel quale accede sequenzialmente in lettura agli
elementi di un vettore. Il ciclo viene iterato 5 volte. Il vettore contiene 2560 elementi. Ogni
elemento del vettore è una parola di memoria. Si supponga che il tempo di accesso a una parola
della memoria cache valga 1 ns e che il tempo di accesso a una parola della memoria centrale
valga 10 ns. Si chiede di stimare il fattore di miglioramento risultante dell'uso della cache.
DA FARE …
Esercizi sulla memoria cache - Informatica 2 - L. Breveglieri
20
Esercizio 9
Si supponga di avere una memoria centrale da 4 M byte e una memoria cache dati da 64 K byte
ad indirizzamento associativo a gruppi (set-associative); ogni gruppo contiene 2 blocchi. La
memoria centrale e la memoria cache sono suddivise in blocchi da 8 K byte ciascuno. La memoria
cache si serve dell'algoritmo di sostituzione LRU. Si supponga che un programma debba scandire
circolarmente per 2 volte un vettore di 72 K byte, che inizialmente si trova tutto in memoria centrale
ed è allineato ai blocchi della memoria centrale (ciò implica che il vettore occupi esattamente 9
blocchi di memoria centrale). SI chiede di:
• mostrare la struttura dell'indirizzo di memoria centrale;
• calcolare il numero di hit e di miss di cache dati che si verificano durante l'esecuzione del
programma;
• supponendo poi che il tempo di accesso a una parola di memoria centrale sia di 100 ns, il
tempo di accesso a una parola di memoria cache sia di 10 ns, e che la penalità di fallimento
(miss) sia di 100 microsecondi, calcolare l'eventuale guadagno temporale che si otterrebbe
passando da un sistema senza cache a uno con cache.
DA FARE …
Esercizi sulla memoria cache - Informatica 2 - L. Breveglieri
21