• Non ci sono risultati.

Pipeline del MIPS

N/A
N/A
Protected

Academic year: 2021

Condividi "Pipeline del MIPS"

Copied!
85
0
0

Testo completo

(1)

Pipeline del MIPS

(2)

Progettazione del datapath

Prima soluzione: Datapath SingleCycle

–  Semplice da realizzare

–  Condizionato dal worst case (istruzione più lenta)

–  Ogni unità funzionale è usata una volta sola per ciclo

Seconda soluzione: Datapath Multicycle

•  Suddivisione in fasi e registri intermedi

(3)

Il datapath a ciclo singolo

MemtoReg MemRead MemWrite ALUSrc RegDst PC Instruction memory Read address Instruction [31– 0] Instruction [20– 16] Instruction [25– 21] Add RegWrite 4 16 32 Instruction [15– 0] 0 Registers Write register Write data Write data Read data 1 Read data 2 Read register 1 Read register 2 Sign extend ALU result Zero Data memory Address Read data M u x 1 0 M u x 1 0 M u x 1 0 M u x 1 Instruction [15– 11] ALU Shift left 2 PCSrc ALU

(4)

5 fasi per un’istruzione

IFetch

: Instruction Fetch e aggiornamento PC

Dec

: Registers Fetch e decodifica istruzione

Exec

:

Esecuzione (R-type)

Calcolo dell’indirizzo di memoria (I-type)

Mem

:

(5)

Dove si realizzano le varie fasi ?

Flusso di esecuzione

Eccezioni al flusso di esecuzione

(6)

Dal ciclo singolo al pipeline

o 

Come permettere l’utilizzo dell’hardware da

più istruzioni in contemporanea ?

o 

Si inseriscono registri tra i vari stadi

n 

Mantengono le informazioni prodotte nel ciclo

precedente

(7)
(8)

Prime considerazioni

o  I registri sono presenti tra le varie parti del datapath,

ognuna delle quali realizza una particolare fase.

o  I registri separano una sezione dall’altra, evitando

così che le diverse istruzioni in esecuzione interferiscano tra loro.

o  Il flusso dei dati è da sinistra verso destra con due

(9)

Prime considerazioni (2)

o  Solo le istruzioni successive possono essere

influenzate da questi movimenti dati in “direzione opposta” al flusso consueto.

o  Si verificano dei “conflitti” o “hazard” detti anche alee

o  Esempi:

n  WB -> ID può provocare

o  data hazards (alea sui dati)

n  MEM -> IF può provocare

(10)
(11)
(12)
(13)
(14)
(15)

Esecuzione di sw

l 

Che cosa cambia ?

l 

IF, ID uguali

l 

In EX viene inoltrato il contenuto di Rt

l 

In MEM viene scritto il valore in memoria

(16)
(17)
(18)
(19)
(20)
(21)
(22)
(23)

Istruzioni / Segnali di controllo

Branch Write Mem

l  Sono raggruppati secondo lo stadio in cui sono attivi l  I primi due stadi non contengono segnali di controllo

(24)

Distribuzione dei segnali di controllo

l  I segnali vengono determinati durante la fase ID

l  Vengono usati nelle tre fasi successive: vanno quindi

(25)
(26)

Pipeline: rappresentazione grafica

l  Necessario rappresentare la situazione della pipeline in

un certo istante

l  Quali istruzioni si stanno eseguendo ? In quale stadio?

l  I diagrammi visti finora rappresentano la situazione in

un solo ciclo di clock (diagrammi a singolo ciclo)

l  Sono necessari diagrammi che si riferiscano a più cicli

di clock (diagrammi a più cicli)

l  A questo scopo si adopera una rappresentazione

(27)

Esempio

Consideriamo la sequenza di cinque istruzioni:

lw

$10, 20($1)

sub $11, $2, $3

add $12, $3, $4

lw $13, 24($1)

add $14, $5, $6

E supponiamo di voler considerare la loro

esecuzione sul datapath pipelined al

(28)
(29)
(30)
(31)

Confronto tra le implementazioni

lw IFetch Dec Exec Mem WB

Pipeline:

IFetch Dec Exec Mem WB

sw Clk

Ciclo singolo:

Load Store Waste

IFetch Dec Exec Mem WB

R-type

Cycle 1 Cycle 2

(32)

Ritardo del Write

•  Si ritarda di un ciclo il write delle istruzioni R-type

–  Tutte le istruzioni accedono al Write Port del R.F. nel 5° passo ànessun conflitto

–  Il 4° passo (Mem) per le istr. R-type è in effetti un passo NOP

Clock

Cycle 1 Cycle 2 Cycle 3 Cycle 4 Cycle 5 Cycle 6 Cycle 7 Cycle 8 Cycle 9

Ifetch Reg/Dec Mem Wr R-type

Ifetch Reg/Dec Mem Wr R-type

Ifetch Reg/Dec Exec Wr

R-type Mem

Exec

Exec

(33)

Il pipeline ottimizza il throughput

I n s t r. O r d e r

Tempo (cicli di clock)

Inst 0 Inst 1 Inst 2 Inst 3 ALU IM Reg DM Reg ALU IM Reg DM Reg ALU IM Reg DM Reg ALU IM Reg DM Reg ALU

Una volta che il pipeline è pieno, si completa

un’istruzione ad ogni ciclo

(34)

l’ISA MIPS favorisce il pipelining

o  Tutte le istruzioni hanno la stessa lunghezza

n  Più semplice il fetch nel 1° passo e il decode nel 2°

passo

o  Pochi formati di istruzione (3) con simmetria tra i

formati

n  Possibile cominciare la lettura del register file nel

2° passo

o  Operazioni in memoria solo per load/store

(35)

Problemi dal pipelining ?

o

Alee o “hazards”

n

situazioni di conflitto che devono essere gestite

o conducono a malfunzionamenti

o

Tre tipi di Alee

n

  Alee strutturali

n

  Alee sui dati

n

  Alee sul controllo

(36)

Incerti sulle Alee?

n  Alee strutturali:

tentativo di usare contemporaneamente la stessa risorsa da parte di due istruzioni differenti

n  Alee sui dati:

tentativo di usare i dati prima che siano disponibili

o  Gli operandi sorgente di un’istruzione sono prodotti da

un’istruzione precedente che è ancora nel pipeline

o  Istruzione di Load seguita immediatamente da un’istruzione

che richiede l’operando del load come sorgente per un’operazione sull’ALU

(37)

I n s t r. O r d e r

Tempo (cicli di clock)

lw

Inst 1 Inst 2 Inst 3

ALU

Mem Reg Mem Reg

ALU

Mem Reg Mem Reg

ALU

Mem Reg Mem Reg

ALU

Mem Reg Mem Reg

Alea strutturale 1: memoria unica

Lettura dati dalla memoria

(38)

Alea strutturale 1: memoria unica

o

Soluzione ideale: uso di due memorie

n

le memorie sono lente rispetto al processore e

complicate da costruire: inefficiente

o

Soluzione pratica: simuliamo la presenza

di due memorie tramite una memoria

(39)

Alea strutturale 2: accesso ai registri

I n s t r. O r d e r Inst 1 Inst 2 ALU IM Reg DM Reg ALU IM Reg DM Reg ALU IM Reg DM Reg ALU IM Reg DM Reg ALU add r1, add r2,r1,

(40)

Alea strutturale 2: accesso ai registri

o

L’accesso ai registri è molto veloce:

richiede meno di metà del tempo

necessario ad un’operazione ALU

o

Soluzione: si introduce la convenzione

n

Scrittura sui registri durante la prima metà del

ciclo di clock

n

Lettura dai registri durante la seconda metà

(41)

Alea strutturale 2: accesso ai registri

I n s t r. O r d e r Inst 1 Inst 2 ALU IM Reg DM Reg ALU IM Reg DM Reg ALU IM Reg DM Reg ALU IM Reg DM Reg ALU add r1, add r2,r1,

(42)

Alea sui dati

Consideriamo la sequenza di istruzioni

add

$t0

, $t1, $t2

sub $t4,

$t0

,$t3

(43)

Alea sui dati

L’influenza su fasi precedenti produce alee

I n s t r. O r d e r add $t0, $t1, $t2 sub $t4, $t0 ,$t3 and $t5, $t0 ,$t6 or $t7, $t0 ,$t8 ALU IM Reg DM Reg ALU IM Reg DM Reg ALU IM Reg DM Reg ALU IM Reg DM Reg

(44)

Alea sui dati:

Read Before Write

ALU IM Reg DM Reg ALU IM DM Reg ALU IM DM Reg ALU Reg Reg I n s t r. O r d add $t0, $t1, $t2 sub $t4, $t0 ,$t3 and $t5, $t0 ,$t6

(45)

ALU

IM Reg DM Reg

Alea sui dati: soluzione 1

ALU IM Reg DM Reg ALU IM Reg DM Reg Possibile risolvere inserendo dei tempi morti (stall) ma peggiora il throughput add $t0, $t1, $t2 stall stall and $t5, $t0 ,$t6 sub $t4, $t0 ,$t3

(46)

Alea sui dati: soluzione 2

ALU IM Reg DM Reg ALU IM Reg DM Reg ALU IM Reg DM Reg Si propagano i dati in avanti appena sono disponibili verso le unità che li richiedono (forwarding) ALU IM Reg DM Reg I n s t r. O r d e add $t0, $t1, $t2 sub $t4, $t0 ,$t3 and $t5, $t0 ,$t6 or $t7, $t0 ,$t8

(47)

Alea sui dati: soluzione

2

ALU IM Reg DM Reg ALU IM Reg DM Reg ALU IM Reg DM Reg ALU IM Reg DM Reg ALU I n s t r. O r d e r add $t0, $t1, $t2 sub $t4, $t0 ,$t3 and $t5, $t0 ,$t6 or $t7, $t0 ,$t8 Si propagano i dati in avanti appena sono disponibili verso le unità che li richiedono (forwarding)

(48)
(49)

Forwarding

l 

Il risultato dell’istruzione sub è già disponibile al

termine dello stadio EX (CC3).

l 

Le altre istruzioni hanno bisogno di quel dato

negli stadi CC4 (and) e CC5 (or)

l 

Dove si trova il dato in quegli istanti ?

l  CC4: nel registro EX/MEM

l  CC5: nel registro MEM/WB

l 

Come è quindi possibile capire che è necessario

il forwarding ?

•  1a: EX/MEM.RegistroRd == ID/EX.Registro.Rs

(50)

Forwarding

Condizione 1a

(51)
(52)
(53)

Alea sui dati da Load

I n s t r. O r d e r lw r1,100(r2) sub r4,r1,r5 and r6,r1,r7 or r8, r1, r9 ALU IM Reg DM Reg ALU IM Reg DM Reg ALU IM Reg DM Reg ALU IM Reg DM Reg ALU

(54)
(55)

Alea sui dati da Load: forwarding

I n s t r. O r d e r lw r1,100(r2) sub r4,r1,r5 and r6,r1,r7 xor r4,r1,r5 or r8, r1, r9 ALU IM Reg DM Reg ALU IM Reg DM Reg ALU IM Reg DM Reg ALU IM Reg DM Reg ALU IM Reg DM Reg

(56)

Il controllo deve bloccare il pipeline:

interlock

Alea sui dati da Load

sub $t3,

$t0

,$t2

I$ Reg bub ALU D$ Reg

ble

and $t5,

$t0

,$t4

A

LU

I$ bub Reg D$ Reg

lw

$t0

, 0($t1)

IF ID/RF EX ALU MEM WB

(57)
(58)

Alea da Load: introduzione di stall

l 

Condizione per la verifica dell’hazard:

(ID/EX.MemRead and

((ID/EX.RegistroRt=IF/ID.RegistroRs)or

(ID/EX.RegistroRt=IF/ID.RegistroRt))

l 

Unità di rilevamento dell’hazard

l 

Meccanismo:

(59)
(60)

Alea sui dati da Load

o

Lo spazio per l’istruzione dopo un load è

chiamato “

load delay slot

o

L’inserimento dello stall è inevitabile se

l’istruzione usa il risultato del load.

o

Non necessario se il traduttore inserisce nello

slot un’istruzione non dipendente dal load

n  (reordering) à traduttore cosciente del pipelining

(61)

Alea sui dati da Load

Lo stall è equivalente ad un NOP

sub $t3

,$t0

,$t2

and $t5,

$t0

,$t4

lw

$t0

, 0($t1)

ALU I$ Reg D$ Reg bub ble bub ble bub ble bub ble bub ble A LU I$ Reg D$ Reg A LU I$ Reg D$ Reg

nop

(62)

Nota storica

o

Il MIPS è stato il primo progetto di

processore a risolvere il conflitto sui dati

proveniente dalle istruzioni load senza

tulizzare interlock e stall

o

Acronimo reale per il MIPS:

Microprocessor without

Interlocked

(63)

Alea di controllo: salto

I$

beq

Instr 1

Instr 2

Instr 3

Instr 4

A LU I$ Reg D$ Reg A LU I$ Reg D$ Reg A LU I$ Reg D$ Reg A LU Reg D$ Reg A LU I$ Reg D$ Reg I n s t r. O r d e r

(64)

Alea di controllo: salto

o

L’unità per il confronto e la decisione è nel

terzo stage (ALU stage)

n

Quindi altre due istruzioni dopo il

beq

entreranno nel pipeline, quale che sia il

risultato del confronto

o

Comportamento (desiderato) del salto

n

Se il confronto fallisce continua la normale

(65)

Alea di controllo: salto. Soluzione 1

Blocco del pipeline finchè il confronto non

sia stato realizzato

Inserimento di NOP

Conseguenza: i salti richiedono 3 cicli di clock

(assumendo che il confronto si faccia nel 3°

stage)

(66)

Alea di controllo: Soluzione 2.1

o

Soluzione 2.1:

n

Anticipazione del confronto al passo 2

n

Appena l’istruzione è decodificata, si può

decidere immediatamente e modificare il PC

(se necessario)

n

In questo modo entra solo un’istruzione nel

(67)

Alea di controllo. Soluzione 2.1

Inserimento di una bolla

add

beq

lw

A LU I$ Reg D$ Reg A LU I$ Reg D$ Reg A LU Reg D$ Reg I$ I n s t r. O r d e r

Time (clock cycles)

bub ble

(68)
(69)

Alea di

controllo

(70)

Alea di controllo: Soluzione 2.2

o

Soluzione 2.2 (ridefinizione del salto)

n

Vecchia definizione: in caso di salto, nessuna

istruzione successiva al branch deve essere

eseguita

n

Nuova definizione: in ogni caso, viene

eseguita l’istruzione che segue

immediatamente il branch (definita

(71)

Note sul Branch-Delay Slot

Caso peggiore

Inserimento di un nop nello slot

Caso migliore

È possibile trovare un’istruzione precedente al

branch che possa essere posticipata al branch

senza alterare il flusso di controllo (e dei dati)

Dipende dalle capacità del traduttore

(72)

Nondelayed vs. Delayed Branch

add $1 ,$2,$3

sub $4, $5,$6

beq $1, $4, Exit

or $8, $9 ,$10

Nondelayed Branch

add $1 ,$2,$3

sub $4, $5,$6

beq $1, $4, Exit

or $8, $9 ,$10

Delayed Branch

(73)

Riassumendo ...

l 

Il pipelining migliora le prestazioni incrementando

il throughput delle istruzioni: sfrutta l’Instruction

Level Parallelism

l  Esegue più istruzioni in parallelo

l  Ogni istruzione ha la stessa latenza

l 

E’ soggetto ad alee

l  Strutturali, di dati, di controllo

l 

Gli stalli riducono le prestazioni

l  Ma sono necessari per ottenere risultati corretti

l 

Il compilatore può riorganizzare il codice per

(74)
(75)

Come aumentare l’ILP ?

l  Esecuzione parallela (Multiple Issue) superscalare

l  Replica degli stadi di pipeline (pipeline multiple)

l  Si avviano più istruzioni nel ciclo di clock

l  Parallelizzazione statica dell’esecuzione (Static MI)

l  Il compilatore raggruppa le istruzioni da eseguire

insieme

l  Le impacchetta in insiemi di esecuzione (issue slots)

l  Individua ed evita le alee

l  Parallelizzazione dinamica dell’esecuzione (Dynam. MI)

l  La CPU esamina il flusso di istruzioni e sceglie quali

eseguire in ogni ciclo

(76)

Parallelizzazione statica

l 

Il compilatore raggruppa le istruzioni in

pacchetti di esecuzione

l 

Gruppi di istruzioni che possono partire

nello stesso ciclo

l 

Determinati dalle risorse richieste

l 

Ogni pacchetto può essere visto come

(77)

Parallelizzazione statica

l 

Il compilatore deve impedire alee (se

possibile)

l 

Riordina le istruzioni nei pacchetti

l 

Nessuna dipendenza all’interno del

pacchetto

l 

Possibili dipendenze tra pacchetti

(78)

Parallelizzazione dinamica

l 

Processori “superscalari”

l 

La CPU decide quante e quali istruzioni avviare

in un ciclo (0, 1, 2, …)

l  Da evitare alee strutturali e di dati

l 

Non necessario lo scheduling da parte del

compilatore

l  Anche se può aiutare …

l  La CPU deve garantire che l’esecuzione sia

(79)

Predizione...

l 

Permette di “indovinare” le caratteristiche di

un’istruzione

l 

Inizia l’operazione appena possibile

l 

Verifica se la previsione è stata corretta

l 

Se OK, completa l’operazione; altrimenti

torna indietro

l 

Esempi: branch prediction

l 

E’ comune alla parallelizzazione statica e

(80)

Organizzazione di una CPU superscalare

l 

La pipeline è divisa in tre unità principali

l 

Una unità per l’instruction fetch e avvio

dell’esecuzione

l  Istruzioni avviate in ordine

l 

Un gruppo di più unità funzionali in parallelo

l  Ogni unità ha una Reservation Station che

mantiene gli operandi e memorizza l’operazione

l  Può eseguire istruzioni fuori ordine

(81)
(82)
(83)
(84)
(85)

CPI del

Core i7 920

sui

benchmark

interi di

SPEC2006

Figura

Diagramma a più cicli

Riferimenti

Documenti correlati

[r]

Data l’architettura a pipeline a 5 stadi vista a lezione con hazard control unit, forwarding, register file speciale, disegnare il diagramma temporale di esecuzione..

pipeline senza forwarding e con register file speciale (che nella prima parte del ciclo scrive e nella seconda parte del ciclo legge i registri).. La CPU non ha hazard detection

[r]

option solver cplex; (chooses the solver) model (path)plan.mod; (chooses model file) data (path)plan.dat; (chooses data file). solve; (calls the

* A palindrome is a word or sentence that reads the same forward as it does

Siwek et al 2 have written an excellent paper that I recommend to anyone planning to write an evidence-based clinical review article. A more recent paper presents a strength

The rigid format for the report of original research high- lights the fact that research reports are written to be pub- lished and cited, more than they are written to be read..