55
CEFRIEL CEFRIEL Consorzio per la Formazione e la Consorzio per la Formazione e la Ricerca Ricerca in Ingegneria dell’Informazione in Ingegneria dell’Informazione Politecnico Politecnico di Milano di Milano Come aumentare le prestazioni introduzione alle architetture superscalari introduzione alle architetture superscalari Master in Convergenza Master in Convergenza William Fornaciari William Fornaciari Politecnico di Milano Politecnico di Milano [email protected] [email protected] www.elet.polimi.it/~fornacia www.elet.polimi.it/~fornacia

CEFRIEL Consorzio per la Formazione e la Ricerca in Ingegneria dell’Informazione Politecnico di Milano introduzione alle architetture superscalari Come

Embed Size (px)

Citation preview

Page 1: CEFRIEL Consorzio per la Formazione e la Ricerca in Ingegneria dell’Informazione Politecnico di Milano introduzione alle architetture superscalari Come

CEFRIELCEFRIELConsorzio per la Formazione e la RicercaConsorzio per la Formazione e la Ricercain Ingegneria dell’Informazionein Ingegneria dell’Informazione

PolitecnicoPolitecnicodi Milanodi Milano

Come aumentare le prestazioniintroduzione alle architetture superscalariintroduzione alle architetture superscalari

Master in ConvergenzaMaster in Convergenza

William FornaciariWilliam Fornaciari

Politecnico di MilanoPolitecnico di [email protected]@elet.polimi.it

www.elet.polimi.it/~fornaciawww.elet.polimi.it/~fornacia

Page 2: CEFRIEL Consorzio per la Formazione e la Ricerca in Ingegneria dell’Informazione Politecnico di Milano introduzione alle architetture superscalari Come

W.Fornaciari 2

Obiettivi e sommarioObiettivi e sommario

Contenuto della lezioneCenni alle tecniche per incrementare le prestazioni dei processori

I fattori rilevanti per le prestazioniProspettiva storicaIl parallelismo nell’esecuzione delle istruzioni

Circuiti pipelineUso del pipeling in un processoreProblematiche di conflitti, stalli e scheduling

Il parallelismo a livello di istruzioneSuperscalaritàVLIW

Conclusioni

Page 3: CEFRIEL Consorzio per la Formazione e la Ricerca in Ingegneria dell’Informazione Politecnico di Milano introduzione alle architetture superscalari Come

W.Fornaciari 3

Cicli di clock per istruzione (CPI)Cicli di clock per istruzione (CPI)

CPI = (cicli di ck della CPU per un prog) / numero di istruzioni

tempo di CPU = numero istruzioni * CPI * durata del ciclo di clock =

= (numero istruzioni * CPI) /fck

Introducendo nella prima formula le unità di misura, si può notare in che relazione stiano le varie componenti

CPUditempoprogramma

ondi

clockdiciclo

ondi

istruzione

clockcicli

programma

istruzioni

secsec

Page 4: CEFRIEL Consorzio per la Formazione e la Ricerca in Ingegneria dell’Informazione Politecnico di Milano introduzione alle architetture superscalari Come

W.Fornaciari 4

Fattori che influenzano il tempo Fattori che influenzano il tempo CPUCPU

ciclo di clock (o frequenza)

tecnologia hardware e organizzazione

cicli di clock per istruzione

organizzazione e architettura set istruzioni

numero istruzioni

architettura set istruzioni e tecnologia dei compilatori

Non è possibile modificare separatamente i vari termini poiché le tecnologie di base cui afferiscono le singole caratteristiche sono interdipendenti

Page 5: CEFRIEL Consorzio per la Formazione e la Ricerca in Ingegneria dell’Informazione Politecnico di Milano introduzione alle architetture superscalari Come

W.Fornaciari 5

Prospettiva storicaProspettiva storica

Fino agli anni ’70 si è lavorato principalmente

Migliorando le tecnologie elettroniche

Potenziando l’insieme delle istruzioni per rendere più breve il compilato

Introduzione istruzioni complesse

Aumentare le modalità di indirizzamento

Tentativo di rendere ortogonali istruzioni e modi di indirizzamento

Dopo gli anni ‘70-80 si sono diffusi

approccio quantivativo al progetto del set di istruzioni abbinato a pipelining

Anni ‘90

Parallelismo a livello istruzione (superscalarità e VLIW)

Page 6: CEFRIEL Consorzio per la Formazione e la Ricerca in Ingegneria dell’Informazione Politecnico di Milano introduzione alle architetture superscalari Come

W.Fornaciari 6

Pipelining e ottimizzazione della Pipelining e ottimizzazione della ffckck

Il miglioramento delle prestazioni di un generico circuito digitale è legato principalmente alla riduzione della profondità combinatoriaTale riduzione si può ottenere:

Ottimizzando le parti puramente combinatorie del circuitoFrazionando opportunamente le parti combinatorie per mezzo di registri

Un generico data-path è costituito da una sequenza di operazioni eseguite in cascata: questa struttura si presta molto bene al frazionamentoUna architettura in cui sono presenti registri con lo scopo di frazionare la computazione viene detta pipelineNelle architetture dei calcolatori l’introduzione di pipeline aumenta il numero di istruzioni eseguite nell’unità di tempo

Page 7: CEFRIEL Consorzio per la Formazione e la Ricerca in Ingegneria dell’Informazione Politecnico di Milano introduzione alle architetture superscalari Come

W.Fornaciari 7

CircuitiCircuiti pipelinepipeline

Il diagramma temporale risulta

Si consideri il seguente schema a blocchi

F()y = F(x)x

clk

clk

xy = F(x)

Tx T

x1 x2 x3 x4

y1 y2 y3

1 2 3 4 5

Page 8: CEFRIEL Consorzio per la Formazione e la Ricerca in Ingegneria dell’Informazione Politecnico di Milano introduzione alle architetture superscalari Come

W.Fornaciari 8

CircuitiCircuiti pipelinepipeline

Il blocco funzionale F calcola l’operazione y F(x):

In ingresso a F arriva una successione di dati xi

In uscita da F viene prodotta una successione di dati yi F(xi)

L’ingresso x presenta un ritardo di stabilizzazione pari all’intervallo di tempo Tx

Il blocco funzionale F presenta un ritardo di propagazione pari all’intervallo di tempo T

La frequenza massima di funzionamento è:

TT

1f

x

Page 9: CEFRIEL Consorzio per la Formazione e la Ricerca in Ingegneria dell’Informazione Politecnico di Milano introduzione alle architetture superscalari Come

W.Fornaciari 9

CircuitiCircuiti pipelinepipeline

Si supponga che la funzione F() possa essere decomposta in due nuove funzioni F1() ed F2() tali che

F1()y = F2(z) = F(x)x

clk

)())(()( zFxFFxF 212

L’architettura che corrisponde a tale scomposizione è:

F1()z = F1(x)

Si noti che la somma dei ritardi T1 e T2 relativi alle funzioni F1() ed F2() è in genere maggiore del ritardo T della funzione F():

TTT 21

Page 10: CEFRIEL Consorzio per la Formazione e la Ricerca in Ingegneria dell’Informazione Politecnico di Milano introduzione alle architetture superscalari Come

W.Fornaciari 10

CircuitiCircuiti pipelinepipeline

Questo tipo di decomposizione non porta quindi ad un miglioramento delle prestazioni in quanto le due funzioni parziali vengono comunque calcolate nello stesso ciclo di clockPer aumentare la frequenza di funzionamento si introduce un registro detto registro di pipeline:

F1()y = F2(zout) = F(x)x

F1()

zin = F1(x)

R

zout = zin

In questo modo le funzioni F1() e F2() vengono calcolate in due cicli di clock successiviLa durata di un ciclo di clock può quindi essere ridotta

Page 11: CEFRIEL Consorzio per la Formazione e la Ricerca in Ingegneria dell’Informazione Politecnico di Milano introduzione alle architetture superscalari Come

W.Fornaciari 11

CircuitiCircuiti pipelinepipeline

Nel primo ciclo di clock:Si deve attendere la stabilizzazione di xViene calcolata la funzione F1(x)

Nel secondo ciclo di clock:Il valore zin viene memorizzato nel registro e quindi propagato in zout

Viene calcolata la funzione F2(zout)

I ritardi nei due cicli di clock sono:Primo ciclo: Tx+T1

Secondo ciclo: TR+T2

La frequenza massima di funzionamento è quindi:

),max( 2R1x TTTT

1f

Page 12: CEFRIEL Consorzio per la Formazione e la Ricerca in Ingegneria dell’Informazione Politecnico di Milano introduzione alle architetture superscalari Come

W.Fornaciari 12

CircuitiCircuiti pipelinepipeline

La struttura F scomposta in due fasi F1 e F2, disaccoppiate da un registro di pipelining R si chiama pipeline

Il funzionamento di una pipeline è il seguente:

Il registro di pipelining carica e memorizza il valore zi F1(xi) sull’ i-esimo fronte di salita del segnale di clock

Le operazioni delle due fasi F1 e F2, relative allo stesso valore in ingresso xi, vengono svolte nei ciclo di clock i-esimo e (i+1)-esimo, rispettivamenteNel ciclo di clock i-esimo vengono calcolate le funzioni F1(xi) e F2(xi-1) In ogni ciclo di clock la pipeline elabora due distinti ingressi xi e xi 1, che si trovano in fasi di avanzamento differenti

Questi principi di funzionamento si estendono senza difficoltà a pipeline con un numero n 2 di fasi

Page 13: CEFRIEL Consorzio per la Formazione e la Ricerca in Ingegneria dell’Informazione Politecnico di Milano introduzione alle architetture superscalari Come

W.Fornaciari 13

Pipelining a due fasiPipelining a due fasi

Come già visto una pipeline a due fasi consente una frequenza:

),max( 2R1xreale TTTT

1f

Tale valore indica la frequenza reale. Sotto le seguenti ipotesi:

Dati stabili e registri efficienti: Tx << T1 ; TR << T2

Scomposizione efficiente: T T1 + T2

Fasi bilanciate: T1 T2

Il valore della frequenza viene detto ideale ed è:

T

2

2T

1

T

1

TT

1f

121ideale

),max(

Page 14: CEFRIEL Consorzio per la Formazione e la Ricerca in Ingegneria dell’Informazione Politecnico di Milano introduzione alle architetture superscalari Come

W.Fornaciari 14

Pipelining a Pipelining a nn fasi fasi

E’ naturale estendere la relazione precedente ad una pipeline ad n fasi per la quale valgano le ipotesi già viste:

Dati stabili e registri efficienti: Tx << T1 ; TR,i-1 << Ti

Scomposizione efficiente: T T1 + T2 + … +Tn

Fasi bilanciate: Ti Tj

La frequenza ideale massima di funzionamento diviene:

T

n

nT

1

T

1

TTT

1f

1n21ideale

),,,max(

Il guadagno rispetto al caso senza pipelining è:

n1

T

T

n

T1

Tn

f

f

pipeno

idealeideale

Page 15: CEFRIEL Consorzio per la Formazione e la Ricerca in Ingegneria dell’Informazione Politecnico di Milano introduzione alle architetture superscalari Come

W.Fornaciari 15

Cifre di meritoCifre di merito

Throghput: quantità di dati elaborati nell’unità di tempo:

Latenza: ritardo tra l’ingresso e l’uscita:

T

NThoughput operations

TTTLatenza xy

Si noti che l’introduzione di pipelining è vantaggioso in quanto:

pipenopipe

pipenopipe

LatenzaLatenza

ThroughputThroughput

Page 16: CEFRIEL Consorzio per la Formazione e la Ricerca in Ingegneria dell’Informazione Politecnico di Milano introduzione alle architetture superscalari Come

W.Fornaciari 16

Applicazioni delle pipeline alle Applicazioni delle pipeline alle CPUCPU

L’esecuzione di una istruzione assembler consiste nello svolgimento di alcune operazioni in sequenzaE’ possibile scomporre una istruzione in un numero variabile di operazioni:

Una scelta comune consiste nella decomposizione in 5 operazioniAlcune architetture prevedono una decomposizione in 8 operazioniLe architetture moderne arrivano fino a 13 operazioni

Le varie operazioni, dette fasi o stadi, possono essere eseguite:

Nello stesso ciclo di clockIn cicli di clock successivi

Nel secondo caso si parla di una architettura pipeline

Page 17: CEFRIEL Consorzio per la Formazione e la Ricerca in Ingegneria dell’Informazione Politecnico di Milano introduzione alle architetture superscalari Come

W.Fornaciari 17

Fasi di esecuzioneFasi di esecuzione

La decomposizione in 5 fasi consiste inFetch: Lettura dell’istruzione (una o più parole) dalla memoria di programma. L’istruzione viene memorizzata nel registro IR

Decode: Scomposizione dell’istruzione in campi (codice operativo, registro, costante, ecc), a seconda del formato e delle modalità di indirazzamento

Execute: Esecuzione delle operazioni aritmetico-logiche oppure calcolo dell’indirizzo di destinazione di un salto

Memory access: Accesso in lettura o scrittura alla memoria o ad una periferica

Write back: Salvataggio del risultato prodotto dall’istruzione nel registro destinazione

Page 18: CEFRIEL Consorzio per la Formazione e la Ricerca in Ingegneria dell’Informazione Politecnico di Milano introduzione alle architetture superscalari Come

W.Fornaciari 18

Fasi di esecuzioneFasi di esecuzione

Si noti che:

Non tutte le fasi devono essere sempre presenti. Alcune istruzioni possono necessitare solo di alcune delle fasi descritte

Non tutte le fasi devono essere sempre distinte. Alcune istruzioni possono raggruppare due o più fasi in una sola

La fase di fetch è sempre presente

Fasi diverse possono avere durate diverse

Il flusso di operazioni può essere schematizzato come segue:

MemoryAccess

WriteBackFetch Decode Execute

Page 19: CEFRIEL Consorzio per la Formazione e la Ricerca in Ingegneria dell’Informazione Politecnico di Milano introduzione alle architetture superscalari Come

W.Fornaciari 19

IstruzioniIstruzioni

Fetch Decode Execute Memory Write Access Back

IR InstructionPC [PC]++

Read R2Read R3

Z [R2] + [R3] Skip R1 [Z]

ADD R1, R2, R3 PC[PC], R1[R2][R3]

Fetch Decode Execute Memory Write Access Back

IR InstructionPC [PC]++

Read R2 Z 15 + [R2] MAR [Z]Read, WMFC

R1 [MDR]

LDW R1, 15(R2) PC[PC], R1Mem(15+[R2])

Page 20: CEFRIEL Consorzio per la Formazione e la Ricerca in Ingegneria dell’Informazione Politecnico di Milano introduzione alle architetture superscalari Come

W.Fornaciari 20

IstruzioniIstruzioni

Fetch Decode Execute Memory Write Access Back

IR InstructionPC [PC]++

Read R1 Z cmp ( [R2],16 ) Skip CR [Z]

CMPWI R1, 16 PC[PC], CR compare([R1], 16)

Fetch Decode Execute Memory Write Access Back

IR InstructionPC [PC]++

Read R1Read R3

Z 15 + [R3] MAR [Z]MDR [R1]Write, WMFC

Skip

STW R1, 10(R3) PC[PC], Mem(10+[R3])R1

Page 21: CEFRIEL Consorzio per la Formazione e la Ricerca in Ingegneria dell’Informazione Politecnico di Milano introduzione alle architetture superscalari Come

W.Fornaciari 21

IstruzioniIstruzioni

BNE 150 PC[PC],PC[PC][CR:EQ]*[R1]

Fetch Decode Execute

IR InstructionPC [PC]++

Skip PC [PC] + 100

B 100 PC[PC], PC[PC]+100

Fetch Decode Execute

IR InstructionPC [PC]++

Read R1Read CR

if ( [CR:EQ] == 1 ) then PC [PC] + [R1]

Page 22: CEFRIEL Consorzio per la Formazione e la Ricerca in Ingegneria dell’Informazione Politecnico di Milano introduzione alle architetture superscalari Come

W.Fornaciari 22

Architettura della pipeline interaArchitettura della pipeline intera

Le istruzioni aritmetico/logiche e le istruzioni di accesso alla memoria in lettura/scrittura vengono eseguite dalla pipeline interaLa pipeline intera consta di tutte e cinque le fasi descritte:

MemoryAccess

WriteBackFetch Decode ALU

Memory Memory

Address Instruction

Registers

Op-codeOperands

Operands

Data to writeAddress Data read

Address

Register

Result

Memory ports

Page 23: CEFRIEL Consorzio per la Formazione e la Ricerca in Ingegneria dell’Informazione Politecnico di Milano introduzione alle architetture superscalari Come

W.Fornaciari 23

Architettura della pipeline di Architettura della pipeline di saltosalto

Le istruzioni di salto, condizionato o incondizionato, vengono eseguite dalla pipeline di saltoLa pipeline di salto consta di tre sole fasi:

Fetch Decode ALU

Memory

Address Instruction

Registers

Op-codeOperands

Operands

Address

Result

Page 24: CEFRIEL Consorzio per la Formazione e la Ricerca in Ingegneria dell’Informazione Politecnico di Milano introduzione alle architetture superscalari Come

W.Fornaciari 24

Esecuzione pipelinedEsecuzione pipelined

Si consideri la sequenza di istruzioni:XOR R1, R1, R1

ADDI R2, R1, 54

ADDI R3, R1, 17

L’esecuzione senza pipelining può essere rappresentata mediante il seguente diagramma temporale

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ...

XOR R1, R1, R1

ADDI R2, R1, 54

ADDI R3, R1, 17

F D E MA WB

F D E MA WB

F D E MA WB

... ...

Page 25: CEFRIEL Consorzio per la Formazione e la Ricerca in Ingegneria dell’Informazione Politecnico di Milano introduzione alle architetture superscalari Come

W.Fornaciari 25

Esecuzione pipelined: conflittiEsecuzione pipelined: conflitti

L’esecuzione pipelined, senza opportuni accorgimenti, può provocare conflitti

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ...

XOR R1, R1, R1

ADDI R2, R1, 54

ADDI R3, R1, 17

F R1 E MA R1

F R1 E MA R2

F R1 E MA R3

... ...

Il registro R1 viene infatti letto ai cicli di clock 3 e 4 ma viene scritto al ciclo di clock 5I valori letti ai cicli 3 e 4 non sono correttiQuesta situazione è dovuta ad una dipendenza tra i dati

Page 26: CEFRIEL Consorzio per la Formazione e la Ricerca in Ingegneria dell’Informazione Politecnico di Milano introduzione alle architetture superscalari Come

W.Fornaciari 26

Esecuzione pipelined: stalliEsecuzione pipelined: stalli

Il problema può essere risolto ritardando opportunamente l’esecuzione delle istruzioniI ritardi introdotti vengono detti stalli Il diagramma seguente mostra come l’introduzione di 3 stalli sulla seconda istruzione risolva i conflitti di dipendenza tra i dati

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ...

XOR R1, R1, R1

ADDI R2, R1, 54

ADDI R3, R1, 17

F R1 E MA R1

S R1 E MA R2

F R1 E MA R3

... ...

F S S

Page 27: CEFRIEL Consorzio per la Formazione e la Ricerca in Ingegneria dell’Informazione Politecnico di Milano introduzione alle architetture superscalari Come

W.Fornaciari 27

Esecuzione pipelined: stalliEsecuzione pipelined: stalli

Il processore preleva dalla memoria del calcolatore e avvia all’esecuzione un’istruzione a ogni ciclo di clock. Tuttavia:

I conflitti obbligano il processore a ritardare l’avvio di alcune istruzioniPer ritardare l’esecuzione di un’istruzione si inseriscono uno o più stalliGli stalli vanno inseriti subito dopo la fase di fetch dell’istruzione

In ogni ciclo di clock il processore contiene più istruzioni che si trovano simultaneamente in stato di esecuzione:

Le istruzioni si trovano tutte in fasi di avanzamento differentiAlcuni stadi della pipeline possono essere vuoti, in quanto non usati dall’istruzione oppure in quanto riempiti con uno stallo

Una unità di rilevamento dei conflitti e di inserimento degli stalli, provvede a inserire gli stalli quando è necessario

Page 28: CEFRIEL Consorzio per la Formazione e la Ricerca in Ingegneria dell’Informazione Politecnico di Milano introduzione alle architetture superscalari Come

W.Fornaciari 28

EsempioEsempio

Il programma mostrato, costituito da 11 istruzioni, verrebbe eseguito in assenza di pipeline in 55 cicli di clock.L’esecuzione con pipeline richiede 15 cicli di clock ma introduce conflitti tra i dati e tra le istruzioni:

XOR R1,R1,R1ADDI R2,R1,54

ADDI R3,R1,17

LWZ R4,VA(R1)

MULLW R4,R2,R4

ADD R4,R4,R3

STW R4,VB(R1)

ADDI R1,R1,1

CMPWI CR,R1,100

BLT CR,-7LWZ R4,VA(R1)

1 5 10 15 20 25 30

F R1 E MA R4

F R1 E MA R1

F R1 E MA R2

F R1 E MA R3

F R1 E MA R4

F E MA R4R2R4

R3R4F E MA R4

F E MA WBR1R4

F R1 E MA R1

F R1 E MA CR

F CR E

Page 29: CEFRIEL Consorzio per la Formazione e la Ricerca in Ingegneria dell’Informazione Politecnico di Milano introduzione alle architetture superscalari Come

W.Fornaciari 29

EsempioEsempio

L’introduzione degli stalli mostrati elimina i conflitti e consente l’esecuzione in 30 cicli di clockL’utlima istruzione non viene ritardata con stalli in quanto viene eseguita solo se la condizione di salto non è verificata

XOR R1,R1,R1ADDI R2,R1,54

ADDI R3,R1,17

LWZ R4,VA(R1)

MULLW R4,R2,R4

ADD R4,R4,R3

STW R4,VB(R1)

ADDI R1,R1,1

CMPWI CR,R1,100

BLT CR,-7LWZ R4,VA(R1)

1 5 10 15 20 25 30

F R1 E MA R4

F R1 E MA R1

F S S S R1 E MA R2

F R1 E MA R3

F R1 E MA R4

F S S S E MA R4R2R4

R3R4F S S S E MA R4F S S S E MA WBR1

R4

F R1 E MA R1

F S S S R1 E MA CRF S S S CR E

Page 30: CEFRIEL Consorzio per la Formazione e la Ricerca in Ingegneria dell’Informazione Politecnico di Milano introduzione alle architetture superscalari Come

W.Fornaciari 30

Esecuzione pipelined: schedulingEsecuzione pipelined: scheduling

Si consideri il codice seguente, in cui sono evidenziate le dipendenze dai dati che comportano l’inserimento di stalli:

LWZ R1,B(R0)

LWZ R2,C(R0)

ADD R3,R1,R2

STW R3,A(R0)

LWZ R4,E(R0)

LWZ R5,F(R0)

SUB R6,R4,R5

STW R6,D(R0)

LWZ R1,B(R0)

LWZ R2,C(R0)<3 stalli>ADD R3,R1,R2<3 stalli>STW R3,A(R0)

LWZ R4,E(R0)

LWZ R5,F(R0)<3 stalli>SUB R6,R4,R5<3 stalli>STW R6,D(R0)

Introduzione degli stalli

Page 31: CEFRIEL Consorzio per la Formazione e la Ricerca in Ingegneria dell’Informazione Politecnico di Milano introduzione alle architetture superscalari Come

W.Fornaciari 31

Esecuzione pipelined: schedulingEsecuzione pipelined: scheduling

Alcune istruzioni possono essere spostate senza alterare il programma, si può cioè effettuare uno scheduling delle istruzioni:

LWZ R1,B(R0)

LWZ R2,C(R0)<3 stalli>ADD R3,R1,R2<3 stalli>STW R3,A(R0)

LWZ R4,E(R0)

LWZ R5,F(R0)<3 stalli>SUB R6,R4,R5<3 stalli>STW R6,D(R0)

LWZ R1,B(R0)

LWZ R2,C(R0)

LWZ R4,E(R0)

LWZ R5,F(R0)<1 stallo>ADD R3,R1,R2<3 stalli>STW R3,A(R0)

SUB R6,R4,R5<3 stalli>STW R6,D(R0)

Scheduling

Vengono introdotte 2 fasi di Fetch e non vengono introdottenuove dipendenze tra i dati.

Le nuove fasi di Fetch possonosostituire 2 stalli.

Page 32: CEFRIEL Consorzio per la Formazione e la Ricerca in Ingegneria dell’Informazione Politecnico di Milano introduzione alle architetture superscalari Come

W.Fornaciari 32

Esecuzione pipelined: schedulingEsecuzione pipelined: scheduling

Il nuovo programma ottenuto può essere ulteriormente migliorato tramite il meccanismo di scheduling:

LWZ R1,B(R0)

LWZ R2,C(R0)

LWZ R4,E(R0)

LWZ R5,F(R0)<1 stallo>ADD R3,R1,R2<3 stalli>STW R3,A(R0)

SUB R6,R4,R5<3 stalli>STW R6,D(R0)

Scheduling

L’istruzione SUB introduce un Fetch e nessuna dipendenza tra i dati. Inoltre ritarda di un ciclo di clock la STW di R6 rispettoalla ADD che calcola R6.

La nuova fase di Fetch ed il ritardoaggiuntivo tra la ADD e la STWcorrispondente riducono di unaunita il numero di stalli in ognuna delle istruzioni STW.

LWZ R1,B(R0)

LWZ R2,C(R0)

LWZ R4,E(R0)

LWZ R5,F(R0)<1 stallo>ADD R3,R1,R2<1 stallo>SUB R6,R4,R5<1 stallo>STW R3,A(R0)<1 stallo>STW R6,D(R0)

Page 33: CEFRIEL Consorzio per la Formazione e la Ricerca in Ingegneria dell’Informazione Politecnico di Milano introduzione alle architetture superscalari Come

W.Fornaciari 33

Architetture pipelinedArchitetture pipelined

Architettura tipica con 3 pipeline:Floating-point pipelineInteger pipelineBranch pipeline

LoadDispatchHazards

Unit

Register File

Floating-point pipeline - 8 phases

Integer pipeline - 5 phases

Branch pipeline - 3 phases

Page 34: CEFRIEL Consorzio per la Formazione e la Ricerca in Ingegneria dell’Informazione Politecnico di Milano introduzione alle architetture superscalari Come

W.Fornaciari 34

Architetture pipelined tipicheArchitetture pipelined tipiche

A ogni ciclo di clock l’unità di prelievo, smistamento e soluzione dei conflitti avvia un’istruzione nella pipeline appropriata, se non ci sono conflitti, altrimenti inserisce uno stallo

Ogni classe di istruzioni del processore dispone di una pipeline specifica per la classe

Classi simili possono, talvolta, condividere la stessa pipeline (magari lasciando qualche fase “vuota”, se non dovesse servire)

Pipeline differenti possono avere profondità (misurata in numero di fasi) differenti

I registri del processore (banchi di registri di uso generale e registri di uso speciale) sono condivisi tra le varie pipeline presenti

Page 35: CEFRIEL Consorzio per la Formazione e la Ricerca in Ingegneria dell’Informazione Politecnico di Milano introduzione alle architetture superscalari Come

W.Fornaciari 35

Ricerca di maggiori prestazioniRicerca di maggiori prestazioni

Con il pipelining si cerca di raggiungere CPI=1, in realtà CPI>1 poichè

conflitti sui dati e sul controllomancanza di dati o istruzioni nella cachenecessità di gestire delle eccezioni

Possibile soluzione: superpipelininigspingere la profondità di pipelining es. Alpha ha 8 stadiproblemi

conflitti sui dati: ho in maggior numero di bolle quando si presentanoconflitti controllo: con tanti stadi le diramazioni divengono lente (in caso di errata predizione debbo eliminare più istruzioni dalla pipe)fenomeni di clock skew introdotti dai latch limita l’incremento del clock

Page 36: CEFRIEL Consorzio per la Formazione e la Ricerca in Ingegneria dell’Informazione Politecnico di Milano introduzione alle architetture superscalari Come

W.Fornaciari 36

Incremento del parallelismoIncremento del parallelismo

Il superpipelining è utile all’aumentare del “parallelismo” fra le istruzioni (possibilità di esecuzione simultanea) L’estrazione del parallelismo, oltre che dal compilatore è lasciata allo hardware dell’unità di controllo che, analizzando una finestra di istruzioni deve determinare ev. dipendenze dei dati operando uno scheduling dinamicoPer spingere oltre le prestazioni

concorrenza a livello maggiore della pipelinepossibilità di eseguire più istruzioni simultaneamente, (con CPU singola)

Una CPU con Instruction Level Parallelism (ILP) devecompiere più accessi simultanei alla memoriaeseguire più istruzioni contemporaneamente

Page 37: CEFRIEL Consorzio per la Formazione e la Ricerca in Ingegneria dell’Informazione Politecnico di Milano introduzione alle architetture superscalari Come

W.Fornaciari 37

Processori ILPProcessori ILP

Le prestazioni dipendono pesantemente da compilatore, risorse disponibili durante l’esecuzione, dal progetto del sistema di memoria

il compilatore deve ristrutturare il codice per sfruttare meglio il parallelismo intrinseco del programma più unità funzionali debbono essere in grado di operare in parallelo, con associato un opportuno controllola banda della memoria per istruzioni e dati deve consentire di eseguire i programma alla velocità richiesta

Sul mercato esistono macchine ILP multiple-issuemacchine superscalarimacchine VLIW (Very Long Instruction Word)

Page 38: CEFRIEL Consorzio per la Formazione e la Ricerca in Ingegneria dell’Informazione Politecnico di Milano introduzione alle architetture superscalari Come

W.Fornaciari 38

Processori ILPProcessori ILP

Ricerca di istruzioni con effettui di mutua indipendenzahardware, in fase di esecuzione (dinamicamente)software, in fase di compilazione (staticamente)

Macchine con scheduling dinamico (superscalari)l’identificazione è fatta a livello di compilazione, con eventuale riordino del codice, ma la scelta finale delle istruzioni da avviare al’esecuzione è fatta hw dallo stadio di decodificapossibile compatibilità a livello di codice con CPU a singolo pipelining

Macchine con scheduling statico (VLIW) - next generation?in compilatore identifica ed assembla pacchetti di istruzioni che verranno eseguite dalla CPUnel codice sono presenti informazioni (implicite o esplice) per la delimitazione dei pacchetti. Codice diverso da quello con pipeline singola

Page 39: CEFRIEL Consorzio per la Formazione e la Ricerca in Ingegneria dell’Informazione Politecnico di Milano introduzione alle architetture superscalari Come

W.Fornaciari 39

CPU superscalariCPU superscalari

Molto diffuseSuperSparc, ALPHA, Pentium, PowerPC, …

L’esecuzione delle istruzioni ha inizio in parallelo in base alla disponibilità dei dati e non dell’ordine delle istruzioniCompletate le istruzioni, i risultati sono riordinati in modo da aggiornare lo stato della CPU in base all’ordine corretto delle istruzioni (committment)

Page 40: CEFRIEL Consorzio per la Formazione e la Ricerca in Ingegneria dell’Informazione Politecnico di Milano introduzione alle architetture superscalari Come

W.Fornaciari 40

Requisiti per CPU superscalareRequisiti per CPU superscalare

Lettura di più istruzioni simultaneamente, se possibile, con predizione delle istruzioni di salto condizionale per effettuare letture oltre istruzione di saltoMetodi per determinare le vere dipendenze di dati, considerando anche i valori dei registri, e meccanismi per comunicare questi valori quando occorrono nel corso dell’esecuzioneMetodi per lanciare (issuing) più istruzioni in paralleloDisponibilità di più unità funzionali di tipo pipelined e di gerarchie di memoria capaci di rispondere contemporaneamente più riferimentiMetodi per comunicare valori di dati mediante istruzioni load e store e interfacce di memoria che consentano di gestire prestazioni a volte imprevedibili delle gerarchie di memoriaMetodi per operare il commitment dello stato di un processore nell’ordine corretto, offrendo all’esterno l’apparenza di un’esecuzione “in ordine”.

Page 41: CEFRIEL Consorzio per la Formazione e la Ricerca in Ingegneria dell’Informazione Politecnico di Milano introduzione alle architetture superscalari Come

W.Fornaciari 41

Dipendenze di controlloDipendenze di controllo

Il codice oggetto è statico, la sequenza di istruzioni eseguire è il flusso dinamicoSe le istruzioni sono consecutive, le istruzioni statiche divengono il flusso dinamico semplicemente incrementando il PCDipendenza di controllo

una istruzione ha dipendenza di controllo dalle istruzioni dinamiche che la precedono se il flusso di controllo deve prima attraversare tali istruzionigli aggiornamenti del PC (per incremento o causa salto) originano dipendenze di controlloper ottenere buon parallelismo debbono essere superate

Page 42: CEFRIEL Consorzio per la Formazione e la Ricerca in Ingegneria dell’Informazione Politecnico di Milano introduzione alle architetture superscalari Come

W.Fornaciari 42

Esempio di traduzioneEsempio di traduzione

L2:move r3,r7 #r3--> ailw r8, (r3) #load aiadd r3, r3, 4 #r3 --> ai+1lw r9, (r3) #load ai+1ble r8, r9, L3 #branch ai> ai+1move r3, r7 #r3 --> aisw r9, (r3) #store aiadd r3, r3, 4 #r3 --> ai+1sw r 8, (r3) #store ai+1add r5, r5, 1 #change++

L3:add r6, r6, 1 #i+1add r7, r7, 4 #r4 --> aiblt r6, r4, L2 #branch i<last

for (i:=0; i<last; i++) if (ai> ai+1)

temp= ai;ai= ai+1;ai+1=temp;change++;

Page 43: CEFRIEL Consorzio per la Formazione e la Ricerca in Ingegneria dell’Informazione Politecnico di Milano introduzione alle architetture superscalari Come

W.Fornaciari 43

SpeculazioneSpeculazione

Il programma è visto come un insieme di blocchi basici (BB); nell’esempio sono i tre rettangoliQuando si esegue la prima istruzione di un BB lo saranno anche tutte le altre (finestra di esecuzione) e possono essere considerate per esecuzione parallela a parte rispetto dip. dai datiBB spesso piccoli

modesto parallelismocerco di considerare anche dipendenze di controllo legate a modifiche PC

Quando si incontra saltosi effettua predizione sul risultato saltosi legge in modo speculativo l’istruzione che si prevede sarà eseguita dopoqueste nuove istruzioni entrano a fare parte della finestra di esecuzione

Page 44: CEFRIEL Consorzio per la Formazione e la Ricerca in Ingegneria dell’Informazione Politecnico di Milano introduzione alle architetture superscalari Come

W.Fornaciari 44

SpeculazioneSpeculazione

Se la predizione era correttatolgo etichetta di “speculazione” alle istruzioni lette e aggiorno stato della macchina

Se la predizione era sbagliatadebbo “tornare indietro” garantendo che lo stato non sia modificato erroneamenteper esempio, la ble crea una dipendenza di controllo; se predico di non eseguire il salto, eseguo in modo speculativo le istruzioni successive

Page 45: CEFRIEL Consorzio per la Formazione e la Ricerca in Ingegneria dell’Informazione Politecnico di Milano introduzione alle architetture superscalari Come

W.Fornaciari 45

Dipendenze da risolvereDipendenze da risolvere

Le istruzioni della finestra di esecuzione sono analizzate per scoprire le dipendenze prima di iniziare la loro esecuzioneDipendenze vere (Read-After-Write, RAW)

istruzione può usare un dato solo dopo che che sia stato scritto

Dipendenze artificiali da esaminare e risolvereWrite-After-Read (WAR) :istruzione vuole scrivere dato in registro ri e deve attendere completamento istruzioni precedenti, ancora in fase di esecuzione, che debbono usare il vecchio valore di riWrite-After-Write (WAR, WAW): più istruzioni debbono scrivere i risultati nello stesso registro, debbo garantire l’ordine corretto (del prg statico)

WAR e WAW nascono in fase di compilazioneregistri in numero limitato, cerco di riutilizzarli; si cerca di risparmiare accessi alla memoria; sono provocate da successive iterazioni di un ciclo

Page 46: CEFRIEL Consorzio per la Formazione e la Ricerca in Ingegneria dell’Informazione Politecnico di Milano introduzione alle architetture superscalari Come

W.Fornaciari 46

Schedule di esecuzione parallelaSchedule di esecuzione parallela

Risolte le dipendenze vere e artificiali, le istruzioni sono avviate all’esecuzione in paralleloL’unità di controllo crea uno schedule di esecuzione parallela che garantisce il soddisfacimento dei vincoli di dipendenza e disponibilità di risorse hardwareLe istruzioni possono terminare in ordine diverso dal programma

causa parallelismo e/o diversa latenza delle varie unità funzionalinon posso aggiornare subito il register file e la memoria al termine di una istruzionemantengo in memoria temporanea i risultati (accessibile da eventuali istruzioni dipendenti) fino alla fase di committing o retiring dell’istruzione.

Page 47: CEFRIEL Consorzio per la Formazione e la Ricerca in Ingegneria dell’Informazione Politecnico di Milano introduzione alle architetture superscalari Come

W.Fornaciari 47

Tecnica di esecuzione parallelaTecnica di esecuzione parallela

Page 48: CEFRIEL Consorzio per la Formazione e la Ricerca in Ingegneria dell’Informazione Politecnico di Milano introduzione alle architetture superscalari Come

W.Fornaciari 48

Tecnica di esecuzione parallelaTecnica di esecuzione parallela

Il fetch include la predizione dei salti e crea il flusso di istruzioni dinamiche

Le istruzioni vengono esaminate per identificare se sia possibile rimuovere le dip artificiali (per es con renaming registri) e avviate alla finestra

Nella finestra l’ordine non è più sequenziale, ma legato alle dipendenze vere e alle risorse hw disponibili

Dopo l’esecuzione è come se le istruzioni venissero logicamente riordinate mano a mano che possono essere committed e i loro risultati usati per aggiornare lo stato del processore

Page 49: CEFRIEL Consorzio per la Formazione e la Ricerca in Ingegneria dell’Informazione Politecnico di Milano introduzione alle architetture superscalari Come

W.Fornaciari 49

Architettura tipo di un Architettura tipo di un microprocessore superscalaremicroprocessore superscalare

Page 50: CEFRIEL Consorzio per la Formazione e la Ricerca in Ingegneria dell’Informazione Politecnico di Milano introduzione alle architetture superscalari Come

W.Fornaciari 50

Architetture superscalariArchitetture superscalari

Lettura istruzioniLa cache istruzioni è una memoria piccola e veloce che contiene le istruzioni più recentiIn una CPU superscalare, la fase di lettura legge a ogni ciclo di cache più istruzioni, pari almeno al massimo numero di istruzioni che possono nel caso ottimo essere eseguite contemporaneamenteNel “buffer istruzioni” si registra un certo numero di istruzioni lette; utilizzando questa “riserva” la CPU può continuare il proprio lavoro anche quando la lettura delle istruzioni è bloccata (ad esempio, per un trasferimento da cache) o limitata

Page 51: CEFRIEL Consorzio per la Formazione e la Ricerca in Ingegneria dell’Informazione Politecnico di Milano introduzione alle architetture superscalari Come

W.Fornaciari 51

Architetture superscalariArchitetture superscalari

Decodifica delle istruzioniLe istruzioni vengono prese dal buffer istruzioni, esaminate sia per una definitiva decodifica sia per identificare dipendenze di dati e di controllo, e preparate per gli stadi successivi di pipelineSi identificano le dipendenze vere (RAW) e si risolvono quelle WAW e WAR legate al riuso dei registriSi distribuiscono le istruzioni inviandole (dispatching) alle unità funzionali opportuneCiascuna unità funzionale ha di fronte dei buffer (stazioni di prenotazione) che mantengono operandi e operazione finchè non e pronta l’unità funzionale

Page 52: CEFRIEL Consorzio per la Formazione e la Ricerca in Ingegneria dell’Informazione Politecnico di Milano introduzione alle architetture superscalari Come

W.Fornaciari 52

Architetture superscalariArchitetture superscalari

L’unità di smistamento invia ciascuna istruzione, con gli operandi, alla stazione di prenotazione opportuna e inserisce un riferimento entro un buffer di riordino interno all’unità di consegnaUna istruzione non può essere considerata se non c’è spazio sia nella stazione di prenotazione, sia nel buffer di riordinoLo spazio per mantenere i risultati si esaurisce rapidamente

i processori hanno registri interni replicati (rename buffers) usati per memorizzare i risultati in attesa che l’unità di consegna dia il permesso per scrivere i registri effettivii registri replicati, assegnati dall’unità di decodifica, riducono la criticità sui registri

Page 53: CEFRIEL Consorzio per la Formazione e la Ricerca in Ingegneria dell’Informazione Politecnico di Milano introduzione alle architetture superscalari Come

W.Fornaciari 53

CommitmentCommitment

Problemaidentificare (e ritrovare) uno stato preciso del processore

Soluzionisalvo lo stato della macchina in particolari punti di controllo (checkpoints) in un history buffer, aggiornato durante l’esecuzione delle istruzioni

Quando un’istruzione viene finalizzata si cancella la “storia” che non è più necessaria

Separo lo stato fisico da quello logico; lo stato fisico si aggiorna non appena l’operazione viene completata, quello logico viene aggiornato solo in ordine sequenziale, mano a man o che le varie speculazioni hanno raggiunto la loro verifica.

Si usa il reorder buffer; per finalizzare un’istruzione, il suo risultato viene tolto dal reorder buffer e portato nel registro destinazione, liberando spazio nel reorder buffer

Page 54: CEFRIEL Consorzio per la Formazione e la Ricerca in Ingegneria dell’Informazione Politecnico di Milano introduzione alle architetture superscalari Come

W.Fornaciari 54

Alcuni esempi commercialiAlcuni esempi commerciali

PowerPC 620ha sei unità di esecuzione indipendenti, in un ciclo di clock possono essere completate fino a quattro istruzioniho cache separate per istruzioni e dati, ciascuna da 32Kbyte a 8 vie

Intel P6possono essere completate tre istruzioni per ciclo di clock2 unità intere, una in virgola mobilele pipe hanno profondità 12ha due cache, istruzioni e dati, di 8 Kbyte

Alpha 21064per ogni ciclo di clock possono essere mandate in esecuzione 2 istruzioni1 unità intera, 1 unità virgola mobile, 1 unità fetch/salti, 1 unità load/store verso memoria, con profondità pipe compresa fra 7 e10cache dati e istruzioni di 32Kbyte

Page 55: CEFRIEL Consorzio per la Formazione e la Ricerca in Ingegneria dell’Informazione Politecnico di Milano introduzione alle architetture superscalari Come

W.Fornaciari 55

ConclusioniConclusioni

Sia il pipeline, sia l’esecuzione superscalare aumentano il throughput di picco delle istruzioniLunghe pipeline e versioni superscalari di maggiore ampiezza rendono il compito del compilatore ancora più complesso per sfruttare al meglio le possibilità dello hardwareLe dipendenze dei dati, il controllo nei programmi e la latenza delle istruzioni limitano comunque le prestazioni effettive vista la necessità per il processore di dovere attendere per dipendenze non risolte o un salto non previsto correttamenteVisitare il mirror italiano del sito SPEC (spec.unipv.it) per le “vere” valutazioni comparative fra vari sistemi