Documenti di Didattica
Documenti di Professioni
Documenti di Cultura
• P erf : 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
escuzione Exe T ime: P erf = Exe 1T ime .
• Speedup(a vs b : Misura di quanto un sistema a è più veloce di un sistema b. Speedup (a vs b) =
P erfa Exe T imeb
P erfb = Exe T imea
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?
Risposta:
Bisogna calcolare il tempo di esecuzione di M1 e M2 usando il compilatore C1. Per fare questo
calcoliamo il CPI nei due casi.
CP IM 1 = 4 ⇤ 0, 3 + 6 ⇤ 0, 5 + 8 ⇤ 0, 2 = 1, 2 + 3 + 1, 6 = 5, 8(clock/istruzione)
CP IM 2 = 2 ⇤ 0, 3 + 4 ⇤ 0, 5 + 3 ⇤ 0, 2 = 0, 6 + 2 + 0, 6 = 3, 2(clock/istruzione)
Il tempo di esecuzione quindi è:
IC⇤5,8 400⇤106
Exe T imeM 1 = IC ⇤ CP IM 1 ⇤ 1
FM 1 = 400⇤106 e quindi: P erfM 1 = IC⇤5,8
IC⇤3,2 200⇤106
Exe T imeM 1 = IC ⇤ CP IM 2 ⇤ 1
FM 1 = 200⇤106 e quindi: P erfM 2 = IC⇤3,2
P erfM 1 400⇤106 IC⇤3,2
Speedup (M 1 vs M 2) = P erfM 2 = IC⇤5,8 200⇤106 da cui semplificando ed eseguendo le oper-
azioni:
6,4
Speedup (M 1 vs M 2) = 5,8 = 1, 10
Domanda 2
Usando C2 su M1 e M2 di quanto M2 è più veloce di M1?
Riposta:
Il calcolo è identico a quello precedente, utilizzando la distribuzione delle istruzioni del compi-
latore C2
CP IM 1 = 4 ⇤ 0, 3 + 6 ⇤ 0, 2 + 8 ⇤ 0, 5 = 1, 2 + 1, 2 + 4 = 6, 4(clock/istruzione)
CP IM 2 = 2 ⇤ 0, 3 + 4 ⇤ 0, 2 + 3 ⇤ 0, 5 = 0, 6 + 0, 8 + 1, 5 = 2, 9(clock/istruzione)
P erfM 2 200⇤106 IC⇤6,4
Speedup (M 2 vs M 1) = P erfM 1 = IC⇤2,9 400⇤106 da cui semplificando ed eseguendo le oper-
azioni:
6,4
Speedup (M 2 vs M 1) = 5,8 = 1, 10
Domanda 3
Se si acquista M1, quale dei tre compilatori conviene usare?
Se si acquista M2, quale dei tre compilatori conviene usare?
2
Risposta:
Bisogna calcolare le prestazioni del compilatore C3.
CP IM 1 = 4 ⇤ 0, 5 + 6 ⇤ 0, 3 + 8 ⇤ 0, 2 = 2 + 1, 8 + 1, 6 = 5, 4(clock/istruzione)
CP IM 2 = 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, com-
preso il prezzo?
Risposta
Bisogna confrontare le prestazioni delle due macchine utilizzando, ovviamente, il compilatore
C3.
Risulta:
IC⇤5,4 400⇤106
Exe T imeM 1 = IC ⇤ CP IM 1 ⇤ 1
FM 1 = 400⇤106 e quindi: P erfM 1 = IC⇤5,4
IC⇤2,8 200⇤106
Exe T imeM 2 = IC ⇤ CP IM 2 ⇤ 1
FM 1 = 200⇤106 e quindi: P erfM 2 = IC⇤2,8
Quindi:
P erfM 1 400⇤106 IC⇤2,8
Speedup (M 1 vs M 2) = P erfM 2 = IC⇤5,4 200⇤106 da cui semplificando ed eseguendo le oper-
azioni:
5,6
Speedup (M 1 vs M 2) = 5,4 = 1, 04
La macchina M1 è più performante della macchina M2, quindi quella da preferire per l’ascquisto.
3
Domanda 1
Quale macchina è migliore?
Risposta
Il numero di istruzioni della macchina M2 per un programma qualsiasi è mediamente il doppio
delle istruzioni della macchina M1. Quindi:
ICM 2 = 2 · ICM 1
Dobbiamo calcolare il tempo di esecuzione delle due macchine e poi confrontare le preformance
CP IM 1 = 1 · 0, 4 + 2 · 0, 3 + 3 · 0, 2 + 4 · 0, 1 = 2
CP IM 2 = 1 · 0, 4 + 2 · 0, 6 = 1, 6
ICM 1 ⇤2 300⇤106
Exe T imeM 1 = ICM 1 ⇤ CP IM 1 ⇤ 1
FM 1 = 300⇤106 e quindi: P erfM 1 = ICM 1 ⇤2
2⇤ICM 1 ⇤1,6 450⇤106
Exe T imeM 2 = ICM 2 ⇤ CP IM 2 ⇤ 1
FM 1 = 450⇤106 e quindi: P erfM 2 = 2⇤ICM 1 ⇤1,6
P erfM 2 450⇤106
Speedup (M 2 vs M 1) = P erfM 1 = 2⇤ICM 1
2⇤ICM 1 ⇤1,6 300⇤106 da cui semplificando ed eseguendo le
operazioni:
9,6
Speedup (M 1 vs M 2) = 9 = 1, 067
La macchina M1 è migliore.
Domanda 2
Se si usa un nuovo compilatore su M2 che riduce di 1/3 il numero delle operazioni di tipo B,
cosa succede alle prestazioni?
Risposta
Un programma che con M1 ha ICM 1 istruzioni con M2 avrà:
2
ICM 2 = 2 ⇤ ICM 1 ⇤ 0, 4 + 2 ⇤ ICM 1 ⇤ 0, 6 ⇤ 3 = 1, 6 ⇤ ICM 1
La Distribuzione si calola come segue. Dato un programma che col precedente compilatore
aveva ICM istruzioni, col nuovo compilatore avrà:
2
ICM 2 = 0, 4 ⇤ ICM + 0, 6 ⇤ 3 ⇤ ICM = 0, 8 ⇤ ICM
La distribuzione quindi sarà
Classe Cicli Distribuzione
0,4⇤ICM
A 1 0,8⇤ICM ⇤ 100 = 50%
0,4⇤ICM
B 2 0,8⇤ICM ⇤ 100 = 50%
La CPI per M! col nuovo compilatore sarà:
CP IM 1 = 1 ⇤ 0, 5 + 2 ⇤ 0, 5 = 1, 5 quindi
P erfM 2 450⇤106
Speedup (M 2 vs M 1) = P erfM 1 = 2⇤ICM 1
1,6⇤ICM 1 ⇤1,5 300⇤106 da cui semplificando ed eseguendo le
operazioni:
9
Speedup (M 2 vs M 1) = 7,2 = 1, 25
Concludendo la macchina M2 in questo caso è migliore della macchina M1.
4
3 - Lunghezza del codice
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 pro-
grammi considerati.
5
5 - CPI medio ideale 2
Considerare l’esecuzione di un programma P su di una data CPU.
Domanda 1:
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%.
Rispsta
Riscriviamo questi dati nella seguente tabella:
Classe CPI Distribuzione
load/store 4,5 40%
altre 2 60%
Quindi:
CP IId = 0, 4 ⇤ CP Il/s + 0, 6 ⇤ CP Ialtre = 0, 4 ⇤ 4, 5 + 0, 6 ⇤ 2 = 3
Domanda 2:
Calcolare i tempi ideali pereseguire P considerando che IC = 200 ⇤ 106 , mentre la frequenza
della CPU è di 500 MHz.
Risposta
Il tempo di ciclo (periodo) è
1 6 9
T = 500 ⇤ 10 = 2 ⇤ 10
Il tempo ideale di esecuzione del programma P è quindi:
ExeT ime = CP Iid ⇤ IC ⇤ T = 3 ⇤ 200 ⇤ 106 ⇤ 2 ⇤ 10 9
= 1, 2 sec