Eduardo SanchezLaboratoire de Systèmes Logiques
Ecole Polytechnique Fédérale de Lausanne
Le pipeline
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
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
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
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
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
Eduardo SanchezEcole Polytechnique Fédérale de LausannePage 7
+
1 0
0
4
registre registre registre
4 3
4
4 4 4
CK
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
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
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
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
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
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
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)
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
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
Eduardo SanchezEcole Polytechnique Fédérale de LausannePage 17
registres
trajectoiresde bypass
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
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
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...
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
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
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
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.
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
•••
•••