Eduardo Sanchez Laboratoire de Systèmes Logiques Ecole …lsl · Eduardo Sanchez Page 3 Ecole...

25
Eduardo Sanchez Laboratoire de Systèmes Logiques Ecole Polytechnique Fédérale de Lausanne Le pipeline

Transcript of Eduardo Sanchez Laboratoire de Systèmes Logiques Ecole …lsl · Eduardo Sanchez Page 3 Ecole...

Page 1: Eduardo Sanchez Laboratoire de Systèmes Logiques Ecole …lsl · Eduardo Sanchez Page 3 Ecole Polytechnique Fédérale de Lausanne ♦ Solution en pipeline: à chaque étape du processus

Eduardo SanchezLaboratoire de Systèmes Logiques

Ecole Polytechnique Fédérale de Lausanne

Le pipeline

Page 2: Eduardo Sanchez Laboratoire de Systèmes Logiques Ecole …lsl · Eduardo Sanchez Page 3 Ecole Polytechnique Fédérale de Lausanne ♦ Solution en pipeline: à chaque étape du processus

Eduardo SanchezEcole Polytechnique Fédérale de LausannePage 2

Le pipelining

♦ Technique utilisée pour optimiser le temps d’exécution d’un processus répétitif.

♦ Si le temps d’exécution d’un processus est Tp, l’exécution séquentielle de m processus prend un temps Tt:

♦ Si le processus est décomposé en n étapes, chacune d’une durée Ts, alors:

Tt = mTp

Tt = mnTs

Page 3: Eduardo Sanchez Laboratoire de Systèmes Logiques Ecole …lsl · Eduardo Sanchez Page 3 Ecole Polytechnique Fédérale de Lausanne ♦ Solution en pipeline: à chaque étape du processus

Eduardo SanchezEcole Polytechnique Fédérale de LausannePage 3

♦ Solution en pipeline:à chaque étape du processus est affectée une ressource indépendante, de façon à pouvoir exécuter plusieurs processus enparallèle, chacun à une étape différente

Tt = Tp + (m-1)Ts= n Ts + (m-1) Ts= (m+n-1) Ts

Ts

Tp

si m >> n alors Tt » m Ts

Page 4: Eduardo Sanchez Laboratoire de Systèmes Logiques Ecole …lsl · Eduardo Sanchez Page 3 Ecole Polytechnique Fédérale de Lausanne ♦ Solution en pipeline: à chaque étape du processus

Eduardo SanchezEcole Polytechnique Fédérale de LausannePage 4

registre

étape 1

registre

étape n

registre

entrée

sortie

clock

• • •

Flowthrough time:temps pour produire lepremier résultat

Clock cycle time:temps entre deux résultats(période d’une étape plus leretard du registre)Déterminé par l’étape la plus longue

Page 5: Eduardo Sanchez Laboratoire de Systèmes Logiques Ecole …lsl · Eduardo Sanchez Page 3 Ecole Polytechnique Fédérale de Lausanne ♦ Solution en pipeline: à chaque étape du processus

Eduardo SanchezEcole Polytechnique Fédérale de LausannePage 5

♦ Logiquement, un meilleur résultat est obtenu en augmentant le nombre d’étapes: elles seront plus simples et la fréquence d’horloge pourra ainsi être plus élevée. Cette approche présentetoutefois plusieurs problèmes:∗ la décomposition fine est très difficile∗ chaque nouvelle étape ajoute un nouveau retard de registre, augmentant

ainsi le flowthrough time∗ l’indépendance entre les étapes est plus difficile à obtenir∗ la vitesse de lecture des entrées et d’écriture des résultats augmente en

conséquence

Page 6: Eduardo Sanchez Laboratoire de Systèmes Logiques Ecole …lsl · Eduardo Sanchez Page 3 Ecole Polytechnique Fédérale de Lausanne ♦ Solution en pipeline: à chaque étape du processus

Eduardo SanchezEcole Polytechnique Fédérale de LausannePage 6

Exemple de pipeline arithmétique

+

1 0

+

1 0

+

1 0 1 0

0

0

00

0

AB

AxB

4

4

5

3

4

4

Page 7: Eduardo Sanchez Laboratoire de Systèmes Logiques Ecole …lsl · Eduardo Sanchez Page 3 Ecole Polytechnique Fédérale de Lausanne ♦ Solution en pipeline: à chaque étape du processus

Eduardo SanchezEcole Polytechnique Fédérale de LausannePage 7

+

1 0

0

4

registre registre registre

4 3

4

4 4 4

CK

Page 8: Eduardo Sanchez Laboratoire de Systèmes Logiques Ecole …lsl · Eduardo Sanchez Page 3 Ecole Polytechnique Fédérale de Lausanne ♦ Solution en pipeline: à chaque étape du processus

Eduardo SanchezEcole Polytechnique Fédérale de LausannePage 8

Pipeline des instructions d’un processeur

t t+1 t+2 t+3 t+4 t+5 t+6 t+7 t+8

i

i+1

i+2

i+3

i+4

Page 9: Eduardo Sanchez Laboratoire de Systèmes Logiques Ecole …lsl · Eduardo Sanchez Page 3 Ecole Polytechnique Fédérale de Lausanne ♦ Solution en pipeline: à chaque étape du processus

Eduardo SanchezEcole Polytechnique Fédérale de LausannePage 9

♦ Utilisé depuis le CDC 6600♦ Un pipeline parfait conduit à exécuter une instruction par cycle♦ Pour une technologie donnée, la fréquence est plus élevée si le

nombre de niveaux (pas, phases, étapes) du pipeline augmente♦ Il est tout à fait naturelle d’avoir un pipeline à trois phases: fetch,

decode, execute

Page 10: Eduardo Sanchez Laboratoire de Systèmes Logiques Ecole …lsl · Eduardo Sanchez Page 3 Ecole Polytechnique Fédérale de Lausanne ♦ Solution en pipeline: à chaque étape du processus

Eduardo SanchezEcole Polytechnique Fédérale de LausannePage 10

Aléas d’un pipeline

♦ Aléas de structure:l’implémentation empêche une certaine combinaison d’opérations

♦ Aléas de données:le résultat d’une opération dépend de celui, pas encore produit,d’une instruction précédente

♦ Aléas de contrôle:l’exécution d’un saut est réalisée avec un certain retard

♦ Si un aléa est détecté, la solution la plus simple est d’arrêter le pipeline (stall): les instructions qui précédent celle qui produit l’aléa peuvent continuer, mais toutes les autres sont arrêtées jusqu’à la disparition de l’aléa

Page 11: Eduardo Sanchez Laboratoire de Systèmes Logiques Ecole …lsl · Eduardo Sanchez Page 3 Ecole Polytechnique Fédérale de Lausanne ♦ Solution en pipeline: à chaque étape du processus

Eduardo SanchezEcole Polytechnique Fédérale de LausannePage 11

Exemple: le processeur MIPS

♦ Phase IF:recherche de l’instruction (fetch)

♦ Phase ID:décodage de l’instruction et lecture des registres opérandes

♦ Phase EX:exécution de l’opération ou calcul de l’adresse de mémoire

♦ Phase MEM:accès de la mémoire ou écriture dans le PC de l’adresse de saut (la condition a besoin du résultat de l’opération)

♦ Phase WB:écriture dans un registre du résultat de l’opération (write back).Ne suit pas la phase EX pour prévoir le cas d’un LOAD

Page 12: Eduardo Sanchez Laboratoire de Systèmes Logiques Ecole …lsl · Eduardo Sanchez Page 3 Ecole Polytechnique Fédérale de Lausanne ♦ Solution en pipeline: à chaque étape du processus

Eduardo SanchezEcole Polytechnique Fédérale de LausannePage 12

♦ Certaines phases sont inutiles pour certaines instructions, maistoutes les instructions ont une durée de 5 cycles

♦ Le PC doit pouvoir être incrémenté à chaque cycle♦ On doit lire une instruction à chaque cycle♦ On doit pouvoir lire une donnée à chaque cycle♦ On doit disposer de deux MAR (memory address register), un pour

les données et un autre pour les instructions (avantage pour unearchitecture de Harvard)

♦ Le format unique d’instruction est avantageux

Page 13: Eduardo Sanchez Laboratoire de Systèmes Logiques Ecole …lsl · Eduardo Sanchez Page 3 Ecole Polytechnique Fédérale de Lausanne ♦ Solution en pipeline: à chaque étape du processus

Eduardo SanchezEcole Polytechnique Fédérale de LausannePage 13

PC Mémoire ALUIMAR ← PC IR ← M[IMAR]PC ← PC + 4

A ← RS1B ← RS2load ou store:DMAR ← A + (partie du IR)MDR ← Bopération:ALUout ← A op (B ou (partie du IR))saut conditionnel:ALUout ← PC + (B ou (partie du IR))

cond ← RS1 op 0if (cond) load:PC ← ALUout MDR ← M[DMAR]

store:M[DMAR] ← MDR

opération:Rd ← ALUout

load:Rd ← MDR

Page 14: Eduardo Sanchez Laboratoire de Systèmes Logiques Ecole …lsl · Eduardo Sanchez Page 3 Ecole Polytechnique Fédérale de Lausanne ♦ Solution en pipeline: à chaque étape du processus

Eduardo SanchezEcole Polytechnique Fédérale de LausannePage 14

Aléas de données

♦ Deux instructions contigües, i et j, peuvent présenter trois types d’aléa de données:∗ RAW (read after write):

j essaie de lire une source avant que i ne l’ait modifiée∗ WAR (write after read):

j essaie de modifier une destination avant que i ne l’ait utilisée comme source (cas impossible dans MIPS)

∗ WAW (write after write):j essaie d’écrire dans une destination avant que i ne l’ait fait: l’ordre normal d’écriture est modifié (cas impossible dans MIPS)

Page 15: Eduardo Sanchez Laboratoire de Systèmes Logiques Ecole …lsl · Eduardo Sanchez Page 3 Ecole Polytechnique Fédérale de Lausanne ♦ Solution en pipeline: à chaque étape du processus

Eduardo SanchezEcole Polytechnique Fédérale de LausannePage 15

♦ Exemple:

ADD R1, R2, R3 R1 ← R2 + R3SUB R4, R1, R5 R4 ← R1 - R5

t t+1 t+2 t+3 t+4 t+5

ADD

SUB

IF ID EX MEM WB

IF ID EX MEM WB

R1 ← R2 + R3

on a besoin ici de R1,dont la valeur est disponible

seulement deux coups d’horlogeplus tard

Page 16: Eduardo Sanchez Laboratoire de Systèmes Logiques Ecole …lsl · Eduardo Sanchez Page 3 Ecole Polytechnique Fédérale de Lausanne ♦ Solution en pipeline: à chaque étape du processus

Eduardo SanchezEcole Polytechnique Fédérale de LausannePage 16

Solution: forwarding ou bypassing

♦ On cherche les opérandes à la sortie de l’ALU, sans attendre leur écriture dans les registres

♦ On doit empiler n résultats à la sortie de l’ALU, où n est le nombre de cycles où l’aléa peut être présent (3 dans l’exemple précédent)

♦ Le nombre de cycles peut être réduit de 1 si l’écriture dans lesregistres a lieu pendant la première moitié de WB et la lecture des opérandes pendant la seconde moitié de ID

Page 17: Eduardo Sanchez Laboratoire de Systèmes Logiques Ecole …lsl · Eduardo Sanchez Page 3 Ecole Polytechnique Fédérale de Lausanne ♦ Solution en pipeline: à chaque étape du processus

Eduardo SanchezEcole Polytechnique Fédérale de LausannePage 17

registres

trajectoiresde bypass

Page 18: Eduardo Sanchez Laboratoire de Systèmes Logiques Ecole …lsl · Eduardo Sanchez Page 3 Ecole Polytechnique Fédérale de Lausanne ♦ Solution en pipeline: à chaque étape du processus

Eduardo SanchezEcole Polytechnique Fédérale de LausannePage 18

♦ Exemple:

LW R1, 32(R6) R1 ← M[R6 + 32]ADD R4, R1, R7 R4 ← R1 + R7SUB R5, R1, R8AND R6, R1, R7

t t+1 t+2 t+3 t+4 t+5

LW

ADD

IF ID EX MEM WB

IF ID EX MEM WB

M[R6 + 32]

R1 est cherché ici pour le ADD

Page 19: Eduardo Sanchez Laboratoire de Systèmes Logiques Ecole …lsl · Eduardo Sanchez Page 3 Ecole Polytechnique Fédérale de Lausanne ♦ Solution en pipeline: à chaque étape du processus

Eduardo SanchezEcole Polytechnique Fédérale de LausannePage 19

♦ Le registre d’un LOAD ne peut pas être utilisé comme source d’une opération postérieure, et cela pendant un certain nombre de cycles: c’est un delayed LOAD

♦ Le nombre de cycles où le registre ne peut pas être utilisé est la pénalité du LOAD (load delay ou load slot)

♦ Le forwarding n’apporte pas de solution à ce cas. La solution la plus simple est ici le stall ou interlock: le pipeline est arrêté jusqu’à ce que l’aléa disparaisse (un cycle dans notre exemple)

♦ Le compilateur peut empêcher que ces cas arrivent, ajoutant des NOPs après le LOAD, dans le pire des cas

Page 20: Eduardo Sanchez Laboratoire de Systèmes Logiques Ecole …lsl · Eduardo Sanchez Page 3 Ecole Polytechnique Fédérale de Lausanne ♦ Solution en pipeline: à chaque étape du processus

Eduardo SanchezEcole Polytechnique Fédérale de LausannePage 20

Aléas de contrôle

♦ Le pipeline doit chercher une nouvelle instruction avant que la présente soit exécutée.

♦ Si l’instruction présente est un branchement conditionnel, avantque l’adresse de saut soit calculée d’autres instructions ont été cherchées.

♦ Pour notre exemple, la pénalité de branchement est de 3 cycles. Elle augmente avec la profondeur du pipeline.

♦ Si le processeur est superscalaire à n voies, la pénalité de branchement peut être multipliée par n.

♦ En moyenne, on trouve un branchement chaque 4-6 instructions...

Page 21: Eduardo Sanchez Laboratoire de Systèmes Logiques Ecole …lsl · Eduardo Sanchez Page 3 Ecole Polytechnique Fédérale de Lausanne ♦ Solution en pipeline: à chaque étape du processus

Eduardo SanchezEcole Polytechnique Fédérale de LausannePage 21

♦ Le blocage du pipeline est possible seulement après le décodage de l’instruction de saut, quand l’instruction suivante a déjà été cherchée. Pour notre exemple:

♦ Une autre solution est celle de laisser régler le problème au compilateur, comme dans le cas des LOADs

♦ Bien entendu, le traitement des interruptions complique encore les choses...

t t+1 t+2 t+3 t+4 t+5

BRANCH IF ID EX WB

IF IF

MEM

ID EX WBMEM

IF ID EX WBMEM

t+6 t+7 t+8 t+9

i + 1

i + 2

Page 22: Eduardo Sanchez Laboratoire de Systèmes Logiques Ecole …lsl · Eduardo Sanchez Page 3 Ecole Polytechnique Fédérale de Lausanne ♦ Solution en pipeline: à chaque étape du processus

Eduardo SanchezEcole Polytechnique Fédérale de LausannePage 22

Prédiction des sauts♦ Prédiction statique:

∗ 486: par défaut le branchement n’est pas pris∗ MicroSparc et HP-PA: les branchement en arrière sont pris∗ MIPS et PowerPC: le compilateur peut choisir le sens

♦ Prédiction dynamique:∗ la prédiction pour un même branchement peut changer en cours d’exécution,

d’après l’histoire du comportement du branchement∗ solution simple: prendre le même comportement que la dernière fois. Solution

adoptée par l’Alpha et le K5.∗ le Pentium utilise une Branch History Table (BHT) pour garder trace du

nombre de fois où le branchement a été pris∗ le Pentium Pro est le premier processeur à employer une prédiction

dynamique à deux niveaux. Une mauvaise prédiction a une pénalité de 15 cycles au minimum

Page 23: Eduardo Sanchez Laboratoire de Systèmes Logiques Ecole …lsl · Eduardo Sanchez Page 3 Ecole Polytechnique Fédérale de Lausanne ♦ Solution en pipeline: à chaque étape du processus

Eduardo SanchezEcole Polytechnique Fédérale de LausannePage 23

Branch prediction algorithm

Bra

nch

pred

icti

on a

ccur

acy

on S

PECi

nt9

2

40%

60%

65%

70%

75%

80%

85%

90%

95%

AlwaysNot Taken

AlwaysTaken

BTFN CompilerDirected

1-bitHistory

2-bitHistory

TwoLevel

Pentium Pro

21064A

21164PPC620UltraSparcPentium

21064

R8000

PPC601

MicroSparc-2

SuperSparc

486

Page 24: Eduardo Sanchez Laboratoire de Systèmes Logiques Ecole …lsl · Eduardo Sanchez Page 3 Ecole Polytechnique Fédérale de Lausanne ♦ Solution en pipeline: à chaque étape du processus

Eduardo SanchezEcole Polytechnique Fédérale de LausannePage 24

Le BHT possède une ligne par branchement.Et chaque ligne est un compteur-décompteur à deux bits:si le branchement est pris, on incrémente (avec arrêt à 3),on décrémente autrement (avec arrêt à 0).Un branchement est pris si le bit de poids fort de soncompteur correspondant est égal à 1.

Page 25: Eduardo Sanchez Laboratoire de Systèmes Logiques Ecole …lsl · Eduardo Sanchez Page 3 Ecole Polytechnique Fédérale de Lausanne ♦ Solution en pipeline: à chaque étape du processus

Eduardo SanchezEcole Polytechnique Fédérale de LausannePage 25

Dans la prédiction dynamique à deux niveaux il y a un BHT parbranchement. Et le compteur de chaque ligne est une indicationdu nombre de fois qu’une certaine séquence pris-non pris dubranchement a eu lieu: le pointeur de ligne est un registre àdécalage qui reçoit un 1 si le branchement est pris et un 0 dansle cas contraire.

111010

111010

1110

0010

0111

•••

•••