Sei sulla pagina 1di 85

Esercitazione di Calcolatori Elettronici

Ing. Battista Biggio

Corso di Laurea in Ingegneria Elettronica

Esercitazione 2 (Capitolo 3)
Memoria Cache
Memoria Disco
Codice di Hamming
Sommario
• Memoria cache
– Indirizzamento della memoria cache
– Allocazione di blocchi e insiemi
• Metodo diretto
• Metodo associativo su insiemi
• Metodo completamente associativo
– Calcolo dell’hit rate di cache
• 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 Memoria Cache - Ing. Battista Biggio 2


Indirizzamento della memoria cache

m bit n bit

Block frame Offset

Bit di indirizzamento della primaria

• Il Block Frame, costituito dagli m bit più significativi


dell’indirizzo, individua la posizione, ovvero l’indirizzo,
del blocco nella memoria primaria.

• L’ Offset è costituito dagli n bit meno significativi


dell’indirizzo. Tale gruppo individua la posizione della
parola all’interno di un dato blocco.

Calcolatori Elettronici Memoria Cache - Ing. Battista Biggio 3


Indirizzamento della memoria cache

m bit n bit

Block frame Offset

Shift di n bit

• 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.

Calcolatori Elettronici Memoria Cache - Ing. Battista Biggio 4


Indirizzamento della memoria cache

t bit r bit

TAG Cache index

BLOCK FRAME

• 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 - Ing. Battista Biggio 5


Indirizzamento della memoria cache

t bit r bit

TAG Cache index

Shift di r bit

• 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.

Calcolatori Elettronici Memoria Cache - Ing. Battista Biggio 6


Ricapitolando
! Address $
BlockFrame = Int #
" 2 n &%
! Address $
Offset = Mod #
" 2 n &%
! BlockFrame $
CacheIndex = Mod # &%
" 2r
! BlockFrame $
TAG = Int # &%
" 2r
Calcolatori Elettronici Memoria Cache - Ing. Battista Biggio 7
Struttura della memoria
• Si assuma che:
Mem. Primaria
– la memoria primaria contenga 8
0
blocchi;
1
– la cache contenga 4 blocchi;
2
– ogni blocco contenga 16 parole, per
3
un totale di 128 parole in memoria
primaria, 64 in memoria cache. 4
5
6
Mem. Cache 7
0
1 Blocchi
2
3

Calcolatori Elettronici Memoria Cache - Ing. Battista Biggio 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 Mem. Cache
indizzo primaria pari a 10310=(1100111)2.
0
– Il sistema va prima a cercare la parola
nella cache. 1
2
– E’ necessario l’indirizzo del blocco di
memoria primaria, dato da: Block Frame 3
= 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.
Ma quel blocco è vuoto.

Calcolatori Elettronici Memoria Cache - Ing. Battista Biggio 9


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. Primaria
0
1 Mem. Cache
2 0
3 1
4 2
5 3
6
7
Calcolatori Elettronici Memoria Cache - Ing. Battista Biggio 10
Indirizzamento diretto:
un incoveniente…
• 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.

• 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 - Ing. Battista Biggio 11


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>

Mem. Primaria
0 Mem. Cache
1
2 Insieme 0
3
4
5 Insieme 1
6
7

Calcolatori Elettronici Memoria Cache - Ing. Battista Biggio 12


Indirizzamento associativo su insiemi
• La cache è vuota.
Supponiamo che la memoria
Mem. Primaria
richieda l’accesso alla parola
di indizzo primaria pari a 0
103. 1
2
3
• Il sistema va prima a cercare 4
la parola nella cache. E’ 5
necessario l’indirizzo del 6
blocco di memoria primaria, 7
dato da: Int(103/16) = 6.

Calcolatori Elettronici Memoria Cache - Ing. Battista Biggio 13


Indirizzamento associativo su insiemi
• Il passo successivo è individuare l’insieme della cache
dove cercare il blocco, con l’operazione: Mod(6/2) = 0

• Attraverso il TAG il sistema


scansiona i due blocchi di cache Mem. Cache
dell’insieme 0 per verificare la
presenza del blocco di primaria Insieme 0
cercato.
• L’insieme è però vuoto. Si
rende necessario il Insieme 1
trasferimento del blocco 6 di
primaria in uno dei due blocchi
di cache liberi.

Calcolatori Elettronici Memoria Cache - Ing. Battista Biggio 14


Indirizzamento associativo su insiemi
• Il blocco 6 di primaria viene così
allocato nel primo blocco disponibile (6)
dell’insieme 0 di cache. La situazione blocco libero
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 (6)
• Poiché c’è ancora un blocco libero in (2)
quell’insieme, non è necessaria alcuna
sostituzione: il blocco 2 di primaria
verrà allocato nel blocco libero.

Calcolatori Elettronici Memoria Cache - Ing. Battista Biggio 15


Da ricordare
• Per sapere l’indirizzo della prima e dell’ultima
parola del blocco N di primaria, essendo D la
dimensione del blocco:
Word (0) = N " D
Word ( D ! 1) = N " D + D ! 1
• N si ottiene dalla formula:

& Word ( x) #
N = Int $ !
% D "
Calcolatori Elettronici Memoria Cache - Ing. Battista Biggio 16
Esercizio (27/10/2000)
• 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.

Calcolatori Elettronici Memoria Cache - Ing. Battista Biggio 17


Esercizio (cont’d)
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.

Calcolatori Elettronici Memoria Cache - Ing. Battista Biggio 18


Soluzione
• Metodo diretto:
– <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.

Calcolatori Elettronici Memoria Cache - Ing. Battista Biggio 19


Soluzione (cont’d)

• 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 - Ing. Battista Biggio 20


Esercizio (23/09/1999)
• 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:
– con il metodo diretto;
– con il metodo associativo su insiemi, con insiemi di 4
blocchi.

Calcolatori Elettronici Memoria Cache - Ing. Battista Biggio 21


Soluzione
• 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>

Calcolatori Elettronici Memoria Cache - Ing. Battista Biggio 22


Esercizio (5/11/1998)
• 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?

Calcolatori Elettronici Memoria Cache - Ing. Battista Biggio 23


Soluzione
1. <TAG 10 bit> <Cache Index 4 bit> <Offset 2 bit>
2.
CC84 ==> CC 10|00 01|00 ==> insieme 1, tag CC(10)2, byte 00
A017 ==> A0 00|01 01|11 ==> insieme 5, tag A0(00)2, byte 11
FF1A ==> FF 00|01 10|10 ==> insieme 6, tag FF(00)2, byte 10
012B ==> 01 00|10 10|11 ==> insieme 10, tag 01(00)2, byte 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 - Ing. Battista Biggio 24


Esercizio (29/01/2004)
• 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.
Calcolatori Elettronici Memoria Cache - Ing. Battista Biggio 25
Esercizio (cont’d)
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 Memoria Cache - Ing. Battista Biggio 26


Soluzione
1. Spiegare, precisando il significato e la funzione dei
diversi campi, come vengono interpretati gli indirizzi
logici per recuperare l’informazione contenuta nella
cache.

• 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 - Ing. Battista Biggio 27


Soluzione (cont’d)
2. Indicare in quali blocchi di primaria si trovano i seguenti
byte (indirizzi in esadecimale):
111B, C334, D01D, AAAA.

111B  0001 0001 | 0001 1 | 011  Block frame ( 547)10  Cache index 3
C334  1100 0011 | 0011 0 | 100  Block frame (6246)10  Cache index 6
D01D  1101 0000 | 0001 1 | 101  Block frame (6659)10  Cache index 3
AAAA  1010 1010 | 1010 1 | 010  Block frame (5461)10  Cache index 21

3. Se tali parole venissero richieste sequenzialmente, quanti


sarebbero gli hit di cache (ipotizzando la cache
inizialmente vuota)?

Calcolatori Elettronici Memoria Cache - Ing. Battista Biggio 28


Soluzione (cont’d)
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 (offset 000), 1A19 (offset 001),
1A1B (offset 011), 1A1C (offset 100),
1A1D (offset 101), 1A1E (offset 110),
1A1F (offset 111).

Calcolatori Elettronici Memoria Cache - Ing. Battista Biggio 29


Gerarchia di memoria
• Tempo medio di accesso:
T = H C TC + (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
Parole nel Disco (Nd) come probabilità.

Parole in Primaria (Np) Hc = Nc/Nd


Prob. che una parola sia in cache
Parole in Cache (Nc) Hp = Np/Nd
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 - Ing. Battista Biggio 30
Esercizio
• Calcolare il tempo medio di accesso alla
gerarchia di memoria, sapendo che
– 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

T = TC + (1 ! H C )TP + (1 ! H P )TD = 0.2ms

Calcolatori Elettronici Memoria Cache - Ing. Battista Biggio 31


Hit ratio condizionale
• Probabilità che una parola si trovi al livello
i-esimo nella gerarchia, dato che non la si è
trovata al livello (i-1)-esimo (superiore), e.g.:
– Probabilità che una parola si trovi in primaria dato che
non la si è trovata in cache
H p|c
• Si puo’ anche calcolare la probabilità che una
parola non si trovi in primaria dato che non si la
si è trovata in cache, etc.
H p|c = 1 ! H p|c
Calcolatori Elettronici Memoria Cache - Ing. Battista Biggio 32
Hit ratio condizionale
Diagramma di Venn
• Qual è la relazione tra gli hit ratio condizionali
e gli hit ratio?

Hc: Prob. che una parola sia


in cache
Hp: Prob. che una parola sia
Cache Primaria Disco in primaria
Hd=1: Prob. che una parola
sia nel disco

0 < Hc < Hp < Hd = 1


Calcolatori Elettronici Memoria Cache - Ing. Battista Biggio 33
Hit ratio condizionale
• La probabilità che una parola si trovi in
memoria primaria dato che non è in cache si
calcola come rapporto tra la probabilità
(congiunta) che una parola sia in memoria
primaria e non in cache, diviso la probabilità
che la parola non sia in cache.

P( p ! c ) = Hp " Hc P( p ! c ) Hp " Hc
H p|c = =
P(c ) = 1 " Hc P(c ) 1 " Hc

Calcolatori Elettronici Memoria Cache - Ing. Battista Biggio 34


Hit ratio condizionale
• Analogamente, calcoliamo:

P( p ! c ) 1 " Hp
H p|c = =
P(c ) 1 " Hc

• Un’ulteriore verifica:

Hp ! Hc 1 ! Hp
H p|c = 1 ! H p|c = 1! =
1 ! Hc 1 ! Hc

Calcolatori Elettronici Memoria Cache - Ing. Battista Biggio 35


Esercizio (18/02/2004)
• Un calcolatore ha un sistema di memoria virtuale a tre
livelli, costituita da: cache, memoria primaria e disco.
– 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).
• Calcolare il tempo medio di accesso al sistema di
memoria.

Calcolatori Elettronici Memoria Cache - Ing. Battista Biggio 36


Soluzione
• Dobbiamo calcolare:

T = H C TC + (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 - Ing. Battista Biggio 37
Soluzione
• Basta calcolare Hp a partire dall’hit rate
condizionale, invertendo la formula:
H P ! HC
H P|C =
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 C TC + (H P ! H C )(TP + TC ) + (1 ! H P )(TD + TP + TC ) =
T = 200.017ns

Calcolatori Elettronici Memoria Cache - Ing. Battista Biggio 38


Esercizio
• 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 quando non sono state trovate in
cache. Istruzioni e dati del processo erano tutti
memorizzati su disco.

• 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.

Calcolatori Elettronici Memoria Cache - Ing. Battista Biggio 39


Soluzione
• Calcolo dei parametri Hc, Hp, Hd:
– 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 - Ing. Battista Biggio 40


Soluzione (cont’d)
• Applicando la formula del tempo medio della
gerarchia, si ottiene:
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 - Ing. Battista Biggio 41


Esercizio sulla cache (LRU, FIFO)
• 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.

Calcolatori Elettronici Memoria Cache - Ing. Battista Biggio 42


Soluzione
• <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);

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 - Ing. Battista Biggio 43


Soluzione
• Strategia FIFO
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
Set 6 -
0 0 -
Set 13 9 11
1 11 - 4 15
Hit X X X

Calcolatori Elettronici Memoria Cache - Ing. Battista Biggio 44


Soluzione
• Strategia FIFO, stato finale della cache

B.F. Words
Set 6 24, 25, 26, 27
0 0 0, 1, 2, 3
Set 11 44,45,46,47
1 15 60,61,62,63

• Hit rate = 3/11

Calcolatori Elettronici Memoria Cache - Ing. Battista Biggio 45


Soluzione
• Strategia LRU
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
Set 6 6
0 0 0
Set 13 9 4 15
1 11 11 11
Hit X X X X

Calcolatori Elettronici Memoria Cache - Ing. Battista Biggio 46


Soluzione
• Strategia LRU, stato finale della cache

B.F. Words
Set 6 24, 25, 26, 27
0 0 0, 1, 2, 3
Set 15 60,61,62,63
1 11 44,45,46,47

• Hit rate = 4/11

Calcolatori Elettronici Memoria Cache - Ing. Battista Biggio 47


Esercizio sulla cache (cont’d)
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 Memoria Cache - Ing. Battista Biggio 48


Soluzione
• 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!

Calcolatori Elettronici Memoria Cache - Ing. Battista Biggio 49


Esercizio sulla cache (04/07/2006)
• 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 - Ing. Battista Biggio 50


Soluzione alla domanda 1
• 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 blocco:


Block Frame * D = 16 * 32 = 512.
• Indirizzo dell’ultima parola del blocco:
Indirizzo della prima parola del blocco + D – 1 =
= 512 + 32 – 1 = 543.

Calcolatori Elettronici Memoria Cache - Ing. Battista Biggio 51


Soluzione alla domanda 2
• Memoria primaria da 512 KB, indirizzabile al
singolo byte
– 512 K = 29 x 210 = 219
– Sono necessari 19 bit per l’indirizzamento in primaria
• Blocchi di 32 B, indirizzabili al singolo byte
– 32 = 25 implica che sono necessari 5 bit di offset
• <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 - Ing. Battista Biggio 52


Soluzione alla domanda 2
• Metodo diretto
– 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>
• Metodo completamente associativo
– TAG = Block Frame
(non esiste il set index, dato che si ha solo 1 insieme).
– <TAG 14 bit><Offset 5 bit>

Calcolatori Elettronici Memoria Cache - Ing. Battista Biggio 53


Soluzione alla domanda 2
• Metodo set-associativo, insiemi a 8 vie
– 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 - Ing. Battista Biggio 54


Esercizio sulla cache (cont’d)
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.

Calcolatori Elettronici Memoria Cache - Ing. Battista Biggio 55


Soluzione alla domanda 3
• 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.

Calcolatori Elettronici Memoria Cache - Ing. Battista Biggio 56


Memoria a disco
• Parametri:
– Tempo di latenza
– T. di posizionamento
– T. di lettura

Calcolatori Elettronici Memoria Cache - Ing. Battista Biggio 57


Esercizio (17/02/2002)
• 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 - Ing. Battista Biggio 58


Soluzione alla domanda 1
• 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 - Ing. Battista Biggio 59


Soluzione alla domanda 2
• In questo caso bisogna considerare:
– 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 - Ing. Battista Biggio 60


Esercizio (19/04/2007)
• 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.

Calcolatori Elettronici Memoria Cache - Ing. Battista Biggio 61


Soluzione
• Parametri:
– 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.
• Numero di settori richiesti per il blocco da 1 KB:
1024B/(32B/settore) = 32 settori.

Calcolatori Elettronici Memoria Cache - Ing. Battista Biggio 62


Soluzione
• Settori non contigui
– 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:
– 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

Calcolatori Elettronici Memoria Cache - Ing. Battista Biggio 63


Soluzione
• Settori contigui
• Tempo di lettura del blocco da 1KB:
– 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

Calcolatori Elettronici Memoria Cache - Ing. Battista Biggio 64


Esercizio (12/07/2002)
• 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.
• Calcolare il tempo medio di trasferimento di un
file da 8 KB considerando:
– il caso migliore;
– il caso medio.

Calcolatori Elettronici Memoria Cache - Ing. Battista Biggio 65


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 Memoria Cache - Ing. Battista Biggio 66


Soluzione
• 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

Calcolatori Elettronici Memoria Cache - Ing. Battista Biggio 67


Codice di Hamming
• Relazione tra i bit di controllo (K) e di
informazione (N):
2 ! N + K +1
K

N.B.: N+K corrisponde alla lunghezza della stringa codificata


• Capire quali bit controllano il bit in posizione n:

n = ! Ci 2 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 - Ing. Battista Biggio 68


Codice di Hamming
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

n = ! Ci 2 i
c0 = b0 ⊕ b1 ⊕ b3 ⊕ b4 ⊕ b6
i c1 = b0 ⊕ b2 ⊕ b3 ⊕ b5 ⊕ b6
c2 = b1 ⊕ b2 ⊕ b3 ⊕ b7
Es. b2 c3 = b4 ⊕ b5 ⊕ b6 ⊕ b7
n=6=21+22
Quindi b2 è controllato da c1 e c2
Calcolatori Elettronici Memoria Cache - Ing. Battista Biggio 69
Esercizio (11/04/2006)
• 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.

Calcolatori Elettronici Memoria Cache - Ing. Battista Biggio 70


Soluzione
1. Deve essere rispettata la condizione:

2 ! N + K +1
K
– 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.

2. 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 - Ing. Battista Biggio 71


Soluzione
3. Per verificare la presenza di un errore,
dobbiamo ricalcolare il vettore di controllo a
partire dalla sequenza ricevuta. Si ha:

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 - Ing. Battista Biggio 72


Soluzione (cont’d)
• 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

Calcolatori Elettronici Memoria Cache - Ing. Battista Biggio 73


Soluzione
• 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 - Ing. Battista Biggio 74


Esercizio (11/01/2008)
• 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.

Calcolatori Elettronici Memoria Cache - Ing. Battista Biggio 75


Soluzione
1. Deve essere rispettata la condizione:

2 ! N + K +1
K

– dove K è il numero di bit di controllo.


Essendo N = 7, il numero minimo di bit di controllo
richiesto è K = 4.

Calcolatori Elettronici Memoria Cache - Ing. Battista Biggio 76


Soluzione
2. 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

c0 = b0 ⊕ b1 ⊕ b3 ⊕ b4 ⊕ b6 = 1
c1 = b0 ⊕ b2 ⊕ b3 ⊕ b5 ⊕ b6 = 0
c2 = b1 ⊕ b2 ⊕ b3 = 0
c3 = b4 ⊕ b5 ⊕ b6 = 0

La parola codificata è 10001100101

Calcolatori Elettronici Memoria Cache - Ing. Battista Biggio 77


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 - Ing. Battista Biggio 78


Soluzione
• Il passo successivo è calcolare il vettore di errore dato dalla
differenza dei vettori di controllo c e c’:

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

• 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 - Ing. Battista Biggio 79


Esercizio (12/07/2007)
• 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. Calcolare N, supponendo di aver fatto uso del numero minimo di


bit di controllo necessari.
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.

Calcolatori Elettronici Memoria Cache - Ing. Battista Biggio 80


Soluzione
1. Deve essere rispettata la condizione:

2 ! N + K +1
K
– 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.

2. 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 - Ing. Battista Biggio 81


Soluzione
3. Per verificare la presenza di un errore,
dobbiamo ricalcolare il vettore di controllo a
partire dalla sequenza ricevuta. Si ha:

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 - Ing. Battista Biggio 82
Soluzione (cont’d)
• 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

Calcolatori Elettronici Memoria Cache - Ing. Battista Biggio 83


Soluzione
• 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 - Ing. Battista Biggio 84


Domande?

?
Calcolatori Elettronici Memoria Cache - Ing. Battista Biggio 85