Tipo Documento: unità didattica 0 Modulo 0 Compilatore: ??? Supervisore: Data emissione: Release: Indice: A.Scheda informativa B.Introduzione C.Corpo D.Riepilogo E.Interazione F.Test di autoverifica
Introduzione I fattori rilevanti per le prestazioni Prospettiva storica Il parallelismo nellesecuzione delle istruzioni Circuiti pipeline Uso del pipelining in un processore Problematiche di conflitti, stalli e scheduling
Tempo di CPU Il tempo impiegato da una CPU per eseguire un programma dipende da diversi fattori: il numero di istruzioni che lo compongono e vengono eseguite il tempo necessario per eseguire ogni singola istruzione, ovvero il numero di cicli di clock richiesti da ogni istruzione e la durata di ogni ciclo di clock. Riassumendo
Fattori che influenzano il tempo di CPU ciclo di clock (o frequenza) tecnologia hardware e organizzazione cicli di clock per istruzione organizzazione e architettura set istruzioni numero istruzioni architettura set istruzioni e tecnologia dei compilatori Non è possibile modificare separatamente i vari termini poiché le tecnologie di base cui afferiscono le singole caratteristiche sono interdipendenti
Prospettiva storica Fino agli anni 70 si è lavorato principalmente Migliorando le tecnologie elettroniche Potenziando linsieme delle istruzioni per rendere più breve il compilato Introduzione istruzioni complesse Aumentare le modalità di indirizzamento Tentativo di rendere ortogonali istruzioni e modi di indirizzamento Dopo gli anni si sono diffusi approccio quantivativo al progetto del set di istruzioni abbinato a pipelining Anni 90 Parallelismo a livello istruzione (superscalarità e VLIW)
Pipelining Un generico data-path è costituito da una sequenza di operazioni eseguite in cascata: questa struttura si presta molto bene al frazionamento Una architettura in cui sono presenti registri con lo scopo di frazionare la computazione viene detta pipeline Nelle architetture dei calcolatori lintroduzione di pipeline aumenta il numero di istruzioni eseguite nellunità di tempo
Pipelining Il blocco funzionale F calcola loperazione y F(x): In ingresso a F arriva una successione di dati x i In uscita da F viene prodotta una successione di dati y i F(x i ) Lingresso x presenta un ritardo di stabilizzazione pari allintervallo di tempo T x Il blocco funzionale F presenta un ritardo di propagazione pari allintervallo di tempo T La frequenza massima di funzionamento è pertanto: F() y = F(x)x clk
Pipelining Si supponga che la funzione F() possa essere decomposta in due nuove funzioni F 1 () ed F 2 () tali che F 1 () y = F 2 (z out ) = F(x)x F 1 () z in = F 1 (x) R z out = z in In questo modo le funzioni F 1 () e F 2 () vengono calcolate in due cicli di clock successivi La durata di un ciclo di clock può quindi essere ridotta rispetto al caso precedente Per aumentare la frequenza di funzionamento si introduce un registro detto registro di pipeline:
Pipelining Nel primo ciclo di clock: Si deve attendere la stabilizzazione di x Viene calcolata la funzione F 1 (x) Nel secondo ciclo di clock: Il valore z in viene memorizzato nel registro e quindi propagato in z out Viene calcolata la funzione F 2 (z out ) I ritardi nei due cicli di clock sono: Primo ciclo: T x + T 1 Secondo ciclo: T R + T 2 La frequenza massima di funzionamento è quindi:
Pipelining Tale valore indica la frequenza reale. Sotto le seguenti ipotesi: Dati stabili e registri efficienti: T x << T 1 ; T R << T 2 Scomposizione efficiente: T T 1 + T 2 Fasi bilanciate: T 1 T 2 Il valore della frequenza viene detto ideale ed è:
Applicazione del pipelining alle CPU Lesecuzione di una istruzione assembler consiste nello svolgimento di alcune operazioni in sequenza E possibile scomporre una istruzione in un numero variabile di operazioni: Una scelta comune consiste nella decomposizione in 5 operazioni Alcune architetture prevedono una decomposizione in 8 operazioni Le architetture moderne arrivano fino a 13 operazioni Le varie operazioni, dette fasi o stadi, possono essere eseguite: Nello stesso ciclo di clock In cicli di clock successivi Nel secondo caso si parla di una architettura pipeline
Applicazione del pipelining alle CPU Architettura tipica con 3 pipeline: Floating-point pipeline Integer pipeline Branch pipeline Load Dispatch Hazards Unit Register File Floating-point pipeline - 8 phases Integer pipeline - 5 phases Branch pipeline - 3 phases
Riepilogo Parametri di CONFRONTO
Test di autovalutazione unità 1) Quale è la relazione esistente fra tempo di esecuzione di una applicazione e la sua prestazione? –A) la prestazione è linverso del tempo di esecuzione –B) la prestazione coincide con il tempo di esecuzione –C) la prestazione non dipende dal tempo di esecuzione ma solo dal tipo di programma considerato 2) Supponendo che il numero di completamenti sulla macchina X sia 1.7 volte quello osservato sulla macchina Y. Quale macchina ha il throughput maggiore e di quanto? –A: il throughput di Y è il 70% maggiore di quello di X –B: il throughput di X è il 70% maggiore di quello di Y –C: il throughput di X è il 170% maggiore di quello di Y 3) La scelta di un particolare programma di prova nel confronto fra due macchine –A: può influenzare la decisione circa la macchina più veloce –B: influenza essenzialmente la durata del processo di misura, ma non è in grado di modificare la decisione circa quale sia la più veloce –C: deve cambiare possibilmente di anno in anno, in modo da mantenere gli stessi valori medi delle prestazioni