Tipo Documento: unità didattica 3 Modulo 7 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 nell’esecuzione delle istruzioni Circuiti pipeline Uso del pipelining in un processore
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 dell’insieme istruzioni numero istruzioni architettura set istruzioni e tecnologia dei compilatori Non è possibile ottimizzare separatamente i vari termini poiché le tecnologie che li influenzano sono fortemente correlate
Prospettiva storica Fino agli anni ’70 si è lavorato principalmente Migliorando le tecnologie elettroniche Potenziando l’insieme 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 ‘70-80 si sono diffusi approccio quantivativo al progetto del set di istruzioni abbinato a pipelining Anni ‘90 Parallelismo a livello istruzione (superscalarità e VLIW)
Pipelining: introduzione In una CPU è presente un controllore che pilota il datapath, ovvero lo hardware che effettivamente realizza le istruzioni Un generico data-path è costituito da una sequenza di operazioni eseguite in cascata questa struttura si presta molto bene al frazionamento in sottounità Una architettura in cui sono presenti registri con lo scopo di frazionare la computazione viene detta pipeline Nelle architetture dei calcolatori l’introduzione di pipeline aumenta il numero di istruzioni eseguite nell’unità di tempo
Funzionamento senza pipelining Il blocco funzionale F calcola l’operazione 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 ) L’ingresso x presenta un ritardo di stabilizzazione pari all’intervallo di tempo T x Il blocco funzionale F presenta un ritardo di propagazione pari all’intervallo di tempo T La frequenza massima di funzionamento è pertanto F() y = F(x)x clk
Frazionamento della computazione Si supponga che la funzione F() possa essere decomposta in due nuove funzioni F 1 () ed F 2 (), separate da un registro di pipeline, tali che F 1 () y = F 2 (z out ) = F(x)x F 2 () 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 e possono operare contemporaneamente F1 e F2 sono più semplici rispetto a F: la durata di un ciclo di clock può quindi essere ridotta
Funzionamento con 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:
Prestazioni con pipelining Ipotesi semplificative 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 massima (ideale) di funzionamento diviene Nel caso più generale in cui la scomposizione di F sia fatta tramite n stadi si avrà E’ possibile quindi fare funzionare il sistema con un clock n volte più veloce, ovver avere prestazioni n volte superiori
Interazione Domanda: nell’ambito del pipelining, dire quale sia l’importanza/impatto dei fattori sottoriportati Influenza elevata Bilanciamento nelle attività svolte dalle varie fasi Disponibilità di una tecnologia microelettronica in grado di andare con clock più veloci Numero di fasi usati nella scomposizione della F originaria Complessità nella progettazione del sistema Influenza bassa o nulla Numero di bit dei dati Numero di ingressi nel primo stadio della pipe Numero dei bit di uscita Funzionamento del compilatore
Applicazione del pipelining alle CPU L’esecuzione di una istruzione macchina 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 operazioni (superpipelining)
Riepilogo Il pipelining scompone le operazioni in fasi o stadi da eseguire parallelamente in cicli di clock successvi Le prestazioni del sistema, teoricamente, posso aumentare di un fattore pari al numero di stadi che compongono la pipe La progettazione di circuiti pipeline efficienti è complessa e richiede anche una tecnologia microelettronica in grado di fuzionare a frequenze più elevate Fattori che influenzano le prestazioni ciclo di clock, cicli di clock per istruzione e numero istruzioni Non è possibile ottimizzare separatamente i vari termini
CPU con pipelining 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
Test di autovalutazione unità -1 Sotto le seguenti ipotesi, calcolare la frequenza massima di funzionamento della pipe Ritardo nel calcolo di F pari a100 ns Scomposizione in 4 stadi F1, F2, F3, F4 fra ritardi rispettivamente di 20, 15, 50 e 15 ns Tempo di assestamento del segnale di ingresso e di propagazione del registro trascurabile GIUSTO Sbagliato
Test di autovalutazione unità - 2, 3 2) All’interno di una CPU, il pipelining viene efficacemente impiegato per? –A) Diminuire il consumo di potenza –B) Ridurre il numero dei registri al fine di avere circuiti più semplici e veloci –C) Rendere più efficiente la fase di esecuzione delle istruzioni 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