CPU pipeline hazards

Похожие документы
L unità di controllo di CPU a singolo ciclo

CPU a ciclo multiplo

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

L'architettura del processore MIPS

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

Richiami sull architettura del processore MIPS a 32 bit

Richiami sull architettura del processore MIPS a 32 bit

Il pipelining: tecniche di base

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

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

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

Il pipelining: tecniche di base

Architettura degli Elaboratori

Elementi base per la realizzazione dell unità di calcolo

Fasi (MIPS) Dove NPC è un registro temporaneo PC (program counter) è il registro IP (instruction pointer)

Lezione 7 Sommatori e Moltiplicatori

Hazard sul controllo. Sommario

ISA (Instruction Set Architecture) della CPU MIPS

Cicli di clock e istruzioni

ARCHITETTURA DI UN ELABORATORE! Ispirata al modello della Macchina di Von Neumann (Princeton, Institute for Advanced Study, anni 40).!

Linguaggio Assembly e linguaggio macchina

Linguaggio Assembly e linguaggio macchina

Lezione 20. Assembly MIPS: Il set istruzioni, strutture di controllo in Assembly

Linguaggio Assembly e linguaggio macchina

Linguaggio assembler e linguaggio macchina (caso di studio: processore MIPS)

Elementi di informatica

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

Le etichette nei programmi. Istruzioni di branch: beq. Istruzioni di branch: bne. Istruzioni di jump: j

Il processore: unità di controllo

Progetto CPU (ciclo singolo) Salvatore Orlando

Linguaggio macchina. 3 tipi di istruzioni macchina. Istruzioni per trasferimento dati. Istruzioni logico/aritmetiche

ARCHITETTURE AVANZATE DEI CALCOLATORI, A.A. 2007/08 Soluzione esercizi sul pipelining

L unità di controllo di CPU multi-ciclo

Istruzioni di trasferimento dati

Implementazione semplificata

Linguaggio macchina. Architettura degli Elaboratori e delle Reti. Il linguaggio macchina. Lezione 16. Proff. A. Borghese, F.

Lezione 20. Assembly MIPS: Il set istruzioni, strutture di controllo in Assembly

Esercitazione sulle CPU pipeline

Calcolatori Elettronici T. ISA DLX: Implementazione Tramite Struttura Pipelined

Architettura degli elaboratori Tema d esame del 20/01/2016

Il Ciclo Fetch-Decode-Execute. C Nyssen/Aberdeen College 2003

Università degli Studi di Cassino

Architettura di tipo registro-registro (load/store)

Calcolatori Elettronici

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

ESERCIZIO 1 Riferimento: PROCESSORE PIPELINE e CAMPI REGISTRI INTER-STADIO

Università degli Studi di Cassino e del Lazio Meridionale

Architettura degli elaboratori - CPU multiciclo A.A. 2016/17. Architettura degli elaboratori

Struttura di un elaboratore

Lezione 7 ALU: Moltiplicazione e divisione

La memoria - tecnologie

Il processore. Istituzionii di Informatica -- Rossano Gaeta

Esercizio n. 7 - Microcodice

Struttura del processore. Funzionamento del processore

Corso di Calcolatori Elettronici MIPS: Istruzioni di confronto Istruzioni di controllo Formato delle istruzioni in L.M.

Architettura degli Elaboratori B Introduzione al corso

Esercizi su microistruzioni. 1 Esercizi con architettura a 1 bus

Riassunto. Riassunto. Ciclo fetch&execute. Concetto di programma memorizzato. Istruzioni aritmetiche add, sub, mult, div

Architettura di un processore basato su registri generali.

CPU. Maurizio Palesi

Транскрипт:

Architettura degli Elaboratori e delle Reti Lezione 23 CPU pipeline hazards Proff. A. Borghese, F. Pedersini Dipartimento di Scienze dell Informazione Università degli Studi di Milano L 23 /24 Sommario! CPU pipeline Unità di Controllo (UC)! Criticità (hazards) soluzioni alle criticità nei dati L 23 2/24

Criticità (hazards) Sintesi! Criticità strutturali " Necessità della stessa unità funzionale più volte, nello stesso passo. " Le unità funzionali non sono in grado di supportare le istruzioni (nelle diverse fasi) che devono essere eseguite in un determinato ciclo di clock.! Criticità di Dati " Dovrei eseguire un istruzione in cui uno dei dati è il risultato dell esecuzione di un istruzione precedente. " lw $t, 6($s) " add $t, $t, $s L 23 3/24 CPU pipeline: esempio esec. istruzioni lw Passo esecuzione: lw PC branch oria Dati Istruzioni Register File (Fase fetch) Yes Yes (Decodifica) Yes (Esecuzione) Yes (Acc memoria) Yes (riscrittura) Yes lw $t, 8($t2) (PC) RF RF lw $t, 2($t2) (PC) RF RF lw $t, 6($t2) (PC) RF RF... -PC! Presenza di criticità strutturali:, ORIA / (PC), oria DATI / ISTRUZIONI! Soluzione: replicazione delle risorse L 23 4/24

Struttura CPU pipeline! Duplicazione memoria (Dati / Istruzioni)! Triplicazione (, -PC, -offset) Registri di pipeline L 23 5/24 Funzionamento CPU pipeline! Esempio: istruzione lw 5 fasi (cicli di clock) clock(t) t L 23 6/24

Segnali di controllo CPU pipeline Segnale RegDst Src Branch toreg Effetto quando è negato () Il numero del registro destinazione proviene dal campo rt (bit 2-6) Il secondo operando della proviene dalla seconda uscita in lettura del RF Il valore del PC viene sostituito dall uscita del sommatore che calcola PC + 4 (condizionato all uscita di ) Il valore inviato all ingresso Dato al RF proviene dalla Effetto quando è affermato () Il numero del registro destinazione proviene dal campo rd (bit 5-) Il secondo operando della è la versione estesa (con segno) del campo offset Il valore del PC viene sostituito dall uscita del sommatore che calcola l indirizzo di salto (condizionato all uscita di ) Il valore inviato all ingresso DatoScritto al RF proviene dalla memoria Read Write RegWrite Nessuno Nessuno Nessuno Il contenuto della cella di memoria dati indirizzata dal MAR è posto nel MDR Il contenuto in ingresso al MDR viene memorizzato nella cella il cui indirizzo è caricato nel MAR Nel registro specificato a #RegWrite viene scritto il valore presente all ingresso DatoScritto! Scrittura di PC e dei registri di pipeline avviene ad ogni fronte di clock L 23 7/24 CPU pipeline: progetto unità di controllo Unità di controllo CPU pipeline: Ipotesi:! Ogni istruzione necessita dei propri segnali di controllo! Ogni segnale di controllo è utilizzato in una sola fase! Segnali per fase, o Soluzione:! una volta generati i segnali di controllo di un istruzione... " nella fase di decodifica!...li trasporto attraverso la pipeline insieme all istruzione stessa " nelle fasi successive (,, ) L 23 8/24

Osservazioni! I segnali di controllo particolari (legati alle diverse istruzioni) si possono così raggruppare: " Nelle fasi di fetch e decodifica non esistono segnali di controllo " Il contenuto di rt ed il numero di rd vengono portati attraverso i vari stadi Fase # Exec ory Segnali # $ Istruz. Reg Dst Op Op Src Branch - Read - Write Reg- Write To- Reg Tipo R lw sw x x beq x x L 23 9/24 Generazione dei segnali di controllo! I segnali di controllo vengono generati nello stadio di decodifica e poi propagati agli stadi successivi. L 23 /24

UC per CPU Pipeline L 23 /24 Sommario! Struttura CPU Pipe-line! Gestione delle criticità " Hazard nei dati L 23 2/24

Criticità nella CPU! Criticità strutturali " risolte con la duplicazione (suddivisione) delle unità funzionali " 3, 2 memorie, come nella CPU singolo ciclo! Criticità di dati: Devo eseguire un istruzione in cui uno dei dati è il risultato dell esecuzione di un istruzione precedente " I prelievi e portano informazioni a ritroso # possibile causa di problemi. " prelievo nello stadio del risultato dell operazione! Soluzione mediante due tecniche: " SW: Riorganizzazione del codice (compilatore). " HW: Propagazione (forwarding) L 23 3/24 Esempio: criticità di dati istruzioni A/L tipo R! Il dato in $2 diviene disponibile nel RF nella fase della sub. " n è ancora pronto quando viene effettuata la decodifica della and e della or successive.! Hazards: tra sub e and e tra sub e or " Con le frecce sono indicate le dipendenze, in rosso gli hazard sub $2, $, $3 $ $3 s#$2 and $2, $2, $5 $2 and $5 s#$2 or $3, $6, $2 $6 or $2 (s#$3) add $4, $2, $2 $2+$2 s#$4 sw $5, ($s2) $2+ $5# L 23 4/24

Soluzione SW: riorganizzazione del codice Soluzioni:! EA: inserimento nop sub $2, $, $3 nop nop and $2, $2, $5 or $3, $6, $2 add $4, $2, $2 sw $5, ($s2) " Spreco di 2 cicli di clock, in modo che la fase dell istruzione: and $2, $2, $5 vada a coincidere con la fase di della: sub $2, $, $3! Situazione troppo frequente perché la soluzione sia accettabile. L 23 5/24 Soluzione HW: forwarding sub $2, $, $3 $ $3 s#$2 and $2, $2, $5 $2 and $5 s#$2 or $3, $6, $2 $6 or $2 (s#$3) add $4, $2, $2 $2+$2 s#$4 sw $5, ($s2) $2+ $5#! Prendo il risultato della sottrazione all inizio dello stadio (per le istruzioni R, lo stadio M è uno stadio idle): $-$3 è già contenuto nel registro / e si trova all uscita nella fase bassa del clock.! Sovrascrivo il primo operando della and successiva ($2) con il risultato della sottrazione eseguita in precedenza (contenta all uscita del registro /), senza attendere la fase di. L 23 6/24

Hazard tra sub e or: forwarding sub $2, $, $3 $ $3 s#$2 and $2, $2, $5 $2 and $5 s#$2 or $3, $6, $2 $6 or $2 (s#$3) add $4, $2, $2 $2+$2 s#$4 sw $5, ($s2) $2+ $5#! Prendo il risultato della sottrazione ($-$3) all inizio dello stadio, che è presente all uscita del registro / nella fase bassa del clock.! Sovrascrivo il primo operando della and successiva ($2) con il risultato della sottrazione eseguita in precedenza (presente all uscita del registro /), senza attendere la fase di. L 23 7/24 Hazard dati: Forwarding Forwarding: si invia il risultato dell istruzione precedente ad un passo intermedio dell istruzione attuale (in pipe).! Il contenuto dei registri / e / anticipa il contenuto del Register File. L 23 8/24

Forwarding e contenuto del registro /! Nel normale funzionamento, il registro / contiene quanto letto dal Register File.! Quando abbiamo forwarding, quello che viene letto dal registro / nella fase di esecuzione deve essere sovrascritto da quanto letto dal registro / o /.! Nel registro / è contenuto il risultato dell operazione eseguita all istante precedente.! Nel registro / è contenuto il risultato dell operazione eseguita 2 istanti precedenti. L 23 9/24 Hazard nei dati, progetto soluzione HW! Datapath: " collegamenti da :out ad :in " e da :out a :in $2 $-$3! Controllore: " Unità di propagazione L 23 2/24

Soluzione architetturale per AND Hazard su AND:! Occorre implementare la seguente funzione logica nella fase dell esecuzione dell istruzione: t-: sub $2, $, $3 t: and $2, $2, $5 (RD t- == RS t ) then collega : (RD t- == RT t ) then collega : RD t- # RS t RD t- # RT t! "# t-!$!"# sub!$ $2 è il contenuto del registro destinazione dell istruzione precedente la and (sub $2, $, $3) contenuto nel registro / L 23 2/24 Soluzione architetturale per OR Hazard su OR:! Occorre implementare la seguente funzione logica nella fase dell esecuzione dell istruzione: t-2: sub $2, $, $3 t-:... t: or $3, $6, $2 if (RD t-2 = RS t ) then collega RD t-2 con RS t if (RD t-2 = RT t ) then collega RD t-2 con RT t! RD t+2 = RD sub = $2!è il contenuto del registro destinazione di 2 istruzioni precedenti la or (sub $2, $, $3) che è copiato nella fase. L 23 22/24

Controllo MUX ingresso alla! Nuovi segnali di controllo: PropagaA, PropagaB " generati dall unità di propagazione Controllo Multiplexer PropagaA = PropagaA = PropagaA = PropagaB = PropagaB = PropagaB = Registro Sorgente +#'&* &*'%&% %&%'( ) +#'&* &*'%&% %&%'( ) Funzione Il primo operando della proviene dal Register File Il primo operando della è propagato dal risultato della per l istruzione precedente. Il primo operando della è propagato dalla memoria o da un altra istruzione precedente. Il secondo operando della proviene dal Register File Il secondo operando della è propagato dal risultato della per l istruzione precedente. Il secondo operando della è propagato dalla memoria o da un altra istruzione precedente. L 23 23/24 Data Hazard: soluzioni Soluzioni DATA HAZARD: SW: Buona scrittura del codice " il programmatore deve conoscere la macchina per scrivere un buon codice!! Compilatore efficiente " che riordini il codice HW: FORWARDING: Architettura che renda disponibile i dati appena pronti alla fase di esecuzione.! Inserire una nop! Accettare uno stallo " non sempre si può evitare L 23 24/24