Aléas 1 Les aléas de données Jusquà présent toutes les instructions étaient indépendantes ;...

Post on 03-Apr-2015

106 views 0 download

Transcript of Aléas 1 Les aléas de données Jusquà présent toutes les instructions étaient indépendantes ;...

Aléas 1

Les aléas de donnéesLes aléas de données

• Jusqu’à présent toutes les instructions étaient indépendantes ; aucune d’entre elles n’utilisaient les résultats calculés par une autre.

• Regardons se qui se passe dans un programme réel.

sub $2,$1,$3 # Registre $2 écrit par suband $12,$2,$5 # 1er opérande ($2) dépend de subor $13,$6,$2 # 2nd opérande ($2) dépend de subadd $14,$2,$2 # 1er ($2) & 2nd ($2) dépendent de subsw $15,100($2) # index ($2) dépend de sub

Les quatre dernières instructions sont toutes dépendantes du résultat que la première instruction écrit dans le registre $2.

Aléas 2

Exécution Idéale de la séquence précédenteExécution Idéale de la séquence précédente

sub $2,$1,$3

and $12,$2,$5

or $13,$6,$2

add $14,$2,$2

sw $15,100($2)

MI R MDUAL R

MI R MDUAL R

MI R MDUAL R

MI R MDUAL R

MI R MDUAL R

1 2 3 4 5 6 7 8 9

Aléas 3

Exécution de la séquence précédenteExécution de la séquence précédente

sub $2,$1,$3

and $12,$2,$5

or $13,$6,$2

add $14,$2,$2

sw $15,100($2)

MI R MDUAL R

MI R MDUAL R

MI R MDUAL R

MI R MDUAL R

MI R MDUAL R

Valeur de $2 1 2 3 4 5 6 7 8 9

Décodage de $5 et $2

Aléas 4

Autre exemple : $6Autre exemple : $6

sub $6,$1,$3

and $12,$2,$5

or $13,$6,$2

add $14,$2,$2

sw $15,100($2)

MI R MDUAL R

MI R MDUAL R

MI R MDUAL R

MI R MDUAL R

MI R MDUAL R

Valeur de $6 1 2 3 4 5 6 7 8 9

Décodage de $5 et $2

Aléas 5

Autre exemple : $6Autre exemple : $6

sub $6,$1,$3

and $12,$2,$5

or $13,$6,$2

add $14,$2,$2

sw $15,100($2)

MI R MDUAL R

MI R MDUAL R

MI R MDUAL R

MI R MDUAL R

MI R MDUAL R

Valeur de $6 1 2 3 4 5 6 7 8 9

Décodage de $6 et $2

Aléas 6

Exécution de la séquence précédenteExécution de la séquence précédente

sub $2,$1,$3

and $12,$2,$5

or $13,$6,$2

add $14,$2,$2

sw $15,100($2)

MI R MDUAL R

MI R MDUAL R

MI R MDUAL R

MI R MDUAL R

MI R MDUAL R

Valeur de $2 110

210

310

410

510

6-20

7-20

8-20

9-20

110

210

3-20

4-20

5-20

6-20

7-20

8-20

9-20

Aléas 7

Les aléasLes aléas

Logiciel Matériel

Problème d’aléas

Aléas 8

Les aléas de donnéesLes aléas de données

• Les dépendances de données sont appelées des aléas de données.

• Ils constituent une des raisons pour lesquelles les pipelines sont difficiles à concevoir au niveau logiciel et matériel.

• Pour résoudre ce problème, le compilateur introduit soit :– des instructions indépendantes– s’il ne peut pas en trouver il insère des instructions

dont l’indépendance est assurée : des instructions nop (no opération). Cette solution pénalise les performances, puisque chaque opération nop utilise un cycle sans réaliser de travail utile.

Aléas 9

Disparition des aléas de donnéesDisparition des aléas de données

sub $2,$1,$3and $12,$2,$5or $13,$6,$2add $14,$2,$2sw $15,100($2)add $20,$20,$21sw $29,100($25)add $25,$5,$23

Aléas 10

Disparition des aléas de donnéesDisparition des aléas de données

sub $2,$1,$3nopnopnopand $12,$2,$5or $13,$6,$2add $14,$2,$2sw $15,100($2)add $20,$20,$21sw $29,100($25)add $25,$5,$23

Aléas 11

Insertion de suspension dans le pipelineInsertion de suspension dans le pipeline

MI R MDUAL R

sub $2,$1,$3

and $12,$2,$5

or $13,$6,$2

add $14,$2,$2

sw $15,100($2)

MI R MDUAL R

MI R MDUAL R

MI R MDUAL R

MI R MDUAL R

Aléas 12

Insertion de suspension dans le pipelineInsertion de suspension dans le pipeline

MI R MDUAL R

MI R MDUAL R

MI R MDUAL R

MI R MDUAL R

MI R MDUAL R

MI B B B B

MI B B B B

MI B B B B

sub $2,$1,$3

suspension

suspension

suspension

and $12,$2,$5

or $13,$6,$2

add $14,$2,$2

sw $15,100($2)

Aléas 13

Disparition des aléas de donnéesDisparition des aléas de données

sub $2,$1,$3nopnopnopand $12,$2,$5or $13,$6,$2add $14,$2,$2sw $15,100($2)add $20,$20,$21sw $29,100($25)add $25,$5,$23

Opérations candidates au Réordonnancement

Aléas 14

Disparition des aléas de donnéesDisparition des aléas de données

sub $2,$1,$3add $20,$20,$21sw $29,100($25)add $25,$5,$23and $12,$2,$5or $13,$6,$2add $14,$2,$2sw $15,100($2)

Aléas 15

Disparition des aléas de donnéesDisparition des aléas de données

sub $2,$1,$3and $12,$2,$5or $13,$6,$2add $14,$2,$2sw $15,100($2)add $20,$20,$21sw $29,100($25)add $25,$5,$23

sub $2,$1,$3add $20,$20,$21sw $29,100($25)add $5,$25,$23and $12,$2,$5or $13,$6,$2add $14,$2,$2sw $15,100($2)

•Réordonnancement des taches : solution très difficile, donne les meilleurs performances

sub $2,$1,$3and $12,$2,$5or $13,$6,$2add $14,$2,$2sw $15,100($2)add $20,$20,$21sw $29,100($25)add $5,$25,$23

Recherche de 3 opérationsindépendantes

Attention à nepas recréer des aléas

Aléas 16

Les aléasLes aléas

Logiciel MatérielMatériel

Problème d’aléas

Réordonnancement

Aléas 17

Traitement des aléas au niveau matérielTraitement des aléas au niveau matériel

• Conditions pour détecter un aléas de données• Création d’une unité de détection des aléas

Aléas 18

Le contrôle des aléasLe contrôle des aléas• Retour sur l’exécution d’une instruction lw $10,9($1)

Nous allons suivre la valeur 10 dans les différents bancs de registres

Aléas 19

Exemple CC1Exemple CC1

Registrelecture1Registrelecture2

RegistreécritureDonnée àécrire

0M1

0M1

ES

0M1

CP

R.Adr

MémoireI

Donnéelue 1

Donnéelue 2

AdresseLecture

AdresseécrireDonnéeà écrire

Donnéelue 1

M0

EI/DI DI/EX EX/MEM MEM/ER

Extraction Instructionlw $10,9($1)

Aléas 20

Exemple CC2Exemple CC2

Registrelecture1Registrelecture2

RegistreécritureDonnée àécrire

0M1

0M1

ES

0M1

CP

R.Adr

MémoireI

Donnéelue 1

Donnéelue 2

AdresseLecture

AdresseécrireDonnéeà écrire

Donnéelue 1

M0

EI/DI DI/EX EX/MEM MEM/ER

Extraction Instruction Décodage Inssub $11,$2,$3 lw $10,9($1)

10

EI/DI.RegistreLectureEI/DI.RegistreLecture

Aléas 21

Exemple CC3Exemple CC3

Registrelecture1Registrelecture2

RegistreécritureDonnée àécrire

0M1

0M1

ES

0M1

CP

R.Adr

MémoireI

Donnéelue 1

Donnéelue 2

AdresseLecture

AdresseécrireDonnéeà écrire

Donnéelue 1

M0

EI/DI DI/EX EX/MEM MEM/ER

Décodage Ins Exécutionsub $11,$2,$3 lw $10,9($1)

DI/EX.RegistreEcritureDI/EX.RegistreEcriture

10

X

Si x=10 ProblèmeIci x=2 et x=3

Aléas 22

Exemple CC3Exemple CC3

Registrelecture1Registrelecture2

RegistreécritureDonnée àécrire

0M1

0M1

ES

0M1

CP

R.Adr

MémoireI

Donnéelue 1

Donnéelue 2

AdresseLecture

AdresseécrireDonnéeà écrire

Donnéelue 1

M0

EI/DI DI/EX EX/MEM MEM/ER

Décodage Ins Exécutionsub $11,$2,$3 lw $10,9($1)

DI/EX.RegistreEcritureDI/EX.RegistreEcriture

10

X

Si x=10 ProblèmeIci x=2 et x=3

EI/DI.RegistreLecture1 = DI/EX.RegistreEcritureEI/DI.RegistreLecture1 = DI/EX.RegistreEcriture

Aléas 23

Exemple CC4Exemple CC4

Registrelecture1Registrelecture2

RegistreécritureDonnée àécrire

0M1

0M1

ES

0M1

CP

R.Adr

MémoireI

Donnéelue 1

Donnéelue 2

AdresseLecture

AdresseécrireDonnéeà écrire

Donnéelue 1

M0

EI/DI DI/EX EX/MEM MEM/ER

Exécution Mémoiresub $11,$2,$3lw $10,9($1)

EX/MEM.RegistreEcritureEX/MEM.RegistreEcriture

10

X

Si x=10 problème

Aléas 24

Exemple CC4Exemple CC4

Registrelecture1Registrelecture2

RegistreécritureDonnée àécrire

0M1

0M1

ES

0M1

CP

R.Adr

MémoireI

Donnéelue 1

Donnéelue 2

AdresseLecture

AdresseécrireDonnéeà écrire

Donnéelue 1

M0

EI/DI DI/EX EX/MEM MEM/ER

Exécution Mémoiresub $11,$2,$3lw $10,9($1)

EX/MEM.RegistreEcritureEX/MEM.RegistreEcriture

10

X

Si x=10 problème

EI/DI.RegistreLecture1 = EX/MEM.RegistreEcritureEI/DI.RegistreLecture1 = EX/MEM.RegistreEcriture

Aléas 25

Exemple CC5Exemple CC5

Registrelecture1Registrelecture2

RegistreécritureDonnée àécrire

0M1

0M1

ES

0M1

CP

R.Adr

MémoireI

Donnéelue 1

Donnéelue 2

AdresseLecture

AdresseécrireDonnéeà écrire

Donnéelue 1

M0

EI/DI DI/EX EX/MEM MEM/ER

Mémoire Ecriture Résultatsub $11,$2,$3lw $10,9($1)

MEM/ER.RegistreEcritureMEM/ER.RegistreEcriture

10

X

Si x=10 problème

Aléas 26

Exemple CC5Exemple CC5

Registrelecture1Registrelecture2

RegistreécritureDonnée àécrire

0M1

0M1

ES

0M1

CP

R.Adr

MémoireI

Donnéelue 1

Donnéelue 2

AdresseLecture

AdresseécrireDonnéeà écrire

Donnéelue 1

M0

EI/DI DI/EX EX/MEM MEM/ER

Mémoire Ecriture Résultatsub $11,$2,$3lw $10,9($1)

MEM/ER.RegistreEcritureMEM/ER.RegistreEcriture

10

X

Si x=10 problème

EI/DI.RegistreLecture1 = MEM/ER.RegistreEcritureEI/DI.RegistreLecture1 = MEM/ER.RegistreEcriture

Aléas 27

Le contrôle pour les aléas de données : les suspensionsLe contrôle pour les aléas de données : les suspensions• Conditions pour détecter un aléas de données :

1a- EI/DI.RegistreLecture1 = DI/EX.RegistreEcriture

2a- EI/DI.RegistreLecture1 = EX/MEM.RegistreEcriture

3a- EI/DI.RegistreLecture1 = MEM/ER.RegistreEcriture

1b- EI/DI.RegistreLectur2 = DI/EX.RegistreEcriture

2b- EI/DI.RegistreLecture2 = EX/MEM.RegistreEcriture

3b- EI/DI.RegistreLecture2 = MEM/ER.RegistreEcriture

Exemple :

sub $2,$1,$3and $12,$2,$5

EI/DI.RegistreLecture1 = DI/EX.RegistreEcriture=2

sub $2,$1,$3Or $i,$j,$kand $12,$2,$5

EI/DI.RegistreLecture1 = EX/MEM.RegistreEcriture=2

Aléas 28

Unité de détection des aléasUnité de détection des aléas

• L’unité de détection d’aléas stoppe l’écriture dans le CP et le registre pipeline EI/DI et choisit des 0 pour les valeurs de contrôle dans le registre pipeline DI/EX lorsqu’elle détecte un aléas.

Aléas 29

L’unité de détection d’aléasL’unité de détection d’aléas

MémoireInstructionsCP

Registres

0

M

1

MémoireDonnées 1

M

0

Unité détectionaléas

Contrôle

0

M

1

ER

M

EX

ER

M ER

EcritureREG

0 DI/EX.RegDest

DI/EX.EcrireReg

EX/MEM.EcrireRegMEM/ER.EcrireReg

Ecr

iture

EI/

DI

Ecr

ture

CP

EI/DI

DI/EX

EX/MEM

MEM/ER

DI/EX.RegistreEcritutureRt

DI/EX.RegistreEcritureRd

EX/MEM.RegistreEcriture

MEM/ER.RegistreEcriture

Aléas 30

L’unité de détection d’aléasL’unité de détection d’aléas

MémoireInstructionsCP

Registres

0

M

1

MémoireDonnées 1

M

0

Unité détectionaléas

Contrôle

0

M

1

ER

M

EX

ER

M ER

EcritureREG

0 DI/EX.RegDest

DI/EX.EcrireReg

EX/MEM.EcrireRegMEM/ER.EcrireReg

Ecr

iture

EI/

DI

Ecr

ture

CP

EI/DI

DI/EX

EX/MEM

MEM/ER

DI/EX.RegistreEcritutureRt

DI/EX.RegistreEcritureRd

EX/MEM.RegistreEcriture

MEM/ER.RegistreEcriture

and $4,$2,$5 sub $2,$1,$3

1 1 010

000

1100

$1

$3

2

1

3

Aléas 31

L’unité de détection d’aléasL’unité de détection d’aléas

MémoireInstructionsCP

Registres

0

M

1

MémoireDonnées 1

M

0

Contrôle

0

M

1

ER

M

EX

ER

M ER

EcritureREG

0 DI/EX.RegDest

DI/EX.EcrireReg

EX/MEM.EcrireRegMEM/ER.EcrireReg

Ecr

iture

EI/

DI

Ecr

ture

CP

EI/DI

DI/EX

EX/MEM

MEM/ER

DI/EX.RegistreEcritutureRt

DI/EX.RegistreEcritureRd

EX/MEM.RegistreEcriture

MEM/ER.RegistreEcriture

or $8,$2,$6 and $4,$2,$5 sub $2,$1,$3

0 0 100

000

0000

$2

$5

4

1

10000

$1

$3

2

A

Aléas 32

MémoireInstructionsCP

Registres

0

M

1

Contrôle

0

M

1

ER

M

EX

EcritureREG

0 DI/EX.RegDest

DI/EX.EcrireReg

Ecr

iture

EI/

DI

Ecr

ture

CP

EI/DI

DI/EX

DI/EX.RegistreEcritutureRt

DI/EX.RegistreEcritureRd

0 0 100

000

0000

$2

$5

4

1

10000

$1

$3

2

L’unité de détection d’aléasL’unité de détection d’aléas

MémoireDonnées 1

M

0

ER

M ER

EX/MEM.EcrireRegMEM/ER.EcrireReg

EX/MEM

MEM/ER

EX/MEM.RegistreEcriture

MEM/ER.RegistreEcriture

or $8,$2,$6 and $4,$2,$5 sub $2,$1,$3

A

Conditionsd’aléas

Aléas 33

L’unité de détection d’aléasL’unité de détection d’aléas

MémoireInstructionsCP

Registres

0

M

1

MémoireDonnées 1

M

0

Unité détectionaléas

Contrôle

0

M

1

ER

M

EX

ER

M ER

EcritureREG

0 DI/EX.RegDest

DI/EX.EcrireReg

EX/MEM.EcrireRegMEM/ER.EcrireReg

Ecr

iture

EI/

DI

Ecr

ture

CP

EI/DI

DI/EX

EX/MEM

MEM/ER

DI/EX.RegistreEcritutureRt

DI/EX.RegistreEcritureRd

EX/MEM.RegistreEcriture

MEM/ER.RegistreEcriture

or $8,$2,$6 and $4,$2,$5 bulle sub $2,$1,$3

0 0 100

000

0000

$2

$5

4

000000

2

1

10

A

Bulle 1Bulle 1

Aléas 34

L’unité de détection d’aléasL’unité de détection d’aléas

MémoireInstructionsCP

Registres

0

M

1

MémoireDonnées 1

M

0

Unité détectionaléas

Contrôle

0

M

1

ER

M

EX

ER

M ER

EcritureREG

0 DI/EX.RegDest

DI/EX.EcrireReg

EX/MEM.EcrireRegMEM/ER.EcrireReg

Ecr

iture

EI/

DI

Ecr

ture

CP

EI/DI

DI/EX

EX/MEM

MEM/ER

DI/EX.RegistreEcritutureRt

DI/EX.RegistreEcritureRd

EX/MEM.RegistreEcriture

MEM/ER.RegistreEcriture

or $8,$2,$6 and $4,$2,$5 bulle bulle sub $2,$1,$3

0 0 100

000

0000

$2

$5

4

000000

2

0

00

A

1

Bulle 2Bulle 2 Bulle 1Bulle 1

Aléas 35

L’unité de détection d’aléasL’unité de détection d’aléas

MémoireInstructionsCP

Registres

0

M

1

MémoireDonnées 1

M

0

Unité détectionaléas

Contrôle

0

M

1

ER

M

EX

ER

M ER

EcritureREG

0 DI/EX.RegDest

DI/EX.EcrireReg

EX/MEM.EcrireRegMEM/ER.EcrireReg

Ecr

iture

EI/

DI

Ecr

ture

CP

EI/DI

DI/EX

EX/MEM

MEM/ER

DI/EX.RegistreEcritutureRt

DI/EX.RegistreEcritureRd

EX/MEM.RegistreEcriture

MEM/ER.RegistreEcriture

or $8,$2,$6 and $4,$2,$5 bulle bulle bulle

1 1 010

000

1100

$2

$5

4

000000

0

00

0

Bulle 3Bulle 3 Bulle 2Bulle 2Bulle 1Bulle 1

Aléas 36

L’unité de détection d’aléasL’unité de détection d’aléas

MémoireInstructionsCP

Registres

0

M

1

MémoireDonnées 1

M

0

Unité détectionaléas

Contrôle

0

M

1

ER

M

EX

ER

M ER

EcritureREG

0 DI/EX.RegDest

DI/EX.EcrireReg

EX/MEM.EcrireRegMEM/ER.EcrireReg

Ecr

iture

EI/

DI

Ecr

ture

CP

EI/DI

DI/EX

EX/MEM

MEM/ER

DI/EX.RegistreEcritutureRt

DI/EX.RegistreEcritureRd

EX/MEM.RegistreEcriture

MEM/ER.RegistreEcriture

and $9,$4,$2 or $8,$2,$6 and $4,$2,$5 bulle bulle

1 1 010

000

1100

$2

$6

8

110000

0

00

0

$2

$5

4

Bulle 2Bulle 2Bulle 3Bulle 3

Aléas 37

Réduire les aléas de données : l’envoiRéduire les aléas de données : l’envoi

• L’idée est simple, les entrées de l’UAL peuvent être prises dans n’importe quels registres et non pas seulement dans le registre DI/EX.

• Autrement dit, on utilise les résultats temporaires plutôt que d’attendre que les registres soient écrits. Cette technique s’appelle l’envoi ou dérivation.

Aléas 38

Réduire les aléas de données : l’envoiRéduire les aléas de données : l’envoi

Valeur de $2Valeur de EX/MEMValeur de MEM/ER

110xx

210xx

310xx

410-20x

510x-20

6-20xx

7-20xx

8-20xx

9-20xx

sub $2,$1,$3

and $12,$2,$5

or $13,$6,$2

add $14,$2,$2

sw $15,100($2)

MI R MDUAL R

MI R MDUAL R

MI R MDUAL R

MI R MDUAL R

MI R MDUAL R

Aléas 39

Réduire les aléas de données : l’envoiRéduire les aléas de données : l’envoi

Valeur de $2Valeur de EX/MEMValeur de MEM/ER

110xx

210xx

310xx

410-20x

510x-20

6-20xx

7-20xx

8-20xx

9-20xx

sub $2,$1,$3

and $12,$2,$5

or $13,$6,$2

add $14,$2,$2

sw $15,100($2)

MI R MDUAL R

MI R MDUAL R

MI R MDUAL R

MI R MDUAL R

MI R MDUAL R

Aléas 40

Réduire les aléas de données : l’envoiRéduire les aléas de données : l’envoi

Valeur de $2Valeur de EX/MEMValeur de MEM/ER

110xx

210xx

310xx

410-20x

510x-20

6-20xx

7-20xx

8-20xx

9-20xx

sub $2,$1,$3

and $12,$2,$5

or $13,$6,$2

add $14,$2,$2

sw $15,100($2)

MI R MDUAL R

MI R MDUAL R

MI R MDUAL R

MI R MDUAL R

MI R MDUAL R

Aléas 41

Réduire les aléas de données : l’envoiRéduire les aléas de données : l’envoi

Valeur de $2Valeur de EX/MEMValeur de MEM/ER

110xx

210xx

310xx

410-20x

510x-20

6-20xx

7-20xx

8-20xx

9-20xx

sub $2,$1,$3

and $12,$2,$5

or $13,$6,$2

add $14,$2,$2

sw $15,100($2)

MI R MDUAL R

MI R MDUAL R

MI R MDUAL R

MI R MDUAL R

MI R MDUAL R

Aléas 42

Réduire les aléas de données : l’envoiRéduire les aléas de données : l’envoi

Valeur de $2Valeur de EX/MEMValeur de MEM/ER

110xx

210xx

310xx

410-20x

5-20x-20

6-20xx

7-20xx

8-20xx

9-20xx

sub $2,$1,$3

and $12,$2,$5

or $13,$6,$2

add $14,$2,$2

sw $15,100($2)

MI R MDUAL R

MI R MDUAL R

MI R MDUAL R

MI R MDUAL R

MI R MDUAL R

Dernier moment

Aléas 43

Réduire les aléas de données : l’envoiRéduire les aléas de données : l’envoi

Valeur de $2Valeur de EX/MEMValeur de MEM/ER

110xx

210xx

310xx

410-20x

5-20x-20

6-20xx

7-20xx

8-20xx

9-20xx

sub $2,$1,$3

and $12,$2,$5

or $13,$6,$2

add $14,$2,$2

sw $15,100($2)

MI R MDUAL R

MI R MDUAL R

MI R MDUAL R

MI R MDUAL R

MI R MDUAL R

Aléas 44

Réduire les aléas de données : l’envoiRéduire les aléas de données : l’envoi

Valeur de $2Valeur de EX/MEMValeur de MEM/ER

110xx

210xx

310xx

410-20x

5-20x-20

6-20xx

7-20xx

8-20xx

9-20xx

sub $2,$1,$3

and $12,$2,$5

or $13,$6,$2

add $14,$2,$2

sw $15,100($2)

MI R MDUAL R

MI R MDUAL R

MI R MDUAL R

MI R MDUAL R

MI R MDUAL R

Dernier moment

Aléas 45

Réduire les aléas de données : l’envoiRéduire les aléas de données : l’envoi

Valeur de $2Valeur de EX/MEMValeur de MEM/ER

110xx

210xx

310xx

410-20

x

5-20x-20

6-20xx

7-20xx

8-20xx

9-20xx

sub $2,$1,$3

and $12,$2,$5

or $13,$6,$2

add $14,$2,$2

sw $15,100($2)

MI R MDUAL R

MI R MDUAL R

MI R MDUAL R

MI R MDUAL R

MI R MDUAL R

AttentionAttention

Aléas 46

Réduire les aléas de données : l’envoiRéduire les aléas de données : l’envoi

Valeur de $2Valeur de EX/MEMValeur de MEM/ER

110xx

210xx

310xx

410-20x

510x-20

6-20xx

7-20xx

8-20xx

9-20xx

sub $2,$1,$3

and $12,$2,$5

or $13,$6,$2

add $14,$2,$2

sw $15,100($2)

MI R MDUAL R

MI R MDUAL R

MI R MDUAL R

MI R MDUAL R

MI R MDUAL R

Aléas 47

Réduire les aléas de données : l’envoiRéduire les aléas de données : l’envoi

Valeur de $2Valeur de EX/MEMValeur de MEM/ER

110xx

210xx

310xx

410-20x

510x-20

6-20xx

7-20xx

8-20xx

9-20xx

sub $2,$1,$3

and $12,$2,$5

or $13,$6,$2

add $14,$2,$2

sw $15,100($2)

MI R MDUAL R

MI R MDUAL R

MI R MDUAL R

MI R MDUAL R

MI R MDUAL R

Dernier moment

Aléas 48

Réduire les aléas de données : l’envoiRéduire les aléas de données : l’envoi

Valeur de $2Valeur de EX/MEMValeur de MEM/ER

110xx

210xx

310xx

410-20x

510x-20

6-20xx

7-20xx

8-20xx

9-20xx

sub $2,$1,$3

and $12,$2,$5

or $13,$6,$2

add $14,$2,$2

sw $15,100($2)

MI R MDUAL R

MI R MDUAL R

MI R MDUAL R

MI R MDUAL R

MI R MDUAL R

Bilan : Gain de 3 NOPBilan : Gain de 3 NOP

Aléas 49

Réalisation matérielRéalisation matériel

MémoireDonnées

MémoireDonnées

MM

MM

DI/EX EX/MEM MEM/ER

Aléas 50

L ’envoi au niveau EX/MEML ’envoi au niveau EX/MEM

MémoireDonnées

MémoireDonnées

MM

MM

DI/EX EX/MEM MEM/ER

Aléas 51

L ’envoi au niveau MEM/ERL ’envoi au niveau MEM/ER

MémoireDonnées

MémoireDonnées

MM

MM

DI/EX EX/MEM MEM/ER

Aléas 52

L'envoi pour les chargementsL'envoi pour les chargements

lw $2,100($1)

and $12,$2,$5

MI R MDUAL R

MI R MDUAL R

L’unité de détection des aléas doit provoquer une suspensionpour cette combinaison.

lw $2,100($1)

Suspension

and $12,$2,$5

MI R MDUAL R

MI R MDUAL R

MI

Aléas 53

L'envoi pour les chargementsL'envoi pour les chargements

lw $2,100($1)

and $12,$2,$5

MI R MDUAL R

MI R MDUAL R

lw $2,100($1)

and $12,$2,$5

MI DI EX M ER

MI DI Nop EX M ER

Aléas 54

Erreurs fréquenteErreurs fréquente

lw $2,100($1)

and $12,$2,$5

MI R MDUAL R

MI R MDUAL R

lw $2,100($1)

and $12,$2,$5

MI DI EX M ER

MI DI Nop EX M ER

AttentionAttention

Aléas 55

Exemple : Pipeline ss envoisExemple : Pipeline ss envois

lw $1,100($2)

sub $4,$1,$5

add $6,$1,$7

Or $8,$1,$6

lw $1,100($2)

sub $4,$1,$5

add $6,$1,$7

Or $8,$1,$6

MI DI EX M ER

MI DI EX M ER

MI DI EX M ER

MI DI EX M ER

Aléas 56

ExempleExemple

lw $1,100($2)

sub $4,$1,$5

add $6,$1,$7

Or $8,$1,$6

lw $1,100($2)

sub $4,$1,$5

add $6,$1,$7

Or $8,$1,$6

MI DI EX M ER

MI DI EX M ER

MI DI EX M ER

MI DI EX M ER

MI DI EX M ER

MI DI No No No EX M ER

MI No No No DI EX M ER

No No No MI DI No No No EX M ER

Aléas 57

ExempleExemple

lw $1,100($2)

sub $4,$7,$5

add $6,$1,$7

Or $8,$1,$6

lw $1,100($2)

sub $4,$7,$5

add $6,$1,$7

Or $8,$1,$6

MI DI EX M ER

MI DI EX M ER

MI DI EX M ER

MI DI EX M ER

MI DI EX M ER

MI DI EX M ER

MI DI No No EX M ER

MI No No DI No No No EX M ER

Aléas 58

Exemple : pipline avec envoiExemple : pipline avec envoi

lw $1,100($2)

sub $4,$1,$5

add $6,$1,$7

Or $8,$1,$6

lw $1,100($2)

sub $4,$1,$5

add $6,$1,$7

Or $8,$1,$6

MI DI EX M ER

MI DI EX M ER

MI DI EX M ER

MI DI EX M ER

Aléas 59

ExempleExemple

lw $1,100($2)

sub $4,$1,$5

add $6,$1,$7

Or $8,$1,$6

lw $1,100($2)

sub $4,$1,$5

add $6,$1,$7

Or $8,$1,$6

MI DI EX M ER

MI DI EX M ER

MI DI EX M ER

MI DI EX M ER

ERMEXDIMINop

ERMEXDINopMI

ERMEXNopDIMI

ERMEXDIMI

Aléas 60

Les Aléas de BranchementLes Aléas de Branchement

• Lors d’une instruction de branchement, la décision concernant un branchement éventuel ne survient qu’à l’étage MEM du pipeline.

• Ce délai pour déterminer l’instruction correcte à extraire est appelé un aléas de contrôle ou aléas de branchement.

MI R MDUAL Rbeq $1,$10,30

MI R MDUAL R

MI R MDUAL R

MI R MDUAL R

MI R MDUAL

Aléas 61

Solutions Solutions

• Toujours suspendre. – Du temps est perdu si le branchement ne doit pas s'effectuer.

• Supposer que le branchement n’est pas effectué.– Si le branchement est effectué, les instructions extraites et décodées

seront laissées de côté en remplaçant simplement les signaux de contrôle originaux des étages EI, DI et EX par des 0.

– Voir cours sur les prédictions de branchement

Aléas 62

Relation compilateur/matérielRelation compilateur/matériel

• Un autre exemple de compromis entre compilateurs et complexité du matériel, les premiers processeurs MIPS évitaient que le matériel suspende le pipeline en imposant au logiciel une instruction indépendante du chargement après celui-ci.

• Que le matériel s’appuie ou non sur le compilateur pour résoudre les dépendances des aléas afin d’assurer une exécution correcte, le compilateur doit comprendre le pipeline pour obtenir les meilleurs performances. Sinon, des suspensions inattendues réduiront les performances du code compilé.

Aléas 63

Illusions et piègesIllusions et pièges

• Piège : une absence de réflexion approfondie lors de la conception du jeu d’instructions peut avoir un impact défavorable sur le pipeline.

• Illusion : accroître la profondeur du pipeline améliore toujours les performances.

• Illusion : la technique du pipeline est simple.

Aléas 64

ConclusionConclusion

Chemin de donnéesmulticycle

Chemin de donnéespipeliné

chemin de donnéesà un cycle

Plus lent Plus rapide

Débit d’instructions (1/CPI)

Fréq

uen

ce d

’horl

og

e

Plu

s le

nt

Plu

s r

ap

ide

Aléas 65

RésuméRésumé

• Le pipeline améliore le débit mais pas le temps par instruction : il faut toujours cinq cycles à une instruction d’un pipeline à cinq étages pour s’exécuter.

• Les dépendances de données et de contrôle dans les programmes imposent une limite supérieure au gain que peut générer le pipeline car le processeur doit parfois attendre la fin d’une instruction pour que les dépendances soit résolues.

• On peut élever cette limite, mais pas l’éliminer, en réduisant les aléas de contrôle par des optimisations, et les aléas de données par un ordonnancement des instructions par le compilateur.

Aléas 66

Développements récentsDéveloppements récents

Machines superpipelinés

Extracinst

Extracinst

Décodinst

Exéc Mém don

Mém don

Mémdon

Ecritresul

Extracinst

Extracinst

Décodinst

Exéc Mém don

Mém don

Mémdon

Ecritresul

Superscalaire

Extractioninst

Décodage instruc

Exécution Mémoiredonnées

Ecriturerésult

Extractioninst

Décodage instruc

Exécution Mémoiredonnées

Ecriturerésult