Traccia e soluzioni del compito

Transcript

Traccia e soluzioni del compito
Architettura degli Elaboratori B
(Compito 14 Settembre 2005)
Esercizio 1
Quando il programma P è eseguito su una data CPU, caratterizzata da una frequenza di clock di 1 GHz, in
media abbiamo che, senza considerare gli stalli dovuti alla cache, CP Iaritm = 1.5, e CP Ilw/sw = CP Ib/j =
2.5. Inoltre il 50% delle istruzioni eseguite (IC) sono aritmetiche, il 30% sono load/store, mentre il 20% sono
branch/jump.
Considerando che il data miss rate è il 4%, l’instruction miss rate è il 2%, il miss penalty è di 50 ns, calcolare
il CPI medio reale per ciascuna classe di istruzioni tenendo conto degli stalli dovuti alla cache.
Calcolare infine il tempo di esecuzione nel caso in cui IC = 10.000.000.
Soluzione
Se la CPU ha frequenza 1 GHz, allora ogni ciclo (T = 1/F req) è lungo 1 ns, per cui miss penalty = 50 ns =
50 cicli.
Per ogni classe di istruzione paghiamo i miss penalty dovuti all’instr. miss rate:
Cicli missinstr = 4% ∗ IC ∗ miss penalty = 0.02 ∗ 50 ∗ IC = IC.
Solo per le load/store paghiamo i miss penalty dovuti ai data miss rate.
Cicli missdata = 4% ∗ 30% ∗ IC ∗ miss penalty = 0.04 ∗ 0.30 ∗ 50 ∗ IC = 0.6 ∗ IC.
I Cicli missinstr sono pagati da tutte le istruzioni, per cui il CPI ideale di ciascuna classe di istruzioni viene
instr
incrementato di Cicli miss
= 1.
IC
I Cicli missdata sono pagati solo dalle istruzioni di load/store, che sono 30% IC, per il cui CPI ideale di
missdata
0.6∗IC
queste istruzioni deve essere incrementato di Cicli
= 0.3∗IC
= 2.
30% IC
Da tutto ciò risulta che i CPI reali per le varie classi di istruzione sono:
CP I aritm = 1.5 + CP Iistr miss = 1.5 + 1 = 2.5,
CP I lw/sw = 2.5 + CP Iistr miss + CP Idata miss = 2.5 + 1 + 2 = 5.5, ed infine
CP I b/j = 2.5 + CP Iistr miss = 2.5 + 1 = 3.5.
Infine, abbiamo che il numero di cicli totali per l’esecuzione di P è uguale a:
# cicli = 50% IC ∗ CP I aritm + 30% IC ∗ CP I lw/sw + 20% IC ∗ CP I b/j = IC(0.5 ∗ 2.5 + 0.3 ∗ 5.5 + 0.2 ∗ 3.5) =
3.6 ∗ IC = 3.6 ∗ 107 .
Il tempo di esecuzione è dato da:
T = # cicli/F req = 3.6 ∗ 107 ∗ 10−9 = 3.6 ∗ 10−2 s = 36 ms.
Esercizio 2
Data una gerarchia di memoria, conosciamo che l’indirizzo fisico è di 27 b.
Calcolare la dimensione dell’indirizzo virtuale conoscendo che la dimensione della pagina è 4 KB, mentre
la TLB è associativa a 8 vie, il numero di entry della TLB è 512, la dimensione di ogni entry della TLB è
uguale a 4 B, di cui 3 bit di valid, dirty e modified.
La gerarchia di memoria comprende anche una cache la cui dimensione (parte dati) è di 512 KB, il numero
di blocchi è 215 , e la TAG è di 9 b. Calcolare la dimensione dell’INDEX e il livello di associatività (numero
di vie) di questa cache.
Soluzione
Il page offset è di log(4 ∗ 1024) = 12 b. La dimensione del numero di pagina fisica (NPF) è 27 − 12 = 15 b.
La dimensione della TAG della TLB è 32 − 3 − N P F = 32 − 18 = 14 b.
La TLB viene indirizzata con il numero di pagina virtuale (NPV). La parte bassa del NPV è detto INDEX,
e viene usato per selezionare uno degli insiemi. Poiché ogni insieme contiene 8 entry, il numero degli insiemi
è 512/8 = 29 /23 = 26 . Da cui la dimensione di INDEX è log 26 = 6 b.
Per cui il NPV è TAG + INDEX = 14 + 6 = 20 b.
Per avere l’indirizzo virtuale: NPV + OFFSET = 20 + 12 = 32 b
Per accedere alla cache si usa l’indirizzo fisico (27 b).
La dimensione del blocco è 512 KB/215 = 219 /215 = 24 = 16 B, per cui l’OFFSET è di 4 b.
Siccome l’INDEX si ottiene sottraendo dall’ind. fisico TAG e OFFSET, abbiamo: 27 − OF F SET − T AG =
27 − 4 − 9 = 14 b.
Abbiamo quindi che i 215 blocchi devono essere distribuiti in 2IN DEX = 214 insiemi, per cui il livello di
associativita è pari a 2 = 215 /214 .
Esercizio 3
Supponiamo di avere una CPU a 1 GHz, con CPI medio uguale a 2, impegnata nella tipica elaborazione
seguente:
loop
leggi prossimo blocco da 8 KB
elabora blocco
La CPU esegue 100.000 istruzioni per l’IO di ciascun blocco (gestione interruzioni, inizializzazione DMA,
etc.), mentre esegue 900.000 di istruzioni per l’elaborazione di ogni blocco.
Qual è il throughput massimo della CPU (no. di elab. al sec) considerando che il disco sia sempre in grado
di restituire il blocco senza attese.
Valutare se questo throughput è sostenibile da 4 dischi, ciascuno con queste caratteristiche:
• RPM = 10.000, seek = 7 ms, banda trasf. = 40 M B/s, overhead contr. = 1 ms.
considerando che le latenze di seek e rotazione siano pagate effettivamente solo nel 50% dei casi, a causa
dell’allocazione contigua di molti blocchi acceduti sequenzialmente.
Soluzione
Ogni ciclo di clock è 1 ns = 1/F req = 10−9 s.
La CPU spende un numero di cicli pari a IST R · CP I = 2 ∗ 106 , pari a 2 ∗ 10−3 s = 2 ms per elaborare ogni
blocco, dove IST R = 100.000 + 900.000 = 106 .
In totale abbiamo che T houghputCP U = 2·101 −3 = 500 elab/s.
Per quanto riguarda i dischi, dobbiamo calcolare il tempo di trasferimento del blocco per ogni disco. Abbiamo
che:
latenza rot. = 0.5/10000 min. = 60 ∗ 0.5/10000 s. = 3 ms
t. trasf. = dim/banda =
8 KB
8
s=
ms = 0.2 ms
40 M B/s
40
tempo = 50%(seek + lat. rot.) + overhead + t. trasf. = 0.5 ∗ (7 + 3) + 1 + 0.2 = 6.2 ms
Quindi la banda reale di un singolo disco è:
1
= 161.3 trasf /s
6.2 ∗ 10−3
mentre la banda di 4 dischi è più che sufficiente a sostenere la banda della CPU:
T houghputDisco =
T houghput4
Dischi
= 4 161.3 trasf /s = 645.2 trasf /s