Tutorato 11 dicembre 2015 Calcolo delle prestazioni Nomenclatura T: periodo del ciclo di clock. Equivale al tempo di durata di un ciclo del clock, ovvero al reciproco della frequenza di clock: T = 1 F F: frequenza del ciclo di clock. Equivale al numero di volte che il ciclo di clock si ripete in un secondo: F = 1 T CPI: (Clock Per Istruzione) numero di cicli di clock impiegati per eseguire una particokare istruzione CPI m,c :numerodiciclimedidataunacertamacchinam ed un certo compilatore c. Equivale alla media pesata del CPI di ciascuna istruzione per la distribuzione percentuale delle istruzioni del compilatore IC: numerodiistruzionidiunprogramma Exe T ime: (Execution Time) tempo di esecuzione di un particolare programma su una particolare macchina. Equivale al numero di cicli medi per istruzione CPI m,c per il numero di istruzioni del programma IC,per il periodo del ciclo T = 1 F : Exe T ime = IC CPI m,c T = IC CPI m,c 1 F Perf : performance. L idea è che la performance sia tanto più grande quanto migliore sia la prestazione. Una prestazione migliore corrisponde ad un tempo di esecuzione più piccolo, viene adottato quindi, come misura della Performance di una macchina, l inverso del tempo di 1 escuzione Exe T ime: Perf = Exe Time. Speedup(avsb:Misuradiquantounsistemaaèpiùvelocediunsistemab.Speedup(avsb)= P erf a P erf b = Exe Time b Exe Time a 1-Qualemacchinacomprareeconchecompilatore Si considerino due diverse macchine, M1 ed M2, dello stesso set di istruzioni, partizionato in tre classi A, B, C: M1: CPI M2: CPI Utilizzo C1 Utilizzo C2 Utilizzo C3 A 4 2 30% 30% 50% B 6 4 50% 20% 30% C 8 3 20% 50% 20% 1
M1 ha una frequenza di clock pari a 400 MHz M2 ha una frequenza di clock pari a 200 Mhz C1 è un compilatore sviluppato dai produttori di M1 C2 è un compilatore sviluppato dai produttori di M2 C3 è un compilatore sviluppato da un terzo costruttore. Si supponga che il codice prodotto dai tre compilatori per uno stesso programma preveda un ugual numero di istruzioni eseguite (IC), ma una diversa distribuzione nelle varie classi come riportato in tabella. Domanda 1: : Usando C1 su M1 e M2, di quanto M1 è più veloce di M2? Bisogna calcolare il tempo di esecuzione di M1 e M2 usando il compilatore C1. Per fare questo calcoliamo il CPI nei due casi. CPI M1 =4 0, 3+6 0, 5+8 0, 2=1, 2+3+1, 6=5, 8(clock/istruzione) CPI M2 =2 0, 3+4 0, 5+3 0, 2=0, 6+2+0, 6=3, 2(clock/istruzione) Il tempo di esecuzione quindi è: Exe T ime M1 = IC CPI M1 1 = IC 5,8 400 10 6 Exe T ime M1 = IC CPI M2 1 = IC 3,2 200 10 6 da cui semplificando ed eseguendo le oper- Speedup(M1 vs M2) = P erfm1 P erf M2 azioni: Speedup(M1 vs M2) = 6,4 5,8 =1, 10 Domanda 2 Riposta: = 400 106 IC 3,2 IC 5,8 200 10 6 Usando C2 su M1 e M2 di quanto M2 è più veloce di M1? equindi:perf M1 = 400 106 IC 5,8 equindi:perf M2 = 200 106 IC 3,2 Il calcolo è identico a quello precedente, utilizzando la distribuzione delle istruzioni del compilatore C2 CPI M1 =4 0, 3+6 0, 2+8 0, 5=1, 2+1, 2+4=6, 4(clock/istruzione) CPI M2 =2 0, 3+4 0, 2+3 0, 5=0, 6+0, 8+1, 5=2, 9(clock/istruzione) da cui semplificando ed eseguendo le oper- Speedup(M2 vs M1) = P erfm2 P erf M1 azioni: Speedup(M2 vs M1) = 6,4 5,8 =1, 10 Domanda 3 = 200 106 IC 6,4 IC 2,9 400 10 6 Se si acquista M1, quale dei tre compilatori conviene usare? Se si acquista M2, quale dei tre compilatori conviene usare? 2
: Bisogna calcolare le prestazioni del compilatore C3. CPI M1 =4 0, 5+6 0, 3+8 0, 2=2+1, 8+1, 6=5, 4(clock/istruzione) CPI M2 =2 0, 5+4 0, 3+3 0, 2=1+1, 2+0, 6=2, 8(clock/istruzione) Tabella delle CPI C1 C2 C3 M1 5,8 6,4 5,4 M2 3,2 2,9 2,8 Dalla tabella si può vedere che in tutti i casi il compilatore C3 ha una CPI media più bassa degli altri, quindi è da scegliere sia per la macchina M1 che per la macchina M2. Domanda 4 Quale macchina è il miglior acquisto, supponendo che tutti gli altri criteri siano identici, compreso il prezzo? Bisogna confrontare le prestazioni delle due macchine utilizzando, ovviamente, il compilatore C3. Risulta: Exe T ime M1 = IC CPI M1 1 = IC 5,4 400 10 6 Exe T ime M2 = IC CPI M2 1 = IC 2,8 200 10 6 Quindi: da cui semplificando ed eseguendo le oper- Speedup(M1 vs M2) = P erfm1 P erf M2 azioni: = 400 106 IC 2,8 IC 5,4 200 10 6 equindi:perf M1 = 400 106 IC 5,4 equindi:perf M2 = 200 106 IC 2,8 Speedup(M1 vs M2) = 5,6 5,4 =1, 04 La macchina M1 è più performante della macchina M2, quindi quella da preferire per l ascquisto. 2-Confrontofraduemacchine Considerare due macchine M1 (a 300 MHz) ed M2 (a 450 Mhz) con le seguenti caratteristiche (rispetto acompilatoriprefissati): Macchina Classe Cicli Distribuzione M1 M2 A 1 40% B 2 30% C 3 20% D 4 10% A 1 40% B 2 60% Sapendo che, per uno stesso programma, in media il codice prodotto per M2 prevede il doppio di istruzioni rispetto a quello prodotto per M1, stabilire: 3
Domanda 1 Quale macchina è migliore? Il numero di istruzioni della macchina M2 per un programma qualsiasi è mediamente il doppio delle istruzioni della macchina M1. Quindi: IC M2 =2 IC M1 Dobbiamo calcolare il tempo di esecuzione delle due macchine e poi confrontare le preformance CPI M1 =1 0, 4+2 0, 3+3 0, 2+4 0, 1=2 CPI M2 =1 0, 4+2 0, 6=1, 6 Exe T ime M1 = IC M1 CPI M1 1 = ICM1 2 300 10 equindi:perf 6 M1 = 300 106 IC M1 2 Exe T ime M2 = IC M2 CPI M2 1 = 2 ICM1 1,6 450 10 equindi:perf 6 M2 = 450 106 2 IC M1 1,6 Speedup(M2 vs M1) = P erfm2 operazioni: P erf M1 = 450 106 2 IC M1 1,6 Speedup(M2 vs M1) = 9 9,6 =0, 93745 La macchina M1 è migliore. Domanda 2 2 IC M1 300 10 6 da cui semplificando ed eseguendo le Se si usa un nuovo compilatore su M2 che riduce di 1/3 il numero delle operazioni di tipo B, cosa succede alle prestazioni? Un programma che con M1 ha IC M1 istruzioni con M2 avrà: IC M2 =2 IC M1 0, 4+2 IC M1 0, 6 2 3 =1, 6 IC M1 La Distribuzione si calola come segue. Dato un programma che col precedente compilatore aveva IC M istruzioni, col nuovo compilatore avrà: IC M2 =0, 4 IC M +0, 6 2 3 IC M =0, 8 IC M La distribuzione quindi sarà Classe Cicli Distribuzione 0,4 IC M A 1 0,8 IC M 100 = 50% B 2 0,4 IC M 0,8 IC M 100 = 50% La CPI per M! col nuovo compilatore sarà: CPI M1 =1 0, 5+2 0, 5=1, 5 quindi Speedup(M2 vs M1) = P erfm2 operazioni: 450 10 P erf M1 = 6 1,6 IC M1 1,5 2 IC M1 300 10 6 da cui semplificando ed eseguendo le Speedup(M2 vs M1) = 9 7,2 =1, 25 Concludendo la macchina M2 in questo caso è migliore della macchina M1. 4
3-Lunghezzadelcodice Considerare due macchine M1 (a 3 GHz) ed M2 (a 1.5 GHz). La seguente tabella illustra le classi di istruzioni macchina, i relativi CPI medi e la distribuzione di probabilità delle istruzioni nei programmi considerati. Macchina Classe ICP Distribuzione M1 M2 Domanda: A 1 40% B 2 30% C 3 20% D 4 10% A 1 60% B 2 40% Supponendo di sapere che il codice prodotto, compilando lo stesso programma per le due piattaforme, ha identiche prestazioni sia per M1 che per M2, calcolare in che rapporto devono stare i numeri di istruzioni prodotte per i due programmi (ovvero, ICM1 e ICM2) perché ciò si verifichi. Dobbiamo calcolare il CPI medio per le due macchine. CPI M1 =1 0, 4+2 0, 3+3 0, 2+4 0, 1=2 CPI M1 =1 0, 6+2 0, 4=1, 4 Itempidiesecuzionesiesprimonoquindicomesegue: Exe T ime M1 = CPIM1 ICM1 = 2 ICM1 3 10 9 =0, 66 10 9 IC M1 Exe T ime M2 = CPIM2 ICM2 F M2 = 1,4 ICM2 1,5 10 =0, 93 10 9 IC 9 M1 Affinchè le prestazioni siano le stesse i tempi di esecuzione dovranno essere uguali per cui Exe T ime M1 = Exe T ime M2! 0, 66 10 9 IC M1 =0, 93 10 9 IC M2 quindi IC M1 = 0.93 0.66 IC M2 =1, 41 IC M2 Vale a dire che il compilatore di M1 genera un eseguibile 1,41 volte più lungo dell equivalente eseguibile della macchina M2 (41% di istruzioni in più). 4-CPImedioideale1 Un computer a 1 GHz, nell eseguire un certo programma, ha una prestazione ideale di 500 MIPS. Domanda: Calcolare il CPI medio ideale. In un secondo il computer esegue 0,5G istruzioni quindi abbiamo: 0, 5 10 9 = 109 CPI =2 CPI da cui 5
5-CPImedioideale2 Considerare l esecuzione di un programma P su di una data CPU. Domanda 1: Rispsta Calcolare il CPI ideale, considerando che il CPI medio delle load/store è 4.5, il CPI medio delle altre istruzioni è 2, mentre la percentuale di load/store è del 40%. Riscriviamo questi dati nella seguente tabella: Classe CPI Distribuzione load/store 4,5 40% altre 2 60% Quindi: CPI Id =0, 4 CPI l/s +0, 6 CPI altre =0, 4 4, 5+0, 6 2=3 Domanda 2: Calcolare i tempi ideali pereseguire P considerando che IC = 200 10 6,mentrelafrequenza della CPU è di 500 MHz. Il tempo di ciclo (periodo) è T = 1 500 10 6 =2 10 9 Il tempo ideale di esecuzione del programma P è quindi: T empo Ideale = CPI id IC T =3 200 10 6 2 10 9 =1, 2 sec 6