Valutazione delle Prestazioni Misura/valutazione di un insieme di parametri quantitativi per caratterizzare le prestazioni di un un calcolatore Architetture dei Calcolatori ❍ (Lettere A-I) ❍ Valutazione delle Prestazioni Prestazioni ~ Tempo di esecuzione di un insieme di applicazioni Cosa significa “il calcolatore A ha prestazioni migliori del calcolatore B” B”? Termina lo stesso compito in un tempo minore rispetto al calcolatore B Nello stesso periodo di tempo riesce ad eseguire più più compiti Ing. Ing. Francesco Lo Presti Obiettivo: 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’l’hardware implementa il set di istruzioni Come il sistema di memoriamemoria-I/O opera Prestazioni Tempo di risposta e throughput Prestazioni e Tempo di Esecuzione La frase “X è più più veloce di Y” Y” è usata per indicare che il tempo Tempo di risposta (o di esecuzione) ❍ 1 di risposta (o di esecuzione), per un dato lavoro, è minore in X che in Y Intervallo temporale che intercorre tra l’l’inizio ed il completamento di programma/job Inclusi tempo di esecuzione del processore, accessi al disco, accessi accessi in memoria, attività attività di I/O, overhead del sistema operativo, … ❍ ❍ Esempio: durata dell’ dell’esecuzione di un programma Metrica di interesse per l’l’utente PrestazioneX=1/Tempo di esecuzioneX Throughput ❍ ❍ ❍ Ammontare complessivo di lavoro svolto in un dato intervallo temporale Esempio: numero di programmi eseguiti nell’ nell’unità unità di tempo Metrica di interesse per l’l’amministratore del sistema Miglioramento delle prestazioni ❍ Prestazioni 2 Diminuzione del tempo di esecuzione Prestazioni 3 Ciclo di clock Tempo di risposta e di CPU Durata del periodo di un’ un’oscillazione completa del Tempo di risposta: rappresenta la latenza per il segnale di sincronizzazione completamento di un programma ed include accessi al disco, accessi alla memoria, attività 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’l’esecuzione di altri programmi Tempo di CPU = tempo di CPU di utente + tempo di CPU di sistema ❍ ❍ ❍ 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 Tempo di CPU di utente: 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 Spesso sostituisce i secondi come unità unità di misura del (4 * 109)-1 = 0.25 * 10-9 = 0.25 nanosecondi 4 Tempo di CPU Prestazioni 5 Durata di Diverse Istruzioni Per un dato programma In genere, istruzioni di tipo diverso richiedono quantità quantità diverse di tempo. Esempi: ❍ 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 Fissata la durata del ciclo di clock, varia il numero di cicli di di clock richiesti dalle diverse istruzioni Frequenza di Clock Si può calcolare il numero medio di cicli di clock per istruzione di un dato programma (o frammento di programma) Per migliorare le prestazioni, a parità parità di tutto il resto, occorre: ❍ ❍ La moltiplicazione richiede più più tempo dell’ dell’addizione L’accesso alla memoria richiede più più tempo dell’ dell’accesso ai registri Ridurre il numero di cicli richiesti da un programma Ridurre la durata del ciclo di clock Aumentare la frequenza del clock Prestazioni 6 Prestazioni 7 Cicli di Clock per Istruzione (CPI) Numero Totale di Cicli di Clock Per un dato programma CPI = n Cicli di Clock della CPU per il programma=Σ (CPIi*Ii) Cicli di Clock della CPU per il programma i=1 Numero Istruzioni n tipi di istruzioni diverse ❍ Riscriviamo il Tempo di CPU ALU, lw, lw, sw, sw, jump, jump, branch, branch, etc… etc… Ii = numero di volte che l’ l’istruzione di tipo i viene eseguita nel programma CPIi = numero di cicli di clock per l’ l’istruzione di tipo i Tempo di CPU= Numero Istruzioni * CPI * Ciclo di Clock Possiamo quindi utilizzare questa formula per esprimere il tempo di CPU: Numero Istruzioni * CPI Tempo di CPU = Frequenza di Clock i=1 Prestazioni 8 Formula per CPI Prestazioni Si consideri un calcolatore in n Σ( n i=1 = Numero Istruzioni CPIi * i=1 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 ) Ii Numero Istruzioni Ogni singolo CPIi viene moltiplicato per la frazione delle occorrenze nel programma - fi=Ii/Numero Istruzioni - delle istruzioni di tipo i Tempo di CPU= Numero Istruzioni * CPI * Ciclo di Clock n CPI = 9 Esempio Σ (CPIi*Ii) CPI = n Tempo di CPU=Ciclo di Clock * Σ (CPIi*Ii) Σ i=1 n CPI = ( CPIi * fi ) Σ 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 10 Prestazioni 11 Fattori che influiscono sulle prestazioni Algoritmo ❍ Influisce sul numero di istruzioni (CI) ❍ Influisce su CPI Numero di istruzioni nel programma sorgente Uso di istruzioni più più veloci o più più lente Linguaggio di programmazione ❍ ❍ Influisce sul numero di istruzioni (CI) Influisce su CPI Caratteristiche del linguaggio (es (es:: astrazione dei dati) Compilatore ❍ Influisce sul numero di istruzioni (CI) e su CPI Insieme di istruzioni dell’ dell’architettura ❍ Influisce sul numero di istruzioni (CI), su CPI e sulla frequenza frequenza del ciclo di clock Prestazioni 12