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