Pipeline. Introduzione alle pipeline. Approccio con pipeline. Metafora del bucato. Approccio con pipeline (2) Istruzioni MIPS

Documenti analoghi
Un quadro della situazione. Cosa abbiamo fatto. Lezione 29 La Pipeline. Dove stiamo andando.. Perché: Università degli Studi di Salerno

Corso di Architettura (Prof. Scarano) 09/06/2002

Cosa abbiamo fatto. Dove stiamo andando.. Perché: per poter capire cosa deve offrire al programmatore il processore come istruzioni

Il processore: unità di elaborazione e unità di controllo (3)

Calcolatori Elettronici

Astrazione dell implementazione. Il processore: unità di elaborazione e unità di controllo (2) Il controllo della ALU.

Organizzazione pipeline della CPU

CALCOLATORI ELETTRONICI B 23 giugno 2008

Calcolatori Elettronici

Controllo di un processore a singolo ciclo

Calcolatori Elettronici A a.a. 2008/2009

La pipeline. Sommario

La pipeline. Sommario

L'architettura del processore MIPS

Gestione degli hazard

Calcolatori Elettronici B a.a. 2008/2009

Pipelining: Unità di Elaborazione e di Controllo Barbara Masucci

u Rappresentazione dell informazione all interno di un calcolatore

Architettura degli Elaboratori Lez. 8 CPU MIPS a 1 colpo di clock. Prof. Andrea Sterbini

Problemi del ciclo singolo

Richiami sull architettura del processore MIPS a 32 bit

Stall on load e Hazard sul controllo

La codifica delle immagini

Instruction Level Parallelism Andrea Gasparetto

CPU pipeline hazards

Lezione 28. Sistemi dinamici a tempo discreto (approccio in variabili di stato) F.Previdi - Fondamenti di Automatica - Lez. 28

CALCOLATORI ELETTRONICI 25 giugno 2018

Capitolo 5 Struttura di base del processore

Architettura degli Elaboratori Gestione dei control-hazard nella pipeline. Prof. Andrea Sterbini

Stall on load e Hazard sul controllo. Sommario

Richiami sull architettura del processore MIPS a 32 bit

Stall on load e Hazard sul controllo

Architetture dei Calcolatori (Lettere. Organizzazione di un Calcolatore. Processore. Il Processore. Livello 1: Macchina Firmware Microarchitettura

Architetture dei Calcolatori (Lettere. Organizzazione di un Calcolatore. Processore. Il Processore. Livello 1: Macchina Firmware Microarchitettura

Architettura dei calcolatori e sistemi operativi. Pipelining e Hazard Capitolo 4 P&H

Problemi dell implementazione singolo ciclo

Lezione 28 Il processore: unità di controllo (1)

Unità di controllo della pipeline

Calcolatori Elettronici

CALCOLATORI ELETTRONICI 14 giugno 2010

Corso di. Realizzazione del Data path Data path a ciclo singolo. Anno Accademico 2006/2007 Francesco Tortorella

Pipeline criticità e forwarding

Esercitazione del 05/05/ Soluzioni

Calcolatori Elettronici

La rappresentazione delle Informazioni

Sommario. Gestione delle criticità sui dati nella pipeline. CPU con pipeline. Criticità nei dati. Hazard nei dati: soluzione tramite compilatore

CALCOLATORI ELETTRONICI 30 agosto 2010

CALCOLATORI ELETTRONICI 9 settembre 2011

Realizzazione a cicli di clock multipli

CPU pipeline 3 criticità di dati e di controllo

Architettura dei calcolatori e sistemi operativi. Il processore pipeline Capitolo 4 P&H

Esercitazione su Instruction Level Parallelism

Architettura degli elaboratori - II Le architetture multi-ciclo

CALCOLATORI ELETTRONICI 29 giugno 2015

CALCOLATORI ELETTRONICI 9 gennaio 2013

Architettura degli Elaboratori. Classe 3 Prof.ssa Anselmo. Pre-appello del 12 Gennaio Attenzione:

Architettura degli elaboratori CPU a ciclo singolo

CPU a singolo ciclo. Lezione 18. Sommario. Architettura degli Elaboratori e delle Reti. Proff. A. Borghese, F. Pedersini

Processore. Memoria I/O. Control (Parte di controllo) Datapath (Parte operativa)

Come si definisce il concetto di performance? Tempo di esecuzione di un programma. numero di task/transazioni eseguiti per unità di tempo

Una CPU multi-ciclo. Sommario

CPU pipeline 4: le CPU moderne

LA RICERCA DEI GUASTI NEI CIRCUITI COMBINATORI

Architettura dei sistemi di elaborazione: La CPU: Architettura (parte 2)

Esercitazione su Instruction Level Parallelism Salvatore Orlando

Introduzione all'architettura dei Calcolatori. Maurizio Palesi

Architettura degli Elaboratori. Classe 3 Prof.ssa Anselmo. Appello del 22 giugno Attenzione:

Un sistema di numerazione decimale...

CALCOLATORI ELETTRONICI 27 marzo 2018

1) Codici lineari a blocchi. 2) Matrice generatrice del codice. 3) Proprietà dei codici lineari a blocchi. 4) Matrice di controllo di parità

Matematica Computazionale(6cfu) Ottimizzazione(8cfu) (a.a , lez.7)

CPU a singolo ciclo. Lezione 18. Sommario. Architettura degli Elaboratori e delle Reti

Progettazione dell unità di elaborazioni dati e prestazioni. Il processore: unità di elaborazione. I passi per progettare un processore

Architettura degli Elaboratori. Classe 3 Prof.ssa Anselmo. Appello del 18 Febbraio Attenzione:

Architettura degli elaboratori CPU a ciclo singolo

Cicli di clock e istruzioni

Stall on load. Sommario

Hazard sul controllo. Sommario

Calcolatori Elettronici B a.a. 2004/2005

Il pipelining: tecniche di base

Il pipelining: tecniche di base

CALCOLATORI ELETTRONICI 15 giugno 2015

Il processore: unità di elaborazione

Progetto CPU a singolo ciclo

L unità di controllo di CPU a singolo ciclo

A UNIVERSITÀ DEGLI STUDI ROMA TRE Corso di Studi in Ingegneria Informatica Ricerca Operativa 1 Seconda prova intermedia 13 giugno 2011

Architettura del calcolatore (Seconda parte)

CALCOLATORI ELETTRONICI 27 giugno 2017

Calcolatori Elettronici B a.a. 2004/2005

L unità di controllo di CPU a singolo ciclo

La pipeline. Sommario

Un quadro della situazione. Lezione 15 Il Set di Istruzioni (2) Le operazioni e gli operandi. Dove siamo nel corso. Cosa abbiamo fatto

La pipeline. Sommario

Calcolatori Elettronici B a.a. 2005/2006

La pipeline. Luigi Palopoli

Il set istruzioni di MIPS Modalità di indirizzamento. Proff. A. Borghese, F. Pedersini

Un quadro della situazione. Cosa abbiamo fatto. Lezione 30 Valutazione delle Prestazioni. Dove stiamo andando.. Perché:

Esercizio 1. Esercizio 2. min. Esercizio 3

Architettura degli Elaboratori. Classe 3 Prof.ssa Anselmo. Pre-appello del 17 Gennaio Attenzione:

Transcript:

Introdzione alle pipeline Pipeline Le pipeline rappresentano na variante all nità di elaborazione a singolo ciclo. Francesco Paolo Landolfo Francesca Della Corte 52 522 Prevedono la sovrapposizione temporale dell eseczione di diverse istrzioni. Sono la chiave s ci si basa la velocità dei calcolatori. 2 etafora del bcato Approccio con pipeline Chinqe abbia avto a che fare con il bcato ha già tilizzato intitivamente la tecnica delle pipeline Approccio al bcato di tipo classico:. ettere n carico di abiti sporchi nella lavatrice 2. Qando la lavatrice ha finito mettere il carico bagnato nell ascigatrice. 3. Qando l ascigatrice ha finito, mettere il carico ascitto sll asse da stiro e stirarlo.. Dopo aver finito di stirare riporre gli abiti nell armadio Al termine di qeste operazioni si potrà ricominciare con il prossimo carico di panni sporchi. 3 Richiede molto meno tempo. Appena la lavatrice ha terminato il primo carico e qesto è stato trasferito nella ascigatrice, si pò riempire la lavatrice con il secondo carico di panni sporchi. Qando il primo carico è ascitto, lo si pone sll asse da stiro per stirarlo, si sposta il carico bagnato nell ascigatrice ed il sccessivo carico sporco nella lavatrice. Si ripongono nell armadio gli abiti del primo carico mentre parte la stiratra del secondo carico, con il terzo carico nell ascigatrice ed il qarto nella lavatrice. Risltato: ttti i passi stanno lavorando in contemporanea. Time Task A B C D 6 P 7 8 9 2 2 A 6 P 7 8 9 2 2 A Time Task A B C D Approccio con pipeline (2) Qando si parla di pipeline i passi vengono detti stadi. Prchè si abbiano risorse separate per ciascno stadio, le operazione possono essere poste in pipeline. Le pipeline non ridcono il tempo necessario per l eseczione di n istrzione, ma semplicemente velocizzano le eseczioni ponendole in parallelo. L efficacia delle pipeline si apprezza maggiormente qando si ha a che fare con n gran nmero di istrzioni. 5 Istrzioni IPS Le istrzioni IPS richiedono tipicamente 5 passi:. Prelievo dell istrzione dalla memoria 2. Lettra dei registri e decodifica dell istrzione 3. Eseczione dell operazione o calcolo dell indirizzo. Accesso ad n operando nella memoria dati 5. Scrittra del risltato in n registro Idea: mettere in parallelo l eseczione dei singoli passi relativi a più istrzioni. Risltato: la nostra pipeline avrà 5 stadi. 6

Set di istrzioni orientati alle architettre con pipeline Il IPS è stato progettato espressamente per l eseczione con processori dotati di pipeline. Ttte le istrzioni IPS hanno la stessa lnghezza: ciò semplifica il prelievo delle istrzioni e la loro decodifica. Nmero ridotto di formati delle istrzioni e posizione costante dei registri sorgente: permette al secondo stadio di leggere il register file mentre il circito determina il tipo dell istrzione. Gli operandi di tipo memoria possono comparire soltanto nelle istrzioni di load e di store. Si pò sare lo stadio di eseczione per calcolare l indirizzo di memoria accedendo alla memoria nello stadio sccessivo. 7 Criticità sll so di pipeline Sitazioni in ci l istrzione sccessiva non pò essere esegita nel ciclo di clock segente. Esistono tre tipi di criticità: Criticità strttrali; Criticità sl controllo; Criticità si dati. 8 Criticità strttrali Criticità sl controllo Le risorse hardware presenti non sono in grado di spportare la combinazione di istrzioni che si vorrebbe esegire nello stesso ciclo di clock. Analogia con il bcato: n nica macchina lavatrice/ascigatrice anziché de macchine separate. Pipeline: disporre di na sola memoria anziché di de. Necessità di dover compiere alcne scelte in fnzione del risltato di n istrzione mentre altre istrzioni sono in eseczione. Analogia con il bcato: lavare le divise di na sqadra di calcio e, a seconda di qanto siano sporche, determinare la qantità di detersivo e la temperatra dell acqa. eection 2 6 8 2 6 8 Time lw $, ($) lw $2, 2($) 8 ns lw $3, 3($) 8 ns... 8 ns eection 2 6 8 2 Time lw $, ($) lw $2, 2($) 2 ns lw $3, 3($) 2 ns 2 ns 2 ns 2 ns 2 ns 2 ns Se vi fosse na qarta istrzione, nello stesso ciclo di clock la prima istrzione dovrebbe accedere ai dati nella memoria, mentre la qarta istrzione dovrebbe essere reperita dalla memoria stessa. 9 Necessario attendere il completamento del secondo stadio Esistono de solzioni alle criticità sl controllo:. Stallo; 2. Predizione. Criticità sl controllo - Stallo Criticità sl controllo - Predizione Analogia con il bcato: lavorare in modo seqenziale fino a qando il primo carico è ascitto e se il risltato ottento non è qello desiderato ripetere il ciclo finché non si ottiene la combinazione corretta. Corretta ma lenta. L eqivalente nel nostro caso è l istrzione di salto condizionato. Sospendere l eseczione mediante pipeline procedendo in modo seqenziale fino a terminare l istrzione di salto. eection 2 6 8 2 6 Time add $, $5, $6 beq $, $2, 2ns lw $3, 3($) ns 2ns L istrzione lw, esegita se il salto non viene effettato, viene posta in stato d attesa per n ciclo di clock della drata di de nanosecondi. Rallentamento ancora maggiore se l esito dell istrzione di salto non si pò decidere nel secondo stadio. Costo troppo elevato Analogia con il bcato: se si è qasi sicri di conoscere la gista combinazione per lavare le divise, si assme di essere in grado di fare na predizione corretta e si lava il secondo carico mentre il primo si asciga: Predizione corretta: nessn rallentamento; Predizione errata: ripetere la lavorazione del carico che era stato lavato slla base della predizione. Tecnica effettivamente tilizzata dai calcolatori per gestire i salti condizionati. Esistono diversi approcci: Predire sempre che il salto non venga esegito: in caso di predizione corretta la pipeline procede al massimo della velocità, altrimenti si verifica no stallo; Predire alcni salti come esegiti ed altri come non esegiti: ad esempio si pò predire che i salti verso indirizzi minori verranno esegiti (rappresentano dei cicli); Predizione dinamica: scegliere la predizione da fare in fnzione del comportamento di ciascna istrzione di salto slla base di no storico. 2 2

Criticità si dati Unità di elaborazione con pipeline Analogia con il bcato: si spponga di dover riporre n carico che è composto prevalentemente da calzini e che il calzino corrispondente a ciascno di qelli del carico corrente è stato posto in n altro carico ancora nella lavatrice IF: ID: decode/ register file read EX: Eecte/ address calclation E: emory : back I calzini non possono essere riposti nell armadio fino a che il secondo carico non è terminato. Nel nostro caso, n istrzione dipende dal risltato di n istrzione precedente che si trova ancora nella pipeline Es: add $s,$t, $t sb $t2, $s, $t3 l istrzione add non scrive il proprio risltato prima del 5 stadio per ci si dovrebbero aggingere tre bchi alla pipeline. Solzione più tilizzata non è necessario attendere il termine dell istrzione: Non appena la ALU genera il risltato della somma qesto viene sato come ingresso per l operazione di sottrazione. Si prende in anticipo il dato mancante attingendo alle risorse interne.(propagazione o scavalcamento) ress register register 2 isters 2 register 6 32 etend Nell immagine è riportata l nità di elaborazione a singolo ciclo. La sddivisione di n istrzione in 5 fasi implica na pipeline a 5 stadi. reslt Zero ALU ALU reslt ress 3 Stadi della pipeline Occorre separare l nità di elaborazione in 5 parti: IF: prelievo dell istrzione; ID: decodifica dell istrzione; EX: eseczione o calcolo dell indirizzo; E: o alla memoria dei dati; : scrittra del risltato. Drante l eseczione istrzioni e dati si spostano, generalmente, da sinistra a destra attraverso le 5 fasi. Vi sono de eccezioni al flsso di istrzioni: Lo stadio di scrittra del risltato pone il risltato nel register file; La selezione del valore sccessivo del, scelto tra il valore del incrementato e l indirizzo di salto(proveniente dallo stadio E). Cosa sccede nell eseczione con pipeline? Ipotizziamo che ciascna istrzione disponga della propria nità di elaborazione, sistemando tale nità lngo l asse dei tempi per visalizzarne le relazioni. lw $2, 2($) lw $3, 3($) Time (in clock cycles) CC CC 2 CC 3 CC CC 5 CC 6 CC 7 eection lw $, ($) I D I D I D 5 6 Cosa sccede nell eseczione con pipeline?(2) Per memorizzare il valore dell istrzione letta dalla memoria a beneficio degli altri stadi, occorrerà salvarlo in n registro. Considerazioni analoghe valgono per ttti gli stadi della pipeline. Per qesto motivo occorrerà aggingere dei registri ogniqalvolta vi siano delle linee di divisione tra gli stadi. Analogia con la lavanderia: cestino tra ciascna coppia di stadi per contenere i panni destinati al passo sccessivo. Stadi pipeline Prelievo dell istrzione: l istrzione viene letta dalla memoria tilizzando come indirizzo e viene posta nel registro di pipeline IF/ID. L indirizzo contento nel registro viene incrementato di e riscritto sia in che nel registro di pipeline IF/ID (potrebbe essere richiesto da n istrzione sccessiva es. BEQ). IF/ID ID/EX EX/E E/ reslt ress register register 2 isters 2 register Zero ALU ALU reslt ress 6 32 etend 7 8 3

Stadi pipeline (2) Stadi pipeline load Decodifica dell istrzione e lettra del register file: la parte inferiore del registro di pipeline IF/ID fornisce il campo di 6 bit ed i nmeri dei de registri da leggere. I tre valori sono memorizzati nel registro di pipeline ID/EX insieme al valore incrementato di. Eseczione o calcolo dell indirizzo: l istrzione load legge dal registro di pipeline ID/EX il contento del registro ed il valore immediato, esteso con segno, e li somma tilizzando la ALU. Il valore della somma è posto nel registro di pipeline EX/E lw Eection IF/ID ID/EX EX/E E/ reslt ress register register 2 isters 2 register Zero ALU ALU reslt ress 6 32 etend NOTA: qesti de stadi sono comni a ttte le istrzioni!! 9 2 Stadi pipeline load Stadi pipeline load Accesso alla memoria: l istrzione load legge la memoria dei dati tilizzando come indirizzo il valore letto dal registro di pipeline EX/E. Il dato letto viene caricato nel registro di pipeline E/. Scrittra del risltato: il passo finale è la lettra del dato dal registro di pipeline E/ e la scrittra dello stesso nel register file 2 22 Stadi pipeline - store Stadi pipeline - store Eseczione e calcolo dell indirizzo: l indirizzo dell operando viene posto nel registro di pipeline EX/E sw Eection Accesso alla memoria: il registro che contiene il dato da dover scrivere è stato letto in no stadio precedente ed il relativo valore memorizzato nel registro ID/EX. L nico modo per rendere il dato disponibile drante lo stadio E è qello di memorizzarlo nel registro di pipeline EX/E drante lo stadio EX. IF/ID ID/EX EX/E E/ reslt ress register register 2 isters 2 register Zero ALU ALU reslt ress 6 32 etend 23 2

Stadi pipeline - store Scrittra del risltato: Nel caso della store non sccede nlla!!!! Un istrzione deve passare in no stadio anche se non vi è nlla da fare poiché le istrzioni sccessive stanno già procedendo alla massima velocità possibile. Stadi pipeline - conclsioni Per passare n valore da no stadio iniziale della pipeline ad no sccessivo è necessario memorizzarlo in n registro di pipeline, altrimenti l informazione verrebbe persa. Ciascn componente logico dell nità di elaborazione pò essere sato in n solo stadio della pipeline, altrimenti si avrebbe na criticità strttrale. Errore nel progetto dell istrzione load: Chi ci dice il nmero del registro da scrivere? Così come la store ha inviato il contento del registro dal registro di pipeline ID/EX al registro EX/E, anche la load deve fare lo stesso per il nmero del registro affinché possa tilizzarlo nello stadio. IF/ID ID/EX EX/E E/ reslt ress register register 2 isters 2 register Zero ALU ALU reslt ress 6 32 etend 25 26 Unità di controllo con pipeline Vogliamo aggingere l nità di controllo all nità di elaborazione con pipeline. Si partirà con n progetto semplificato che ignora la reale complessità del problema. Realizzazione dell nità di controllo Il primo passo consiste nell etichettare i segnali di controllo dell nità di elaborazione esistente. IF/ID ID/EX EX/E E/ reslt Branch Src Si approfondirà l analisi prendendo in considerazione le difficoltà esistenti nel progetto di n sistema reale. ress register register 2 isters 2 register ALUSrc Zero ALU ALU reslt em ress emto [5 ] 6 32 etend 6 ALU control em 27 [2 6] [5 ] ALUOp Dst 28 Realizzazione dell nità di controllo (2) Realizzazione dell nità di controllo (3) Si assme che il registro venga scritto ad ogni ciclo di clock non vi sarà alcn segnale di controllo per la scrittra di tale registro. Non vi saranno segnali di scrittra espliciti per i registri di pipeline, essendo scritti ad ogni ciclo di clock. Per definire l nità di controllo con pipeline è sfficiente calcolare i valori dei segnali di controllo in ciascno stadio. Poiché ciascna linea di controllo è associata ad n componente e qesto è attivo in n solo stadio della pipeline si possono dividere i segnali di controllo in 5 grppi, secondo il relativo stadio. Prelievo dell istrzione: i segnali di controllo per leggere la memoria delle istrzioni e per scrivere il sono sempre affermati nlla da controllare in qesto stadio. Decodifica dell istrzione/lettra del register file: ad ogni ciclo di clock avviene sempre la stessa cosa non vi sono segnali di controllo da calcolare. Eseczione/calcolo dell indirizzo: i segnali da calcolare sono Dst, ALUOp e ALUSrc; essi selezionano il registro risltato, l operazione della ALU e scelgono il dato da inviare alla ALU tra Dato letto 2 e l immediato esteso con segno. 29 3 5

Realizzazione dell nità di controllo () Realizzazione dell nità di controllo (5) Accesso alla emoria: i segnali da calcolare sono Branch, em e em (affermati, rispettivamente, nelle istrzioni branch eqal, load e store). Il segnale Src seleziona l indirizzo sccessivo a meno che non si affermi il segnale Branch ed il risltato della ALU valga. Scrittra del risltato: i segnali di controllo da calcolare sono emto (sceglie se inviare al register file l scita della ALU oppre il valore proveniente dalla memoria) e (scrive il valore selezionato). Per implementare l nità di controllo occorre forzare i nove segnali identificati ai valori corretti in ciascno stadio e per ciascna istrzione estendere i registri di pipeline in La segente figra riporta l nità di elaborazione completa dei registri di pipeline estesi e dei segnali di controllo connessi allo stadio opportno: [2 6] ALUOp [5 ] Dst modo da incldere le informazioni di controllo. 3 32 ress Src IF/ID register register 2 isters register Control 2 6 32 [5 ] etend ID/EX EX 6 ALU control reslt ALUSrc Zero ALU ALU reslt EX/E Branch ress em em E/ emto Criticità si dati e propagazione Analisi delle dipendenze Nel progetto iniziale di nità di controllo per pipeline non è stato previsto il caso in ci n istrzione necessiti dei risltati calcolati da n altra ancora in eseczione. Ecco na seqenza di istrzioni con molte dipendenze: sb $2, $, $3 # sb scrive nel registro $2 and $2, $2, $5 # il primo operando $2 dipende da sb or $3, $6, $2 # il secondo operando $2 dipende da sb add $, $2, $2 # il primo ed il secondo operando dipendono da sb sw $5 ($2) # la base più $2 dipende da sb Si avrebbe na sitazione simile a qella descritta in figra: Time (in clock cycles) Vale of CC CC 2 CC 3 CC CC 5 CC 6 CC 7 CC 8 CC 9 register $2: / 2 2 2 2 2 eection sb $2, $, $3 I D and $2, $2, $5 I D or $3, $6, $2 I D Come si comporterebbe la seqenza se venisse esegita slla pipeline descritta???? add $, $2, $2 I D sw $5, ($2) I D 33 3 Come risolvere le criticità Come risolvere le criticità (2) Progettare opportnamente l hardware che implementa il register file. Qando n registro viene letto e scritto nello stesso ciclo di clock si deve garantire che la scrittra avvenga nella prima metà e la lettra nella seconda metà la lettra fornisce il valore che è stato scritto, risolvendo la criticità si dati. Ritornando al nostro esempio, notiamo che i valori letti dal registro $2 non possono essere qelli prodotti dall istrzione sb, a meno che l operazione di lettra non avvenga drante il qinto ciclo di clock o nei sccessivi add ed sw leggono il valore corretto, mentre and ed or qello scorretto. È necessario accorgersi della criticità per poi propagare il valore corretto in avanti in modo da risolvere la criticità. Qando n istrzione cerca di leggere nel proprio stadio EX n registro che na precedente istrzione scrive nel proprio stadio, è necessario disporre dei valori sgli ingressi della ALU. Utilizzare na notazione che assegna dei nomi ai campi dei registri di pipeline. Esempio: ID/EX.istroRs fa riferimento al nmero di n registro il ci valore si trova nel registro di pipeline ID/EX. La prima parte del nome indica il registro di pipeline. La seconda parte corrisponde al nome del campo all interno del registro. 35 36 6

Come risolvere le criticità (3) Come risolvere le criticità () Pertanto, tilizzando qesta notazione le de coppie di condizioni che generano na criticità si possono esprimere come sege: EX/E.istroRd = ID/EX.istroRs EX/E.istroRd = ID/EX.istroRt E/.istroRd = ID/EX.istroRs E/.istroRd = ID/EX.istroRt Nel nostro esempio, la prima criticità era relativa al registro $2 e si verificava tra le scrittra del risltato dell istrzione sb e l operazione di lettra del primo operando dell istrzione and. Tale criticità pò essere rilevata qando l istrzione and si trova nello stadio EX e l istrzione precedente si trova nello stadio E criticità del primo tipo. 37 Poiché non ttte le istrzioni scrivono nei registri qesta solzione non è precisa propaga dei valori anche qando non è necessario. Solzione: verificare se il segnale è attivo. Ora che siamo in grado di rilevare le criticità metà del problema è risolto: si deve solo cercare di propagare i valori corretti. Le istrzioni sccessive devono prendere il valore di ci necessitano direttamente dai registri di pipeline e darlo in ingresso alla ALU non è affatto necessario dover attendere lo stadio. 38 Propagazione dei valori I dati necessari sono disponibili in tempo tile per le istrzioni sccessive ed i registri di pipeline contengono i dati che devono essere propagati. Time (in clock cycles) CC CC 2 CC 3 CC CC 5 CC 6 CC 7 CC 8 CC 9 Vale of register $2 : / 2 2 2 2 2 Vale of EX/E : X X X 2 X X X X X Vale of E/ : X X X X 2 X X X X Propagazione dei valori (2) Se gli ingressi della ALU possono essere presi da qalnqe registro di pipeline, e non solo da ID/EX, è possibile propagare i dati corretti. eection sb $2, $, $3 I and $2, $2, $5 I D D Aggingere dei mltipleer sgli ingressi della ALU e tilizzare gli opportni segnali di controllo. In qesto modo sarà possibile scegliere tra i valori provenienti dal register file e qelli propagati. or $3, $6, $2 add $, $2, $2 I D I D Risltato: la pipeline fnziona alla velocità massima anche in presenza di dipendenze!!! sw $5, ($2) I D 39 Criticità EX: condizioni e segnali Criticità E: condizioni e segnali Condizioni: (EX/E.) EX/E.istroRd EX/E.istroRd = ID/EX.istroRs Azione: Propaga A = Condizioni: (EX/E.) EX/E.istroRd EX/E.REgistroRd = ID/EX.istroRt Azione: Propaga B = Il ltipleer viene pilotato in maniera da prelevare il valore dal registro di pipeline EX/E Condizioni: (E/.) E/.istroRd E/.REgistroRd = ID/EX.istroRs Azione: Propaga A = Condizioni: (E/.) E/.istroRd E/.REgistroRd = ID/EX.istroRt Azione: Propaga B = Il ltipleer viene pilotato in maniera da prelevare il valore dal registro di pipeline E/ 2 7

Ancora slle criticità Criticità si dati e sitazioni di stallo Non vi pò essere criticità nello stadio, in qanto si assme che il register file fornisca il risltato corretto se l istrzione nello stadio ID legge lo stesso registro scritto dall istrzione nello stadio. Possibile fonte di problema: criticità si dati tra il risltato di n istrzione nello stadio, il risltato di n istrzione nello stadio E e l operando sorgente di n istrzione nello stadio ALU. Esempio: si somma n vettore di nmeri e si scrive il risltato in n singolo registro seqenza di istrzioni che leggono e scrivono nello stesso registro. add $, $, $2 add $, $, $3 add $, $, $. Il risltato viene propagato dallo stadio E dal momento che il risltato presente nello stadio E è il più recente 3 Un caso nel qale la propagazione non pò risolvere ttti i problemi è qello in ci n istrzione tenti di leggere n registro sbito dopo n istrzione di load che scrive nello stesso registro. Drante il qarto ciclo, il dato deve ancora essere letto dalla memoria qando la ALU si appresta ad esegire l operazione prevista dall istrzione sccessiva. Qalcosa deve mandare in stallo la pipeline. È necessario disporre, oltre che di n nità di propagazione, anche di na nità di rilevamento delle criticità. Qesta deve operare drante lo stadio ID inserendo lo stallo tra il caricamento e l tilizzo. Criticità si dati e sitazioni di stallo(2) Criticità si dati e sitazioni di stallo(3) Poiché si limita a controllare le istrzioni load, il controllo esegito dall nità di rilevamento delle criticità coincide con la segente semplice condizione: ID/EX.em verifica se l istrzione è na load, nica a leggere dati dalla memoria. ID/EX.istroRt = IF/ID.istroRs e ID/EX.istroRt = IF/ID.istroR verificano se il campo registro destinazione della load nello stadio EX coincide con no dei registri sorgente dell istrzione nello stadio ID. Se la condizione è verificata, l istrzione viene messa in stallo per n periodo di clock. Dopo qesto stallo di n ciclo, la logica di propagazione pò gestire la dipendenza e l eseczione pò procedere, senza dover attendere n lteriore ciclo di clock. 5 Se l istrzione nello stadio ID è messa in stallo, allora anche l istrzione nello stadio IF deve essere messa in tale stato, altrimenti si perderebbe l istrzione già caricata. Ciò pò essere realizzato semplicemente impedendo al registro e al registro di pipeline IF/ID di cambiare. In qesto modo, l istrzione nello stadio IF contina ad essere letta tilizzando lo stesso, ed i registri nello stadio ID continano ad essere letti tilizzando gli stessi campi istrzione nel registro IF/ID. 6 Criticità si dati e sitazioni di stallo() Identificando la criticità nello stadio ID si pò inserire nella pipeline n bco mettendo a i campi di controllo EX, E e del registro di pipeline ID/EX. Qesti valori di controllo si diffondono poi in avanti nella pipeline ad ogni colpo di clock, prodcendo i loro effetti: Se i valori dei segnali di controllo sono ttti a non si esegono scrittre in alcn registro o parola di memoria. Criticità si dati e sitazioni di stallo(5) Le istrzioni and e or devono ripetere nel ciclo di clock nmero ciò che avevano fatto nel ciclo di clock nmero 3 ripetere del lavoro allngare il tempo delle istrzioni ritardare il caricamento dell istrzione add. eection lw $2, 2($) and $, $2, $5 or $8, $2, $6 add $9, $, $2 Time (in clock cycles) CC CC 2 CC 3 CC CC 5 CC 6 I I I D D I D bbble CC 7 CC 8 CC 9 CC I D slt $, $6, $7 I D 7 8 8

In conclsione Criticità si salti L nità di propagazione controlla i mltipleer della ALU per sostitire il valore proveniente da n registro generalprpose con il valore proveniente dall opportno registro di pipeline. L nità di rilevamento delle criticità controlla la scrittra del e dei registri IF/ID, oltre al mltipleer che sceglie tra i valori reali di controllo e ttti zero. L nità di rilevamento delle criticità mette in stallo e deseleziona i campi di controllo se la condizione di criticità slla load è verificata. Vi sono anche criticità della pipeline che coinvolgono i salti condizionati. Per alimentare la pipeline è necessario caricare n istrzione per ogni colpo di clock, ma nell attale progetto le decisioni relative ai salti condizionati vengono presi nello stadio E della pipeline. Tale ritardo nella determinazione dell istrzione da caricare viene denominato criticità sl controllo o criticità si salti condizionati. Tali criticità sono relativamente semplici da capire, si verificano molto meno freqentemente e non vi è nlla che rislti così efficace per la risolzione delle criticità sl controllo come lo è la propagazione nei confronti delle criticità si dati. Verranno proposti de schemi per la risolzione delle criticità sl controllo ed n ottimizzazione che permette di migliorare tali schemi. 9 5 Ipotizzare che il salto condizionato non sia esegito Restare in stallo sino a che il salto condizionato non è stato completato fa perdere toppo tempo. Tecnica freqentemente sata: assmere che il salto non debba essere esegito e continare l eseczione secondo il normale flsso delle istrzioni. Se poi il salto viene esegito, allora le istrzioni che si stanno caricando e decodificando devono venire scartate e l eseczione riprende dall istrzione corrispondente alla destinazione del salto. Se i salti non sono esegiti nella metà dei casi e se costa poco scartare le istrzioni, qesta ottimizzazione dimezza il costo delle criticità sl controllo. Per scartare le istrzioni ciò che si deve fare è semplicemente cambiare i valori dei segnali di controllo forzandoli a. Si devono anche cambiare le tre istrzioni presenti negli stadi IF, ID ed EX qando il salto ragginge lo stato E. Ridrre i ritardi associati ai salti condizionati Un modo per migliorare le prestazioni consiste nel ridrre il costo nel caso in ci il salto venga esegito. Se si sposta l eseczione del salto più indietro nella pipeline si ridce il nmero di istrzioni che devono essere scartate. Finora, si è sempre assnto che il valore da caricare nel, nel caso di salto condizionato, venga selezionato nello stadio E. Si potrebbe risparmiare n ciclo di clock selezionando l indirizzo di salto già alla fine dello stadio EX. Se si potesse spostare la decisione relativa al salto ancora più indietro nella pipeline, allora sarebbe necessario scartare na sola istrzione. olte implementazioni del processore IPS spostano allo stadio ID l eseczione del salto. 5 52 Ridrre i ritardi associati ai salti condizionati (2) La parte facilmente realizzabile consiste nell anticipare il calcolo dell indirizzo di salto. Infatti, il valore del ed il campo immediato sono già disponibili nel registro IF/ID della pipeline e, qindi, è sfficiente spostare il sommatore per i salti dallo stadio E allo stadio ID. La parte più difficile consiste nella decisione associata al salto stesso. Se il salto è del tipo salta se gale si devono confrontare i de registri letti drante lo stadio ID per verificare se sono gali. Il test di gaglianza pò essere esegito mettendo innanzittto in OR esclsivo i bit corrispondenti, e poi mettendo in AND i risltati. Tale approccio è molto più veloce da tilizzare rispetto alla ALU (esegire la sottrazione e poi verificare se l scita è nlla). Effetti delle pipeline slle istrzioni di salto Poiché l istrzione di salto decide se saltare nello stadio E, le tre istrzioni che segono qella di salto vengono caricate e nell istante in ci si verifica il salto vengono scartate. eection beq $, $3, 7 and $2, $2, $5 8 or $3, $6, $2 52 add $, $2, $2 Time (in clock cycles) CC I CC 2 CC 3 CC CC 5 CC 6 CC 7 CC 8 CC 9 I I D I D D D 72 lw $, 5($7) I D 53 5 9

Ridrre i ritardi associati ai salti condizionati (3) Spostando l eseczione del salto nello stadi ID vi è na sola istrzione da scartare nel casi in ci il salto debba venire esegito (qella che si trova nella fase di caricamento). Per scartare l istrzione nello stadio IF si agginge na linea di controllo, denominata IF.Scarta che azzera il campo istrzione del registro IF/ID della pipeline. In qesto modo, si trasforma l operazione appena caricata in na nop, ossia in n istrzione che non esege nessna operazione in grado di cambiare lo stato del sistema. Unità di elaborazione per i salti L ottimizzazione sposta la decisione relativa al salto dal qarto stadio al secondo IF.Flsh IF/ID Hazard detection nit Control etend isters = ID/EX EX ALU EX/E E/ 55 Forwarding nit 56 Previsione dinamica dei salti condizionati Qando si assme che il salto non debba essere esegito si realizza na forma rozza di previsione dei salti. Se si ha a disposizione dell hardware aggintivo è possibile sperimentare altri schemi di previsione dei salti. Una possibilità consiste nel verificare l indirizzo dell istrzione per controllare se l ltima volta che si era considerata qell istrzione il salto fosse stato esegito: In caso positivo, si caricano le istrzioni sccessive a partire dalla stessa posizione della volta precedente. Implementazione della solzione: tilizzare n bffer di previsione dei salti o tabella di storia dei salti: Si tratta di na piccola memoria indicizzata attraverso la parte bassa dell indirizzo dell istrzione di salto. Contiene n bit che indica se recentemente il salto è stato esegito o meno. Analisi della solzione proposta Si tratta della tipologia di bffer più semplice. Non si sa se la previsione è qella gista: Potrebbe essere relativa ad n altro salto caratterizzato dagli stessi bit per qanto rigarda la parte meno significativa. Ttto ciò non ha effetto slla correttezza dell operazione: La predizione è soltanto n sggerimento che si assme possa essere corretto, così che il caricamento delle istrzioni possa iniziare con l indirizzo sggerito. Se il sggerimento si rivela sbagliato, il bit di previsione viene invertito e memorizzato con il novo valore, dopodichè si va ad esegire la seqenza corretta di istrzioni. 57 58 Analisi della solzione proposta (2) Lo schema di previsione ad bit ha n difetto in termini di prestazioni: Anche se il salto fosse qasi sempre esegito, si otterrebbe na previsione scorretta de volte qando il salto non è esegito. Esempio: si consideri n salto condizionato presente all interno di n ciclo e si spponga che il salto venga esegito nove volte di segito e poi non venga esegito per na volta. Qal è l accratezza fornita dalla previsione???? La previsione non sarà corretta nella prima e nell ltima iterazione del ciclo. L errore sll ltima iterazione è inevitabile in qanto la previsione dirà che il salto deve essere esegito, essendo stato esegito nove volte di segito fino a qel pnto. L errore slla prima iterazione si verifica perché il bit è stato complementato in occasione dell eseczione dell ltima iterazione del ciclo, qando il salto non era stato segito. 59 Analisi della solzione proposta (3) In definitiva, l accratezza della previsione per qesto salto è pari all 8%. Si vorrebbe che per qesti salti altamente regolari l accratezza della previsione corrispondesse alla freqenza di eseczione del salto. Solzione: tilizzare schemi di previsione a 2 bit. La previsione deve essere sbagliata per 2 volte prima di essere modificata. Un bffer di previsione dei salti pò essere realizzato come n piccolo bffer ibile tramite l indirizzo dell istrzione drante lo stadio IF della pipeline. Se si prevede che il salto debba essere esegito, il caricamento viene effettato a partire dall indirizzo destinazione non appena è noto il valore del. Se la previsione si rivela sbagliata, i bit di previsione sono modificati. 6

Riepilogo slle pipeline Obiettivo delle pipeline: Esegire n istrzione per ciclo di clock e permettere n clock più veloce!!!!! 6 Eccezioni Un altra forma di criticità sl controllo rigarda le eccezioni. Si assma che la segente istrzione: $, $, $ generi n overflow aritmetico. È necessario trasferire immediatamente il controllo alla procedra di gestione dell eccezione, dal momento che non si vole che qesto valore non valido contamini altri registri o locazioni di memoria. È necessario eliminare dalla pipeline l istrzione che sege la add ed iniziare il prelievo dell istrzione sccessiva a partire dal novo indirizzo. 62 Eccezioni (2) Eccezioni (3) Si tilizza lo stesso meccanismo visto precedentemente nel caso dei salti, ma qesta volta è l eccezione a provocare l azzeramento delle linee di controllo. È già stato visto come eliminare n istrzione nello stadio IF trasformandola in na nop. Per eliminare n istrzione che si trova nello stadio ID si pò tilizzare il mltipleer per azzerare i segnali di controllo in caso di stallo. Il segnale di controllo ID.Scarta è messo in OR logico con il segnale di stallo che proviene dall nità di rilevamento delle criticità. Per eliminare l istrzione nella fase EX si sa il segnale EX.Scarta, che fa in modo che dei novi mltipleer azzerino le linee di controllo. Per iniziare il prelievo delle informazioni a partire dalla locazione esa (dove si trova la procedra di gestione dell eccezione), basta semplicemente aggingere n altro mltipleer del. 63 6 Eccezioni () Eccezioni (5) Problema che si verifica nella gestione delle eccezioni: Se non si interrompe l eseczione a metà dell istrzione, il programmatore non è più in grado di vedere il valore originale del registro $ che ha contribito a generare la condizione di overflow, dal momento che tale registro è anche l operando destinazione dell istrzione. Si deve riconoscere l eccezione drante lo stadio EX; così il segnale EX.Scarta pò prevenire la scrittra del risltato che avviene nello stadio. Ultimo passo: salvare l indirizzo dell istrzione che ha casato l eccezione nell Eception Conter. In realtà viene salvato l indirizzo + e qindi la procedra di gestione delle eccezioni deve per prima cosa sottrarre al valore memorizzato. IF.Flsh IF/ID Hazard detection nit Control etend isters ID.Flsh = ID/EX EX Case Ecept EX.Flsh ALU Forwarding nit EX/E E/ 65 66

Possibili case di eccezioni: Eccezioni (6) Richiesta da parte dei dispositivi di inpt/otpt; Chiamata di n servizio del sistema operativo da parte di n programma tente; Utilizzo di n istrzione non definita; alfnzionamenti hardware; Poiché si hanno 5 istrzioni attive in ogni ciclo di clock, il problema consiste nell associare ogni eccezione all istrzione che l ha provocata. Inoltre vi è la possibilità che nello stesso ciclo di clock più eccezioni si verifichino simltaneamente. 67 Eccezioni (7) Solzione più freqentemente sata: Associare na priorità alle eccezioni per poter determinare facilmente qale gestire per prima. Strategia che fnziona anche per calcolatori dotati di pipeline. Nella maggioranza delle implementazioni IPS, i circiti ordinano le eccezioni in modo tale che venga interrotta l istrzione esegita per prima fra qelle coinvolte. Le richiesta da parte dei dispositivi di ingresso/scita ed i malfnzionamenti hardware non sono associati ad n istrzione specifica consentita na maggiore flessibilità nell implementazione. i circiti possono scegliere l istrzione più semplice da associare all eccezione; Nel caso di malfnzionamenti hardware è opportno interrompere l eseczione al più presto (hardware instabile!). 68 Eccezioni (8) Il registro E mantiene l indirizzo dell istrzione interrotta. Il registro IPS Casa memorizza ttte le possibili eccezioni che si verificano in n ciclo di clock. Il programma di gestione deve trovare la corrispondenza fra istrzione ed eccezione. Per capire l associazione eccezione-istrzione stadio della pipeline in ci pò verificarsi n certo tipo di eccezione: Un istrzione non definita è scoperta nello stadio ID; Una chiamata al sistema operativo avviene nello stadio EX. Le eccezioni sono collezionata nel registro Casa i circiti possono interrompere la normale eseczione basandosi s eccezioni che si verificano dopo che eccezioni precedenti sono state risolte. 69 Eccezioni (9) Nei calcolatori dotati di pipeline, è molto difficile associare correttamente n eccezione all istrzione che l ha provocata. Per qesto motivo, molti progettisti hanno rilassato i reqisiti nei casi non critici: Si dice che qesti calcolatori hanno interrzioni imprecise o eccezioni imprecise. Il IPS e la stragrande maggioranza dei calcolatori di oggi spportano interrzioni precise o eccezioni precise. 7 Evolzioni delle pipeline Nell intento di realizzare processori sempre più veloci, le semplici pipeline descritte si sono evolte secondo tre direzioni principali: Sperpipeline Sperscalare Schedlazione dinamica delle pipeline Sperpipeline: sono delle pipeline più lnghe. Poiché il massimo incremento di velocità di na pipeline ideale è legato al nmero degli stadi, alcni microprocessori recenti hanno pipeline con otto o più stadi. Svantaggio: necessario bilanciare novamente i restanti passi, in modo che abbiano la stessa drata. Evolzioni delle pipeline (2) Sperscalare: consiste nel replicare i componenti interni del calcolatore in modo che sia possibile lanciare l eseczione di più istrzioni in ogni stadio della pipeline. Svantaggio: lavoro addizionale necessario per mantenere impegnate ttte le macchine e per trasferire il carico di lavoro da no stadio della pipeline al sccessivo. Gli attali calcolatori sperscalari cercano di far esegire da de a sei istrzioni in ogni stadio della pipeline; se però le istrzioni all interno del flsso hanno delle dipendenze o non soddisfano determinati criteri, soltanto le prime istrzioni vanno a bon fine. 7 72 2

Evolzioni delle pipeline (3) Schedlazione dinamica della pipeline: consiste nell tilizzo di circiti logici che evitano il verificarsi di condizioni critiche. La pipeline è in condizione di stallo qando aspetta che na criticità sia risolta, anche se le istrzioni sccessive sono già pronte. Le pipeline dinamiche sono normalmente affiancate da circiti addizionali che fanno si che istrzioni sccessive possano procedere in parallelo. Svantaggi: Unità di controllo delle pipeline molto più complessa. odello dell eseczione delle istrzioni molto più complicato. 73 IPS sperscalare Com è fatto n calcolatore IPS con implementazione sperscalare? Spponiamo di voler esegire de istrzioni per ciclo di clock. È necessario il prelevamento e la decodifica di 6 bit di istrzione. Per semplificare la decodifica: Richiedere che le istrzioni siano accoppiate ed allineate a mltipli di 6 bit. Richiedere che in ogni coppia di istrzioni la prima sia qella che esege n operazione con la ALU o n salto condizionato. In alternativa si potrebbero esaminare le istrzioni ed eventalmente scambiarle prima che vengano inviate alla ALU o alla memoria. In entrambi i casi la seconda istrzione deve essere presa in considerazione solo se la prima pò essere esegita. 7 IPS sperscalare (2) Per esegire in parallelo n operazione logico-aritmetica ed na di trasferimento dati il primo reqisito hardware aggintivo rigarda la predisposizione di porte addizionali per il register file. In n solo ciclo di clock l operazione della ALU potrebbe dover leggere de registri ed altrettanto potrebbe dover fare l operazione di trasferimento dati. Possono servire de porte in lettra: Una per l operazione della ALU. Una per l operazione di trasferimento dati. Poiché la ALU è impegnata nell eseczione dell operazione logica o aritmetica è necessario n sommatore separato per il calcolo dell indirizzo per il trasferimento dati. Senza qeste risorse addizionali il fnzionamento della pipeline sperscalare presenterebbe delle criticità di tipo strttrale. 75 IPS sperscalare (3) Ulteriore difficoltà: Nella pipeline IPS vista le istrzioni load hanno na latenza pari ad n ciclo di clock. Un istrzione non pò sare il risltato senza n attesa. Nella pipeline sperscalare il risltato di n istrzione load non pò essere tilizzato nel ciclo di clock sccessivo. Se le de istrzioni segenti devono sare il risltato della load sono costrette ad n periodo di attesa. In n processore sperscalare, per sfrttare il parallelismo in modo efficace sono necessari: Compilatori più sofisticati. Tecniche di schedlazione hardware. Tecniche più complesse per la decodifica delle istrzioni. Una tecnica per ottenere prestazioni migliori da cicli che accedono a vettori è qella dell espansione dei cicli. Vengono inserite più copie del corpo del ciclo ed istrzioni appartenenti ad iterazioni diverse sono schedlate insieme. 76 Qadro d insieme Sia le pipeline che l eseczione sperscalare amentano il throghpt di picco delle istrzioni. Svantaggi: Pipeline più lnghe e versioni scalari di maggiore ampiezza rendono il compito del compilatore ancora più complesso, nel tentativo di sfrttare al massimo le potenzialità fornite dall hardware. Le dipendenze tra i dati e i segnali di controllo all interno dei programmi, insieme alla latenza delle istrzioni, rappresentano n limite speriore per le prestazioni effettive. Il processore è costretto ad aspettare per via di na dipendenza non ancora risolta o di n salto condizionato non previsto correttamente. È comnqe necessario garantire la corretta eseczione di ttte le seqenze di istrzioni. Schedlazione dinamica della pipeline La schedlazione dinamica della pipeline spera lo stallo cercando di esegire istrzioni sccessive in attesa che lo stallo sia risolto. Tipicamente la pipeline è sddivisa in tre nità principali: Un nità per il prelevamento e l invio dell istrzione. Un nità di eseczione. Un nità di consegna. Prima nità: preleva le istrzioni, le decodifica ed invia ciascna di esse alla corrispondente nità fnzionale dello stadio relativo all eseczione. Seconda nità: ciascna nità fnzionale ha dei bffer (stazioni di prenotazione) che mantengono operandi ed operazione. Non appena la stazione di prenotazione contiene ttti gli operandi richiesti e l nità fnzionale è pronta per l eseczione, viene calcolato il risltato. Terza nità: decide se salvare il risltato nel register file oppre in memoria. 77 78 3

Fnctional nits Integer Unità fondamentali Integer and decode nit Commit nit Floating point Load/ Store In- isse Ot-of- eecte In- commit Schedlazione dinamica della pipeline (2) Per fare in modo che i programmi si comportino come se fossero in eseczione s n semplice calcolatore senza pipeline, l nità di prelevamento e decodifica deve trattare le istrzioni in ordine seqenziale, e qella di consegna deve scrivere i risltati nei registri o in memoria segendo l ordine di eseczione del programma (completamento in ordine). Le nità fnzionali, invece, sono libere di iniziare e finire l eseczione a piacere. 79 8 Schedlazione dinamica della pipeline (3) Un approccio più radicale consiste nel consentire al calcolatore di fornire i risltati anche in ordine diverso rispetto a qello di eseczione del programma (completamento fori ordine). Le pipeline a schedlazione dinamica sono più complesse: la schedlazione dinamica è spesso abbinata alla predizione dei salti l nità di consegna deve essere in grado di scartare ttti i risltati nelle nità di eseczione dovti ad istrzioni esegite in segito ad n salto erroneamente previsto. Tale combinazione prende il nome di eseczione speclativa. La schedlazione dinamica è spesso combinata con l eseczione sperscalare ciascna nità pò inviare o consegnare da qattro a sei istrzioni per ciclo di clock. Schedlazione dinamica della pipeline () I calcolatori dinamici predicono il flsso delle istrzioni, esegendo le istrzioni in base a congettre fondate slla predizione e slle dipendenze esistenti tra le istrzioni stesse. otivazioni alla base dell eseczione dinamica: Nascondere la latenza della memoria. Evitare le sitazioni di stallo che il compilatore non è in grado di risolvere, dovte a dipendenze potenziali fra istrzioni load e store. Esegire delle istrzioni, in base a congettre sl flsso ftro, in attesa che le sitazioni critiche vengano risolte. Il DEC Alpha 226 è n esempio di microprocessore che realizza ttte e tre le possibilità descritte (pipeline più lnghe, sperscalare e schedlata dinamicamente). 8 82 Un caso reale: Power 6 e Pentim Pro Entrambi tilizzano pipeline schedlate dinamicamente. La cache delle istrzioni preleva 6 byte di istrzioni e le invia ad na coda di istrzioni ( istrzioni per il Power ed n nmero variabile per Pentim Pro). Un certo nmero di istrzioni sono prelevate e decodificate. Per prevedere i salti ed esegire le istrzioni sccessive entrambi i processori sano na tabella da 52 elementi contenente le informazioni si salti esegiti in tempi precedenti. L nità di smistamento invia ciascna istrzione, con i relativi operandi, alla stazione di prenotazione corrispondente all nità fnzionale prescelta e inserisce n riferimento a qella istrzione all interno del bffer di riordino dell nità di consegna n istrzione non pò essere considerata se non c è spazio disponibile nella stazione di prenotazione oppre nel bffer di riordino. 83 Un caso reale: Power 6 e Pentim Pro (2) olte istrzioni vengono esegite contemporaneamente è possibile esarire lo spazio per mantenere i risltati: Entrambi i processori hanno registri interni addizionali (registri replicati) sati per memorizzare i risltati in attesa che l nità di consegna dia il permesso per scrivere i registri effettivi. Qesti registri sono assegnati dall nità di decodifica per ridrre le criticità sl nmero di registri. L istrzione viene esegita qando: Il corrispondente elemento all interno della stazione di prenotazione possiede ttti gli operandi. Le relativa nità fnzionale è libera. L nità di consegna tiene traccia di ttte le istrzioni pendenti all interno del bffer di riordino. Poiché tilizzano la predizione dei salti, n istrzione non è terminata fino a qando non lo decide l nità di consegna. 8

Un caso reale: Power 6 e Pentim Pro (3) Qando l nità fnzionale che si occpa dei salti decide se n salto deve o non deve essere effettato, lo comnica all nità di predizione dei salti (aggiorna lo stato del processore) e all nità di consegna (decide la sorte delle istrzioni pendenti). Predizione corretta: i risltati delle istrzioni sono confermati e possono essere inseriti nei registri. Predizione errata: i risltati sono invalidati e scartati dalle stazioni di prenotazione e dal bffer di riordino. L nità di consegna pò fornire in scita più istrzioni in n ciclo di clock: Fa in modo che le istrzioni siano consegnate nello stesso ordine in ci sono state inserite nella pipeline. Non pò consegnare n istrzione fino a che l nità fnzionale non ha finito l operazione corrispondente, ttti i salti condizionati da ci dipende non sono stati risolti e ttte le istrzioni precedenti non state consegnate. 85 Un caso reale: Power 6 e Pentim Pro (3) Branch Branch prediction Integer cache qee Decode/dispatch nit Integer Floating point Commit nit Re bffer Store Comple integer cache Load Load/ store ister file 86 FINE 87 5