Calcolatori Elettronici
Valutazione delle Prestazioni
Francesco Lo Presti
Rielaborate da Salvatore Tucci
Valutazione delle Prestazioni
 Misura/valutazione di un insieme di parametri quantitativi
per caratterizzare le prestazioni di un un calcolatore


Prestazioni ~ Tempo di esecuzione di un insieme di applicazioni
Cosa significa “il calcolatore A ha prestazioni migliori del
calcolatore B”?
 Termina lo stesso compito in un tempo minore rispetto al
calcolatore B
 Nello stesso periodo di tempo riesce ad eseguire più compiti
 Obiettivo: Comprendere i fattori – sia HW che SW - che
determinano le prestazioni di un calcolatore



Quali algoritmo/istruzioni sono usate da un certo programma
Come l’hardware implementa il set di istruzioni
Come il sistema di memoria-I/O opera
Prestazioni
1
Tempo di risposta e throughput
 Tempo di risposta (o di esecuzione)

Intervallo temporale che intercorre tra l’inizio ed il
completamento di programma/job
 Inclusi tempo di esecuzione del processore, accessi al disco, accessi
in memoria, attività di I/O, overhead del sistema operativo, …


Esempio: durata dell’esecuzione di un programma
Metrica di interesse per l’utente
 Throughput



Ammontare complessivo di lavoro svolto in un dato intervallo
temporale
Esempio: numero di programmi eseguiti nell’unità di tempo
Metrica di interesse per l’amministratore del sistema
Prestazioni
2
Prestazioni e Tempo di Esecuzione
 La frase “X è più veloce di Y” è usata per indicare che il tempo
di risposta (o di esecuzione), per un dato lavoro, è minore in X
che in Y
 PrestazioneX=1/Tempo di esecuzioneX
 Miglioramento delle prestazioni

Diminuzione del tempo di esecuzione
Prestazioni
3
Tempo di risposta e di CPU
 Tempo di risposta: rappresenta la latenza per il
completamento di un programma ed include accessi
al disco, accessi alla memoria, attività di I/O, …
 Tempo di CPU: rappresenta il tempo speso dalla
CPU per eseguire il programma dato: non include il
tempo di attesa per I/O o per l’esecuzione di altri
programmi
 Tempo di CPU = tempo di CPU di utente + tempo di
CPU di sistema


Tempo di CPU di utente: tempo speso dalla CPU per
eseguire le linee di codice che sono nel programma
Tempo di CPU di sistema: tempo speso dal sistema
operativo per eseguire i compiti richiesti dal programma
Prestazioni
4
Ciclo di clock
 Durata del periodo di un’oscillazione completa del
segnale di sincronizzazione



Spesso sostituisce i secondi come unità di misura del
tempo di CPU
Durata del ciclo di clock = tempo tra due impulsi
consecutivi
Secondi per ciclo
 Frequenza di clock = cicli di clock per secondo
 1 Hz = sec-1
 Esempio: un calcolatore con frequenza di clock pari
a 4 GHz possiede un ciclo di clock di durata
(4 * 109)-1 = 0.25 * 10-9 = 0.25 nanosecondi
Prestazioni
5
Tempo di CPU
 Per un dato programma
Tempo di CPU= Cicli di Clock della CPU per il programma * Ciclo di Clock
 oppure
Tempo di CPU=
Cicli di Clock della CPU per il programma
Frequenza di Clock
 Per migliorare le prestazioni, a parità di tutto il
resto, occorre:


Ridurre il numero di cicli richiesti da un programma
Ridurre la durata del ciclo di clock
 Aumentare la frequenza del clock
Prestazioni
6
Numero Totale di Cicli di Clock
 In genere, istruzioni di tipo diverso richiedono quantità
diverse di tempo. Esempi:


La moltiplicazione richiede più tempo dell’addizione
L’accesso alla memoria richiede più tempo dell’accesso ai
registri
 n tipi di istruzioni diverse

ALU, lw, sw, jump, branch, etc…
 Ii = numero di volte che l’istruzione di tipo i viene eseguita
nel programma
 CPIi = numero di cicli di clock per l’istruzione di tipo i
n
Cicli di Clock della CPU per il programma=Σ (CPIi*Ii)
i=1
 Possiamo quindi utilizzare questa formula per esprimere il
tempo di CPU:
Tempo di CPU=Ciclo di Clock *
n
Σ
i=1
(CPIi*Ii)
Prestazioni
7
Cicli di Clock per Istruzione (CPI)
 CPI: numero medio di cicli di clock per istruzione
di un dato programma
n
CPI =Σ
i=1

( CPIi * fi )
Ogni singolo CPIi viene moltiplicato per la frazione delle
occorrenze nel programma - fi=Ii/Numero Istruzioni delle istruzioni di tipo i
 Riscriviamo il Tempo di CPU
Tempo di CPU= Numero Istruzioni * CPI * Ciclo di Clock
Tempo di CPU =
Numero Istruzioni * CPI
Frequenza di Clock
Prestazioni
8
Esempio
 Si consideri un calcolatore in
grado di eseguire le istruzioni
indicate in tabella
 Calcolare CPI e tempo di CPU per
eseguire un programma composto
da 100 istruzioni, supponendo che
la frequenza di clock sia 500 MHz
Tempo di CPU= Numero Istruzioni * CPI * Ciclo di Clock
CPI =
n
Σ
i=1
( CPIi * fi )
CPI=0.43*1+0.21*4+0.12*4+0.12*2+0.12*2=2.23
Tempo di CPU= 100 * 2.23* 2 (ns) =446 (ns)
Prestazioni
9
Fattori che influiscono sulle prestazioni
 Algoritmo

Influisce sul numero di istruzioni (CI)
 Numero di istruzioni nel programma sorgente

Influisce su CPI
 Uso di istruzioni più veloci o più lente
 Linguaggio di programmazione


Influisce sul numero di istruzioni (CI)
Influisce su CPI
 Caratteristiche del linguaggio (es: astrazione dei dati)
 Compilatore

Influisce sul numero di istruzioni (CI) e su CPI
 Insieme di istruzioni dell’architettura

Influisce sul numero di istruzioni (CI), su CPI e sulla frequenza
del ciclo di clock
Prestazioni
10
Principi quantitativi di progettazione dei
calcolatori
 Rendere veloce il caso più comune
 Si deve favorire il caso più frequente a discapito di quello
più raro
 Il caso più frequente è spesso il più semplice e può essere
reso più veloce del caso infrequente
 Legge di Amdahl
 Il miglioramento di prestazione che può essere ottenuto
usando alcune modalità di esecuzione più veloci è limitato
dalla frazione di tempo nella quali tali modalità sono
impiegate
 La legge di Amdahl permette di calcolare questo guadagno di
prestazione
Prestazioni
11
Speedup
oppure
 Lo speedup fornisce informazioni su quanto più
velocemente un lavoro verrà eseguito usando il
calcolatore con la miglioria rispetto al calcolatore
originale
Prestazioni
12
Legge di Amdahl

Frazionemigliorato (1), ovvero la frazione del tempo di calcolo
che può essere modificato per avvantaggiarsi dei
miglioramenti
Esempio: se 20 sec del tempo di esecuzione di un programma
che dura 60 sec possono essere modificati grazie al
miglioramento, la frazione è 20/60
Tempo di Calcolo Migliorabile
Parte non
Migliorabile
Parte Migliorabile
Tempo di Calcolo
Frazionemigliorato =
Tempo di Calcolo Migliorabile
Tempo di Calcolo
Prestazioni
13
Legge di Amdahl

Speedupmigliorato (1), ovvero il miglioramento ottenuto dal
modo di esecuzione più veloce

Esempio: se il modo di esecuzione più veloce è 2 sec, mentre il
modo originale è 5 secondi per la stessa porzione di
programma, lo speedup è 5/2
Tempo di Calcolo Migliorabile
Parte Migliorabile
Tempo di Calcolo Migliorato
Tempo di Calcolo Migliorabile
Parte Migliorata
Speedupmigliorato=
Tempo di Calcolo Migliorato
Prestazioni
14
Legge di Amdahl
Tempo di calcolonuovo=Tempo di calcolo non migliorabile+Tempo di calcolo migliorato
Tempo di calcolonuovo=Tempo di calcolo non migliorabile+
Tempo di calcolo migliorabile
Speedupmigliorato
Tempo di calcolonuovo=Tempo di calcolo*(1-Frazionemigliorato)+
Tempo di calcolo*Frazionemigliorato
Tempo di calcolonuovo=Tempo di calcolo*[(1-Frazionemigliorato)+
Speedupglobale=
Tempo di calcolo
Tempo di calcolonuovo
=
Speedupmigliorato
Frazionemigliorato
Speedupmigliorato
1
(1-Frazionemigliorato)+
Frazionemigliorato
Speedupmigliorato
Prestazioni
15
Esempio
 Si consideri un miglioramento di un processore di un sistema
utilizzato per servizi Web, tale che la nuova CPU sia 10 volte
più veloce di quella originale per le applicazioni Web.
Assumendo che la CPU originale è occupata nella
computazione per il 40% del tempo ed è in attesa dell’I/O
per il 60%, quale è lo speedup globale?
Frazionemigliorato = 0.4
Speedupmigliorato = 10
Speedupglobale = 1/(0.6 + 0.4/10) = 1/0.64  1.56
Prestazioni
16
Corollario della legge di Amdahl
 Se un miglioramento è utilizzabile solo per una frazione del
lavoro complessivo, allora non è possibile accelerare il lavoro
più del reciproco di uno meno tale frazione
Prestazioni
17