Calcolatori Elettronici Introduzione al Pipelining Francesco Lo Presti Rielaborate da Salvatore Tucci.

Slides:



Advertisements
Presentazioni simili
La struttura fisica e logica di un elaboratore
Advertisements

Università degli Studi di Napoli Federico II Facoltà di Ingegneria Dipartimento di Informatica e Sistemistica Corso di Sistemi ad elevate prestazioni –
Architettura di un sistema informatico Hardware
Ottimizzazione statica del codice per processori pipelined Canella Matteo & Miglioli Filippo.
Il Linguaggio Macchina
Architetture dei Calcolatori (Lettere j-z) Il Processore (2)
Tipo Documento: unità didattica 0 Modulo 0 Compilatore: ??? Supervisore: Data emissione: Release: Indice: A.Scheda informativa B.Introduzione C.Corpo D.Riepilogo.
Università degli Studi di Roma La Sapienza Architettura degli elaboratori II Funzioni.
2 Sistema composto da un numero elevato di componenti, in cui ogni componente svolge una sua funzione elaborazione dati memorizzazione dati trasferimento.
1 Corso di Informatica (Programmazione) Lezione 4 (24 ottobre 2008) Architettura del calcolatore: la macchina di Von Neumann.
Caratteristiche principali dell’architettura del processore MIPS
Caratteristiche principali dell’architettura del processore MIPS
Criticità sui dati Consideriamo una sequenza di 5 istruzioni
Il pipelining E’ una tecnica Analogia con la catena di montaggio
Il pipelining E’ una tecnica Analogia con la catena di montaggio
Criticità sui dati (1° esempio)
Caratteristiche principali dell’architettura del processore MIPS
Criticità sul controllo
Il pipelining: tecniche di base Lucidi fatti in collaborazione con lIng. Valeria Cardellini.
Criticità sui dati (esempio da fare on line)
Criticità sul controllo
Criticità sul controllo
Il livello Microarchitetturale
Il Linguaggio Macchina
Xscale Nicola Rebagliati 2001s135. Cose Xscale Xscale è una microarchitettura per processori che fornisce ottime prestazioni con bassi consumi energetici.
3. Architettura Vengono descritte le principali componenti hardware di un calcolatore.
Estensioni allarchitettura di Von Neumann Vito Perrone Corso di Informatica A per Gestionali.
La macchina di von Neumann
Sistemi Complessi di reti sequenziali Pipeline
La Tecnica PIPELINE Il DLX - Pipeline.
La Tecnica PIPELINE Il DLX - Pipeline.
Architetture dei Calcolatori (Lettere j-z ) Il Processore
Architettura del calcolatore
La Tecnica PIPELINE Il DLX - Pipeline.
Introduzione al linguaggio assembly del microprocessore a parte
ARCHITETTURA DI UN ELABORATORE
Sistemi di elaborazione e trasmissione delle informazioni
Unità centrale di processo
Sistemi ad elevate prestazioni Lezione 1
Università degli Studi di Napoli “Federico II” Facoltà di Ingegneria Dipartimento di Informatica e Sistemistica Corso di Sistemi ad elevate prestazioni.
1 Università di Pavia - corso di Calcolatori Elettronici C code: L1:g = g + A[i]; i = i + j; if (i != h) goto L1; MIPS code: L1:add $t1, $s3, $s3# $t1.
Arch. Elab. - S. Orlando 1 Esercitazione su Instruction Level Parallelism Salvatore Orlando.
Architettura di una CPU
Migliorare le prestazioni delle cache
Calcolatori Elettronici Introduzione al Pipelining
Calcolatori Elettronici Il Processore
Elettronica Digitale (2^ Parte) 10-11_9 1 10/1/2011 Struttura del processore ELETTRONICA DIGITALE (2^ Parte ) (9)
Informatica Lezione 5 Scienze e tecniche psicologiche dello sviluppo e dell'educazione (laurea triennale) Anno accademico:
Calcolatori Elettronici Il Processore (2)
Corsi di Laurea in Biotecnologie
Tipo Documento: unità didattica 3 Modulo 7 Compilatore: Supervisore: Data emissione: Release: Indice: A.Scheda informativa B.Introduzione C.Corpo D.Riepilogo.
Corso di Laurea in Informatica Architettura degli elaboratori a.a La macchina programmata Instruction Set Architecture (2) Istruzioni I-type Indirizzamento.
Calcolatori Elettronici Valutazione delle Prestazioni Francesco Lo Presti Rielaborate da Salvatore Tucci.
Clocking Il segnale di Clock definisce quando i segnali possono essere letti e quando possono essere scritti Fronte di discesa (negativo) Falling edge.
Architettura di un calcolatore e linguaggio macchina.
Università degli Studi di Bergamo Facoltà di Lingue e Letterature Straniere Facoltà di Lettere e Filosofia A.A Informatica generale 1 Appunti.
L’esecuzione dei programmi
Informatica Generale Marzia Buscemi
Corso di Laurea in Biotecnologie corso di Informatica Paolo Mereghetti DISCo – Dipartimento di Informatica, Sistemistica e Comunicazione.
Hardware Struttura fisica (architettura) del calcolatore formata da parti meccaniche, elettriche, elettroniche.
Struttura Fondamentale degli Elaboratori Elaboratore –È un sistema numerico –È un sistema automatico –È un sistema a programamzione registrabile –Ha una.
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE Il sistema di elaborazione Marco D. Santambrogio – Ver. aggiornata al 15 Maggio.
Come esegue le istruzioni il microprocessore Un’istruzione è sempre composta da più operazioni elementari.
Tipo Documento: unità didattica 3 Modulo 7 Compilatore: Supervisore: Data emissione: Release: Indice: A.Scheda informativa B.Introduzione C.Corpo D.Riepilogo.
Il Processore Il processore è la componente dell’unità centrale che elabora le informazioni contenute nella memoria principale L’elaborazione avviene eseguedo.
Corso di Laurea in Informatica Architettura degli elaboratori a.a La macchina programmata (3) Istruzioni J-type Istruzioni di salto Istruzioni.
Click to add text L’ Unità di Elaborazione. Struttura : Unità di controllo: coordina attività CPU ALU: unità aritmetico-logica, esegue operazioni tra.
I Microprocessori Unità 3 del libro Internet Working Sistemi e reti.
Hardware Struttura fisica (architettura) del calcolatore formata da parti meccaniche, elettriche, elettroniche.
Cammino dei Dati (Datapath)
Transcript della presentazione:

Calcolatori Elettronici Introduzione al Pipelining Francesco Lo Presti Rielaborate da Salvatore Tucci

Definizione di Pipelining E una tecnica E una tecnica per migliorare le prestazioni del processore per migliorare le prestazioni del processore basata sulla sovrapposizione dellesecuzione di più istruzioni basata sulla sovrapposizione dellesecuzione di più istruzioni Analogia con catena di montaggio Analogia con catena di montaggio

Idea base Il lavoro svolto da un processore con pipelining per eseguire unistruzione è diviso in passi (stadi della pipeline), che richiedono una frazione del tempo necessario allesecuzione dellintera istruzione Il lavoro svolto da un processore con pipelining per eseguire unistruzione è diviso in passi (stadi della pipeline), che richiedono una frazione del tempo necessario allesecuzione dellintera istruzione Gli stadi sono connessi in maniera seriale per formare la pipeline Gli stadi sono connessi in maniera seriale per formare la pipeline Le istruzioni: Le istruzioni: entrano da unestremità della pipeline entrano da unestremità della pipeline vengono elaborate dai vari stadi secondo lordine previsto vengono elaborate dai vari stadi secondo lordine previsto escono dallaltra estremità della pipeline escono dallaltra estremità della pipeline S1S1 SkSk S2S2 … Ingresso Uscita

Confronto fra ciclo singolo e pipeline Instruction fetch RegALU Data access Reg 8 ns Instruction fetch RegALU Data access Reg 8 ns Instruction fetch 8 ns Time lw $1, 100($0) lw $2, 200($0) lw $3, 300($0) Program execution order (in instructions) Instruction fetch RegALU Data access Reg Time lw $1, 100($0) lw $2, 200($0) lw $3, 300($0) 2 ns Instruction fetch RegALU Data access Reg 2 ns Instruction fetch RegALU Data access Reg 2 ns2 ns2 ns2 ns2 ns Program execution order (in instructions) Single-cycle Pipelined Assume 2 ns for memory access, ALU operation; 1 ns for register access: therefore, single cycle clock 8 ns; pipelined clock cycle 2 ns.

Osservazioni sul pipelining La presenza della pipeline aumenta il numero di istruzioni contemporaneamente in esecuzione La presenza della pipeline aumenta il numero di istruzioni contemporaneamente in esecuzione Quindi, introducendo il pipelining nel processore, aumenta il throughput … Quindi, introducendo il pipelining nel processore, aumenta il throughput … Throughput: numero di istruzioni eseguite nellunità di tempo Throughput: numero di istruzioni eseguite nellunità di tempo … ma non si riduce la latenza della singola istruzione … ma non si riduce la latenza della singola istruzione Latenza: tempo di esecuzione della singola istruzione, dal suo inizio fino al suo completamento Latenza: tempo di esecuzione della singola istruzione, dal suo inizio fino al suo completamento Unistruzione che richiede 5 passi, continua a richiedere 5 cicli di clock per la sua esecuzione con pipelining Unistruzione che richiede 5 passi, continua a richiedere 5 cicli di clock per la sua esecuzione con pipelining

Stadi della pipeline Gli stadi della pipeline sono collegati in sequenza Gli stadi della pipeline sono collegati in sequenza Gli stadi devono operare in modo sincrono Gli stadi devono operare in modo sincrono Avanzamento nella pipeline sincronizzato dal clock Avanzamento nella pipeline sincronizzato dal clock Durata del ciclo di clock del processore con pipeline determinata dalla durata dello stadio più lento della pipeline Durata del ciclo di clock del processore con pipeline determinata dalla durata dello stadio più lento della pipeline Es.: 2ns per lesecuzione delloperazione più lenta Es.: 2ns per lesecuzione delloperazione più lenta Per alcune istruzioni, alcuni stadi sono cicli sprecati Per alcune istruzioni, alcuni stadi sono cicli sprecati Obiettivo dei progettisti: bilanciare la lunghezza degli stadi Obiettivo dei progettisti: bilanciare la lunghezza degli stadi

Linsieme di istruzioni MIPS ed il pipelining La progettazione dellinsieme di istruzioni del MIPS permette la realizzazione di una pipeline semplice ed efficiente La progettazione dellinsieme di istruzioni del MIPS permette la realizzazione di una pipeline semplice ed efficiente Tutte le istruzioni hanno la stessa lunghezza (32 bit) Tutte le istruzioni hanno la stessa lunghezza (32 bit) Più semplice il caricamento dellistruzione nel primo passo e la decodifica dellistruzione nel secondo passo Più semplice il caricamento dellistruzione nel primo passo e la decodifica dellistruzione nel secondo passo Pochi formati di istruzioni (solo 3) con simmetria tra i formati Pochi formati di istruzioni (solo 3) con simmetria tra i formati Possibile iniziare la lettura dei registri nel secondo passo, prima di sapere di che istruzione (e formato) si tratta Possibile iniziare la lettura dei registri nel secondo passo, prima di sapere di che istruzione (e formato) si tratta Le operazioni in memoria sono limitate alle istruzioni di load/store Le operazioni in memoria sono limitate alle istruzioni di load/store Possibile usare il terzo passo per calcolare lindirizzo Possibile usare il terzo passo per calcolare lindirizzo Allineamento degli operandi in memoria Allineamento degli operandi in memoria Possibile usare un solo stadio per trasferire dati tra processore e memoria Possibile usare un solo stadio per trasferire dati tra processore e memoria Ogni istruzione MIPS scrive al più un risultato e lo fa verso la fine della pipeline Ogni istruzione MIPS scrive al più un risultato e lo fa verso la fine della pipeline

Unità di Elaborazione con Pipeline Cinque passi di esecuzione di un istruzione Cinque passi di esecuzione di un istruzione IF – Prelievo ed incremento PC IF – Prelievo ed incremento PC ID – Decodifica e lettura registri ID – Decodifica e lettura registri EX – Esecuzione/Calcolo indirizzo EX – Esecuzione/Calcolo indirizzo MEM – Accesso in Memoria MEM – Accesso in Memoria WB – Scrittura banco registri WB – Scrittura banco registri Processore a ciclo singolo Processore a ciclo singolo tutti i passi eseguiti in singolo ciclo tutti i passi eseguiti in singolo ciclo hardware replicato hardware replicato Memoria Istruzione e Dati Separata Memoria Istruzione e Dati Separata ALU e 2 Adder ALU e 2 Adder Processore a ciclo multiplo Processore a ciclo multiplo un passo per ciclo un passo per ciclo hardware non replicato se usato in passi diversi hardware non replicato se usato in passi diversi Memoria unica Memoria unica Singola ALU Singola ALU

Come progettare lunità di elaborazione? La struttura di un processore con pipeline a 5 stadi deve essere scomposta in 5 parti (o stadi di esecuzione), ciascuna della quali corrispondente ad una delle fasi della pipeline La struttura di un processore con pipeline a 5 stadi deve essere scomposta in 5 parti (o stadi di esecuzione), ciascuna della quali corrispondente ad una delle fasi della pipeline La suddivisione dellistruzione in 5 stadi implica che in ogni ciclo di clock siano in esecuzione (al più) 5 istruzioni La suddivisione dellistruzione in 5 stadi implica che in ogni ciclo di clock siano in esecuzione (al più) 5 istruzioni Diverse istruzioni in esecuzione nello stesso istante possono richiedere risorse hardware simili Diverse istruzioni in esecuzione nello stesso istante possono richiedere risorse hardware simili Replicazione delle risorse hardware Replicazione delle risorse hardware Struttura base del processore a singolo ciclo Struttura base del processore a singolo ciclo …a cui dobbiamo aggiungere dei registri per passare dati da uno stadio al successivo …a cui dobbiamo aggiungere dei registri per passare dati da uno stadio al successivo +Registri di pipeline

Lunità di elaborazione a ciclo singolo

Lunità di elaborazione con pipeline Introduzione di registri di pipeline (registri interstadio) Introduzione di registri di pipeline (registri interstadio) Ad ogni ciclo di clock le informazioni procedono da un registro di pipeline a quello successivo Ad ogni ciclo di clock le informazioni procedono da un registro di pipeline a quello successivo Il nome del registro è dato dal nome dei due stadi che separa Il nome del registro è dato dal nome dei due stadi che separa Registro IF/ID (Instruction Fetch / Instruction Decode) Registro IF/ID (Instruction Fetch / Instruction Decode) Registro ID/EX (Instruction Decode / EXecute) Registro ID/EX (Instruction Decode / EXecute) Registro EX/MEM (Execute / MEMory access) Registro EX/MEM (Execute / MEMory access) Registro MEM/WB (MEMory access / Write Back) Registro MEM/WB (MEMory access / Write Back)

Uso dellunità con pipeline Come viene eseguita unistruzione nei vari stadi della pipeline? Come viene eseguita unistruzione nei vari stadi della pipeline? Consideriamo per prima listruzione lw Consideriamo per prima listruzione lw Prelievo dellistruzione Prelievo dellistruzione Decodifica dellistruzione e lettura dei registri Decodifica dellistruzione e lettura dei registri Esecuzione (uso dellALU per il calcolo dellindirizzo) Esecuzione (uso dellALU per il calcolo dellindirizzo) Lettura dalla memoria Lettura dalla memoria Scrittura nel registro Scrittura nel registro

Esecuzione di lw: primo e secondo stadio

Esecuzione di lw: terzo stadio

Esecuzione di lw: quarto e quinto stadio

Caccia allerrore… Quale registro di destinazione viene scritto? Quale registro di destinazione viene scritto? Il registro IF/ID contiene unistruzione successiva a lw Il registro IF/ID contiene unistruzione successiva a lw Soluzione Soluzione Occorre preservare il numero del registro di destinazione di lw Occorre preservare il numero del registro di destinazione di lw

Soluzione Il numero del registro di destinazione viene scritto nei registri di pipeline: Il numero del registro di destinazione viene scritto nei registri di pipeline: Prima in ID/EX, poi in EX/MEM, infine in MEM/WB Prima in ID/EX, poi in EX/MEM, infine in MEM/WB

Esempio con più istruzioni Consideriamo la sequenza di istruzioni MIPS: Consideriamo la sequenza di istruzioni MIPS: lw $t0, 10($t1) lw $t0, 10($t1) sw $t3, 20($t4) sw $t3, 20($t4) add $t5, $t6, $t7 add $t5, $t6, $t7 sub $t8, $t9, $t10 sub $t8, $t9, $t10

Primo ciclo di clock LW

Secondo ciclo di clock LWSW

Terzo ciclo di clock LWSWADD

Quarto ciclo di clock LWSWADD SUB

Quinto ciclo di clock LWSWADDSUB

Sesto ciclo di clock SWADDSUB

Settimo ciclo di clock ADD SUB

Ottavo ciclo di clock SUB

Diagramma Alternativo Time axis

Esecuzione delle istruzioni nel processore con pipeline IF Instruction Fetch ID Instruction Decode EX EXecute MEM MEMory access WB Write-Back Istruzioni logico-aritmetiche IF Prel. istr. e incr. PC ID Lettura reg. sorgente EX Op. ALU su dati letti WB Scrittura reg. dest. Istruzioni di load ID Lettura reg. base EX Somma ALU WB Scrittura reg. dest. IF Prel. istr. e incr. PC MEM Prelievo dato da M Istruzioni di store IF Prel. istr. e incr. PC IDEX Somma ALU MEM Scrittura dato in M Istruzioni di beq ID Lettura reg. sorgente EX Sottrazione ALU e indirizzo salto MEM Scrittura PC IF Prel. istr. e incr. PC Lettura reg. base e sorgente

Controllo dellunità con pipeline I dati viaggiano attraverso gli stadi della pipeline I dati viaggiano attraverso gli stadi della pipeline Tutti i dati appartenenti ad unistruzione devono essere mantenuti allinterno dello stadio Tutti i dati appartenenti ad unistruzione devono essere mantenuti allinterno dello stadio Le informazioni si trasferiscono solo tramite i registri della pipeline Le informazioni si trasferiscono solo tramite i registri della pipeline Le informazioni di controllo devono viaggiare con listruzione Le informazioni di controllo devono viaggiare con listruzione

I segnali di controllo Non sono necessari segnali di controllo per la scrittura dei registri di pipeline

I segnali di controllo (2) Raggruppiamo i segnali di controllo in base agli stadi della pipeline Raggruppiamo i segnali di controllo in base agli stadi della pipeline Prelievo dellistruzione Prelievo dellistruzione Identico per tutte le istruzioni Identico per tutte le istruzioni Decodifica dellistruzione/lettura del banco dei registri Decodifica dellistruzione/lettura del banco dei registri Identico per tutte le istruzioni Identico per tutte le istruzioni Esecuzione/calcolo dellindirizzo Esecuzione/calcolo dellindirizzo RegDst, ALUOp, ALUSrc RegDst, ALUOp, ALUSrc Accesso alla memoria Accesso alla memoria Branch, MemRead,MemWrite Branch, MemRead,MemWrite Scrittura del risultato Scrittura del risultato MemtoReg, RegWrite MemtoReg, RegWrite

I segnali di controllo (3) Istruzione Segnali di controllo EXSegnali di controllo MEM Segnali di controllo WB Reg Dst ALU Op1 ALU Op0 ALU Src BranchMem Read Mem Write Reg Write Memto Reg tipo-R lw swX X beqX X

Estensione con controllo I registri di pipeline contengono anche i valori dei segnali di controllo I registri di pipeline contengono anche i valori dei segnali di controllo Al massimo 8 segnali di controllo (9 bit) Al massimo 8 segnali di controllo (9 bit) I valori necessari per lo stadio successivo vengono propagati dal registro di pipeline corrente al successivo I valori necessari per lo stadio successivo vengono propagati dal registro di pipeline corrente al successivo 9 bit5 bit2 bit

Esempio Consideriamo la sequenza di istruzioni MIPS Consideriamo la sequenza di istruzioni MIPS lw $10, 20($1) sub $11, $2, $3 and $12, $4, $5 or $13, $6, $7 add $14, $8, $9 Analizziamo lesecuzione della sequenza nei 9 cicli di clock necessari Analizziamo lesecuzione della sequenza nei 9 cicli di clock necessari

Estensione con controllo (2)

Esempio: cicli di clock 1 e 2 lw: entra nella pipeline sub: entra nella pipeline lw: in ID/EX scritti $1, 20 (offset) e 10 (numero del registro di destinazione)

Esempio: cicli di clock 3 e 4 and: entra nella pipeline sub: in ID/EX scritti $2, $3, e 11 (numero del registro di destinazione) lw: in EX/MEM scritti $1+20 e 10 or: entra nella pipeline and: in ID/EX scritti $4, $5, e 12 (numero del registro di destinazione) sub: in EX/MEM scritti $2-$3 e 11 lw: in MEM/WB scritti il valore letto dalla memoria e 10

Esempio: cicli di clock 5 e 6 add: entra nella pipeline or: in ID/EX scritti $6, $7, e 13 (numero del registro di destinazione) and: in EX/MEM scritti $4 AND $5 e 12 sub: in MEM/WB scritti $2- $3 e 11 lw: termina scrivendo $10 add: in ID/EX scritti $8, $9, e 14 (numero del registro di destinazione) or: in EX/MEM scritti $6 OR $7 e 13 and: in MEM/WB scritti $4 AND $5 e 12 sub: termina scrivendo $11

Esempio: cicli di clock 7 e 8 add: in EX/MEM scritti $8+$9 e 14 or: in MEM/WB scritti $6 OR $7 e 13 and: termina scrivendo $12 add: in MEM/WB scritti $8+$9 e 14 or: termina scrivendo $13 MEM: add $14, …

Esempio: ciclo di clock 9 add: termina scrivendo $14

Le criticità Le criticità (o conflitti o alee) sorgono nelle architetture con pipelining quando non è possibile eseguire listruzione successiva nel ciclo successivo Le criticità (o conflitti o alee) sorgono nelle architetture con pipelining quando non è possibile eseguire listruzione successiva nel ciclo successivo Tre tipi di criticità Tre tipi di criticità Criticità strutturali Criticità strutturali Criticità sui dati Criticità sui dati Criticità sul controllo Criticità sul controllo

Le criticità (2) Criticità strutturale Criticità strutturale Istruzioni in fasi diverse della pipeline necessitano delle stesse risorse hardware Istruzioni in fasi diverse della pipeline necessitano delle stesse risorse hardware Es.: se nel MIPS avessimo ununica memoria istruzioni e dati Es.: se nel MIPS avessimo ununica memoria istruzioni e dati Criticità sui dati Criticità sui dati Tentativo di usare un risultato prima che sia disponibile Tentativo di usare un risultato prima che sia disponibile Es.: istruzione che dipende dal risultato di unistruzione precedente che è ancora nella pipeline Es.: istruzione che dipende dal risultato di unistruzione precedente che è ancora nella pipeline Criticità sul controllo Criticità sul controllo Tentativo di prendere una decisione sulla prossima istruzione da eseguire prima che la condizione sia valutata Tentativo di prendere una decisione sulla prossima istruzione da eseguire prima che la condizione sia valutata Es.: istruzioni di salto condizionato: se si sta eseguendo beq, come si fa a sapere (in anticipo) quale è la successiva istruzione da iniziare ad eseguire? Es.: istruzioni di salto condizionato: se si sta eseguendo beq, come si fa a sapere (in anticipo) quale è la successiva istruzione da iniziare ad eseguire?

Criticità sui dati Unistruzione dipende dal risultato di unistruzione precedente che è ancora nella pipeline Unistruzione dipende dal risultato di unistruzione precedente che è ancora nella pipeline Esempio 1: Esempio 1: add $s0, $t0, $t1 sub $t2, $s0, $t3 Uno degli operandi sorgente di sub ($s0) è prodotto da add, che è ancora nella pipeline Uno degli operandi sorgente di sub ($s0) è prodotto da add, che è ancora nella pipeline Criticità sui dati di tipo define-use Criticità sui dati di tipo define-use Esempio 2: Esempio 2: lw $s0, 20($t1) sub $t2, $s0, $t3 Uno degli operandi sorgente di sub ($s0) è prodotto da lw, che è ancora nella pipeline Uno degli operandi sorgente di sub ($s0) è prodotto da lw, che è ancora nella pipeline Criticità sui dati di tipo load-use Criticità sui dati di tipo load-use

Criticità sui dati (2) Esempio 1: Esempio 1: Esempio 2: Esempio 2: IDIFEXMEM WB lw $s0, 20($t1) tempo IDIFEXMEM WB ordine di esecuzione delle istruzioni sub $t2, $s0, $t3 IDIFEXMEM WB tempo IDIF EX MEM WB ordine di esecuzione delle istruzioni add $s0, $t0, $t1 sub $t2, $s0, $t3

Soluzioni per criticità sui dati Soluzioni di tipo hardware Soluzioni di tipo hardware Inserimento di bolle (bubble) o stalli nella pipeline Inserimento di bolle (bubble) o stalli nella pipeline Si inseriscono dei tempi morti Si inseriscono dei tempi morti Peggiora il throughput Peggiora il throughput Propagazione o scavalcamento (forwarding o bypassing) Propagazione o scavalcamento (forwarding o bypassing) Si propagano i dati in avanti appena sono disponibili verso le unità che li richiedono Si propagano i dati in avanti appena sono disponibili verso le unità che li richiedono Soluzioni di tipo software Soluzioni di tipo software Inserimento di istruzioni nop (no operation) Inserimento di istruzioni nop (no operation) Peggiora il throughput Peggiora il throughput Riordino delle istruzioni Riordino delle istruzioni Spostare istruzioni innocue in modo che esse eliminino la criticità Spostare istruzioni innocue in modo che esse eliminino la criticità

Inserimento di bolle Si inseriscono delle bolle nella pipeline, ovvero si blocca il flusso di istruzioni nella pipeline finché il conflitto non è risolto Si inseriscono delle bolle nella pipeline, ovvero si blocca il flusso di istruzioni nella pipeline finché il conflitto non è risolto Stallo: stato in cui si trova il processore quando le istruzioni sono bloccate Stallo: stato in cui si trova il processore quando le istruzioni sono bloccate Esempio 1: occorre inserire tre bolle per fermare listruzione sub affinché possano essere letti i dati corretti Esempio 1: occorre inserire tre bolle per fermare listruzione sub affinché possano essere letti i dati corretti Due bolle se ottimizzazione del banco dei registri Due bolle se ottimizzazione del banco dei registri add $s0, $t0, $t1 IDIFEXMEM WB tempo IDIF EX MEM WB ordine di esecuzione delle istruzioni sub $t2, $s0, $t3 bolla

Propagazione (o forwarding) Esempio 1: quando la ALU genera il risultato, questo viene subito messo a disposizione per il passo dellistruzione che segue tramite una propagazione in avanti Esempio 1: quando la ALU genera il risultato, questo viene subito messo a disposizione per il passo dellistruzione che segue tramite una propagazione in avanti scritturalettura

Propagazione e stallo Esempio 2: Esempio 2: lw $s0, 20($t1) sub $t2, $s0, $t3 E una criticità sui dati di tipo load-use E una criticità sui dati di tipo load-use Il dato caricato dallistruzione di load non è ancora disponibile quando viene richiesto da unistruzione successiva Il dato caricato dallistruzione di load non è ancora disponibile quando viene richiesto da unistruzione successiva La sola propagazione è insufficiente per risolvere questo tipo di criticità La sola propagazione è insufficiente per risolvere questo tipo di criticità lw $s0, 20($t1) IDIFEXMEM WB tempo IDIFEXMEM WB ordine di esecuzione delle istruzioni sub $t2, $s0, $t3

Propagazione e stallo (2) Soluzione possibile: propagazione e uno stallo Soluzione possibile: propagazione e uno stallo Senza propagazione e ottimizzazione del banco dei registri, sarebbero stati necessari tre stalli Senza propagazione e ottimizzazione del banco dei registri, sarebbero stati necessari tre stalli

Inserimento di nop Esempio 1: lassemblatore deve inserire tra le istruzioni add e sub tre istruzioni nop, facendo così scomparire il conflitto Esempio 1: lassemblatore deve inserire tra le istruzioni add e sub tre istruzioni nop, facendo così scomparire il conflitto Listruzione nop è lequivalente software dello stallo Listruzione nop è lequivalente software dello stallo add $s0, $t0, $t1 IDIFEXMEM WB tempo IDIFEXMEM WB IDIFEXMEM WB IDIFEXMEM WB IDIFEXMEM WB ordine di esecuzione delle istruzioni nop sub $t2, $s0, $t3

Riordino delle istruzioni Lassemblatore riordina le istruzioni in modo da impedire che istruzioni correlate siano troppo vicine Lassemblatore riordina le istruzioni in modo da impedire che istruzioni correlate siano troppo vicine Lassemblatore cerca di inserire tra le istruzioni correlate (che presentano dei conflitti) delle istruzioni indipendenti dal risultato delle istruzioni precedenti Lassemblatore cerca di inserire tra le istruzioni correlate (che presentano dei conflitti) delle istruzioni indipendenti dal risultato delle istruzioni precedenti Quando lassemblatore non riesce a trovare istruzioni indipendenti deve inserire istruzioni nop Quando lassemblatore non riesce a trovare istruzioni indipendenti deve inserire istruzioni nop Esempio: Esempio: lw $t1, 0($t0) lw $t1, 0($t0) lw $t2, 4($t0) lw $t2, 4($t0) add $t3, $t1, $t2 lw $t4, 8($t0) sw $t3, 12($t0) add $t3, $t1, $t2 lw $t4, 8($t0) sw $t3, 12($t0) add $t5, $t1, $t4 add $t5, $t1, $t4 sw $t5, 16($t0) sw $t5, 16($t0) La propagazione permette di risolvere i conflitti rimanenti dopo il riordino La propagazione permette di risolvere i conflitti rimanenti dopo il riordino criticità riordino

Criticità sul controllo Per alimentare la pipeline occorre inserire unistruzione ad ogni ciclo di clock Per alimentare la pipeline occorre inserire unistruzione ad ogni ciclo di clock Tuttavia, nel processore MIPS la decisione sul salto condizionato non viene presa fino al quarto passo (MEM) dellistruzione beq Tuttavia, nel processore MIPS la decisione sul salto condizionato non viene presa fino al quarto passo (MEM) dellistruzione beq Comportamento desiderato del salto Comportamento desiderato del salto Se il confronto fallisce, continuare lesecuzione con listruzione successiva a beq Se il confronto fallisce, continuare lesecuzione con listruzione successiva a beq Se il confronto è verificato,non eseguire le istruzioni successive alla beq e saltare allindirizzo specificato Se il confronto è verificato,non eseguire le istruzioni successive alla beq e saltare allindirizzo specificato

Soluzioni per criticità sul controllo Inserimento di bolle Inserimento di bolle Si blocca la pipeline finché non è noto il risultato del confronto della beq e si sa quale è la prossima istruzione da eseguire Si blocca la pipeline finché non è noto il risultato del confronto della beq e si sa quale è la prossima istruzione da eseguire Nel MIPS il risultato del confronto è noto al quarto passo: occorre inserire tre stalli Nel MIPS il risultato del confronto è noto al quarto passo: occorre inserire tre stalli Anticipazione del confronto al secondo passo (ID) Anticipazione del confronto al secondo passo (ID) Si aggiunge dellhardware extra: dopo aver decodificato listruzione, si può decidere e modificare il PC se necessario Si aggiunge dellhardware extra: dopo aver decodificato listruzione, si può decidere e modificare il PC se necessario Occorre comunque aggiungere uno stallo prima dellistruzione successiva alla beq Occorre comunque aggiungere uno stallo prima dellistruzione successiva alla beq

Soluzioni per criticità sul controllo (2) Predizione del salto Predizione del salto Tecniche di predizione statica Tecniche di predizione statica Es.: si predice che il salto non sia eseguito (untaken branch) Es.: si predice che il salto non sia eseguito (untaken branch) Tecniche di predizione dinamica Tecniche di predizione dinamica Salto non eseguito Salto eseguito

Soluzioni per criticità sul controllo (3) Salto ritardato (delayed branch) Salto ritardato (delayed branch) In ogni caso (indipendentemente dal risultato del confronto) viene eseguita listruzione che segue immediatamente il salto (definita branch-delay slot) In ogni caso (indipendentemente dal risultato del confronto) viene eseguita listruzione che segue immediatamente il salto (definita branch-delay slot) Caso peggiore Caso peggiore Inserimento di nop Inserimento di nop Caso migliore Caso migliore E possibile trovare unistruzione precedente al salto che possa essere posticipata al salto senza alterare il flusso di controllo (e dei dati) E possibile trovare unistruzione precedente al salto che possa essere posticipata al salto senza alterare il flusso di controllo (e dei dati) Esempio Esempio or $t0, $t1, $t2add $s0, $s1, $s2 add $s0, $s1, $s2sub $s3, $s4, $s5 sub $s3, $s4, $s5beq $s0, $s3, Exit beq $s0, $s3, Exitor $t0, $t1, $t2 xor $t2, $s0, $t3xor $t2, $s0, $t3 …… Exit: Exit: delayed branch