Prestazioni di un calcolatore elettronico
- Prestazioni di un calcolatore elettronico ..................................................................................................................3
- La misura delle prestazioni ...................................................................................................................................4
- La legge di Amdahl ................................................................................................................................................7
- La barriera della potenza ......................................................................................................................................7
- MIPS ..........................................................................................................................................................................9
- Progetto di un ALU ................................................................................................................................................. 17
- Specifiche di un ALU MIPS ................................................................................................................................. 17
- Specifiche raffinate ............................................................................................................................................ 18
- L’elemento base ................................................................................................................................................. 19
- Overflow ............................................................................................................................................................ 21
- Progetto del Datapath e del controllo Single Cycle ............................................................................................... 24
- Register File ....................................................................................................................................................... 27
- Implementazione del MIPS Single Cycle ............................................................................................................ 27
- L’unità di controllo per la ALU (si considera ALU a 3 bit e non 4) ...................................................................... 36
- Dal Single-Cycle al Multi-Cycle ............................................................................................................................... 43
- Pipeline del MIPS ................................................................................................................................................... 47
- L’unità di controllo della pipeline ...................................................................................................................... 54
- Rappresentazione grafica della pipeline ............................................................................................................ 57
- Il MIPS favorisce il pipeline ................................................................................................................................ 58
- Gli hazard nelle pipeline .................................................................................................................................... 58
- La memoria ............................................................................................................................................................ 63
- Le tecnologie delle memorie ............................................................................................................................. 65
- La tecnologia SRAM ........................................................................................................................................... 65
- La tecnologia DRAM .......................................................................................................................................... 66
- Memorie flash ................................................................................................................................................... 67
- Concetti fondamentali ....................................................................................................................................... 67
- Memoria cache .................................................................................................................................................. 70
- Il Sistema delle Interruzioni ................................................................................................................................... 77
- Dispositivi di Input/Output .................................................................................................................................... 81
- Livelli del sottosistema di I/O ............................................................................................................................. 83
- Bus ......................................................................................................................................................................... 84
- Introduzione alle reti neurali artificiali .................................................................................................................. 86
- Reti neurali ........................................................................................................................................................ 86
- Architettura di una Rete Neurale ....................................................................................................................... 91
- Deep Learning .................................................................................................................................................... 94
- Tecniche per ottimizzare il processo di learning per le DNN (reti neurali profonde) ........................................ 95
- Reti neurali ricorrenti ....................................................................................................................................... 96
- Reti funzionali ................................................................................................................................................. 100
- Reti di funzioni di base radiali .......................................................................................................................... 101
Prestazioni di un calcolatore elettronico
Una ragione fondamentale per esaminare le prestazioni è il fatto che buone prestazioni dell’hardware sono spesso la chiave dell’efficacia dell’intero sistema (hardware più software). Valutare le prestazioni di un sistema di elaborazione è un compito arduo: le dimensioni e la complessità dei moderni sistemi software, unite all’ampia varietà delle tecniche per il miglioramento delle prestazioni utilizzate dai progettisti hardware, hanno reso tale valutazione ancora più difficile.
Bisogna utilizzare metriche di misura diverse a seconda del tipo di applicazione e aspetti differenti del sistema di calcolo possono essere di volta in volta quelli più significativi per valutare le prestazioni globali. Misurare le prestazioni in modo accurato e confrontare macchine diverse è un’operazione fondamentale per chi acquista e quindi lo deve essere di conseguenza anche per chi progetta.
Quando si dice che un calcolatore ha prestazioni migliori di un altro, cosa si intende veramente? Benché questa domanda possa apparire semplice, un’analogia con gli aerei per trasporto passeggeri può far capire meglio come la questione sia sottile.
La tabella mostra alcuni tipici modelli di aerei per trasporto passeggeri, con la loro velocità di crociera, autonomia di volo e numero di posti. Volendo trovare quale di questi aeroplani abbia prestazioni migliori, occorrerà innanzitutto definire che cosa si intende per prestazioni: dal punto di vista del passeggero, la prestazione può essere il tempo impiegato per un singolo viaggio, mentre dal punto di vista della compagnia aerea la prestazione può essere il numero di passeggeri trasferiti in un dato intervallo di tempo.
| Tipo di Aereo | Numero di posti | Autonomia di volo [km] | Velocità di crociera [km/h] | Portata [passeggeri x km/h] |
|---|---|---|---|---|
| Boeing 777 | 375 | 7400 | 980 | 367 500 |
| Boeing 747 | 470 | 6640 | 980 | 460 600 |
| BAC/Sud Concorde | 132 | 6400 | 2160 | 285 120 |
| Douglas DC-8-50 | 146 | 13950 | 870 | 127 020 |
Si può definire come aereo più veloce quello che ha velocità di crociera più elevata, portando il singolo passeggero da un luogo ad un altro nel minor tempo. Se però l’obiettivo fosse trasportare 450 passeggeri da un luogo ad un altro, allora il 747 sarebbe il più veloce come mostrato dall’ultima colonna.
Facendo eseguire un programma su due stazioni di lavoro diverse, si potrebbe dire che la più veloce è quella che finisce il lavoro per prima. Dirigendo un centro di calcolo che ha due grandi calcolatori che eseguono in time-sharing lavori sottomessi da molti utenti, si potrebbe invece considerare come più veloce quello che in una giornata porta a termine più lavori. Il singolo utente di un calcolatore è interessato a ridurre il tempo di risposta, cioè il tempo fra l’inizio ed il completamento di un lavoro, detto anche tempo di esecuzione. I gestori dei centri di calcolo sono invece spesso interessati ad aumentare il throughput, cioè la quantità di lavoro eseguita nell’unità di tempo.
Per massimizzare le prestazioni, l’obiettivo è minimizzare il tempo di risposta o il tempo di esecuzione, necessario per svolgere un determinato compito. Per una macchina prestazioni e tempo di esecuzione possono essere correlati nel seguente modo: 1 = , ,
Per due macchine e se le prestazioni di sono migliori di quelle di allora si ha che 1 1 > > ovvero e quindi < , .
Il tempo di esecuzione sulla macchina è più elevato che sulla macchina se è più veloce di = = Si dice che è volte più veloce di per indicare che
La misura delle prestazioni
La misura delle prestazioni di un calcolatore è il tempo: il calcolatore che esegue un certo lavoro nel tempo minore è il più veloce. Il tempo di esecuzione di un programma è misurato in secondi; il tempo, tuttavia, può essere misurato in modi diversi in base a ciò che interessa: la definizione più immediata è di tempo di risposta, che indica il tempo totale per completare un lavoro, includendo gli accessi ai dischi, gli accessi alla memoria, le attività di ingresso e di uscita, il sovraccarico dovuto al sistema operativo, in sostanza il tempo di tutte le attività richieste per completare il lavoro.
Tuttavia, i calcolatori lavorano spesso in condivisione di tempo (time-sharing) e può accadere che un processore stia lavorando su più programmi contemporaneamente. Si distingue spesso tra il tempo trascorso ed il tempo durante il quale il processore ha lavorato con un determinato obiettivo: il tempo di esecuzione della CPU (o tempo di CPU), che è il tempo speso dalla CPU nell’elaborazione richiesta per raggiungere un obiettivo e il tempo di attesa, ovvero il tempo per compiere operazioni di I/O o per eseguire altri programmi.
Il tempo di CPU può poi essere ulteriormente suddiviso nel tempo speso dalla CPU all’interno del programma, denominato tempo di CPU relativo all’utente, ed il tempo speso dalla CPU all’interno del sistema operativo per eseguire compiti richiesti dal programma, denominato tempo di CPU relativo al sistema. A volte, quando si esamina il tempo di esecuzione della CPU, il tempo di CPU relativo al sistema è ignorato a causa dell’inaccuratezza delle misure eseguite dai sistemi operativi e dello sbilanciamento che si avrebbe includendo il tempo di CPU relativo al sistema quando si confrontano le prestazioni di macchine con sistemi operativi diversi.
Benché agli utenti dei calcolatori interessi principalmente il parametro tempo, quando si esamina una macchina nei dettagli conviene ragionare di prestazioni facendo riferimento ad altre metriche; in particolare i progettisti di calcolatori utilizzano per le macchine una misura relativa alla velocità con cui l’hardware è in grado di eseguire alcune operazioni elementari. Quasi tutti i calcolatori sono costruiti utilizzando un segnale di clock caratterizzato da una frequenza costante, che sincronizza i vari eventi all’interno dell’hardware; questi intervalli di tempo discreti sono denominati cicli di clock (o clock ticks), che definiscono gli istanti possibili per la realizzazione di eventi in hardware (evoluzione dello stato della macchina).
L’intervallo tra due ticks è il tempo di ciclo. I progettisti fanno riferimento alla durata di un periodo di clock esprimendo il tempo necessario per completare un ciclo di clock (esempio 2 nano secondi) oppure introducendo la frequenza di clock, o clock rate = (ad esempio 500 MHz) definita come il numero di cicli al secondo, ovvero l’inverso del periodo di clock: 1/.
È possibile esprimere il tempo di esecuzione in termini di cicli di clock: = ∗ = ∗
Ovvero quindi Poiché la frequenza è il reciproco del tempo di ciclo, è possibile utilizzare in alternativa la seguente equazione: =
A parità di altre condizioni, si ottiene un aumento delle prestazioni se diminuisce il numero di cicli/programma, oppure se diminuisce il tempo di ciclo del clock o, equivalentemente, aumenta il clock rate.
Esempio
Un programma viene eseguito in 10 secondi sul calcolatore A, che ha un clock da 2 GHz. Un progettista deve costruire un calcolatore B in grado di eseguire lo stesso programma in 6 secondi ed ha concluso che è possibile aumentare in modo significativo la frequenza di clock; questa modifica avrà influenza su tutto il progetto della CPU, facendo sì che il calcolatore B abbia un aumento del 20% del numero di cicli richiesti per l’esecuzione del programma rispetto al calcolatore A. Dovendo dare un consiglio al progettista, quale sarà la frequenza di clock del calcolatore B?
cicli di clock cicli di clock A A TCPU = ⇒ 10s = A 9 frequenza di clock 2∗10 Hz A
cicli di clock 1,2∗ cicli di clock B A TCPU = ⇒ 6s = (aumento del 20% corrisponde ad un x1.2) B frequenza di clock frequenza di clock B B 920 ∗ 10 ∗ 1,2 9 frequenza di clock = = 4 ∗ 10 B 6
Il calcolatore B dovrà lavorare ad una frequenza di clock doppia rispetto ad A per eseguire il programma in 6 secondi.
Non è possibile assumere perché istruzioni differenti comportano = tempi diversi su macchine differenti. Infatti, un’operazione di moltiplicazione richiede un tempo maggiore rispetto ad un’addizione, oppure un’operazione tra floating point richiede un tempo maggiore rispetto ad una tra interi o ancora un accesso in memoria richiede un tempo maggiore rispetto ad un accesso a registri interni.
Il tempo di esecuzione dovrà necessariamente dipende dal numero di istruzioni che compongono un programma. È possibile esprimere il tempo di esecuzione come prodotto del numero di istruzioni eseguite per il tempo medio di esecuzione di ciascuna istruzione. Di conseguenza, il numero di cicli di clock necessari per l’esecuzione di un programma si può riscrivere come ∗ =
Il termine cicli di clock per istruzione, calcolato come la media del numero di cicli di clock che le diverse istruzioni richiedono per essere completate, è spesso abbreviato con la sigla CPI (Clock Per Istruzione). Dato che istruzioni diverse possono richiedere un tempo di esecuzione differente in funzione del compito che svolgono, il valore di CPI è la media di tutte le istruzioni eseguite nel programma.
In questo modo l’espressione del tempo di CPU diventa: = ∗ ∗ o alternativamente ∗ =
Il tempo di esecuzione della CPU
Scarica il documento per vederlo tutto.
Scarica il documento per vederlo tutto.
Scarica il documento per vederlo tutto.
Scarica il documento per vederlo tutto.
Scarica il documento per vederlo tutto.
Scarica il documento per vederlo tutto.
Scarica il documento per vederlo tutto.
Scarica il documento per vederlo tutto.
Scarica il documento per vederlo tutto.
Scarica il documento per vederlo tutto.
Scarica il documento per vederlo tutto.
Scarica il documento per vederlo tutto.
Scarica il documento per vederlo tutto.
Scarica il documento per vederlo tutto.
Scarica il documento per vederlo tutto.
Scarica il documento per vederlo tutto.
Scarica il documento per vederlo tutto.
Scarica il documento per vederlo tutto.
Scarica il documento per vederlo tutto.
-
Appunti Calcolatori elettronici - parziale
-
Appunti dell'intero corso di Calcolatori elettronici
-
Appunti riassuntivi del corso di Calcolatori elettronici
-
Appunti Calcolatori Elettronici