Académique Documents
Professionnel Documents
Culture Documents
Parallélismes et mécanismes
architecturaux avancées
1. Classification des architectures parallèles
2. Parallélisme niveau instruction : Pipeline,
Superscalaire et VLIW
3. Parallélisme de donnée : SIMD
4. Parallélisme des tâches : Architecture Multi-cœur et
Multi-thread
56
1. Classification des architectures parallèles
• Parallélisme d’instructions
– Parallélisme temporel : pipeline
– Parallélisme : VLIW et Superscalaire
– Débit d’instruction : vectoriel
• Parallélisme de données
– SIMD
• Parallélisme de tâches
– Multithread
– Multiprocesseur
57
1. Classification des architectures parallèles
58
2. Parallélisme niveau instruction
La technique du Pipeline
59
Pipeline à 8 étages
Calcul AL Reg.
PC IR Reg. d’adresse
mémoire mémoire
WB
AC
IA
DI
MA
IS
EX
IF
PC IR @ Calcul
Calcul
d’adresse Reg.
mémoire Reg.
mémoire
P IR @ Calcul
C
Calcul
PC IR Reg. d’adresse AL Reg.
mémoire mémoire
Instruction i IA
62
IA IF SI DI AC MA EX WB
P IR @ Calcul
C
Calcul
PC IR Reg. d’adresse AL Reg.
mémoire mémoire
Instruction i IA IF
Instruction i+1 IA
63
IA IF SI DI AC MA EX WB
P I @ Calcul
C R
Calcul
PC IR Reg. d’adresse AL Reg.
mémoire mémoire
Instruction i IA IF SI
Instruction i+1 IA IF
Instruction I+2 IA
64
IA IF SI DI AC MA EX WB
P I @ Calcul
C R
Calcul
PC IR Reg. d’adresse AL Reg.
mémoire mémoire
Instruction i IA IF SI DI
Instruction i+1 IA IF SI
Instruction i+2 IA IF
Instruction i+3 IA
65
IA IF SI DI AC MA EX WB
P I @ Calcul
C R
Calcul
PC IR Reg. AL Reg.
mémoire mémoire
Instruction i IA IF SI DI AC
Instruction i+1 IA IF SI DI
Instruction I+2 IA IF SI
Instruction i+3 IA IF
Instruction i+4 IA
66
IA IF SI DI AC MA EX WB
P I @ Calcul
C R
Calcul
PC IR Reg. d’adresse AL Reg.
mémoire mémoire
Instruction i IA IF SI DI AC MA
Instruction i+1 IA IF SI DI AC
Instruction I+2 IA IF SI DI
Instruction i+3 IA IF SI
Instruction i+4 IA IF
Instruction i+5 IA
67
IA IF SI DI AC MA EX WB
P I @ l
C R
Calcul
PC IR Reg. d’adresse AL Reg.
mémoire mémoire
Instruction i IA IF SI DI AC MA EX
Instruction i+1 IA IF SI DI AC MA
Instruction I+2 IA IF SI DI AC
Instruction i+3 IA IF SI DI
Instruction i+4 IA IF SI
Instruction i+5 IA IF
Instruction i+6 IA
68
IA IF SI DI AC MA EX WB
P I @
C R
Calcul
PC IR Reg. ALU. Reg.
mémoire mémoire
Instruction i IA IF SI DI AC MA EX WB
Instruction i+1 IA IF SI DI AC MA EX
Instruction I+2 IA IF SI DI AC MA
Instruction i+3 IA IF SI DI AC
Instruction i+4 IA IF SI DI
Instruction i+5 IA IF SI
Instruction i+6 IA IF
Instruction i+7 IA 69
2. Parallélisme niveau instruction
La technique du Pipeline
■ L’effet du pipe
L'effet du pipeline rentabilise l'utilisation du silicium
=> Augmentation du rendement silicium (proche de 100%)
71
2. Parallélisme niveau instruction
La technique du Pipeline
72
2. Parallélisme niveau instruction
La technique du Pipeline
■ Cas des conflits de ressources (aléas structurels)
• Un conflit de ressource se produit lorsque plusieurs instructions, dans des
étages différents du pipeline, requièrent la même ressource.
• C'est le cas systématique de l'accès à la mémoire :
IA IF SI DI AC MA EX WB
P I
R @ Calcul
C
Calcul
PC IR Reg. AL Reg.
mémoire d’adresse mémoire
Instruction i IA IF SI DI AC MA
Instruction i+1 IA IF SI DI AC
Instruction I+2 IA IF SI DI Conflit d’accès
Instruction i+3 IA IF SI mémoire
Instruction i+4 IA IF
Instruction i+5 IA 73
2. Parallélisme niveau instruction
La technique du Pipeline
74
2. Parallélisme niveau instruction
La technique du Pipeline
instruction 0 1 2 3 4 5 6 7 8 9 10 11 12
ADD R1, R2, 100 IA 1F IS DI AC MA EX WB
LOAD R3, R1 IA IF SI ● ● ● ● DI AC MA EX WB
76
2. Parallélisme niveau instruction
La technique du Pipeline
Cependant, il est souvent inefficace d’attendre qu’une donnée ait été
écrite dans le banc de registres avant de l’utiliser. En effet, la donnée
est souvent disponible plutôt.
77
2. Parallélisme niveau instruction
La technique du Pipeline
Chemin de données rajouter pour
l’exemple traiter pour implémenter le
forwarding
ALU
Reg.
mémoire
78
2. Parallélisme niveau instruction
La technique du Pipeline
80
2. Parallélisme niveau instruction
La technique du Pipeline
■ Cas des aléas de contrôle
Lors de l’exécution d’une instruction de branchement conditionnel, on dit
que le branchement est pris si la condition est vérifiée et que le programme
se poursuit effectivement à la nouvelle adresse. Un branchement sans
condition est toujours pris.
Lorsqu’un branchement est pris, l’adresse de celui-ci est calculée à l’étape
AC «Calcul Adresse » et rangée dans le registre PC à l’étape WB «écriture
du résultat ». Toutes les instructions qui suivent l’instruction de branchement
ne doivent pas être exécutées (le pipeline est vidé).
On constate que l’exécution d’un branchement dégrade notablement la
performance du pipe. Comme les branchements constituent en général 20 à
30% des instructions exécutées par un programme, il est primordial
d’améliorer leur exécution.
Une façon simple d’optimiser les branchements est de ne pas leur faire
suivre toutes les étapes du pipeline afin que la nouvelle adresse soit écrite le
plutôt possible dans le registre PC
81
2. Parallélisme niveau instruction
La technique du Pipeline
Ex:
BEQ etiq
….
.…
etiq ADD R4, R1, R2
instruction 0 1 2 3 4 5 6 7 8 9 10 11 12
BEQ etiq IA 1F IS DI AC MA EX WB
… IA IF SI ● . . .
… IA IF
IA
IA
ADD R4, R1, R2 IA IF IS DI AC MA EX WB
82
2. Parallélisme niveau instruction
La technique du Pipeline
Pour les branchement conditionnels, la condition ne dépend que des
indicateurs n, z et p du code de l’instruction. Cette condition peut donc être
calculée à l’étape DI «décodage, lecture des opérandes ». De même l’adresse
du branchement est soit le contenu d’un registre soit la somme de PC et d’un
offset. Dans les deux cas, cette valeur peut être disponible à la fin de l’étape
AC. Le prix à payer est l’ajout d’un nouvel additionneur dédié à ce calcul.
La nouvelle adresse est écrite dans le registre PC à la fin de l’étape AC.
Exemple :
LOOP : LOAD R1,R0, #100
…..
JZ LOOP L’adresse de destination
du branchement est disponible
La condition (bits n,p,z)
à la fin de cette étape
est lue à la fin de cette étape
instruction 0 1 2 3 4 5 6 7 8 9 10 11 12
JZ LOOP IA IF IS DI AC MA EX WB
LOAD R1, R0, #100 ● ● ● ● IA IF SI DI AC MA EX WB
83
2. Parallélisme niveau instruction
La technique du Pipeline
données
Unité de Unité
décodage d’exécution Mémoire
programme
instructions
PC
Branchement?
Adresse prédite
PC=adresse calculée
86
2. Parallélisme niveau instruction
La technique du Pipeline
■ Exécution spéculative et prédiction
Dans le cas des branchements conditionnels, il n'est pas possible
d'anticiper le calcul de l'adresse du branchement (dépend d'une
condition à calculer).
Stratégie :
Exécuter spéculativement les instructions en «pariant» sur la
valeur de la condition
✔ Si pari gagnant : OK, pas de cycles perdus
✔ Si pari perdu : insertion de bulles
Différents algorithmes de prédiction qui dépendent des cas
(application, instructions)
87
2. Parallélisme niveau instruction
La technique du Pipeline
BILAN
La présence du pipeline permet d'améliorer significativement les
performances d'une unité de calcul avec des conséquences pour les
architectures embarquées...
Sous étapes plus simples = plus de niveaux de pipeline
= fréquence de fonctionnement plus élevée
MAIS
puissance dissipée plus importante !
89
2. Parallélisme niveau instruction
Processeurs Superscalaires
• n unités d’exécution
• n instructions délivrées par cycle
• ordonnancement dynamique en matériel
inst≠3
n=3 inst≠3
inst≠3 P=4
inst≠4
inst≠4
inst≠4
Cycle
90
2. Parallélisme niveau instruction
Processeurs Superscalaires
AMD Opteron :
Mode 64 bits
Exécution dans le désordre
9 instructions/cycle max
3 calculs entiers
3 calculs d'@
3 calculs flottants
91
2. Parallélisme niveau instruction
Processeurs Superscalaires
Superscalaire statique
Les premiers microprocesseurs utilisaient un lancement
statique des instructions. Le principe consiste à lire un groupe
d’instructions (quatre dans la plupart des cas) et a essayer de
les exécuter simultanément. Si c’est possible, alors elles
s’exécutent en un cycle. Si c’est impossible, il faut attendre le
cycle suivant pour exécuter le reste des instructions du groupe.
Un nouveau groupe ne peut être traité que lorsque le groupe
précédent l’a été.
Avec cette approche, le compilateur joue un rôle essentiel,
car il a la responsabilité de générer le code de manière à ce
que le maximum de groupes d’instructions puissent être
exécutés en un cycle
L’approche statique a pour limitation essentielle d’exécuter les
groupes d’instructions dans l’ordre. Or, des instructions d’un
groupe peuvent attendre des résultats d’instructions
précédentes alors que les instructions de groupes suivants
93
2. Parallélisme niveau instruction
Processeurs Superscalaires
pourraient s’exécuter, parce que leurs opérandes sont déjà
disponibles
Superscalaire dynamique
Dans l’approche dynamique, le processeur est capable
d’exécuter les instructions de manière non ordonnée, par
rapport à l’ordre normal des instructions du programme
Les instructions du programme sont lues et décodées dans
l’ordre et placées dans un tampon de lancement. Quand leurs
opérandes sont disponibles, elles sont exécutées dans les unités
fonctionnelles. Comme il faut en même temps gérer les
exceptions et les interruptions, un dispositif spécial appelé
tampon de ré-ordonnancement assure la terminaison dans
l’ordre des instructions
Principe de l’exécution
non ordonnée
95
2. Parallélisme niveau instruction
Architecture VLIW (Very Large Instruction Word)
97
2. Parallélisme niveau instruction
Architecture VLIW (Very Large Instruction Word)
• Approche VLIW
Alors que le superscalaire réalise par matériel en dynamique
l’exécution en parallèle des instructions, l’approche VLIW
demande au compilateur de générer un mot constitué de
plusieurs instructions qui sont exécutées directement par
le matériel.
97
2. Parallélisme niveau instruction
Architecture VLIW (Very Large Instruction Word)
• Parallélisme Explicite (EPIC)
Le compilateur expose, améliore et exploite le parallélisme du
programme source et le rend explicite dans le code machine
9
8
2. Parallélisme niveau instruction
Architecture VLIW (Very Large Instruction Word)
Une autre technique consiste à disposer d’unités d’exécution en parallèle mais d’agencer les
Instructions respectives au niveau du compilateur de telle sorte qu’une longue instruction
correspondant à plusieurs instructions concaténées soit présentée au processeur.
Cet agencement statique à la compilation permet en théorie d’atteindre des performances
élevées par rapport au superscalaire. Cependant l’écriture de tels compilateurs demeure
difficile.
• Une seule unité de contrôle, une instruction très longue par cycle
Exec≠1
inst≠1 Exec≠2 inst≠5 Fetch
Exec≠3
Decode
Exec≠1 Execute
inst≠2 Exec≠2 inst≠6
Exec≠3 Write back
P=4
Exec≠1
inst≠3 Exec≠2
n=3
Exec≠3
Exec≠1
inst≠4 Exec≠2
Exec≠3
Cycle 99
Chapitre 2 :
Parallélismes et mécanismes
architecturaux avancées
1. Classification des architectures parallèles
2. Parallélisme niveau instruction : Pipeline,
Superscalaire et VLIW
3. Parallélisme de donnée : SIMD
4. Parallélisme des tâches : Architecture Multi-cœur et
Multi-thread
100
3. Parallélisme de données
Architecture SIMD
• Principe
Single Instruction on Multiple Data
(SIMD) est une des quatre
catégories d’architecture définie par
la taxinomie de Flynn et désigne un
mode de fonctionnement des
ordinateurs dotés de plusieurs
unités de calcul fonctionnant en
parallèle.
102
Chapitre 2 :
Parallélismes et mécanismes
architecturaux avancées
1. Classification des architectures parallèles
2. Parallélisme niveau instruction : Pipeline, Superscalaire et
VLIW
3. Parallélisme de donnée : SIMD
4. Parallélisme des tâches : Architecture Multi-cœur et Multi-
103
4. Parallélisme des tâches
Architecture Multi-cœur (Multi-core)