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