Sommario Indirizzamento della memoria cache Indirizzamento della

Transcript

Sommario Indirizzamento della memoria cache Indirizzamento della
Esercitazione di Calcolatori Elettronici
Sommario
Prof. Gian Luca Marcialis
• Memoria cache
– Indirizzamento della memoria cache
– Allocazione di blocchi e insiemi
Corso di Laurea in Ingegneria Elettronica
• Metodo diretto
• Metodo associativo su insiemi
• Metodo completamente associativo
– Calcolo dell’hit rate di cache
Esercitazione 2 (Capitolo 3)
Memoria Cache
Memoria Disco
Codice di Hamming
• Gerarchia di memorie
– Calcolo del tempo medio di accesso alla gerarchia a due e tre livelli
– Hit rate condizionale
• Memoria a disco
• Codice di Hamming
Calcolatori Elettronici
Indirizzamento della memoria cache
m bit
m bit
Offset
Offset
Shift di n bit
• Il Block Frame, costituito dagli m bit più significativi
dell’indirizzo, individua la posizione, ovvero l’indirizzo, del
blocco nella memoria primaria.
• Per ottenere il “block frame”, è necessario uno scorrimento a
destra di tanti bit quanti sono i bit di offset.
• Ciò equivale a dividere l’intero indirizzo per 2n, ovvero per il
numero di parole in ciascun blocco:
– il quoziente è il Block frame;
– il resto fornisce invece l’Offset.
• L’ Offset è costituito dagli n bit meno significativi dell’indirizzo.
Tale gruppo individua la posizione della parola all’interno di un
dato blocco.
Memoria Cache - Prof. G.L.Marcialis
n bit
Block frame
Bit di indirizzamento della primaria
Calcolatori Elettronici
2
Indirizzamento della memoria cache
n bit
Block frame
Memoria Cache - Prof. G.L.Marcialis
3
Calcolatori Elettronici
Memoria Cache - Prof. G.L.Marcialis
4
Indirizzamento della memoria cache
t bit
Indirizzamento della memoria cache
r bit
TAG
t bit
Cache index
TAG
r bit
Cache index
BLOCK FRAME
Shift di r bit
• Il Block Frame è ulteriormente ripartito in TAG e in Cache
Index. Quest’ultimo rappresenta:
– l’indirizzo del blocco di “cache”, nel metodo diretto;
– l’indirizzo dell’insieme di “cache”, nel metodo
associativo su insiemi.
Calcolatori Elettronici
Memoria Cache - Prof. G.L.Marcialis
• Per ottenere TAG e Cache Index, è necessario uno scorrimento
a destra di r bit. Ciò equivale a dividere il Block Frame per 2r, il
numero di blocchi/insiemi in cache:
– Il quoziente è il TAG;
– Il resto fornisce il Cache Index.
5
Ricapitolando
• Si assuma che:
– la memoria primaria contenga 8 blocchi;
– la cache contenga 4 blocchi;
– ogni blocco contenga 16 parole, per un
totale di 128 parole in memoria primaria,
64 in memoria cache.
 Address 
Offset = Mod 
 2 n 
 BlockFrame 
CacheIndex = Mod 


2r
Mem. Cache
0
1
2
3
 BlockFrame 
TAG = Int 


2r
Memoria Cache - Prof. G.L.Marcialis
Memoria Cache - Prof. G.L.Marcialis
6
Struttura della memoria
 Address 
BlockFrame = Int 
 2 n 
Calcolatori Elettronici
Calcolatori Elettronici
7
Calcolatori Elettronici
Mem. Primaria
0
1
2
3
4
5
6
7
Blocchi
Memoria Cache - Prof. G.L.Marcialis
8
Indirizzamento diretto
•
•
<TAG 1 bit><Cache Index 2 bit><Offset 4 bit>
La cache è vuota. Supponiamo che la memoria
richieda l’accesso alla parola di indizzo primaria
pari a 10310=(1100111)2.
– Il sistema va prima a cercare la parola nella
cache.
– E’ necessario l’indirizzo del blocco di memoria
primaria, dato da: Block Frame = Int(103/16)
= 6.
– Poi si individua il blocco di cache dove si
dovrebbe trovare la parola con l’operazione:
Cache Index = Mod(6/4) = 2.
Indirizzamento diretto
• Il sistema va allora a prelevare il blocco di primaria dove si trova
la parola 103.
• Viene dunque prelevato tutto il blocco 6 (ovvero tutte le parole
contenute in quel blocco) della primaria e copiato nel blocco 2
della cache.
Mem. Cache
0
1
2
3
Mem. Primaria
0
1
2
3
4
5
6
7
Ma quel blocco è vuoto.
Calcolatori Elettronici
Memoria Cache - Prof. G.L.Marcialis
9
Indirizzamento diretto:
un incoveniente…
Calcolatori Elettronici
Mem. Cache
0
1
2
3
Memoria Cache - Prof. G.L.Marcialis
10
Indirizzamento associativo su insiemi
• Se raggruppiamo a due a due i blocchi della cache, generando
così due insiemi, possiamo usare il metodo associativo su
insiemi.
• <TAG 2 bit><Cache Index 1 bit><Offset 4 bit>
• Supponiamo adesso che il sistema voglia accedere alla parola
di indirizzo 35.
– Il blocco di primaria è Int(35/16) = 2.
– Il corrispondente blocco di cache è Mod(2/4) = 2.
Mem. Primaria
• Ma il blocco 2 è stato appena occupato dal blocco 6 della
primaria (lo si verifica attraverso il TAG).
• Si rende allora necessario sovrascrivere il blocco 2 di cache con
il nuovo blocco di primaria, invalidando il principio di località
(cache miss).
Calcolatori Elettronici
Memoria Cache - Prof. G.L.Marcialis
11
0
1
2
3
4
5
6
7
Calcolatori Elettronici
Mem. Cache
Insieme 0
Insieme 1
Memoria Cache - Prof. G.L.Marcialis
12
Indirizzamento associativo su insiemi
Indirizzamento associativo su insiemi
• La cache è vuota. Supponiamo
che la memoria richieda
l’accesso alla parola di indizzo
primaria pari a 103.
• Il passo successivo è individuare l’insieme della cache dove
cercare il blocco, con l’operazione: Mod(6/2) = 0
• Il sistema va prima a cercare la
parola nella cache. E’ necessario
l’indirizzo del blocco di memoria
primaria, dato da: Int(103/16) =
6.
Calcolatori Elettronici
Mem. Primaria
0
1
2
3
4
5
6
7
Memoria Cache - Prof. G.L.Marcialis
• Attraverso il TAG il sistema
scansiona i due blocchi di cache
dell’insieme 0 per verificare la
presenza del blocco di primaria
cercato.
• L’insieme è però vuoto. Si rende
necessario il trasferimento del
blocco 6 di primaria in uno dei due
blocchi di cache liberi.
13
Calcolatori Elettronici
Mem. Cache
Insieme 0
Insieme 1
Memoria Cache - Prof. G.L.Marcialis
Indirizzamento associativo su insiemi
Da ricordare
• Il blocco 6 di primaria viene così allocato
nel primo blocco disponibile dell’insieme 0
di cache. La situazione della cache è quella
descritta in figura.
• Supponiamo ora che il sistema richieda la
parola di indirizzo 35, presente nel blocco
Int(35/16) = 2 di primaria. L’insieme di
cache ha indirizzo Mod(2/2) = 0
• Poiché c’è ancora un blocco libero in
quell’insieme, non è necessaria alcuna
sostituzione: il blocco 2 di primaria verrà
allocato nel blocco libero.
• Per sapere l’indirizzo della prima e dell’ultima parola
del blocco N di primaria, essendo D la dimensione
del blocco:
Calcolatori Elettronici
Memoria Cache - Prof. G.L.Marcialis
(6)
blocco libero
14
Word (0) = N ⋅ D
Word ( D − 1) = N ⋅ D + D − 1
(6)
• N si ottiene dalla formula:
(2)
 Word ( x) 
N = Int 

D


15
Calcolatori Elettronici
Memoria Cache - Prof. G.L.Marcialis
16
Esercizio (23/09/1999)
Soluzione
• Il sistema di memoria di un calcolatore è formato da una
memoria principale di dimensione pari a 64MB e da una
memoria cache di dimensione pari a 512KB. La memoria è
indirizzabile al singolo byte.
• Calcolare il numero di bit necessario per indirizzare la memoria
primaria.
• Dire inoltre come viene indirizzata la cache, sapendo che la
memoria è suddivisa in blocchi da 4 byte:
• 26 bit di indirizzamento
• Metodo diretto:
– <tag 7 bit> <cache index 17 bit> <offset 2 bit>
• Metodo associativo su insiemi a 4 vie:
– <tag 9 bit> <cache index 15 bit> <offset 2 bit>
– con il metodo diretto;
– con il metodo associativo su insiemi, con insiemi di 4 blocchi.
Calcolatori Elettronici
Memoria Cache - Prof. G.L.Marcialis
17
Calcolatori Elettronici
Memoria Cache - Prof. G.L.Marcialis
18
Esercizio (5/11/1998)
Soluzione
Si consideri un calcolatore che dispone di una memoria
cache di 256 byte. La cache usi un metodo di allocazione del
tipo “associativo su insiemi” (16 insiemi). L’indirizzamento
usato è a 16 bit, è possibile accedere al singolo byte e la
memoria è suddivisa in blocchi da 4 byte.
1. Spiegare come vengono interpretati gli indirizzi logici a 16 bit
per recuperare l’informazione contenuta nella cache.
2. A che cosa corrispondono gli indirizzi: CC84, A017, FF1A,
012B?
3. Se gli indirizzi A7x1 e 03By possono essere assegnati allo
stesso insieme di cache, quali valori possono avere le cifre x
e y?
1. <TAG 10 bit> <Cache Index 4 bit> <Offset 2 bit>
2.
•
Calcolatori Elettronici
Memoria Cache - Prof. G.L.Marcialis
19
CC84
A017
FF1A
012B
==>
==>
==>
==>
CC
A0
FF
01
10|00
00|01
00|01
00|10
01|00
01|11
10|10
10|11
==>
==>
==>
==>
insieme
insieme
insieme
insieme
1,
5,
6,
10,
tag
tag
tag
tag
CC(10)2,
A0(00)2,
FF(00)2,
01(00)2,
byte
byte
byte
byte
00
11
10
11
3.
A7x1
A7 x3 x2|x1 x0 0 0 |0 1
03By
03 1 0 |1 1 y3 y2|y1 y0
x =(x3 x2 1 1 )2 = 3,7,B,F.
y =(0 0 y1 y0)2 = 0,1,2,3.
Calcolatori Elettronici
Memoria Cache - Prof. G.L.Marcialis
20
Esercizio (29/01/2004)
Esercizio (cont’d)
Si consideri un calcolatore che dispone di una memoria
principale di 64 Kbyte suddivisa in blocchi di 8 byte. E'
possibile accedere al singolo byte e la modalità di
indirizzamento usata per la cache, costituita da 32
blocchi indirizzabili, sia quella “diretta”.
1. Spiegare, precisando il significato e la funzione dei diversi
campi, come vengono interpretati gli indirizzi logici per
recuperare l’informazione contenuta nella cache.
2. Indicare in quali blocchi di primaria si trovano i seguenti byte
(indirizzi in esadecimale): 111B, C334, D01D, AAAA.
3. Indicare in quali blocchi di cache devono essere
memorizzati i byte del passo precedente. Se tali parole
venissero richieste sequenzialmente, quanti sarebbero gli hit
di cache (ipotizzando la cache inizialmente vuota)?
4. Si supponga che il byte di indirizzo 1A1A sia memorizzato in
cache. Indicare gli indirizzi di tutti gli altri byte memorizzati
nello stesso blocco di cache.
Calcolatori Elettronici
Calcolatori Elettronici
•
Memoria Cache - Prof. G.L.Marcialis
21
Memoria Cache - Prof. G.L.Marcialis
22
Soluzione
Soluzione (cont’d)
1. Spiegare, precisando il significato e la funzione dei diversi
campi, come vengono interpretati gli indirizzi logici per
recuperare l’informazione contenuta nella cache.
2. Indicare in quali blocchi di primaria si trovano i seguenti byte
(indirizzi in esadecimale):
111B, C334, D01D, AAAA.
•
•
•
•
111B
C334
D01D
AAAA
64Kbyte = 216 byte
8 byte per blocco
3 bit di indirizzamento singolo byte
32 blocchi indirizzabili
5 bit di indirizzamento
Quindi:
<Tag 8 bit> <Cache Index 5 bit> <Offset 3 bit>
Calcolatori Elettronici
Memoria Cache - Prof. G.L.Marcialis
0001
1100
1101
1010
0001
0011
0000
1010
|
|
|
|
0001
0011
0001
1010
1
0
1
1
|
|
|
|
011
100
101
010
Block
Block
Block
Block
frame
frame
frame
frame
( 547)10
(6246)10
(6659)10
(5461)10
Cache
Cache
Cache
Cache
index
index
index
index
3
6
3
21
3. Se tali parole venissero richieste sequenzialmente, quanti
sarebbero gli hit di cache (ipotizzando la cache inizialmente
vuota)?
23
Calcolatori Elettronici
Memoria Cache - Prof. G.L.Marcialis
24
Soluzione (cont’d)
Esercizio (27/10/2000)
4. Si supponga che il byte di indirizzo 1A1A sia
memorizzato in cache. Indicare gli indirizzi di tutti gli
altri byte memorizzati nello stesso blocco di cache.
• Dato che:
•
1A1A
0001 1010 0001 1 | 010
si ottiene facilmente che gli altri byte contenuti nello
stesso blocco sono:
1A18
1A1B
1A1D
1A1F
(offset
(offset
(offset
(offset
Calcolatori Elettronici
000), 1A19 (offset 001),
011), 1A1C (offset 100),
101), 1A1E (offset 110),
111).
Memoria Cache - Prof. G.L.Marcialis
Si consideri un calcolatore che dispone di una
memoria principale di 32 KB e di una memoria
cache di 4 KB. E’ possibile accedere al singolo byte
e la memoria è suddivisa in blocchi da
64 B.
1. Spiegare come vengono interpretati gli indirizzi di
memoria primaria per recuperare l’informazione
contenuta nella cache nel caso venga usata la
modalità di indirizzamento:
– Diretto;
– Associativo su insiemi, in cui ciascun insieme è formato da
4 blocchi.
25
Calcolatori Elettronici
Esercizio (cont’d)
Soluzione
2. Si consideri la cache di cui alla domanda
precedente, indirizzata con la modalità associativa
su insiemi. Ipotizzare che il processore acceda ai
byte di indirizzo
0, 1, 2,…, 4095 in questo ordine.
Si ipotizzi inoltre che la cache sia inizialmente vuota.
Calcolare il numero di “cache hit” e “cache miss” per
questa sequenza di richieste.
• Metodo diretto:
Calcolatori Elettronici
Calcolatori Elettronici
Memoria Cache - Prof. G.L.Marcialis
27
Memoria Cache - Prof. G.L.Marcialis
26
– <TAG 3 bit><Cache Index 6 bit><Offset 6 bit>
– Poiché le parole sono in sequenza, il sistema richiede l’accesso ai
primi 212/ 26= 26 blocchi di memoria primaria.
• Metodo set-associativo:
– <TAG 5 bit><Cache Index 4 bit><Offset 6 bit>
– Poiché gli insiemi di cache sono 16= 24, indirizzati da 0 a 15, i
blocchi di primaria da 0 a 15 vengono allocati nel primo blocco
libero di ciascun insieme
– I blocchi di primaria da 16 a 31 vengono allocati nel secondo blocco
libero degli insiemi da 0 a 15, e così via.
Memoria Cache - Prof. G.L.Marcialis
28
Soluzione (cont’d)
Gerarchia di memoria
• Tempo medio di accesso:
T = H CTC + (H P − H C )(TP + TC ) + (1− H P )(TD + TP + TC ) =
T = TC + (1 − H C )TP + (1− H P )TD
Gli hit ratio possono essere interprati
come probabilità.
Parole nel Disco (Nd)
• Quando viene richiesta la parola 0 avremo un "cache miss”, che
provoca il caricamento del blocco 0 nell'insieme 0, in cache.
• Le successive richieste dei dati di indirizzo 1, 2, …, 63 vengono
quindi soddisfatte dalla cache ("cache hit").
• Dal momento che le richieste sono in tutto 64, avremo 64
"cache miss" e 63*64=4032 "cache hit", cui corrisponde un "hit
ratio" pari a 0.98 (4032/4096).
Calcolatori Elettronici
Memoria Cache - Prof. G.L.Marcialis
29
Parole in Primaria (Np)
Hc = Nc/Nd
Prob. che una parola sia in cache
Hp = Np/Nd
Parole in Cache (Nc)
Prob. che una parola sia in primaria
N.B. Le parole in cache sono contenute
anche in primaria e nel disco
Calcolatori Elettronici
Memoria Cache - Prof. G.L.Marcialis
30
Esercizio
Hit ratio condizionale
Diagramma di Venn
• Calcolare il tempo medio di accesso alla gerarchia di
memoria, sapendo che
• Qual è la relazione tra gli hit ratio condizionali e gli hit
ratio?
–
–
–
–
–
la cache ha un tempo di accesso pari a 15 ns
la primaria ha un tempo di accesso pari a 40 ns
il disco ha un tempo di accesso pari a 10 ms
l’hit ratio di cache è pari a 0.95
l’hit ratio di primaria è pari a 0.98
Cache
Primaria
Disco
c: la parola è in cache
p: la parola è in primaria
d: la parola è nel disco
T = TC + (1 − H C )TP + (1 − H P )TD = 0.2ms
0 < Hc < Hp < Hd = 1
Calcolatori Elettronici
Memoria Cache - Prof. G.L.Marcialis
31
Calcolatori Elettronici
Memoria Cache - Prof. G.L.Marcialis
32
Hit ratio condizionale
D
P
X
X
X
X
C
X
Hit ratio condizionale
6
=
10
X
X
X
X
X
X
X
X
X
X
X
X
X
X
X
X
X
X
X
Calcolatori Elettronici
=
8
10
| ̅
=
• La frequenza delle volte che una parola si è trovata in
memoria primaria dato che non si è trovata in cache
si calcola come rapporto tra frequenza delle volte
che una parola è stata trovata in primaria ma non in
cache, e la frequenza delle volte che non è stata
trovata in cache.
2
4
E’ il valore dell’hit ratio
del livello i condizionato
alla presenza o meno
della parola nel livello
«superiore» (i+1)
Memoria Cache - Prof. G.L.Marcialis
33
| ̅
Calcolatori Elettronici
=
Soluzione
• Un calcolatore ha un sistema di memoria virtuale a tre livelli,
costituita da: cache, memoria primaria e disco.
• Dobbiamo calcolare:
• Calcolare il tempo medio di accesso al sistema di memoria.
=
−
1−
Memoria Cache - Prof. G.L.Marcialis
Esercizio (18/02/2004)
– La lettura di una parola che si trova già memorizzata nella cache
richiede 15 ns.
– La lettura di una parola dalla memoria primaria e il suo
trasferimento in cache richiedono complessivamente 40 ns.
– La lettura di una parola dal disco e il suo trasferimento in memoria
primaria richiedono complessivamente 10 ms.
– La probabilità che una parola si trovi già in cache è pari a 0.95.
– La probabilità che una parola si trovi in memoria primaria quando
non è presente nella cache è pari a 0.6 (hit ratio condizionale).
−
−
34
T = HCTC + (H P − H C )(TP + TC ) + (1− H P )(TD + TP + TC )
• I tempi e l’hit ratio per la cache sono tutti dati dal
problema, l’unico dato mancante è Hp.
TC = 15ns
TP = 40ns
TD = 10ms
H C = 0.95
Calcolatori Elettronici
Memoria Cache - Prof. G.L.Marcialis
35
Calcolatori Elettronici
Memoria Cache - Prof. G.L.Marcialis
36
Soluzione
Esercizio
• Basta calcolare Hp a partire dall’hit rate condizionale,
invertendo la formula:
• Sia data una gerarchia di memoria costituita da memoria
cache, memoria primaria e disco. Durante l’esecuzione di un
processo viene rilevato che, su 1000 parole richieste, 950 sono
state trovate in cache e 30 sono state trovate in memoria
primaria ma non sono state trovate in cache. Istruzioni e dati
del processo erano tutti memorizzati su disco.
H P|C =
H P − HC
1 − HC
H P = H C + (1 − H C )H P|C = 0.95 + (1 − 0.95) ⋅ 0.6 = 0.98
• Infine, possiamo calcolare:
T = H CTC + (H P − H C )(TP + TC ) + (1− H P )(TD + TP + TC ) =
• Sapendo che i tempi di accesso alla cache, alla primaria ed al
disco valgono, rispettivamente,
4 nsec, 40 nsec, 2 msec, si calcoli il tempo medio di accesso
alla gerarchia.
T = 200.017ns
Calcolatori Elettronici
Memoria Cache - Prof. G.L.Marcialis
37
Calcolatori Elettronici
Memoria Cache - Prof. G.L.Marcialis
Soluzione
Soluzione (cont’d)
• Calcolo dei parametri Hc, Hp, Hd:
• Applicando la formula del tempo medio della
gerarchia, si ottiene:
– Nel caso di Hc, dalla definizione si ha subito
Hc = 950/1000 = 0.95, in quanto 950 è il numero di
successi in cache.
– Per quanto riguarda Hp, il problema fornisce soltanto il
numero di successi quando il dato non è presente in
cache, ovvero Hp-Hc=30/1000, da cui
Hp=Hc+30/1000=0.98.
– Per quanto riguarda Hd, sappiamo dal testo che
istruzioni e dati sono tutti memorizzati su disco. Per cui
Hd = 1.
Calcolatori Elettronici
Memoria Cache - Prof. G.L.Marcialis
39
38
T = H C TC + ( H P − H C )(TP + TC ) + (1 − H P )(TD + TP + TC )
• T = 0.95 * 4 + (0.98 – 0.95) * (4 + 40) + (1 – 0.98) *
(4 + 40+ 2 * 106) = 3.8 + 1.32 + 40000,88 =
40006 ns = 40.006 ms.
Calcolatori Elettronici
Memoria Cache - Prof. G.L.Marcialis
40
Esercizio sulla cache (LRU, FIFO)
Soluzione
Si consideri una memoria primaria costituita da 128 parole e
una memoria cache costituita da 16 parole. Il metodo di
indirizzamento della cache sia quello associativo su insiemi a
due vie con blocchi di 4 parole.
Si considerino le seguenti chiamate ad altrettante parole
(indirizzi espressi in decimale):
52, 24, 1, 44, 25, 37, 47, 4, 3, 45, 61.
1. Si indichi il contenuto della cache, ovvero quali byte occupano i
relativi blocchi di cache, dopo l’ultima chiamata, nel caso si
adoperino algoritmi di rimpiazzamento FIFO e LRU.
• <TAG 4 bit><Set Index 1 bit><Offset 2 bit>
• Ricaviamo il set index per ogni chiamata:
B.F.
=
Int(X/4);
S.I. = Mod(BF/2);
•
Calcolatori Elettronici
Memoria Cache - Prof. G.L.Marcialis
41
X
52
24
1
44
25
37
47
4
3
45
61
B.F.
13
6
0
11
6
9
11
1
0
11
15
S.I.
1
0
0
1
0
1
1
1
0
1
1
Calcolatori Elettronici
Memoria Cache - Prof. G.L.Marcialis
Soluzione
Soluzione
• Strategia FIFO
• Strategia FIFO, stato finale della cache
X
52
24
1
44
25
37
47
4
3
45
61
B.F.
13
6
0
11
6
9
11
1
0
11
15
S.I.
1
0
0
1
0
1
1
1
0
1
1
6
6
6
6
6
6
6
6
6
6
0
0
0
0
0
0
0
0
0
13
13
13
9
9
9
9
11
11
11
11
11
11
4
4
4
15
Set
0
Set
1
13
13
Hit
Calcolatori Elettronici
X
X
Memoria Cache - Prof. G.L.Marcialis
Set
0
Set
1
B.F.
Words
6
24, 25, 26, 27
0
0, 1, 2, 3
11
44,45,46,47
15
60,61,62,63
42
• Hit rate = 3/11
X
43
Calcolatori Elettronici
Memoria Cache - Prof. G.L.Marcialis
44
Soluzione
Soluzione
• Strategia LRU
• Strategia LRU, stato finale della cache
X
52
24
1
44
25
37
47
4
3
45
61
B.F.
13
6
0
11
6
9
11
1
0
11
15
S.I.
1
0
0
1
0
1
1
1
0
1
1
6
6
6
6
6
6
6
6
6
6
0
0
0
0
0
0
0
0
0
13
13
13
9
9
4
4
4
15
11
11
11
11
11
11
11
11
X
X
Set
0
Set
1
13
Hit
Calcolatori Elettronici
X
X
Memoria Cache - Prof. G.L.Marcialis
Words
Set
0
6
24, 25, 26, 27
0
0, 1, 2, 3
Set
1
15
60,61,62,63
11
44,45,46,47
• Hit rate = 4/11
45
Calcolatori Elettronici
Esercizio sulla cache (cont’d)
Soluzione
2. Durante il test delle chiamate ad un processo si
sono ottenuti i seguenti valori di performance per
una gerarchia di memorie a tre livelli: Hc = 0.9, Hp =
0.75, Hd = 0.99. Il processo era completamente
memorizzato nel disco. Hc, Hp, Hd sono gli hit ratio
di cache, primaria e disco.
Spiegare, motivando chiaramente la risposta, se i
valori ottenuti sono compatibili con quanto ci si
attende da una gerarchia di memoria.
•
Calcolatori Elettronici
Calcolatori Elettronici
Memoria Cache - Prof. G.L.Marcialis
B.F.
47
Memoria Cache - Prof. G.L.Marcialis
46
Ovviamente no, per 2 motivi:
1. La condizione Hc < Hp < Hd non è rispettata;
2. Hd non è uguale a 1, nonostante il processo sia
interamente memorizzato sul disco!
Memoria Cache - Prof. G.L.Marcialis
48
Esercizio sulla cache (04/07/2006)
•
Soluzione alla domanda 1
E’ data una gerarchia di memorie cache-primaria. La memoria primaria
è di 512 KB mentre la cache è di
64 KB. E’ possibile indirizzare il singolo byte, e la memoria primaria è
suddivisa in blocchi di 32 B.
1. Indicare, sapendo che l’indirizzo della prima parola è pari a 0,
l’indirizzo della prima e dell’ultima parola del blocco di memoria
primaria con block frame pari a 16.
2. Indicare, specificando l’ampiezza e la funzione dei diversi campi, come
vengono interpretati gli indirizzi di memoria primaria secondo il metodo
di indirizzamento diretto, associativo e set-associativo a otto vie.
Calcolatori Elettronici
Memoria Cache - Prof. G.L.Marcialis
49
• Utilizziamo le formule:
Word (0) = N ⋅ D
Word ( D − 1) = N ⋅ D + D − 1
– N corrisponde al Block Frame;
– D è il numero di parole/blocco.
• Indirizzo
della
prima
parola
del
Block Frame * D = 16 * 32 = 512.
• Indirizzo
dell’ultima
parola
del
Indirizzo della prima parola del blocco + D
= 512 + 32 – 1 = 543.
Calcolatori Elettronici
Soluzione alla domanda 2
• Memoria primaria da 512 KB, indirizzabile al singolo
byte
• Metodo diretto
210 =
blocco:
– 1 =
Memoria Cache - Prof. G.L.Marcialis
Soluzione alla domanda 2
29 x
blocco:
50
– Il cache index identifica i blocchi in cache.
– Dato che sono presenti 2048 = 211 blocchi in cache, sono
richiesti 11 bit di indirizzamento.
– <TAG 3 bit><Cache Index 11 bit><Offset 5 bit>
219
– 512 K =
– Sono necessari 19 bit per l’indirizzamento in primaria
• Blocchi di 32 B, indirizzabili al singolo byte
• Metodo completamente associativo
– 32 = 25 implica che sono necessari 5 bit di offset
– TAG = Block Frame
(non esiste il set index, dato che si ha solo 1 insieme).
– <TAG 14 bit><Offset 5 bit>
• <Block Frame 14 bit><Offset 5 bit>
• Quanti blocchi ci sono in cache?
– Cache da 64 KB; 32 B/blocco.
– Quindi: 64 KB / ( 32 B/blocco ) = 2K blocchi =
2048 blocchi.
Calcolatori Elettronici
Memoria Cache - Prof. G.L.Marcialis
51
Calcolatori Elettronici
Memoria Cache - Prof. G.L.Marcialis
52
Soluzione alla domanda 2
Esercizio sulla cache (cont’d)
• Metodo set-associativo, insiemi a 8 vie
3. Ipotizzando la cache piena, indicare in quale linea di cache
viene allocato il blocco indicato nel punto 1
(Block Frame=16) con i metodi di indirizzamento esaminati nel
punto 2. Si indichi e descriva, dove necessario, almeno un
algoritmo di rimpiazzamento.
– E’ necessario capire quanti insiemi sono presenti in cache.
Dato che i blocchi in cache sono 2048, avremo 2048 blocchi
/ (8 blocchi/insieme) = 28 insiemi
– Il set index dovrà indirizzare 28 insiemi, quindi saranno
necessari 8 bit.
– <TAG 6 bit><Set Index 8 bit><Offset 5 bit>
Calcolatori Elettronici
Memoria Cache - Prof. G.L.Marcialis
53
Calcolatori Elettronici
Memoria Cache - Prof. G.L.Marcialis
Soluzione alla domanda 3
Memoria a disco
• Metodo
diretto:
C.I.=mod(16/211)=16.
Quindi il blocco 16 di primaria viene allocato, sostituendo il
blocco precedente, se con TAG diverso, nella linea 16 di cache.
• Metodo associativo: a meno che in una delle linee della cache
non sia presente un blocco con medesimo TAG, il blocco dovrà
essere allocato rimpiazzando un blocco di cache. Usando
l’algoritmo di rimpiazzamento FIFO, il blocco da rimpiazzare è
quello che era stato allocato per primo in cache.
• Metodo set-associativo (insiemi a 8 vie): S.I.=mod(16/28)=16.
16 corrisponde all’indirizzo dell’insieme. Il blocco 16 sostituirà, a
meno di hit, uno degli otto blocchi allocati nell’insieme 16,
secondo la strategia di rimpiazzamento utilizzata.
• Parametri:
Calcolatori Elettronici
Calcolatori Elettronici
Memoria Cache - Prof. G.L.Marcialis
55
54
– Tempo di latenza
– T. di posizionamento
– T. di lettura
Memoria Cache - Prof. G.L.Marcialis
56
Esercizio (17/02/2002)
•
•
Soluzione alla domanda 1
Sia dato un disco rigido con le seguenti caratteristiche: velocità: 7200
giri/min, 200 settori per traccia, capacità di un settore 8 KB, tempo per
lo spostamento della testina fra due tracce consecutive: 1ms.
Calcolare il tempo di trasferimento di un blocco di 128 KB nei seguenti
casi:
1. il blocco è stato registrato su settori contigui sulla stessa traccia e la testina
si trova posizionata sul primo settore del blocco;
2. i settori del blocco in questione siano registrati su tracce diverse la cui
distanza media è pari a 12 tracce e la testina si trovi posizionata all'inizio
del primo settore del blocco.
Calcolatori Elettronici
Memoria Cache - Prof. G.L.Marcialis
57
•
•
•
•
TROT = 60 / 7200 = 0.0083 secondi
Il tempo di lettura di un settore lo si ricava dividendo il tempo di
rotazione per il numero di settori per traccia (200).
Tlett = TROT / 200 = 41.67 µs.
Se il blocco si trova registrato di seguito su una stessa traccia e la
testina si trova già posizionata sul primo settore del blocco, il tempo di
lettura totale è uguale a 16 volte il tempo di trasferimento di un settore
(visto che i dati sono registrati su 128KB/(8KB/settore) = 16 settori).
Tempo
per
la
lettura
di
un
blocco
di
128
KB
= 16 * 41.67 µs = 666.72 µs = 0.666 ms.
Calcolatori Elettronici
Memoria Cache - Prof. G.L.Marcialis
58
Soluzione alla domanda 2
Esercizio (19/04/2007)
• In questo caso bisogna considerare:
• Un disco presenta le seguenti caratteristiche: 7200
giri/min, 100 settori per traccia, tempo di
spostamento da una traccia a quelle adiacenti 1 ms,
101 tracce per superficie, 32 B per settore.
• Calcolare il tempo medio di lettura di un blocco di 1
KB da disco, nell’ipotesi che il primo settore utile si
trovi nella prima traccia, che la testina si trovi
nell’ultima traccia all’istante iniziale, e che i settori
del blocco siano situati, a due a due, in tracce diverse
distanti mediamente 4 tracce.
– Il tempo di posizionamento (pari a 12 ms);
– Il tempo di latenza (pari a TROT/ 2 ms = 4.17 ms).
• Tpos e Tlat sono necessari per calcolare il tempo di lettura dei
blocchi successivi al primo (in tutto 15 blocchi).
• T= Tlett + 15*(Tlett+Tpos+Tlat) = 243.216 ms
Calcolatori Elettronici
Memoria Cache - Prof. G.L.Marcialis
59
Calcolatori Elettronici
Memoria Cache - Prof. G.L.Marcialis
60
Soluzione
Soluzione
• Parametri:
• Settori non contigui
–
–
–
–
–
TROT = 60 / 7200 = 0.0083 secondi
TLAT = TROT / 2 = 0.00415 secondi
Tlett = TROT / 100 = 0.0833 ms (per 1 settore)
Tsp = 1ms
Tpos = 4*Tsp= 4 ms.
– In questo caso occorre considerare che per leggere i primi 2
settori (residenti sulla prima traccia) la testina dovrà
attraversare 100 tracce. Visto che i settori restanti sono a
due a due sulla stessa traccia, occorrerà inoltre dimezzare il
tempo di posizionamento medio.
• Tempo di lettura del blocco da 1KB:
• Numero di settori richiesti per il blocco da 1 KB:
1024B/(32B/settore) = 32 settori.
Calcolatori Elettronici
Memoria Cache - Prof. G.L.Marcialis
– T = 100 * Tsp + 2*Tlett + 2*TLAT +
30 * (TLAT + Tpos/2 + Tlett) =
= 100*1 + 2*0.083 + 2*4.15+30*(4.15+2+0.083) =
= 295.46 ms
61
Calcolatori Elettronici
Memoria Cache - Prof. G.L.Marcialis
62
Soluzione
Esercizio (12/07/2002)
• Settori contigui
• Tempo di lettura del blocco da 1KB:
• Si consideri un disco rigido con le seguenti
caratteristiche:
– velocità di rotazione = 5400 giri/min;
– tempo medio di posizionamento = 5 ms;
– 34 settori per traccia di 512 byte ciascuno.
– T = 100 * Tsp + 2*Tlett + TLAT +
30 * (TLAT/2 + Tpos/2 + Tlett) =
= 100*1 + 2*0.083 + 4.15+30*(4.15/2+2+0.083) =
= 229.06 ms
• Calcolare il tempo medio di trasferimento di un file da
8 KB considerando:
– il caso migliore;
– il caso medio.
Calcolatori Elettronici
Memoria Cache - Prof. G.L.Marcialis
63
Calcolatori Elettronici
Memoria Cache - Prof. G.L.Marcialis
64
Soluzione
Soluzione
• Trot = 60/5400 sec = 11.11 ms
• Tlat = Trot/2 = 5.555 ms
• Tlett = Trot /34 = 0.327 ms (tempo di lettura di un
settore)
• Tpos = 5 msec.
• Numero
di
settori
richiesti
dal
file
N = 8 KB / (512B/settore) = 16 settori.
•
Calcolatori Elettronici
Calcolatori Elettronici
Memoria Cache - Prof. G.L.Marcialis
65
Codice di Hamming
Caso migliore: il file è posizionato su settori consecutivi della stessa
traccia e la testina è posizionata all’inizio del primo settore. Dato che il
file può essere memorizzato in una sola traccia:
– T = N * Tlett = 5.232 msec.
•
Caso medio: il file è posizionato su settori collocati in tracce diverse e
la testina si trova in un punto qualsiasi del disco.
– T = N * (Tlat + Tpos + Tlett) = 16 * 10.882 = 174.112 msec
Memoria Cache - Prof. G.L.Marcialis
66
Codice di Hamming
• Relazione tra i bit di controllo (K) e di informazione
(N):
Posizione (n)
1
2
3
4
5
6
7
8
9
10
11
12
Bit
c0
c1
b0
c2
b1
b2
b3
c3
b4
b5
b6
b7
2 ≥ N + K +1
K
n = ∑ Ci 2 i
N.B.: N+K corrisponde alla lunghezza della stringa codificata
•
Capire quali bit controllano il bit in posizione n:
n = ∑ Ci 2
i
i
i
Posizione (n)
1
2
3
4
5
6
7
8
9
10
11
12
Bit
c0
c1
b0
c2
b1
b2
b3
c3
b4
b5
b6
b7
Calcolatori Elettronici
Memoria Cache - Prof. G.L.Marcialis
67
c0 = b0 ⊕ b1 ⊕ b3 ⊕ b4 ⊕ b6
c1 = b0 ⊕ b2 ⊕ b3 ⊕ b5 ⊕ b6
c2 = b1 ⊕ b2 ⊕ b3 ⊕ b7
c3 = b4 ⊕ b5 ⊕ b6 ⊕ b7
Es. b2
n=6=21+22
Quindi b2 è controllato da c1 e c2
Calcolatori Elettronici
Memoria Cache - Prof. G.L.Marcialis
68
Esercizio (11/04/2006)
Soluzione
I trasferimenti di parole a/dalla memoria di un calcolatore sono
codificati utilizzando il codice di Hamming.
Si consideri la stringa di 12 bit 001001101110 (il bit meno significativo
è a sinistra), risultata della codifica di una parola di N bit secondo il
codice di Hamming.
1. Calcolare N, supponendo di aver fatto uso del numero minimo di bit di
controllo necessario per una stringa di 12 bit;
2. Scrivere la parola di N bit a partire dalla stringa data;
3. Indicare eventuali errori nella stringa codificata, specificando quale dei
bit è stato alterato.
1.
•
Deve essere rispettata la condizione:
2K ≥ N + K + 1
–
2.
dove K è il numero di bit di controllo inseriti.
Essendo N + K = 12, il numero minimo di bit di controllo (K) richiesto è 4.
Da cui N = 8.
La sequenza in ingresso presenta la seguente struttura:
c0
c1
b0
c2
b1
b2
b3
c3
b4
b5
b6
b7
0
0
1
0
0
1
1
0
1
1
1
0
Quindi la parola di N bit risulta 10111110
Calcolatori Elettronici
Memoria Cache - Prof. G.L.Marcialis
69
Calcolatori Elettronici
Memoria Cache - Prof. G.L.Marcialis
Soluzione
Soluzione (cont’d)
3. Per verificare la presenza di un errore, dobbiamo
ricalcolare il vettore di controllo a partire dalla
sequenza ricevuta. Si ha:
• Il passo successivo è calcolare il vettore di errore dato dalla
differenza dei vettori di controllo c e c’:
e0 = c0 ⊕ c’0 = 0
e1 = c1 ⊕ c’1 = 1
e2 = c2 ⊕ c’2 = 0
e3 = c3 ⊕ c’3 = 1
c’0 = b0 ⊕ b1 ⊕ b3 ⊕ b4 ⊕ b6 = 0
c’1 = b0 ⊕ b2 ⊕ b3 ⊕ b5 ⊕ b6 = 1
c’2 = b1 ⊕ b2 ⊕ b3 ⊕ b7 = 0
c’3 = b4 ⊕ b5 ⊕ b6 ⊕ b7 = 1
Calcolatori Elettronici
Memoria Cache - Prof. G.L.Marcialis
70
71
Calcolatori Elettronici
Memoria Cache - Prof. G.L.Marcialis
72
Soluzione
Esercizio (11/01/2008)
• Poiché il vettore risultante 1010 (e3e2e1e0) non è
nullo, vi è un errore nella stringa di 12 bit data e
precisamente nella posizione indicata dal vettore di
errore tradotto in notazione decimale. Il bit sbagliato
è quindi il decimo (b5), e la parola corretta è
10111010.
•
1
2
3
4
5
6
7
8
9
10
11
12
c0
c1
b0
c2
b1
b2
b3
c3
b4
b5
b6
b7
0
0
1
0
0
1
1
0
1
1
1
0
Calcolatori Elettronici
Memoria Cache - Prof. G.L.Marcialis
I trasferimenti di parole a/dalla memoria di un
calcolatore sono codificati utilizzando il codice di
Hamming. Si consideri la parola di 7 bit 0110101 (il
bit meno significativo è a sinistra).
1. Calcolare il minimo numero di bit di controllo
necessari per la codifica della parola;
2. codificare la parola data;
3. imporre un errore nel quinto bit della parola
inizialmente data. Spiegare come l’errore viene
rivelato e corretto per mezzo della codifica di
Hamming.
73
Calcolatori Elettronici
Soluzione
Soluzione
1. Deve essere rispettata la condizione:
2.
2K ≥ N + K + 1
–
dove K è il numero di bit di controllo.
Essendo N = 7, il numero minimo di bit di controllo richiesto è K =
4.
Memoria Cache - Prof. G.L.Marcialis
74
Codificare 0110101
1
2
3
4
5
6
7
8
9
10
11
c0
c1
b0
c2
b1
b2
b3
c3
b4
b5
b6
1
0
0
0
1
1
0
0
1
0
1
c 0 = b0 ⊕ b1 ⊕ b3 ⊕ b4 ⊕ b6 = 1
c 1 = b0 ⊕ b2 ⊕ b3 ⊕ b5 ⊕ b6 = 0
c 2 = b1 ⊕ b2 ⊕ b3 = 0
c 3 = b4 ⊕ b5 ⊕ b6 = 0
La parola codificata è 10001100101
Calcolatori Elettronici
Memoria Cache - Prof. G.L.Marcialis
75
Calcolatori Elettronici
Memoria Cache - Prof. G.L.Marcialis
76
Soluzione
Soluzione
3. Nell’ipotesi di un errore sul quinto bit (b4) della stringa iniziale,
la
stringa
ricevuta
risulta:
10001100001.
Per rivelare questo errore, bisogna ricalcolare i bit di controllo:
•
c’0 = b0 ⊕ b1 ⊕ b3 ⊕ b4 ⊕ b6 = 0 ⊕ 1 ⊕ 0 ⊕ 0 ⊕ 1 = 0
c’1 = b0 ⊕ b2 ⊕ b3 ⊕ b5 ⊕ b6 = 0 ⊕ 1 ⊕ 0 ⊕ 0 ⊕ 1 = 0
c’2 = b1 ⊕ b2 ⊕ b3 = 1 ⊕ 1 ⊕ 0 = 0
c’3 = b4 ⊕ b5 ⊕ b6 = 0 ⊕ 0 ⊕ 1 = 1
Calcolatori Elettronici
Memoria Cache - Prof. G.L.Marcialis
Esercizio (12/07/2007)
•
2.
3.
Poiché il vettore risultante 1001 non è nullo, vi è un errore nella stringa
di 11 bit e precisamente nella posizione indicata dal vettore di errore
tradotto in notazione decimale (posizione 9). Il bit sbagliato nella stringa
codificata è quindi b4, che può essere dunque corretto.
Calcolatori Elettronici
Memoria Cache - Prof. G.L.Marcialis
78
Soluzione
Le parole trasferite a/dalla memoria di un calcolatore sono codificate
utilizzando il codice di Hamming. Si consideri la stringa di 13 bit
1010011011101 (il bit meno significativo è a sinistra), risultato della
codifica di una parola di N bit secondo il codice di Hamming.
1.
e0 = c0 ⊕ c’0 = 1 ⊕ 0 = 1
e1 = c1 ⊕ c’1 = 0 ⊕ 0 = 0
e2 = c2 ⊕ c’2 = 0 ⊕ 0 = 0
e3 = c3 ⊕ c’3 = 0 ⊕ 1 = 1
•
77
Il passo successivo è calcolare il vettore di errore dato dalla differenza
dei vettori di controllo c e c’:
1.
Deve essere rispettata la condizione:
2K ≥ N + K + 1
–
Calcolare N, supponendo di aver fatto uso del numero minimo di bit di
controllo necessari.
Scrivere la parola di N bit a partire dalla stringa data.
Indicare eventuali errori nella stringa codificata, specificando quale dei bit è
stato alterato.
2.
dove K è il numero di bit di controllo inseriti.
Essendo N + K = 13, il numero minimo di bit di controllo (K) richiesto è 4.
Da cui N = 9.
La sequenza in ingresso presenta la seguente struttura:
c0
c1
b0
c2
b1
b2
b3
c3
b4
b5
b6
b7
b8
1
0
1
0
0
1
1
0
1
1
1
0
1
Quindi la parola di N bit risulta 101111101
Calcolatori Elettronici
Memoria Cache - Prof. G.L.Marcialis
79
Calcolatori Elettronici
Memoria Cache - Prof. G.L.Marcialis
80
Soluzione
Soluzione (cont’d)
3. Per verificare la presenza di un errore, dobbiamo
ricalcolare il vettore di controllo a partire dalla
sequenza ricevuta. Si ha:
• Il passo successivo è calcolare il vettore di errore dato dalla
differenza dei vettori di controllo c e c’:
e0 = c0 ⊕ c’0 = 1 ⊕ 1 = 0
e1 = c1 ⊕ c’1 = 0 ⊕ 1 = 1
e2 = c2 ⊕ c’2 = 0 ⊕ 1 = 1
e3 = c3 ⊕ c’3 = 0 ⊕ 0 = 0
c’0 = b0 ⊕ b1 ⊕ b3 ⊕ b4 ⊕ b6 ⊕ b8 = 1
c’1 = b0 ⊕ b2 ⊕ b3 ⊕ b5 ⊕ b6 = 1
c’2 = b1 ⊕ b2 ⊕ b3 ⊕ b7 ⊕ b8 = 1
c’3 = b4 ⊕ b5 ⊕ b6 ⊕ b7 ⊕ b8 = 0
N.B.: b8 si trova in posizione n = 13 = 1+4+8,
quindi è controllato da c0 , c2 , c3 .
Calcolatori Elettronici
Memoria Cache - Prof. G.L.Marcialis
81
Soluzione
Calcolatori Elettronici
82
Domande?
• Poiché il vettore risultante 0110 (e3e2e1e0) non è
nullo, vi è un errore nella stringa di 13 bit data e
precisamente nella posizione indicata dal vettore di
errore tradotto in notazione decimale. Il bit sbagliato
è quindi il sesto (b2), e la parola corretta è
100111101.
1
2
3
4
5
6
7
8
9
10
11
12
13
c0
c1
b0
c2
b1
b2
b3
c3
b4
b5
b6
b7
b8
0
0
1
0
0
1
1
0
1
1
1
0
1
Calcolatori Elettronici
Memoria Cache - Prof. G.L.Marcialis
Memoria Cache - Prof. G.L.Marcialis
?
83
Calcolatori Elettronici
Memoria Cache - Prof. G.L.Marcialis
84