Architectures RISC et superscalaire Pipe-Line synchrone

21
PHY 568 Alain Greiner Architectures RISC et superscalaire Architectures RISC et superscalaire Pipe-Line synchrone Pipe-Line synchrone version 1.0

Transcript of Architectures RISC et superscalaire Pipe-Line synchrone

Page 1: Architectures RISC et superscalaire Pipe-Line synchrone

PHY 568 Alain Greiner

Architectures RISC et superscalaireArchitectures RISC et superscalaire

Pipe-Line synchronePipe-Line synchrone

version 1.0

Page 2: Architectures RISC et superscalaire Pipe-Line synchrone

2 PHY 568 Alain Greiner

IntroductionIntroduction

Les processeurs RISC (Reduced Instruction Set Computer)sont apparus au début des années 80, grâce au développement des capacités d’intégration VLSI … et au développement des technologies de compilation.

Les pionniers sont :- Université de Berkeley (Prof. D.Patterson) SPARC 1981- Université de Stanford (Prof. J.Hennessy) MIPS 1982

L’objectif est d’améliorer les performances des processeurs, en déplaçant la frontière entre matériel et logiciel, et en utilisant la technique du pipeline synchrone.

Les processeurs à architecture RISC sont très utilisés dans les systèmes multi-processeurs intégrés sur puce (MPSoC), car ils ont un excellent rapport puissance de calcul / mm2 de silicium.

Page 3: Architectures RISC et superscalaire Pipe-Line synchrone

3 PHY 568 Alain Greiner

Introduction (suite)Introduction (suite)

On présente dans ce cours une réalisation « pipe-linée »du processeur P32 présenté en cours.

Cette architecture exécute le même jeu d’instruction quel’architecture micro-programmée, (elle peut exécuter le mêmecode binaire), mais elle est 4 ou 5 fois plus rapide.

Page 4: Architectures RISC et superscalaire Pipe-Line synchrone

4 PHY 568 Alain Greiner

Evaluation des performancesEvaluation des performances

La principale métrique est le chronomètre… On cherche à minimiser le temps d’exécution du programme,en diminuant la valeur du CPI sans augmenter TC :

Texec = N * CPI * TC

– N : nombre total d’instructions exécutées– CPI : nombre moyen de cycles par instruction– TC : temps de cycle

CPI = k CPIk * k ,

où les { ak } sont les fréquences mesurées pour les différents types d’instruction du programme.

Page 5: Architectures RISC et superscalaire Pipe-Line synchrone

5 PHY 568 Alain Greiner

MIX instructionsMIX instructions

Tous les types d’instructions n’ont pas la même fréquence d’utilisation. Les valeurs { ak } sont dépendantes de chaque programme particulier, mais on peut définir des valeurs typiques, par classes d’instructions :

25%Instructions de branchement

(conditionnel ou non)bne

10%Instructions d’écriture

en mémoiresw

20%Instructions de lecture

en mémoirelw

45%Instructions de calcul

entre registresadd

Page 6: Architectures RISC et superscalaire Pipe-Line synchrone

6 PHY 568 Alain Greiner

Principe du pipe-line synchronePrincipe du pipe-line synchrone

On n’attend pas que l’instruction i ait fini de s’exécuter pour démarrerl’instruction i+1

instruction i

instruction i+2

instruction i+1

Exécution séquencielle :

Exécution parallèle pipeline :

instruction i

instruction i+2

instruction i+1

temps

Page 7: Architectures RISC et superscalaire Pipe-Line synchrone

7 PHY 568 Alain Greiner

Pipeline à 5 étagesPipeline à 5 étages

A(T) <= DTWRITE

DT<= M[RES]MEMORY

RES<= OP1+IREXECUTE

OP1<= A(R)

OP2<= A(S)

DECODE

IR <= M[PC]

PC<= PC+1

I FETCH

lw Ai, imd(Aj)

(lecture mémoire)

COP IMDTSRinstruction :

Page 8: Architectures RISC et superscalaire Pipe-Line synchrone

8 PHY 568 Alain Greiner

Pipeline à 5 étagesPipeline à 5 étages

A(T) <= DTA(T) <= DTWRITE

DT<= RESDT<= M[RES]MEMORY

RES<= OP1+OP2RES<= OP1+IREXECUTE

OP1<= A(R)

OP2<= A(S)

OP1<= A(R)

OP2<= A(S)

DECODE

IR <= M[PC]

PC<= PC+1

IR <= M[PC]

PC<= PC+1

I FETCH

add Ak, Aj, Aj

(addition registres)

lw Ai, imd(Aj)

(lecture mémoire)

COP IMDTSRinstruction :

Page 9: Architectures RISC et superscalaire Pipe-Line synchrone

9 PHY 568 Alain Greiner

Pipeline à 5 étagesPipeline à 5 étages

NOPA(T) <= DTA(T) <= DTWRITE

NOPDT<= RESDT<= M[RES]MEMORY

NOPRES<= OP1+OP2RES<= OP1+IREXECUTE

OP1<= A(R)

OP2<= A(S)

PC<= PC+imd

si (A(R) !=0) & bne

OP1<= A(R)

OP2<= A(S)

PC<= PC+imd

si (A(R) !=0) & bne

OP1<= A(R)

OP2<= A(S)

PC<= PC+imd

si (A(R) !=0) & bne

DECODE

IR <= M[PC]

PC<= PC+1

IR <= M[PC]

PC<= PC+1

IR <= M[PC]

PC<= PC+1

I FETCH

bne Ai, imd

(branchement)

add Ak, Aj, Aj

(addition registres)

lw Ai, imd(Aj)

(lecture mémoire)

COP IMDTSRinstruction :

Page 10: Architectures RISC et superscalaire Pipe-Line synchrone

10 PHY 568 Alain Greiner

Exécution parallèle des instructionsExécution parallèle des instructions

I0 D0 E0 M0 W0

I1 D1 E1 M1 W1

I2 D2 E2 M2 W2

I3 DD E3 M3 W3

I4 D4 E4 M4 W4

instruction i

instruction i+1

instruction i+2

instruction i+3

instruction i+4

temps

Dans un pipe-line à 5 étages, on a 5 instructions en cours d’exécution :

Page 11: Architectures RISC et superscalaire Pipe-Line synchrone

11 PHY 568 Alain Greiner

Les difficultés à résoudreLes difficultés à résoudre

1/ Conflits de ressource

Que se passe-t-il si deux étages du pipe-line ont

desoin d’utiliser une même ressource matérielle ?

2/ dépendances de données

Que se passe-t-il lorsque l’instruction I+1 utilise un résultat

calculé par l’instruction I+1 ?

3/ dépendances de contrôle

Que se passe-t-il pour l’instruction I+1 si l’instruction i

est un branchement pris ?

Page 12: Architectures RISC et superscalaire Pipe-Line synchrone

12 PHY 568 Alain Greiner

Conflits de ressource (1)Conflits de ressource (1)

I0 D0 E0 M0 W0

I1 D1 E1 M1 W1

I2 D2 E2 M2 W2

I3 DD E3 M3 W3

I4 D4 E4 M4 W4

i

i+1

i+2

i+3

i+4

Deux accès à la mémoire au même cycle !

- lecture instruction : I4- lecture de données : M1

Page 13: Architectures RISC et superscalaire Pipe-Line synchrone

13 PHY 568 Alain Greiner

Conflits de ressource (2)Conflits de ressource (2)

Règle générale : Chaque étage du pipe-line doit disposer de ses propres ressources matérielles !

exemple 1 : Le processeur doit posséder deux ports indépendant pour lire les instructions et pour lire(ou écrire) les données

exemple 2 : l’étage IFETCH doit disposer de son propre additionneur pour effectuer l’incrémentation PC<= PC+1, et ne peut

utiliser l’Unité Arithmétique et Logique de l’étage EXEC

Processeur

Donnée

AdresseDonnée

32

32

32

32AdresseInstruction

Instruction

Page 14: Architectures RISC et superscalaire Pipe-Line synchrone

14 PHY 568 Alain Greiner

Dépendances de données (1)Dépendances de données (1)

I0 D0 E0 M0 W0

I1 D1 E1 M1 W1

I2 D2 E2 M2 W2

I3 DD E3 M3 W3

I4 D4 E4 M4 W4

i

i+1

i+2

i+3

i+4

Dépendance de type producteur / consommateur :L’instruction (i) produit un résultat utilisé par une desinstructions (i+1), (i+2) ou (i+3)

t0 t1 t2 t3 t4 t5 t6 t7 …

L’instruction (i) écrit le résultat dans le registre destination en fin de cycle t4, et l’instruction i le lit en début de cycle t2…

Page 15: Architectures RISC et superscalaire Pipe-Line synchrone

15 PHY 568 Alain Greiner

Dépendances de données (2)Dépendances de données (2)

I0 D0 E0 M0 W0

I1 D1 E1 M1 W1

I2 D2 E2 M2 W2

I3 D3 E3 M3 W3

I4 D4 E4 M4 W4

add Ak,Ai,Aj

i+1

i+2

i+3

i+4

Si l’instruction productrice est une instruction de calcul,on peut résoudre le problème par un mécanisme de « bypass »La dépendance est masquée : Tout se passe « comme si » l’instruction (i) avait terminé son exécution lorsque l’instruction(I+1) démarre, et la sémantique d’exécution séquentielle des instructions est préservée.

t0 t1 t2 t3 t4 t5 t6 t7 …

Page 16: Architectures RISC et superscalaire Pipe-Line synchrone

16 PHY 568 Alain Greiner

Dépendances de données (3)Dépendances de données (3)

I0 D0 E0 M0 W0

I1 D1 E1 M1 W1

I2 D2 E2 M2 W2

I3 D3 E3 M3 W3

I4 D4 E4 M4 W4

lw Ai, imd(Ak)

i+1

i+2

i+3

i+4

Si l’instruction productrice est une instruction de lecture en mémoire,la dépendance de donnée entre (i) et (i+1) ne peut pas être masquée,car la donnée n’entre dans le processeur qu’à la fin du cycle t3. En revanche, les dépendances entre (i) et (i+2) ou (i+3) peuvent êtremasquées par les bypass.

t0 t1 t2 t3 t4 t5 t6 t7 …

Page 17: Architectures RISC et superscalaire Pipe-Line synchrone

17 PHY 568 Alain Greiner

Dépendances de données (4)Dépendances de données (4)

I0 D0 E0 E0’ W0

I1 D1 E1 M1 W1

I2 D2 E2 M2 W2

I3 D3 E3 M3 W3

I4 D4 E4 M4 W4

mul Ai, Aj, Ak

i+1

i+2

i+3

i+4

Si l’instruction productrice est une instruction complexe (une multiplication prend 3 cycles), la dépendance de donnéene peut pas être masquée, car le résultat n’est disponible qu’à la fin du cycle t4.Ce résultat peut être utilisé, au plus tôt, par l’instruction (i+3).

t0 t1 t2 t3 t4 t5 t6 t7 …

E0’’

Page 18: Architectures RISC et superscalaire Pipe-Line synchrone

18 PHY 568 Alain Greiner

Deux approches pour résoudre le problème des dépendancesde données dans le cas des instructions « lw » ou « mul » :

1/ solution « matérielle »On « gèle » partiellement le processeur en cas de dépendance,

pour attendre la disponibilité de la donnée attendue.=> Inconvénient : la durée visible (CPI) de l’instruction

passe à 2 cycles pour « lw » et 3 cycles pour « mul »

2/ solution « logicielle »On modifie la sémantique d’exécution séquencielle du programme, et on informe le compilateur que les instructions lw et mul ont un« effet retardé »: le résultat ne peut pas être utilisé immédiatement.=> Inconvénient : Le compilateur doit anticiper les lectures en

mémoire et les multiplications, ou mettre des instructions « nop »

Dépendances de données (5)Dépendances de données (5)

Page 19: Architectures RISC et superscalaire Pipe-Line synchrone

19 PHY 568 Alain Greiner

Dépendances de contrôle (1)Dépendances de contrôle (1)

I0 D0 E0 M0 W0

I1 D1 E1 M1 W1

I2 D2 E2 M2 W2

I3 D3 E3 M3 W3

I4 D4 E4 M4 W4

bne

i+1

i+2

i+3

i+4

t0 t1 t2 t3 t4 t5 t6 t7 …

Si l’instruction (i) est un branchement, l’instruction cible ne peut être lue qu’au cycle t2 (étage I2), puisque l’adresse de saut n’est calculée qu’au cycle t1 (étage D0).=> l’instruction (i+1) est entrée à tort dans le pipe-line.

Page 20: Architectures RISC et superscalaire Pipe-Line synchrone

20 PHY 568 Alain Greiner

Deux approches pour résoudre le problème des instructions de branchement :

1/ solution « matérielle »On n’exécute pas l’instruction (i+1) qui est entrée à tort dans le pipe-line: pas d’écriture dans les registres ou en mémoire.=> Inconvénient : la durée visible (CPI) des instructions

de branchement passe à deux cycles.

2/ solution « logicielle »On modifie la sémantique d’exécution séquencielle du programme :les instructions de branchement ont un effet retardé : l’instruction qui suit immédiatement un branchement est toujours exécutée.=> Inconvénient : Le compilateur doit anticiper les instructions

de branchement, en modifiant l’ordre des instructions.

Dépendances de contrôle (2)Dépendances de contrôle (2)

Page 21: Architectures RISC et superscalaire Pipe-Line synchrone

21 PHY 568 Alain Greiner

ConclusionsConclusions

La technique de pipe-line synchrone permet de gagner un facteur 4 en performance, pour une augmentationde surface (nombre de transistors) d’un facteur 2 environ.

Il a fallu pour cela « régulariser » le jeu d’instruction :• Toutes les instructions s’exécutent en 5 cycles• Toutes les instructions ont le même format (32 bits)• Un seul mode d’adressage.

Une grosse partie du travail est déporté vers le compilateur :• Anticipation des lectures mémoire • Anticipation des branchements• Décomposition des opérations complexes.

RISC = Reject Important Stuff into Compiler