r1 - Free

publicité
Plan
„
„
„
„
„
„
„
„
„
„
Copyright © F. Muller
2004
Ch1 - Introduction
Ch2 - Structure de l’ordinateur
Ch3 - Modèle de Programmation
Ch4 - Conception des Processeurs
Ch5 - Pipeline
Ch6 - Parallélisme d’instructions
Ch7 - Systèmes Mémoire
Ch8 - Mémoires Caches
Ch9 - Mémoire Virtuelle
Ch10 - Systèmes Multiprocesseurs
Architecture de l’ordinateur - Pipeline
Ch5 - 1 -
Pipeline
Introduction
„ Pipelining
„ Aléas d’instructions
„ Prédire le temps d’exécution
„ Forwarding du résultat
„
Copyright © F. Muller
2004
Ch5 - 2 -
Introduction
„
Objectifs
„ Comprendre le pipelining
„ Calculer le temps de cycle d’un processeur pipeliné
„ Décrire le forwarding de résultat et expliquer la manière
dont il affecte le temps d’exécution
„ Calculer le temps d’exécution de petits segments de code
sur processeurs pipelinés avec forwarding du résultat
„
Introduction
„
Les premiers ordinateurs
„
„
„
De nos jours
„
„
Copyright © F. Muller
2004
Chaque instruction (étapes de lecture, décodage, lecture du fichier de registre,
calcul, …) était entièrement achevée avant d’exécuter la suivante
Inconvénient : chaque étapes restent inopérantes la plupart du temps
Pipeline : Recouvrir l’exécution de plusieurs instruction afin de réduire le temps
d’exécution d’une séquence d’instructions
Inconvénient : nécessite quelques ajouts matériels au processeur mais la
vitesse des instructions exécutées est augmentée
Architecture de l’ordinateur - Pipeline
Ch5 - 3 -
Pipelining – Principe (1/3)
„
Processeur non Pipeliné
„
Exécution des étapes pas à pas
Extraction
de l’instruction
Décodage
de l’instruction
1
2
3
4
Lecture
des registres
Exécution
de l’instruction
5
temps
Écriture du résultat
dans les registres
Copyright © F. Muller
2004
Architecture de l’ordinateur - Pipeline
Ch5 - 4 -
Pipelining – Principe (2/3)
EI
„
Processeur Pipeliné
„
„
„
„
Division du chemin de données en
plusieurs sections
Ajout de « latches » entre chaque
section
Une section s’appelle un étage
Chaque étage possède une latence
d’un cycle horloge
DI
Décodage
de l’instruction
1 cycle
d’horloge
Latch
LR
Lecture
des registres
1 cycle
d’horloge
Latch
Pipeline à 5 étages
Exécution
de l’instruction
1 cycle
d’horloge
Latch
ER
Architecture de l’ordinateur - Pipeline
1 cycle
d’horloge
Latch
EX
Copyright © F. Muller
2004
Extraction
de l’instruction
Écriture du résultat
dans les registres
1 cycle
d’horloge
Ch5 - 5 -
Pipelining – Principe (3/3)
„
Flux des instructions (5 étages)
„
„
Débit d’une instruction par seconde
Latence de 5 cycles par instruction
Cycle
EI
Étages du pipeline
DI
LR
EX
1
2
3
4
5
6
7
Instruction 1
Instruction 2
Instruction 3
Instruction 4
Instruction 5
Instruction 6
Instruction 7
Instruction 1
Instruction 2
Instruction 3
Instruction 4
Instruction 5
Instruction 6
Instruction 1
Instruction 2
Instruction 3
Instruction 4
Instruction 5
Instruction 1
Instruction 2
Instruction 3
Instruction 4
Instruction 1
Instruction 2
Instruction 3
ER
Copyright © F. Muller
2004
Architecture de l’ordinateur - Pipeline
Ch5 - 6 -
Exemple de Processeurs pipelinés (1/3)
Copyright © F. Muller
2004
Processeur
Profondeur du pipeline
Intel Pentium 4 Prescott
31
Intel Pentium 4
20
Intel Core 2 Duo
14
Intel Pentium II
14
AMD Opteron 1xx
12
Intel Pentium III
10
Freescale G4 (PPC 7450)
7
IBM Power4
12
IBM Power5
16
IBM PowerPC 970
16
Sun UltraSPARC III et IV
14
Intel Itanium
10
MIPS R4400
8
Architecture de l’ordinateur - Pipeline
Ch5 - 7 -
Exemple du processeur K7 & K8 - AMD (2/3)
Copyright © F. Muller
2004
Architecture de l’ordinateur - Pipeline
Ch5 - 8 -
Exemple des processeurs ARM (3/3)
„
ARM7TDMI (60 – 100 MHz)
„
„
„
„
ARM9TDMI (220 MHz)
„
„
„
Copyright © F. Muller
2004
Architecture Von Neumann
3 étages de pipeline
CPI ~ 1.9
Architecture Harvard
5 étages de pipeline
CPI ~ 1.5
Architecture de l’ordinateur - Pipeline
Ch5 - 9 -
Temps de cycle - Principe
„
„
Le pipelining augmente en général le nombre de
cycles d’horloge que nécessite un programme pour
s’exécuter (instructions bloquées)
L’amélioration provient du temps de cycle plus réduit
entre chaque étage
„
„
„
plus de cycles par seconde
Nombre d’instruction par unité de temps plus élevé
Temps de cycle
Temps de cyclepipeliné =
Temps de cyclenon pipeliné
Moins négligeable lorsque le
nb. d’étages augmente
+ Latence d’un latch du pipeline
Nombre d’étages du pipeline
Remarque: On considère que la logique est répartie de manière égale entre les étages
Copyright © F. Muller
2004
Architecture de l’ordinateur - Pipeline
Ch5 - 10 -
Temps de cycle - Exemple
„
Exemple
„
Copyright © F. Muller
2004
Un processeur non pipeliné possède un temps de cycle de
25ns. Quel est le temps de cycle d’une version pipelinée du
processeur avec 5 étages de pipeline en considérant que
chaque latch possède une latence de 1ns ? Même question
avec 50 étages de pipeline ?
Architecture de l’ordinateur - Pipeline
Ch5 - 11 -
Temps de cycle – Cas Réaliste
„
La logique du chemin de données ne peut pas être répartie en
différents étages de pipeline de latence égale
„
„
„
„
Le concepteur doit trouver le juste milieu
„
„
„
Logique de décodage irrégulière (difficile à diviser)
Rechercher les endroits où le nombre de valeurs intermédiaires stockées
sont réduit
Exemple
„
Copyright © F. Muller
2004
Accès au fichier de registres : 3 ns
Décodage d’une instruction : 4 ns
etc …
Supposons qu’un processeur non pipeliné possédant un temps de cycle
de 25ns soit divisé en 5 étages avec des latences de 5,7,3,6 et 4 ns et
ayant une latence de latch de 1 ns.
Quel est le temps de cycle du processeur ?
Architecture de l’ordinateur - Pipeline
Ch5 - 12 -
Latence de pipeline
„
„
Le pipeline réduit le temps de cycle d’un processeur et
augmente le débit des instructions MAIS
Le pipeline augmente la latence du processeur
Latence du pipeline = nombre d' étage × Tcycle
„
Exemple 1
„
Tcycle non pipeliné = 25ns, 5 ou 50 étages, latence latch = 1 ns
Pour 5 étages
Tcycle = 6 ns
Pour 50 étages
Latence = 6 ns x 5 = 30 ns
„
Tcycle = 1,5 ns
Latence = 1,5 ns x 50 = 75 ns
Exemple 2
„
Tcycle non pipeliné = 25ns, 5 étages (latence = 5,7,3,6,4 ns),
latence latch = 1 ns
Tcycle = 8 ns
Latence = 8 ns x 5 = 40 ns
Copyright © F. Muller
2004
Architecture de l’ordinateur - Pipeline
Ch5 - 13 -
Les aléas d’instruction
Introduction
„
„
Le pipelining augmente la performance du
processeur en accélérant le débit des instructions
Débit
„
„
„
„
Hélas, c’est trop beau pour être vrai …
„
„
„
Copyright © F. Muller
2004
Processeur pipeliné à 5 étages, Tcycle de 6 ns offre un débit
idéal de 1/6ns = 1,67x108 instructions/s
Processeur non pipeliné, Tcycle = 25ns offre un débit de
4x107 instructions/s
Conclusion : le processeur pipeliné va 4 fois plus vite
Dépendance entre les instructions
Les branchements
Accès à la mémoire
Architecture de l’ordinateur - Pipeline
Ch5 - 14 -
Les aléas d’instruction
Présentation (1/3)
„
„
Aléas (dépendances) surviennent lorsque les
instructions lisent ou écrivent dans des registres,
utilisés par d’autres instructions, il existes 4
catégories:
LAL (Lecture Après Lecture)
2 instructions lisent dans le même registre
Ne posent pas de problème au processeur
„
„
Exemple
…
ADD
SUB
…
Copyright © F. Muller
2004
r1, r2, r3
r4, r5, r3
Aléas LAL
Architecture de l’ordinateur - Pipeline
Ch5 - 15 -
Les aléas d’instruction
Présentation (2/3)
LAE (Lecture Après Écriture)
„
„
„
„
Une instruction lit un registre qui a été écrit par une instruction
précédente
Appelé aussi dépendances de données ou dépendances réelles
Blocage du pipeline, apparition d’une « bulle » (NOP)
…
ADD
SUB
…
r1, r2, r3
r4, r5, r1
Aléas LAE
Cycle
Étages du pipeline
EI
1
2
ADD r1,r2,r3
SUB r4,r5,r1
DI
LR
EX
ER
Copyright © F. Muller
2004
ADD r1,r2,r3
3
4
5
6
7
SUB r4,r5,r1
SUB r4,r5,r1
SUB r4,r5,r1
ADD r1,r2,r3
NOP (Bulle)
NOP (Bulle)
SUB r4,r5,r1
ADD r1,r2,r3
NOP (Bulle)
NOP (Bulle)
8
SUB r4,r5,r1
ADD r1,r2,r3
Architecture de l’ordinateur - Pipeline
SUB r4,r5,r1
Ch5 - 16 -
Les aléas d’instruction
Présentation (3/3)
„
EAL (Écriture Après Lecture)
„
Une instruction écrit après que l’instruction précédente est lu le
même registre
…
ADD
SUB
…
„
Une instruction écrit après que l’instruction précédente écrit aussi
dans le même registre
…
ADD
SUB
…
r1, r2, r3
r1, r5, r6
Aléas EAE
Problèmes
„
„
Copyright © F. Muller
2004
Aléas EAL
EAE (Écriture Après Écriture)
„
„
r1, r2, r3
r2, r5, r6
Toutes les instructions ne possèdent pas la même latence
Processeurs OOO (Out-of-Order)
Architecture de l’ordinateur - Pipeline
Ch5 - 17 -
Les aléas d’instruction
Branchement (aléas de contrôle)
„
Les instructions de branchements conditionnels peuvent engendrer
des retard car le processeur ne peut pas déterminer la prochaine
instruction à exécuter
…
ADD
BEQ
SUB
…
Étages du pipeline
EI
DI
LR
r5, r2, r3
saut
r1,r5,r2
On suppose que le
résultat du registre r5 est
différent de 0
Cycle
1
2
3
4
5
6
ADD r5,r2,r3
BEQ saut
NOP (bulle)
NOP (bulle)
NOP (bulle)
SUB r1,r5,r2
ADD r5,r2,r3
BEQ saut
NOP (bulle)
NOP (bulle)
NOP (bulle)
ADD r5,r2,r3
BEQ saut
NOP (bulle)
NOP (bulle)
ADD r5,r2,r3
BEQ saut
NOP (bulle)
ADD r5,r2,r3
BEQ saut
EX
ER
Écriture des flags dans le registre d’état
„
Améliorations possibles
„
„
Copyright © F. Muller
2004
Écriture du CO
Ajout d’un dispositif matériel qui calcule à l’avance le branchement
Ajout d’un mécanisme de prédiction
Architecture de l’ordinateur - Pipeline
Ch5 - 18 -
Les aléas d’instruction
Aléas structurels
Survient lorsque l’architecture du processeur n’est pas capable
d’exécuter simultanément toutes les instructions dans le
pipeline
Exemple
„
„
Fichier de registres
Écriture dans le fichier de registres
même cycle
Lecture dans le fichier de registres
„
„
Copyright © F. Muller
2004
Les aléas structurels sont plutôt rares dans les processeurs
modernes
Les processeurs qui exécutent plus d’une instruction par cycle
sont restreints sur le type d’instruction à exécuter en parallèle
Exemple : opération sur les entiers // opérations sur les flottants
Architecture de l’ordinateur - Pipeline
Ch5 - 19 -
Les aléas d’instruction
Marquage sur les registres
„
„
„
Le processeur pipeliné doit tenir compte des registres qui
doivent être écrits par les instructions présentes dans le
pipeline
Permet aux instructions suivantes de savoir lors de l’étage LR
si les registres sont disponibles
Marquage des registres (scoreboarding)
„
Ajout d’un bit de présence par registre
„
„
„
Bit à 1 : lecture possible (rempli)
Bit à 0 : attente qu’une instruction vienne écrire (vide)
Si le ou les registres ne sont pas près, ajout d’une bulle
Fichier de registres
Bit de présence
Copyright © F. Muller
2004
Architecture de l’ordinateur - Pipeline
registre
Ch5 - 20 -
Prédire le temps d’exécution
Principe (1/2)
„
Processeur non pipeliné
„
„
Processeur pipeliné
„
„
„
Le temps d’exécution est la somme des temps de chaque
instruction
Plus complexe, Tenir compte des dépendances
Dans le cas idéal
Temps d’exécution (en cycle) = nb. d’étage + (nb. Inst. – 1)
Solutions
„
Dessiner un diagramme de flux du
pipeline (pas très utilisable pour de
longs programmes)
Diviser le temps d’exécution en 2
parties
„
„
Copyright © F. Muller
2004
La latence du pipeline
Le temps requis pour émettre toutes les
instructions du programme
Architecture de l’ordinateur - Pipeline
Instruction
émise
Étages du pipeline
„
Cycle
n
n+1
EI
…
…
DI
…
…
LR
ADD r5,r2,r3
…
EX
…
ADD r5,r2,r3
ER
…
…
Ch5 - 21 -
Prédire le temps d’exécution
Principe (2/2)
„
La durée d’émission totale
„
„
„
„
Temps d’exécution
„
„
Commence au cycle d’émission de la première instruction
Ajout de cycles intermédiaires lorsque le pipeline est bloqué
(bulle)
Se termine au cycle d’émission de la dernière instruction
Latence du pipeline + temps d’émission des inst. – 1
Dans la pratique
„
„
Latence pour chaque type d’instruction
Les instructions sont émises
„
„
„
Copyright © F. Muller
2004
Soit durant le cycle qui suit l’émission de l’instruction que les précèdent
Soit lorsque toutes les latences de toutes les instructions dont elles dépendent
ont terminées
Le nombre de cycles d’un programme requis peuvent être calculé
en suivant pas à pas l’écoulement séquentiel des instructions afin
de repérer à quel moment chacune des instructions parvient à être
émise
Architecture de l’ordinateur - Pipeline
Ch5 - 22 -
Prédire le temps d’exécution
Exemple 1
Si notre pipeline possède des latences d’instruction de 4 cycles pour
les instructions de branchement, 3 cycles pour les autres, quel est le
temps d’exécution de la séquence suivante d’instruction ?
„
ADD
SUB
MUL
ASH
OR
r1, r2, r3
r4, r5, r6
r8, r2, r1
r5, r2, r1
r10, r11, r4
cycle n
cycle n+1 (indépendante)
cycle n+3 (dépend de ADD)
cycle n+4 (dépend de ADD)
cycle n+5 (indépendante)
Vérification
Étages du pipeline
EI
6 cycles pour émettre
les instructions
Cycle
1
2
3
4
5
6
ADD r1,r2,r3
SUB r4,r5,r6
MUL r8,r2,r1
ASH r5,r2,r1
OR r10,r11,r4
OR r10,r11,r4
ADD r1,r2,r3
SUB r4,r5,r6
MUL r8,r2,r1
ASH r5,r2,r1
ASH r5,r2,r1
OR r10,r11,r4
ADD r1,r2,r3
SUB r4,r5,r6
MUL r8,r2,r1
MUL r8,r2,r1
ASH r5,r2,r1
OR r10,r11,r4
ADD r1,r2,r3
SUB r4,r5,r6
NOP (bulle)
MUL r8,r2,r1
ASH r5,r2,r1
OR r10,r11,r4
ADD r1,r2,r3
SUB r4,r5,r6
NOP (bulle)
MUL r8,r2,r1
ASH r5,r2,r1
DI
LR
EX
ER
Copyright © F. Muller
2004
Architecture de l’ordinateur - Pipeline
7
8
9
10
OR r10,r11,r4
Ch5 - 23 -
Prédire le temps d’exécution
Exemple 2
„
Le pipeline possède 7 étages, les instructions de
branchement possèdent une latence de 5 cycles, les
autres instructions une latence de 2 cycles. Nous
supposerons que le branchement n’est pas effectué
BNE
DIV
ADD
SUB
MUL
Copyright © F. Muller
2004
r4, #0, r5
r2, r1, r7
r8, r9, r10
r5, r2, r9
r10, r5, r8
Architecture de l’ordinateur - Pipeline
Ch5 - 24 -
Forwarding de résultat
Principe
Une grande partie des délai (dépendance de données) est due
au temps requis pour écrire le résultat d’une instruction dans le
fichier de registre
Solution: transmettre le résultat de l’étage d’exécution
directement aux instructions situées dans les précédents
étages du pipeline
„
„
Forwarding de résultat (bypassing)
Cycle
Étages du pipeline
EI
1
2
ADD r1,r2,r3
SUB r4,r5,r1
DI
LR
ADD r1,r2,r3
3
5
6
7
8
SUB r4,r5,r1
SUB r4,r5,r1
SUB r4,r5,r1
ADD r1,r2,r3
NOP (Bulle)
NOP (Bulle)
SUB r4,r5,r1
ADD r1,r2,r3
NOP (Bulle)
NOP (Bulle)
SUB r4,r5,r1
ADD r1,r2,r3
EX
ER
Exécution de ADD
Copyright © F. Muller
2004
4
Écriture du
résultat dans r1
Architecture de l’ordinateur - Pipeline
Lecture de r1
SUB r4,r5,r1
Exécution de SUB
Ch5 - 25 -
Forwarding de résultat
Exemple d’implémentation
„
„
Les processeurs
implémentent le forwarding de
résultat différemment.
Par exemple, on peut éviter
l’ajout d’un chemin de bypass:
„
„
„
EI
Latch
DI
1er demi cycle : Écriture du
fichier de registres
2ème demi cycle : lecture du
fichier de registres
„
LR
Lecture
des registres
Latch
Ramène à 2 cycles de
latence l’exemple précédent
Si on ajoute un chemin de
bypass, la latence est de 1
cycle
Chemin
habituel
EX
Architecture de l’ordinateur - Pipeline
Chemin du
forwarding de
résultat
Exécution
de l’instruction
Latch
ER
Copyright © F. Muller
2004
Décodage
de l’instruction
Latch
Bilan
„
Extraction
de l’instruction
Écriture du résultat
dans les registres
Ch5 - 26 -
Forwarding de résultat
Exemple
„
Quel est le temps d’exécution (en cycles) du code
suivant (cf. Aléas LAE) si le forwarding de résultat est
implémenté dans notre pipeline à 5 étages ?
ADD
SUB
r1, r2, r3
r4, r5, r1
cycle n
cycle n+1 (bypass)
2 cycles pour émettre
les instructions
Copyright © F. Muller
2004
Architecture de l’ordinateur - Pipeline
Ch5 - 27 -
Synthèse
„
„
Le pipeline améliore la performance des processeurs en
recouvrant l’exécution de plusieurs instructions
La performance crête d’un système pipeliné dépend
„
„
„
„
„
„
„
Copyright © F. Muller
2004
Du nombre d’étages
De l’équilibrage de répartition de la logique d’exécution
Délai des latches
L’impact du pipeline diminue à mesure que le nombre d’étages
augmente (latches non négligeables)
La performance d’un système pipeliné est limitée par les
dépendances de données : LAE, EAL et EAE
Les branchements limitent la performance du pipeline
Le forwarding est utilisé pour réduire le délai causé par les
dépendances LAE, c’est-à-dire la latence des instructions
Architecture de l’ordinateur - Pipeline
Ch5 - 28 -
Téléchargement