Criticità sui dati Consideriamo una sequenza di 5 istruzioni

Slides:



Advertisements
Presentazioni simili
Strutture dati per insiemi disgiunti
Advertisements

Meccanismi di IPC Problemi classici di IPC
Process synchronization
/ fax
Capitolo 3 Risorse e Stallo 3.1. Risorse 3.2. Introduzione
Circuiti Aritmetico-Logici
Università degli Studi di Napoli Federico II Facoltà di Ingegneria Dipartimento di Informatica e Sistemistica Corso di Sistemi ad elevate prestazioni –
1 Processi e Thread Meccanismi di IPC, Inter Process Communication (1)
1 Processi e Thread Meccanismi di IPC (1). 2 Comunicazioni fra processi/thread Processi/thread eseguiti concorrentemente hanno bisogno di interagire per.
Ottimizzazione statica del codice per processori pipelined Canella Matteo & Miglioli Filippo.
Architetture dei Calcolatori (Lettere j-z) Il Processore (2)
File.
Camil Demetrescu, Irene Finocchi, Giuseppe F. ItalianoAlgoritmi e strutture dati Algoritmi e Strutture Dati Capitolo 2 Modelli di calcolo e metodologie.
1 Corso di Informatica (Programmazione) Lezione 4 (24 ottobre 2008) Architettura del calcolatore: la macchina di Von Neumann.
1 Corso di Informatica (Programmazione) Lezione 10 (12 novembre 2008) Programmazione in Java: espressioni booleane e controllo del flusso (selezione)
Corso di Informatica (Programmazione)
1 Corso di Laurea in Biotecnologie Informatica (Programmazione) Problemi e algoritmi Anno Accademico 2009/2010.
Risorse e Stallo.
Caratteristiche principali dell’architettura del processore MIPS
Caratteristiche principali dell’architettura del processore MIPS
Evoluzione del MIPS: superpipeline e superscalari
Schema di principio del SCA di una MMU Memory Management Unit
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
Corso di Informatica A.A Corso di Informatica Laurea Triennale - Comunicazione&Dams Dott.ssa Adriana Pietramala Dott.ssa.
Il Linguaggio Macchina
Dipartimento di Ingegneria Idraulica e Ambientale - Universita di Pavia 1 Simulazione di un esperimento di laboratorio: Caduta di un corpo quadrato in.
I numeri by iprof.
Analisi di Immagini e Dati Biologici
UNIVERSITA’ STUDI DI ROMA “FORO ITALICO”
Scheda Ente Ente Privato Ente Pubblico. 2ROL - Richieste On Line.
Esercizio 10.* Un cassiere vuole dare un resto di n centesimi di euro usando il minimo numero di monete. a) Descrivere un algoritmo goloso per fare ciò.
Architetture dei Calcolatori (Lettere j-z ) Il Processore
Architettura del calcolatore
Università degli Studi di Salerno Corso di Calcolatori Elettronici
1 Questionario di soddisfazione ATA - a. sc. 2008/09 Il questionario è stato somministrato nel mese di aprile Sono stati restituiti 29 questionari.
1101 = x 10 x 10 x x 10 x = CORRISPONDENZE
Calcolatori Elettronici Introduzione al Pipelining Francesco Lo Presti Rielaborate da Salvatore Tucci.
Ad opera di: Matteo Donatelli e Maurizio Di Paolo Presentazione su : Elettropneumatica 1.
Pippo.
Università degli Studi di Napoli “Federico II” Facoltà di Ingegneria Dipartimento di Informatica e Sistemistica Corso di Sistemi ad elevate prestazioni.
Bando Pittori e Scultori in Piemonte alla metà del ‘700
lun mar mer gio ven SAB DOM FEBBRAIO.
Arch. Elab. - S. Orlando 1 Esercitazione su Instruction Level Parallelism Salvatore Orlando.
Architettura di una CPU
Arch. Elab. - S. Orlando 1 Progetto del processore e supporto del processore al SO (interruzioni – eccezioni) Salvatore Orlando.
Bus Interface Unit L1 I-CacheL1 D-Cache Fetch/Decode unit Dispatch/Execute unit Retire unit Instruction Pool System Bus L2 Cache 256 KB integrata 4 cicli.
Calcolatori Elettronici Introduzione al Pipelining
IL GIOCO DEL PORTIERE CASISTICA. Caso n. 1 Il portiere nella seguente azione NON commette infrazioni.
Calcolatori Elettronici Il Processore
Informatica Lezione 5 Scienze e tecniche psicologiche dello sviluppo e dell'educazione (laurea triennale) Anno accademico:
Calcolatori Elettronici Il Processore (2)
Corso di Laurea in Informatica Architettura degli elaboratori a.a La macchina programmata Instruction Set Architecture (2) Istruzioni I-type Indirizzamento.
Architettura di un calcolatore e linguaggio macchina.
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.
Il Processore Il processore è la componente dell’unità centrale che elabora le informazioni contenute nella memoria principale L’elaborazione avviene eseguedo.
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.
Cammino dei Dati (Datapath)
Esercitazione su Instruction Level Parallelism
Transcript della presentazione:

Il pipelining: criticità sui dati Lucidi fatti in collaborazione con l’Ing. Valeria Cardellini

Criticità sui dati Consideriamo una sequenza di 5 istruzioni 2 criticità sui dati risolvibili mediante propagazione allo stadio EX

Soluzione con propagazione ottimizz. banco dei registri

Soluzione con propagazione (2) Consideriamo la prima criticità (EX): sub $2, $1, $3 e and $12, $2, $5 Il dato prodotto dall’istruzione sub è disponibile alla fine dello stadio EX (CC 3) Il dato è richiesto dall’istruzione and all’inizio dello stadio EX (CC 4) La criticità può essere rilevata quando l’istruzione and si trova nello stadio EX e l’istruzione sub si trova nello stadio MEM Consideriamo la seconda criticità (MEM): sub $2, $1, $3 e or $13, $6, $2 Il dato è richiesto dall’istruzione or all’inizio dello stadio EX (CC 5) La criticità può essere rilevata quando l’istruzione or si trova nello stadio EX e l’istruzione sub si trova nello stadio WB

Propagazione dai registri di pipeline Gli ingressi alla ALU sono forniti dai registri di pipeline davanti anziché dal registro di pipeline di dietro In questo modo le dipendenze sono in avanti nel tempo Da EX/MEM Da MEM/WB

Riconoscimento della criticità sui dati Usiamo la notazione: NomeRegistroPipeline.CampoRegistro Condizioni che generano la criticità sui dati 1a. EX/MEM.RegisterRd = ID/EX.RegisterRs 1b. EX/MEM.RegisterRd = ID/EX.RegisterRt 2a. MEM/WB.RegisterRd = ID/EX.RegisterRs 2b. MEM/WB.RegisterRd = ID/EX.RegisterRt Consideriamo la prima criticità (EX): sub $2, $1, $3 e and $12, $2, $5 E’ verificata la condizione 1a EX/MEM.RegisterRd = ID/EX.RegisterRs = $2 Consideriamo la seconda criticità (MEM): sub $2, $1, $3 e or $13, $6, $2 E’ verificata la condizione 2b MEM/WB.RegisterRd = ID/EX.RegisterRt = $2

Riconoscimento della criticità sui dati (2) Per evitare propagazioni inutili raffiniamo le condizioni Non tutte le istruzioni scrivono un registro Controlliamo se RegWrite è asserito Il registro $0 come destinazione non richiede propagazione Aggiungiamo EX/MEM.RegisterRd0 e MEM/WB.RegisterRd0 Quindi le condizioni divengono: 1a. EX/MEM.RegWrite and (EX/MEM.RegisterRd  0) and (EX/MEM.RegisterRd = ID/EX.RegisterRs) 1b. EX/MEM.RegWrite and (EX/MEM.RegisterRd  0) and (EX/MEM.RegisterRd = ID/EX.RegisterRt) 2a. MEM/WB.RegWrite and (MEM/WB.RegisterRd  0) and (MEM/WB.RegisterRd = ID/EX.RegisterRs) 2b. MEM/WB.RegWrite and (MEM/WB.RegisterRd  0) and (MEM/WB.RegisterRd = ID/EX.RegisterRt)

Hardware per la propagazione ALU e registri di pipeline senza propagazione ALU e registri di pipeline con propagazione Unità di propagazione (forwarding unit): assegna un valore ai segnali di controllo ForwardA e ForwardB per i due mux davanti alla ALU In ID/EX salvato anche Instruction[25-21] (numero del registro sorgente rs)

Segnali di controllo per la propagazione Controllo MUX Sorgente Significato ForwardA = 00 ID/EX Primo operando della ALU dal banco dei registri ForwardA = 10 EX/MEM Primo operando della ALU propagato dal precedente risultato della ALU ForwardA = 01 MEM/WB Primo operando della ALU propagato dalla memoria dati o da un precedente risultato della ALU ForwardB = 00 Secondo operando della ALU dal banco dei registri ForwardB = 10 Secondo operando della ALU propagato dal precedente risultato della ALU ForwardB = 01 Secondo operando della ALU propagato dalla memoria dati o da un precedente risultato della ALU

Condizioni e segnali di controllo Criticità EX if (EX/MEM.RegWrite and (EX/MEM.RegisterRd  0) and (EX/MEM.RegisterRd = ID/EX.RegisterRs)) ForwardA = 10 and (EX/MEM.RegisterRd = ID/EX.RegisterRt)) ForwardB = 10

Condizioni e segnali di controllo (2) Criticità MEM if (MEM/WB.RegWrite and (MEM/WB.RegisterRd  0) and (MEM/WB.RegisterRd = ID/EX.RegisterRs)) ForwardA = 01 and (MEM/WB.RegisterRd = ID/EX.RegisterRt)) ForwardB = 01

Condizioni e segnali di controllo (3) Potenziale criticità tra risultato dell’istruzione nello stadio WB, risultato dell’istruzione nello stadio MEM e operando sorgente dell’istruzione nello stadio EX Esempio add $1, $1, $2 add $1, $1, $3 add $1, $1, $4 Quindi, le condizioni per la criticità MEM diventano: if (MEM/WB.RegWrite and (EX/MEM.RegisterRd  ID/EX.RegisterRs) and (MEM/WB.RegisterRd  0) and (MEM/WB.RegisterRd = ID/EX.RegisterRs)) ForwardA = 01 and (EX/MEM.RegisterRd  ID/EX.RegisterRt) and (MEM/WB.RegisterRd = ID/EX.RegisterRt)) ForwardB = 01

Unità di elaborazione dati con forwarding

Esempio Consideriamo la sequenza di istruzioni MIPS sub $2, $1, $3 and $4, $2, $5 or $4, $4, $2 add $9, $4, $2 Analizziamo l’esecuzione della sequenza nei cicli di clock da 3 a 6 Ciclo 3: sub in EX Ciclo 4: and in EX Ciclo 5: or in EX Ciclo 6: add in EX Nota: l’istruzione or ha una doppia criticità sui dati

Esempio: cicli di clock 3 e 4 or: entra nella pipeline Nessuna criticità and: in ID/EX vengono scritti $2, $5, 2, 5, e 4 (numeri dei registri) or $4, $4, $2 and $4, $2, $5 add: entra nella pipeline Criticità tra and e sub su $2 and: $2 da EX/MEM, $5 da ID/EX

Esempio: cicli di clock 5 e 6 sub: termina l’esecuzione scrivendo nella prima metà del ciclo di clock $2 nel banco dei registri (no criticità tra add e sub su $2) Criticità tra or e and su $4 e tra or e sub su $2 or: $4 da EX/MEM, $2 da MEM/WB and: termina l’esecuzione Criticità tra add e or su $4 add: $4 da EX/MEM, $2 da ID/EX

ALU e registri di pipeline con forwarding Aggiungiamo un MUX per scegliere come secondo operando sorgente della ALU anche il valore immediato (esteso in segno a 32 bit)

Esercizio Considerare la sequenza di istruzioni MIPS add $1, $1, $3 add $4, $2, $1 and $5, $4, $1 Analizzare l’esecuzione della sequenza nei cicli di clock da 3 a 5

Criticità sui dati e stalli La propagazione non basta per risolvere una criticità sui dati determinata da un’istruzione che legge il registro scritto dalla precedente istruzione di lw (criticità load/use) Occorre individuare la criticità ed inserire uno stallo della pipeline Criticità sui dati non risolvibile mediante la sola propagazione

Condizione per la criticità load/use Condizione per individuare la criticità sui dati di tipo load/use Controllare se istruzione lw nello stadio EX Controllare se il registro da caricare con lw è usato come operando dall’istruzione corrente nello stadio ID In caso affermativo, bloccare la pipeline per un ciclo di clock if (ID/EX.MemRead and and ((ID/EX.RegisterRt = IF/ID.RegisterRs) or (ID/EX.RegisterRt = IF/ID.RegisterRt))) stall the pipeline Condizione implementata dall’unità di rilevamento di criticità (hazard detection unit)

Implementazione di uno stallo Per un ciclo di clock Non aggiornare il PC (PCWrite = 0) Mantenere il contenuto del registro IF/ID (IF/IDWrite = 0) nop corrisponde alle 9 linee di controllo negli stadi EX, MEM e WB pari a 0 Da MEM/WB and $4, $2, $5

Unità di elaborazione Pipelining Propagazione Rilevamento di criticità e stallo

Esempio Consideriamo la sequenza di istruzioni MIPS lw $2, 20($1) and $4, $2, $5 or $4, $4, $2 add $9, $4, $2 Simile all’esempio del lucido 13 ad eccezione della prima istruzione Analizziamo l’esecuzione della sequenza nei cicli di clock da 2 a 7

Esempio: cicli di clock 2 e 3 and: entra nella pipeline Nessuna criticità lw: In ID/EX vengono scritti $1, 1 e 2 (numeri dei registri) or: entra nella pipeline and: dovrebbe leggere il valore scritto in $2 da lw. L’unità di rilevamento di criticità blocca l’avanzamento delle istruzioni and e or: PCWrite=0 e IF/ID.Write=0

Esempio: cicli di clock 4 e 5 Viene inserito lo stallo and e or possono riprendere l’esecuzione and: $2 da MEM/WB, $4 da ID/EX

Esempio: cicli di clock 6 e 7 Lo stallo ha consentito a lw di scrivere nel quinto ciclo: nel sesto ciclo non occorre la propagazione da MEM/WB per or or: $4 da EX/MEM e $2 da ID/EX Criticità tra add e or su $4 add: $4 da EX/MEM e $2 da ID/EX

Esercizio Considerare la sequenza di istruzioni MIPS lw $2, 20($1) add $4, $5, $2 sub $4, $4, $2 Analizzare l’esecuzione della sequenza nei cicli di clock da 3 a 6