Académique Documents
Professionnel Documents
Culture Documents
• Les aléas
• Les 5 modèles d’une architectures RISC
Principe du
pipeline:
déménagement
en chaîne
Temps d’exécution
Temps
d’exécution 10 ns
50ns 10 ns
10 ns
Total 50ns
Total 30ns
avant les à partir des
années 80 années 80 3
Références
(pas obligatoire pour le cours mais si vous désirez aller plus loin…)
Bible de l’architecture
5
Architecture RISC (rappel)
6
Le pipeline DLX
Adresse calculée
Condition de branchement
Donnée à écrire
Imm
Étendre
RI[16:31]
7
Donnée à écrire en
registre
Le pipeline DLX
Adresse calculée
Condition de branchement
B: LD F0, 0(R1)
4 M
ADDD F4, F0, F2
NCP Branche- Donnée à écrire en
Zéro?
ADD
U
X ment pris registre
SD 0(R1), F4
C
P
RI[6:10]
M
SUBI R1, R1, #8
A U
Mémoire
instruc-
RI RI[11:15]
X
M
U
BNEZ R1, B
tions Registres Mémoire X
UAL données Valeur chargée
B Adresse
MEM/ER (DMC)
M
U
X
Donnée à écrire
Imm
Étendre
RI[16:31]
Après 5 cycles
Cycle 1 LD
Donnée à écrire en
registre j’ai une instruction
Cycle 2 ADDD LD complétée, mais aux
Cycle 3 SD ADDD LD cycles suivants
Cycle 4 SUBI SD ADDD LD j’aurai un une
Cycle 5 BNEZ SUBI SD ADDD LD instruction qui
terminera à
chaque cycle.
Tableau qu’on
va utiliser
8
Architecture RISC (rappel)
9
Architecture RISC (rappel)
10
Architecture RISC (rappel)
• Objectif du concepteur: équilibrer la taille des étages du pipeline.
• L'accélération liée au pipeline = nombre d'étages
= 5
• Remarques:
– La difficulté principale de la technique du pipeline est ce qu'on
appelle les aléas du pipeline, en effet il existe des situations,
appelées aléas de données, qui empêchent l'instruction suivante du
flux d'instruction de s'exécuter au cycle d'horloge qui lui est
affecté.
– 3 types aléas: structurels, données et de contrôle
– Par conséquent, les aléas réduisent la performance du pipeline
(accélération inférieure à 5)
• Les aléas (conflits) de données et de contrôle sont ceux qui affectent
l’accélération de 5 (typiquement entre 3.5 et 5 selon la stratégie)
11
Regardons plus en détail ces dépendances
12
Regardons plus en détail ces dépendances
Dépendances de données
LD F0, 0(R1)
• LAE (RBW)
1. F0 de LD doit contenir ADDD F4, F0, F2
par SD
Dépendances de données
LD F0, 0(R1)
• LAE (RBW)
1. F0 de LD doit contenir ADDD F4, F0, F2
Dépendances de données
• EAL (WBR)
– DIV doit avoir terminé avec F0 LD F0, 0(R1)
SD 0(R1), F4
15
Regardons plus en détail ces dépendances
LD F0, 0(R1)
• EAE (WBW)
DIV F4, F0, F2
– DIV doit avoir affecté F4
avant que ADD affecte F4 SD 0(R1), F4
SD 0(R1), F4
16
Regardons plus en détail ces dépendances
• Dépendances de contrôle
if (condition1)
17
Regardons plus en détail ces dépendances
•Dépendances de contrôle
...
SD 0(R1),F8
...
18
Parallélisme d’instruction
• Parallélisme d’instructions (ILP)
M1
(pas très réaliste)
20
Autres modèles possibles:
M2
M3
Deux EX distincts peuvent s’exécuter en parallèle, mais lorsqu’on a deux exécutions
identiques (ex. ADDF) successives on devra attendre que la première soit terminée
avant de commencer la seconde.
21
Réf.: Computer Architecture, A Quantitative Approach, H&P, 1996. p228-251
Autres modèles possibles:
•Modèle pipeline étendu aux opérations flottantes.
M4
22
Parallélisme d’instruction
• Exemple:
Délais:
• FP-ALU 3 cycles dans EX (E1, E2 et E3)
donc 2 cycles de supension
• Branchement avec délai de 3 cycles (2
cycles de suspension)
Analyse selon M2
SD 0(R1), F4
LAE (RBW)
24
Technique d’optimisation:
Analyse selon M2
cycle
B: LD F0, 0(R1) 1
suspension 2
ADDD F4, F0, F2 3 1 itération = 10 cycles
suspension 4
1000 itérations = 10000 cycles
suspension 5
SD 0(R1), F4 6
SUBI R1, R1, #8 7 LD F0, 0(R1)
BNEZ R1, B 8
suspension 9 ADDD F4, F0, F2
suspension 10
SD 0(R1), F4
LAE (RBW)
25
Analysons le schéma précédant
26
Note: Stall or NOP
• Stall (cas du ARM): aucune nouvelle
instruction n’est lue durant le(s) SU(s) donc
aucune instruction ne termine durant ce(s)
cycle(s).
• NOP (cas du MIPS): l’assembleur insère
des NOP instructions.
27
Technique d’optimisation (suite)
D‘où le résultat assembleur
B: LD F0, 0(R1) 1
SU 2 LD F0, 0(R1)
ADDD F4, F0, F2 3
NOP 4 ADDD F4, F0, F2
NOP 5
SD 0(R1), F4 6 SD 0(R1), F4
SUBI R1, R1, #8 7 LAE (RBW)
BNEZ R1, B 8
NOP 9
NOP 10
Selon
M2
10 cycles 28
Technique d’optimisation (suite)
Selon
M2
10 cycles
2 suspensions
(page
précédente):
29
Technique d’optimisation (suite)
Selon
M2
10 cycles/itération
• On a donc un modèle pipeline avec une seule unité EX qui peut jouer le rôle d’entier
ou de flottante. Lorsqu’on fait un ADDD (addition sur un double mot), ça demande 3
cycles dans l’unité EX alors que si on fait un ADD (addition sur un entier) ça demande
1 cycle seulement.
• Convention: quand on a un SU qui apparait au cycle i tout ce qui suit en bas est SU.
30
Technique d’optimisation (suite)
1. Parallélisme
entre E2 et EX
2. Ordre des 3
EX doit être
préservé
Selon
M3
1 suspension 9 cycles
2 suspensions au total
• 3 SU doivent quand même être insérés:
32
Analysons le schéma précédant
33
Technique d’optimisation (suite)
Selon
M4
34
Technique d’optimisation (suite)
1 itération = 7 cycles
1000 itérations = 7000 cycles
A = 10000/7000 = 1.43
35
Réf.: Computer Architecture, A Quantitative Approach, H&P, 1996. p228-251
Technique d’optimisation pour le point flottant (suite)
B: LD F0, 0(R1)
ADDD F4, F0, F2
SD 0(R1), F4
LD F10, -16(R1)
ADDD F12, F10, F2
SD -16(R1), F12
LD F14, -24(R1)
ADDD F16, F14, F2
SD -24(R1), F16
1 itération = 28 cycles
250 itérations = 7000 cycles
SUBI R1, R1, #32
BNEZ R1, B
A = 10000/7000 = 1.43
36
Réf.: Computer Architecture, A Quantitative Approach, H&P, 1996. p228-251
Technique d’optimisation pour le point flottant (suite)
Déroulage de la boucle pour 4 itérations (2e optimisation M4)
B: LD F0, 0(R1) ; 1
SU ; 2
ADDD F4, F0, F2 ; 3
SU ; 4
SU ; 5
SD 0(R1), F4 ; 6
LD F6, -8(R1) ; 7
ADDD F8, F6, F2 ; 9
SD -8(R1), F8 ; 12
LD F10, -16(R1) ; 13
ADDD F12, F10, F2 ; 15
SD -16(R1), F12 ; 18
LD F14, -24(R1) ; 19
ADDD F16, F14, F2 ; 21 1 itération = 28 cycles
SD -24(R1), F16 ; 24 250 itérations = 7000 cycles
SUBI R1, R1, #32 ; 25
BNEZ R1, B ; 26 A = 10000/7000 = 1.43
SU ; 27
SU ; 28
37
Réf.: Computer Architecture, A Quantitative Approach, H&P, 1996. p228-251
Technique d’optimisation pour le point flottant (suite)
Déroulage + Ordonnancement
B: LD F0, 0(R1)
Les LD LD F6, -8(R1)
remplace LD F10, -16(R1)
efficacement LD F14, -24(R1)
le SU
1 itération = 14 cycles
250 itérations = 3500 cycles
ADDD F4, F0, F2
Les ADD ADDD F8, F6, F2
remplace A = 10000/3500 = 2.86
efficacement
ADDD F12, F10, F2
les 2 SU ADDD F16, F14, F2
N.B. Un déroulement de 3
aurait suffit pour éviter les SU,
mais 100/3 n’est pas un entier.
SD 0(R1), F4
SD -8(R1), F8
; SD -16(R1), F12
; SD -24(R1), F16
38
Réf.: Computer Architecture, A Quantitative Approach, H&P, 1996. p228-251
Architectures pour ILP
(Superscalaire, SIMD, VLIW)
39
Exemple de superscalaire
(ARM Cortex A72)
DI (3 décodage en parallèle)
4 additions en
N.B. Le Raspberry Pi 4 comporte 1 Cortex-A72 à 1,5 GHz parallèle sur 4 mots
de 32 bits
40
Architecture superscalaire
INSTRUCTION
ENTIÈRE LI DI EX ME ER
FLOTTANT LI DI E1 E2 E3 … En ME ER
ENTIÈRE LI DI EX ME ER
FLOTTANT LI DI E1 E2 E3 … En ME ER
ENTIÈRE LI DI EX ME ER
FLOTTANT LI DI E1 E2 E3 … En ME ER
41
Architecture superscalaire
Exemple: Paralléliser:
B: LD F0, 0(R1)
ADDD F4, F1, F2
SD 0(R1), F4
SUBI R1, R1, #8
BNEZ R1, B
Problème:
Le microprocesseur ne peut pas résoudre tous les aléas
de données.
Solution:
Trouver un ordonnancement déroulé sans délai ni
suspension qu’on peut séparer sur 2 pipelines.
42
Architecture superscalaire
A = 10000/3400 = 2.94
43
Architecture superscalaire
44
Architecture superscalaire
45
En résumé:
1. Modèle pipeline avec une seule unité EX (elle aussi pipelinable) qui
supporte à la fois les opérations entières et flottantes.
46
Architecture VLIW
47
Architecture VLIW
48
VLIW
• Voir aussi:
http://marcel.developpez.com/cours/systeme/architecture-
ordinateur/html/node222.html
49
Exemple d’architecture VLIW chez STMicroelectronics
50
Architecture VLIW
UNITÉ TRANSFERT 1 UNITÉ TRANSFERT 2 UNITÉ EXÉCUTION 1 UNITÉ EXÉCUTION 2 UNITÉ ENTIÈRE
1 LD F0,0(R1) LD F6,-8(R1)
2 LD F10,-16(R1) LD F14,-24(R1)
3 LD F18,-32(R1) ADDD F4,F0,F2 ADDD F8,F6,F2
4 ADDD F12,F10,F2 ADDD F16,F14,F2
5 ADDD F20,F18,F2
6 SD 0(R1),F4
7 SUBI R1, R1, #40
8 BNEZ R1, B
9 SD 24(R1),F12 SD 32(R1),F8 Plutôt que de mettre à la suite de la ligne 6, on
10 SD 8(R1),F20 SD 16(R1),F16 a gardé pour le remplissage du branch
11
12
1 itération = 10 cycles
200 itérations = 2000 cycles
A = 10000/2000 = 5
51
Architecture VLIW
Ordonnancement statique
le compilateur cherche plusieurs
instructions indépendantes et les encode en
une seule
Exemple:
LD F0,0(R1) || LD F6,-8(R1) || ADDD F10,F12,F16 || ADDD F11,F13,F17 || bnez r1,b || sub r2,r2,#1
52
Attention il y a une limite à dérouler les boucles et à
vouloir tout paralléliser: parallélisme de boucle
53
Prédiction statique
56
Prédiction dynamique (matérielle)
• On utilise un tampon de prédiction de branchement, c’est-à-dire une petite cache au
quelle on accède par l'adresse de l'instruction à l'étage LI du pipeline ou par 1 bit attaché
à chaque bloc de la cache d’instruction et lu avec l'instruction. Ce bit représente ce qui a
été fait la dernière fois que l’instruction a été exécutée et à partir de la valeur de ce
même bit obtenue on adopte la convention suivante:
Convention:
• bit = 0 veut dire qu’on a fait le branchement lors de l’itération précédente (effectuée), donc
on va faire le branchement. Si on a pris la bonne décision le bit reste à 0 sinon on flush
le pipeline et on met bit=1.
• bit = 1 veut dire qu’on a pas fait le branchement lors de l’itération précédente (non effectuée), donc
on va pas faire le branchement. Si on a pris la bonne décision le bit reste à 1 sinon on flush
le pipeline et on met bit=0.
Regardons un exemple pour laquelle on aurait 1 bit attaché à BNEZ:
On suppose R1 = 1000 (on va donc boucler 1000 de fois à chaque
exécution de la boucle)
Convention:
• Puisqu’on a 2 bits on 4 états. Voyez le comme une machine à états de Mealy (prédiction effectuée 1,
prédiction effectuée 2, prédiction non effectuée 1 et prédiction non effectuée 2)
• Quand on passe d’une transition à une autre on flush le pipeline mais on doit se tromper
2 fois de suite (consécutivement), donc 2 flush consécutifs, pour qu’une prédiction effectuée
passe à non effectuée et vice versa.
• Voir l’application sur notre exemple à la page suivante.
Non Effectuée
Effectuée
Prédition Prédition
effectuée non effectuée
58
Effectuée Non Effectuée
Prédiction dynamique (matérielle)
On doit se tromper 2 fois pour qu’une prédiction non effectuée passe à effectuée.
On doit se tromper 2 fois pour qu’une prédiction effectuée passe à non effectuée. 59
Quelques recommandations pour
Valeurs peuvent changer
les exercices d’un examen à l’autre…
Je donne
toujours
une table
dans ce format
en annexe de
l’examen.
Selon
M3
Selon
M4
64