SlideShare une entreprise Scribd logo
1  sur  117
Télécharger pour lire hors ligne
1
Architectures haute-performance et
embarquées
Evolutions des architectures versus la
performance
Nathalie Drach
Equipe ASIM
Laboratoire d’Informatique de Paris 6 (LIP6)
Université de Pierre et Marie Curie
2
Evolution des processeurs
• Evolutions technologiques :
– Augmentation de la fréquence.
– Augmentation du nombre de
transistors.
• Evolutions en architecture :
– Traduire l’augmentation des
transistors en augmentation de
performance.
Augmentation des performances des
processeurs : combinaison entre
technologie et (micro)architecture.
Technologie
Technologie +
architecture
«
Computer
Architecture
»
J.
L.
Hennessy
&
D.
A.
Patterson
SIA
RoadMap
Year 1999 2002 2005 2008 2011 2014
Feature size (nm) 180 130 100 70 50 35
Logic trans/cm2
6.2M 18M 39M 84M 180M 390M
Cost/trans (mc) 1.735 .580 .255 .110 .049 .022
#pads/chip 1867 2553 3492 4776 6532 8935
Clock (MHz) 1250 2100 3500 6000 10000 16900
Chip size (mm2
) 340 430 520 620 750 900
Wiring levels 6-7 7 7-8 8-9 9 10
Power supply (V) 1.8 1.5 1.2 0.9 0.6 0.5
High-perf pow (W) 90 130 160 170 175 183
Battery pow (W) 1.4 2 2.4 2.8 3.2 3.7
“Prévisions” de la SIA (semiconductor industries association,
http://www.semichips.org/) :
3
Exploiter l’ILP
ILP
Superscalaire VLIW
Ordonnancement
(schedule)
dynamique et
statique
Ordonnancement
statique
Haute-performance Embarqué
Traduire l’augmentation des transistors en augmentation de
performance.
4
Evaluer
une architecture
par la simulation
Identifier les facteurs
limitatifs
Modèles
Applications
Modifier
l’architecture
et/ou
le programme
Itérer
Métriques
Méthodologie
5
Un programme simple
for (i=0; i < n; i++) {
a[i] = b[i] + c[i] }
0 → r0 ; i=0
label:
load b[r0] → r1 ; b[i]
load c[r0] → r2 ; c[i]
r1 + r2 → r3 ; r3 = b[i] + c[i]
store r3 → a[r0] ; a[i] = r3
r0 + 1 → r0 ; i = i + 1
goto label if r0 < n; continuer si i<n
Programme source
Programme pseudo-assembleur
Modèle d’exécution de type RISC
6
Etapes d’un programme sur un processeur
Registres
Mémoire
Instructions
UAL
Registres
Mémoire
Données
Bus
load b[r0] → r1
load b[r0] → r1
load b[r0] → r1
r0
load b[r0] → r1
r0
@b
@b[r0]
load b[r0] → r1
@b[r0]
b[r0]
load b[r0] → r1
r1
load c[r0] → r2
load c[r0] → r2
PC
7
Etapes d’un programme sur un processeur
Registres
Mémoire
Instructions
UAL
Registres
Mémoire
Données
Bus
r1 + r2 -> r3
r1 + r2 ->r3
r1 + r2 -> r3
r1
r2
r1 + r2 -> r3
r2
r1
r1 + r2
r1 + r2 -> r3
r3
PC
8
Un processeur simple
9
Augmenter le débit des instructions
Registres
Mémoire
Instructions
ALU
Registres
Mémoire
Données
load b[r0] → r1
load c[r0] → r2
r1 + r2 → r3
store r3 → a[r0]
r0 + 1 → r0
load b[r0] → r1
load c[r0] → r2
r1 + r2 → r3
store r3 → a[r0]
load b[r0] → r1
load c[r0] → r2
r1 + r2 → r3
load b[r0] → r1
load c[r0] → r2
load b[r0] → r1
10
Le pipeline
Augmenter le débit d’instructions i.e. permettre à plusieurs instructions de subir des
traitements distincts (étapes) de la part des différentes unités de calculs. Ajout de
registres tampon entre les étages de pipeline.
11
Le pipeline
IF ID EX MEM WB
IF ID EX MEM WB
IF ID EX MEM WB
IF ID EX MEM WB
IF ID EX MEM WB
Profondeur = 5
Cycle CPU
Latence = 5 cycles
Débit = 1 instruction / cycle
• Débit du pipeline : nombre
d’instructions pouvant quitter le
pipeline à chaque cycle.
Performance idéale : CPI = 1.
• Latence du pipeline: temps de
traversée du pipeline.
• Superpipeline : Tc réduit, mais
délais augmentés.
• Pentium III : 12 étages.
• Pentium IV : 20 étages.
12
Augmenter le débit des instructions, mais
problème de dépendances
Registres
Mémoire
Instructions
ALU
Registres
Mémoire
Données
load b[r0] → r1
load c[r0] → r2
r1 + r2 → r3
r1 + r2 → r3
13
Problèmes de dépendances
• Problème de dépendances entre instructions : 2 instructions sont
dépendantes si l’une doit être exécutée avant l’autre pour maintenir
l’exactitude du programme. Ces dépendances génèrent des aléas (hazards)
dans le pipeline qui engendrent des délais (stall) i.e. des cycles d’attente.
• Aléas de données : une instruction utilise le résultat de l’autre (exemple
précédant).
• Aléas de branchement : une instruction est un branchement et
l’exécution de l’instruction suivante dépend du résultat du branchement.
+ Aléas structurels : deux instructions demandent simultanément la même
ressource.
14
Aléas structurels
• Machine pipelinée nécessite de dupliquer toutes les ressources pour permettre toutes les
combinaisons d’instructions dans le pipeline.
• Un conflit de ressource se produit lorsqu’une ressource matérielle est demandée par plus d’une
instruction au même cycle.
• Exemple : quand une machine pipelinée possède une mémoire partagée pour les données et les
instructions.
15
Aléas structurels
16
Aléas de données
• Les aléas de données surviennent quand le pipeline change l’ordre des accès
lecture/écriture des opérandes. Ces aléas génèrent 1 ou plusieurs cycles pour maintenir
une exécution correcte.
• Exemple : ADD R1, R2, R3
SUB R4, R1, R5
AND R6, R1, R7
OR R8,R1,R9
XOR R10, R1, R11
17
Classification des aléas de
données
Soient 2 instructions I, J, avec I précédent J dans le flot d’instructions :
• RAW (Read After Write) : une vraie dépendance.
J essaie de lire une opérande source avant que I ne l’écrive. J utilise une mauvaise
valeur.
• WAW (Write After Write) : une dépendance de nom.
J essaie d’écrire une opérande avant que I n’écrive son résultat. Les écritures ont
lieu dans le mauvais ordre.
• WAR (Write After Read) : une dépendance de nom.
J essaie d’écrire dans une opérande destination avant que I ne le lise. I utilise une
mauvaise valeur.
• RAR (Read After Read) : n’est pas un aléa.
18
Aléas de données et pipeline
• RAW : résolus en partie par les court-circuits, sinon délai.
• WAR et WAW ne sont pas possible dans les pipelines :
– Les instructions du pipeline s’exécutent dans le même ordre
séquentiel que le programme.
– Une opérande est lue avant qu’une instruction suivante ne modifie
cet opérande (WAR).
– Toutes les écritures sont réalisées dans l’ordre du programme
(WAW).
• Mais problèmes potentiels dès que l’exécution peut avoir lieu dans le
désordre…
19
Aléas de contrôle
• Instructions de contrôle = instructions de branchement = instructions de
rupture de séquence = instructions conditionnelles ou inconditionnelles.
• Deux types d’actions :
– évaluation de la condition de branchement (instructions de branchements
conditionnels).
– Calcul d’adresse - rupture de la séquence (instructions de branchements
conditionnels, retour de procédure, branchements inconditionnels).
• Ces instructions limitent les performances des processeurs en générant des
aléas de contrôle.
• En moyenne : 1 instruction de branchement pour 5 instructions.
20
Aléas de contrôle
Dans notre pipeline :
Le test par rapport à zéro est réalisé dans l’étage EX.
L’adresse de branchement est écrite dans l’étage MEM.
21
Aléas de contrôle et pipeline
3 cycles de délai.
Si CPI = 1, 30% de branchements => CPI = 1.9!
22
Aléas de contrôle
Il faut le plus tôt possible :
– déterminer si le
branchement est pris ou
non pris, et,
– calculer l’adresse du
branchement pris.
• Solution :
– Mettre le test par
rapport à 0 dans l’étage
ID/EX.
– Ajouter un additionneur
pour le nouveau PC
dans l’étage ID/EX.
• Résultat : délai de
branchement 1 cycle.
23
Opérations flottantes et pipeline
Latency = 0
Latence = 3
Pipelinée
Latence = 6
Pipelinée
Latence = 24
Non-pipelinée
Integer Unit
Floating Point (FP)/Integer Multiply
FP/Integer Divider
IF ID WB
MEM
FP Adder
EX
Opérations flottantes nécessitent plus d’un cycle.
Latence : temps
entre une
instruction qui
produit un résultat
et une instruction
qui utilise ce
résultat.
24
Aléas et pipelines flottants
• RAW : délai plus important du à la latence des instructions flottantes.
• WAW : peut survenir s’il est possible que les instructions réalisent WB dans le
désordre.
• WAR : est impossible, car les registres sont lus dans l’ordre.
• Aléas structurels :
– Unité flottante non disponible (à cause d’une division).
– MEM, WB peuvent être traversés par plusieurs instructions simultanément.
25
Exemple : Aléas de données (RAW)
IF MEM
ID EX WB
IF ID M1 M6 M7
M2 M3 M4 M5 MEM WB
IF ID A1 A4
A3
A2 MEM WB
CC 1 CC 2 CC 3 CC 8 CC 9
CC 4 CC 5 CC 6 CC 7 CC 10 CC 11 CC12 CC13 CC14 CC15 CC16 CC17 CC18
IF ID MEM
EX WB
STALL
STALL STALL STALL STALL
STALL STALL STALL
STALL STALL
STALL STALL STALL STALL STALL STALL STALL
LD F4, 0(R2)
MULTD F0, F4, F6
ADDD F2, F0, F8
SD 0(R2), F2
26
Exemple : Aléas structurels
IF ID A1 A4
A3
A2 MEM WB
IF ID M1 M6 M7
M2 M3 M4 M5 MEM WB
IF ID MEM
EX WB
IF ID MEM
EX WB
MULTD F0, F4, F6
LD F2, 0(R2)
ADDD F2, F4, F6
CC 1 CC 2 CC 3 CC 8 CC 9
CC 4 CC 5 CC 6 CC 7 CC 10 CC 11
IF ID MEM
EX WB
IF ID MEM
EX WB
IF ID MEM
EX WB
. . . (integer)
. . . (integer)
. . . (integer)
. . . (integer)
27
Exploiter l’ILP
ILP
Superscalaire VLIW
Ordonnancement
(schedule)
dynamique et
statique
Ordonnancement
statique
Haute-performance Embarqué
Traduire l’augmentation des transistors en augmentation de
performance.
28
Superscalaire
• Superscalaire : exécuter plusieurs instructions en parallèle (exemple :
superscalaire de degré 2 ; 2 instructions exécutées par cycle).
• Pour mesurer l’ILP : IPC = nombre d’Instructions Par Cycle = 1 /
CPI.
IF ID EX W
B
MEM
IF
IF
IF ID
ID
ID
EX
EX
EX
MEM
MEM
MEM
WB
WB
WB
29
Architecture haute-performance
30
Plus précisément…
In-order
or
Out-Of-Order
Ordonnancement
dynamique des
instructions et
exécution dans le
désordre.
Gestion décentralisée
avec stations de
réservation :
algorithme de
Tomasulo.
31
Algorithme d’Ordonnancement Dynamique :
Emission dans les Stations de Réservation (1)
File d’instructions
Unité fonctionnelle B (Mem)
Chargement
d’instructions
1 2 3 4 5 6
r1 r2 r3 r4 r5 r6
0 1 1 1 1 1
B1 0 0 0 0 0
R
Valeur
Vld
SR
1
r2
1
r2
1
LD
0
0
0
1
0
1
Vide FU Op Dest S1 V1 SR1 S2 V2 SR2
Hypothèses :
• add, sub = 1 cycle.
• ld = 1 cycle si succès dans
cache L1, ld = 3 cycles si succès
dans cache L2.
LD R1, R2, R2
ADD R3, R1, R1
SUB R1, R4, R4
ADD R5, R1, R1
Unité fonctionnelle A (Int)
0
1
0
1
0
1
Vide FU Op Dest S1 V1 SR1 S2 V2 SR2
ADD R5, R1, R1
SUB R1, R4, R4
ADD R3, R1, R1
A3
A2
A1
B3
B2
B1
Station de réservation
• File d’instructions : stocker
instructions à exécuter.
• Stations de réservation :
exécuter les instructions dès
que leurs opérandes sont
disponibles.
32
Algorithme d’Ordonnancement Dynamique :
Emission dans les Stations de Réservation (2)
File d’instructions
Unité fonctionnelle B (Mem)
Chargement
d’instructions
1 2 3 4 5 6
r1 r2 r3 r4 r5 r6
0 1 0 1 1 1
B1 0 A1 0 0 0
R
Valeur
Vld
SR
1
r2
1
r2
1
LD
0
0
0
1
0
1
Vide FU Op Dest S1 V1 SR1 S2 V2 SR2
Hypothèses :
• add, sub = 1 cycle.
• ld = 1 cycle si succès dans
cache L1, ld = 3 cycles si succès
dans cache L2.
LD R1, R2, R2
ADD R3, R1, R1
SUB R1, R4, R4
ADD R5, R1, R1
Unité fonctionnelle A (Int)
B1
0
B1
0
3
+
0
0
0
1
0
1
Vide FU Op Dest S1 V1 SR1 S2 V2 SR2
ADD R5, R1, R1
SUB R1, R4, R4
A3
A2
A1
B3
B2
B1
33
Algorithme d’Ordonnancement Dynamique :
Emission dans les Stations de Réservation (3)
File d’instructions
Unité fonctionnelle B (Mem)
Chargement
d’instructions
1 2 3 4 5 6
r1 r2 r3 r4 r5 r6
0 1 0 1 1 1
A2 0 A1 0 0 0
R
Valeur
Vld
SR
1
r2
1
r2
1
LD
0
0
0
1
0
1
Vide FU Op Dest S1 V1 SR1 S2 V2 SR2
Hypothèses :
• add, sub = 1 cycle.
• ld = 1 cycle si succès dans
cache L1, ld = 3 cycles si succès
dans cache L2.
LD R1, R2, R2
ADD R3, R1, R1
SUB R1, R4, R4
ADD R5, R1, R1
Unité fonctionnelle A (Int)
B1
0
B1
0
3
+
0
0
1
r4
1
r4
1
-
0
0
0
1
Vide FU Op Dest S1 V1 SR1 S2 V2 SR2
ADD R5, R1, R1
A3
A2
A1
B3
B2
B1
Renommage de registres implicite
34
Algorithme d’Ordonnancement Dynamique :
Emission dans les Stations de Réservation (4)
File d’instructions
Unité fonctionnelle B (Mem)
Chargement
d’instructions
1 2 3 4 5 6
r1 r2 r3 r4 r5 r6
0 1 0 1 0 1
A2 0 A1 0 A3 0
R
Valeur
Vld
SR
1
r2
1
r2
1
LD
0
0
0
1
0
1
Vide FU Op Dest S1 V1 SR1 S2 V2 SR2
Hypothèses :
• add, sub = 1 cycle.
• ld = 1 cycle si succès dans
cache L1, ld = 3 cycles si succès
dans cache L2.
LD R1, R2, R2
ADD R3, R1, R1
SUB R1, R4, R4
ADD R5, R1, R1
Unité fonctionnelle A (Int)
B1
0
B1
0
3
+
0
0
1
r4
1
r4
1
-
0
0
A
2
0
A
2
0
5
+
0
0
Vide FU Op Dest S1 V1 SR1 S2 V2 SR2
A3
A2
A1
B3
B2
B1
Instructions prêtes à
être exécutées ?
35
Algorithme d’Ordonnancement Dynamique :
Exécution – Succès dans le Cache L1 (1)
File d’instructions
LD R1, R2, R2
Chargement
d’instructions
1 2 3 4 5 6
v1’ r2 r3 r4 r5 r6
1 1 0 1 0 1
A2 0 A1 0 A3 0
R
Valeur
Vld
SR
1
r2
1
r2
1
LD
1
0
0
1
0
1
Vide FU Op Dest S1 V1 SR1 S2 V2 SR2
Hypothèses :
• instructions dans les stations
de réservation.
• add, sub = 1 cycle.
• ld = 1 cycle si succès dans
cache L1, ld = 3 cycles si
succès dans cache L2.
LD R1, R2, R2
ADD R3, R1, R1
SUB R1, R4, R4
ADD R5, R1, R1
SUB R1, R4, R4
B1
1
v1
B1
1
v1
3
+
0
0
1
r4
1
r4
1
-
1
0
A2
1
v1’
A2
1
v1’
5
+
0
0
Vide FU Op Dest S1 V1 SR1 S2 V2 SR2
Unité fonctionnelle B (Mem)
Unité fonctionnelle A (Int)
A3
A2
A1
B3
B2
B1
Toutes les SR
espionnent le bus.
36
Algorithme d’Ordonnancement Dynamique :
Exécution – Succès dans le Cache L1 (2)
File d’instructions
Chargement
d’instructions
1 2 3 4 5 6
v1’ r2 v3 r4 r5 r6
1 1 1 1 0 1
A2 0 A1 0 A3 0
R
Valeur
Vld
SR
1
r2
1
r2
1
LD
1
1
0
1
0
1
Vide FU Op Dest S1 V1 SR1 S2 V2 SR2
LD R1, R2, R2
ADD R3, R1, R1
SUB R1, R4, R4
ADD R5, R1, R1
ADD R3, R1, R1
B1
1
V1
B1
1
v1
3
+
1
0
1
r4
1
r4
1
-
1
1
A2
1
v1’
A2
1
v1’
5
+
0
0
Vide FU Op Dest S1 V1 SR1 S2 V2 SR2
Unité fonctionnelle B (Mem)
Unité fonctionnelle A (Int)
Hypothèses :
• instructions dans les stations
de réservation.
• add, sub = 1 cycle.
• ld = 1 cycle si succès dans
cache L1, ld = 3 cycles si
succès dans cache L2.
A3
A2
A1
B3
B2
B1
37
Algorithme d’Ordonnancement Dynamique :
Exécution – Succès dans le Cache L1 (3)
File d’instructions
Chargement
d’instructions
1 2 3 4 5 6
v1’ r2 v3 r4 v5 r6
1 1 1 1 1 1
A2 0 A1 0 A3 0
R
Valeur
Vld
SR
1
r2
1
r2
1
LD
1
1
0
1
0
1
Vide FU Op Dest S1 V1 SR1 S2 V2 SR2
Hypothèses :
• instructions dans les stations
de réservation.
• add, sub = 1 cycle.
• ld = 1 cycle si succès dans
cache L1, ld = 3 cycles si
succès dans cache L2.
LD R1, R2, R2
ADD R3, R1, R1
SUB R1, R4, R4
ADD R5, R1, R1
ADD R5, R1, R1
B1
1
V1
B1
1
v1
3
+
1
1
1
r4
1
r4
1
-
1
1
A2
1
v1’
A2
1
v1’
5
+
1
0
Vide FU Op Dest S1 V1 SR1 S2 V2 SR2
Unité fonctionnelle B (Mem)
Unité fonctionnelle A (Int)
A3
A2
A1
B3
B2
B1
38
Algorithme d’Ordonnancement Dynamique :
Exécution – Echec dans le Cache L1 (1)
File d’instructions
LD R1, R2, R2 -1-
Chargement
d’instructions
1 2 3 4 5 6
v1 r2 r3 r4 r5 r6
1 1 0 1 0 1
A2 0 A1 0 A3 0
R
Valeur
Vld
SR
1
r2
1
r2
1
LD
1
0
0
1
0
1
Vide FU Op Dest S1 V1 SR1 S2 V2 SR2
Hypothèses :
• instructions dans les stations
de réservation.
• add, sub = 1 cycle.
• ld = 1 cycle si succès dans
cache L1, ld = 3 cycles si
succès dans cache L2.
LD R1, R2, R2
ADD R3, R1, R1
SUB R1, R4, R4
ADD R5, R1, R1
SUB R1, R4, R4
B1
0
B1
0
3
+
0
0
1
r4
1
r4
1
-
1
0
A2
1
v1
A2
1
v1
5
+
0
0
Vide FU Op Dest S1 V1 SR1 S2 V2 SR2
Unité fonctionnelle B (Mem)
Unité fonctionnelle A (Int)
A3
A2
A1
B3
B2
B1
39
Algorithme d’Ordonnancement Dynamique :
Exécution – Echec dans le Cache L1 (2)
File d’instructions
LD R1, R2, R2 -2-
Chargement
d’instructions
1 2 3 4 5 6
v1 r2 r3 r4 v5 r6
1 1 0 1 1 1
A2 0 A1 0 A3 0
R
Valeur
Vld
SR
1
r2
1
r2
1
LD
1
0
0
1
0
1
Vide FU Op Dest S1 V1 SR1 S2 V2 SR2
Hypothèses :
• instructions dans les stations
de réservation.
• add, sub = 1 cycle.
• ld = 1 cycle si succès dans
cache L1, ld = 3 cycles si
succès dans cache L2.
LD R1, R2, R2
ADD R3, R1, R1
SUB R1, R4, R4
ADD R5, R1, R1
ADD R5, R1, R1
B1
0
B1
0
3
+
0
0
1
r4
1
r4
1
-
1
1
A2
1
v1
A2
1
v1
5
+
1
0
Vide FU Op Dest S1 V1 SR1 S2 V2 SR2
Unité fonctionnelle B (Mem)
Unité fonctionnelle A (Int)
A3
A2
A1
B3
B2
B1
Recouvrir la latence
40
Algorithme d’Ordonnancement Dynamique :
Exécution – Echec dans le Cache L1 (3)
File d’instructions
LD R1, R2, R2 -3-
Chargement
d’instructions
1 2 3 4 5 6
v1 r2 r3 r4 v5 r6
1 1 0 1 1 1
A2 0 A1 0 A3 0
R
Valeur
Vld
SR
1
r2
1
r2
1
LD
1
0
0
1
0
1
Vide FU Op Dest S1 V1 SR1 S2 V2 SR2
Hypothèses :
• instructions dans les stations
de réservation.
• add, sub = 1 cycle.
• ld = 1 cycle si succès dans
cache L1, ld = 3 cycles si
succès dans cache L2.
LD R1, R2, R2
ADD R3, R1, R1
SUB R1, R4, R4
ADD R5, R1, R1
B1
1
v1’
B1
1
v1’
3
+
0
0
1
r4
1
r4
1
-
1
1
A2
1
v1
A2
1
v1
5
+
1
1
Vide FU Op Dest S1 V1 SR1 S2 V2 SR2
Unité fonctionnelle B (Mem)
Unité fonctionnelle A (Int)
A3
A2
A1
B3
B2
B1
41
Algorithme d’Ordonnancement Dynamique :
Exécution – Echec dans le Cache L1 (4)
File d’instructions
Chargement
d’instructions
1 2 3 4 5 6
v1 r2 v3 r4 v5 r6
1 1 1 1 1 1
A2 0 A1 0 A3 0
R
Valeur
Vld
SR
1
r2
1
r2
1
LD
1
1
0
1
0
1
Vide FU Op Dest S1 V1 SR1 S2 V2 SR2
Hypothèses :
• instructions dans les stations
de réservation.
• add, sub = 1 cycle.
• ld = 1 cycle si succès dans
cache L1, ld = 3 cycles si
succès dans cache L2.
LD R1, R2, R2
ADD R3, R1, R1
SUB R1, R4, R4
ADD R5, R1, R1
B1
1
V1’
B1
1
V1’
3
+
1
0
1
r4
1
r4
1
-
1
1
A2
1
v1
A2
1
v1
5
+
1
1
Vide FU Op Dest S1 V1 SR1 S2 V2 SR2
Unité fonctionnelle B (Mem)
Unité fonctionnelle A (Int)
ADD R3, R1, R1
A3
A2
A1
B3
B2
B1
42
Algorithme d’Ordonnancement Dynamique :
les Contraintes Matérielles
• Contraintes matérielles :
– Nombre d’instructions dans la file
d’instructions.
– Nombre d’entrées dans les stations
de réservation.
– Nombre d’instructions émis par
cycle.
– Occupation du bus commun de
données.
– Renommage de registres implicite.
– Efficacité du prédicteur de
branchements.
File
instructions
Registres
UF
FP
Bus
commun
de
données
Chargement
instructions
UF
Mem
UF Int
complexe
UF
Int simple
43
Exécution dans le désordre
Terminaison dans l’ordre
Tampon de réordonnancement
#reg tag ID valeur
ROB
#reg : numéro registre à
mettre à jour.
tag : validité résultat.
ID : identifiant instruction.
valeur : valeur du registre.
• Une instruction effectue l’étape de terminaison lorsqu’elle
est en tête du ROB
– Les instructions effectuent l’étape de terminaison
dans l’ordre du programme.
• L’état logique de l’architecture n’est modifié que lors de
l’étape de terminaison (commit)
– ⇒ il est possible d’avoir des interruptions précises
malgré l’exécution dans le désordre.
• Etat logique: registres et mémoire.
• Lorsqu’une instruction sort du ROB:
– le résultat est écrit dans le registre correspondant,
– OU la donnée est envoyée à la mémoire (écriture en
mémoire)
• Processeur superscalaire de degré n: n instructions
peuvent effectuer simultanément l’étape de terminaison.
• Si l’instruction en tête du ROB n’a pas terminé son
exécution: le processeur est bloqué.
44
Processeur Superscalaire :
Adaptabilité Dynamique
Int Int Mem FP
Registres
Logique de contrôle
et d’émission
Instructions
exécutées
en parallèle
Code
séquentiel
• Extraire du parallélisme d’instructions.
– Prédiction de branchement.
• Recouvrir la latence des instructions.
– Exécution des instructions dans le
désordre.
– Cache non bloquant.
Bloc
de
base
Point d’entrée
Point de sortie
On peut exécuter
en parallèle
ADD R5, R6, R6
MUL R8, R7, R7
1
2 3
LD R1, R2, R2, R2
ADD R3, R1, R1
SUB R6, R4, R4
ADD R5, R6, R6
B1
MUL R8, R7, R7
Non pris
Pris
45
ILP - Limitations
Register renaming :
infinite virtual registers and all
WAW & WAR hazards are
avoided
Branch prediction–perfect :
no mispredictions
Perfect memory :
no miss, perfect cache L1
Memory-address alias:
addresses are known & a store can
be moved before a load
provided addresses not equal
Programs
0
20
40
60
80
100
120
140
160
gcc espresso li fpppp doducd tomcatv
54.8
62.6
17.9
75.2
118.7
150.1
IPC
46
En réalité et en détail
0 0,5 1 1,5 2 2,5 3 3,5 4 4,5 5 5,5 6
wave5
fpppp
apsi
turb3d
applu
mgrid
hydro2d
su2cor
swim
tomcatv
vortex
perl
ijpeg
li
compress
gcc
m88ksim
go
uops
Instruction cache stalls
Resource capacity stalls
Branch mispredict penalty
Data Cache Stalls
47
Exploiter l’ILP
ILP
Superscalaire VLIW
Ordonnancement
(schedule)
dynamique et
statique
Ordonnancement
statique
Haute-performance Embarqué
Traduire l’augmentation des transistors en augmentation de
performance.
48
Architecture VLIW
(Very Large Instruction Word)
• ILP statique (ordonnancement statique). Optimisations à la
compilation très importantes.
• Instructions longues initialisant simultanément plusieurs opérations
indépendantes.
• Caractéristiques : opérations de type RISC, pipeliné, branchements
retardés, gardes, mémoire cache, …
• Limitations de l’analyse statique…
Modèle
machine
Int Int Mem FP
Registres
Logique de contrôle
49
Processeur VLIW : Ordonnancement Statique
• Ordonnancement
fonction :
– Nombre d’unités
fonctionnelles.
– Latence des
instructions.
• Ordonnancement
statique :
– Renommage des
registres.
– Placement dans
les slots.
– Insertion de NOP.
B1
4
ADD R5, R6, R6
3
ADD R3, R1, R1
2
MUL R8, R7, R7
5
LD R1, R2, R2
SUB R6, R4, R4
1
Slot 4
Flottant
Slot 3
Mémoire
Slot 2
Int complexe
Slot 1
Int simple
Table d’utilisation des ressources
Instruction
longue/VLIW
Code parallèle
SUB R6, R4, R4 NOP NOP LD R1, R2, R2
ADD R3, R1, R1 NOP NOP NOP
ADD R5, R6, R6 NOP NOP NOP
B1 NOP NOP NOP
NOP MUL R8, R7, R7 NOP NOP
Hypothèses : toutes les instructions
exécutée en 1 cycles
1
2 3
LD R1, R2, R2, R2
ADD R3, R1, R1
SUB R6, R4, R4
ADD R5, R6, R6
B1
MUL R8, R7, R7
Non pris Pris
50
Améliorer encore les
performances
• Nombre de transistors augmente : comment s’en servir pour
« obtenir plus de performance » ?
-> Exploiter plus de parallélisme…
Year of 1st
shipment 1997 1999 2002 2005 2008 2011 2014
Local Clock (GHz) 0,75 1,25 2,1 3,5 6 10 16,9
Across Chip (GHz) 0,75 1,2 1,6 2 2,5 3 3,674
Chip Size (mm²) 300 340 430 520 620 750 901
Dense Lines (nm) 250 180 130 100 70 50 35
Number of chip I/O 1515 1867 2553 3492 4776 6532 8935
Transistors per chip 11M 21M 76M 200M 520M 1,4B 3,62B
“Prévisions” de la SIA (semiconductor industries association, http://www.semichips.org/)
51
ILP
ILP + DLP ILP + TLP
+ILP
+ILP + DLP
+ILP + DLP
+ TLP
Augmenter la performance d’un flot
Augmenter la performance
de plusieurs flots (tâches)
52
Exploiter différentes formes de parallélisme
SMT :
multiflots simultanés
CMP :
multiprocesseurs on-
chip
SIMD
Superscalaire
+ large
+ spéculatif
VLIW
+dynamique
(EPIC)
Autres
ILP
TLP
DLP
ILP
53
Que faut-il optimiser pour accroître
l’ILP sur un processeur superscalaire?
• Optimiser la bande passante
instructions : le nombre
d’instructions « utiles »
chargées, décodées et lancées
(instruction flow).
• Consommer cette bande
passante instructions :
– Optimiser le taux auquel les
résultats sont produits
(register data flow).
– Optimiser le nombre de
données chargées de la
mémoire (memory data flow).
54
Superscalaire superspéculatif
Instruction flow : prédiction
de branchement sophistiquée,
trace cache,
réutiliser les instructions.
Register data flow :
renommage
de registres spéculatif,
prédiction de valeur.
Memory data flow :
charger en avance,
prédiction d’adresses, de
dépendances et de
valeurs.
55
A Taxonomy of Speculation
Speculative Execution
Control Speculation Data Speculation
Branch Direction Branch Target Data Location Data Value
What can we
speculate on?
56
Branchement
Instructions de contrôle = instructions de branchement =
instructions de rupture de séquence = instructions conditionnelles
ou inconditionnelles.
• Deux types d’actions :
– Déterminer la condition de branchement (instructions de
branchements conditionnels) i.e. branchement pris ou non
pris.
– ET rupture de la séquence (instructions de branchements
conditionnels, retour de procédure, branchements
inconditionnels) i.e. calculer l’adresse de branchement (cas
où branchement pris).
• En moyenne : 1 instruction de branchement pour 5 instructions.
57
Stratégie de Prédiction (1)
• Principe: apprentissage des
comportements individuels des
branchements.
• Un premier mécanisme:
l’historique local
– Un automate à 2 états par
branchement,
– Un automate à 4 états par
branchement.
10
n bits
PC
2n éléments
Prédiction
Prédit
Pris
11
Prédit
Faiblement
Pris
10
Prédit
Faiblement
Non Pris
01
Prédit
Non Pris
00
Pris (1)
Non Pris (0)
Mise à jour
de la table
après obtention
de la valeur
de la condition
Prédit
Pris
1
Prédit
Non Pris
0
OU
58
Corrélation entre branchements
• Prédicteur à 2 bits performant pour les programmes qui
contiennent beaucoup de boucles (calcul flottant intensif).
• Dans les programmes entiers, les branchements sont surtout
corrélés (dépendants).
Example :
if (d==0) /* branch b1*/
d=1;
if (d==1) /*branch b2 */
...
59
Stratégies de Prédiction (2)
60
Stratégies de Prédiction (3)
1 1 0
0
1100
...
...
1 1
Index
predict:
taken
BHR
Branch Pattern
History Table
(PHT)
shift direction
Gag (4 bits)
1 seul BHT
n
...
...
...
...
2**n tables, # BHT
1 1 0
0
...
...
1 1
Index
...
@ de branchements
BHR
...
GAp (4 bits)
1 seul reg d ’historique mais avec @de branchement
Deux bits de prédiction
61
Stratégies de Prédiction (4)
...
...
...
...
# BHT
...
...
1 1
b1
Index
Per-address
BHT
...
...
0 0
1 1
0 0
1 1
...
Branch address b2
Branch address b1
0 1
b2
Pap(4)
...
...
1 1
Index
BHT
...
...
0 0
1 1
Branch address
0 0
1 1
Branch address
Pag(4)
Plusieurs reg à dec d ’historique, 1 par
branchement
mais pas d ’@
1 BHR par Branch
62
Stratégies de Prédiction (5)
PC BHR
Conca
PHT
n
m
m+n
PC BHR
OUX
PHT
m
m
m
gselect gshare
63
Hybrid Predictors
P
P1
1 P
P2
2
Meta
Meta-
-
Predictor
Predictor
Final Prediction
Final Prediction
64
Importance d’une bonne prédiction de
branchement
IPC idéal = 4 - 20% de branchements conditionnels
Prediction accuracy
Instructions
per
cycle
(IPC)
0
0,5
1
1,5
2
2,5
3
3,5
4
0,5
0,52
0,54
0,56
0,58
0,6
0,62
0,64
0,66
0,68
0,7
0,72
0,74
0,76
0,78
0,8
0,82
0,84
0,86
0,88
0,9
0,92
0,94
0,96
0,98
1
8 cycles
14 cycles
Branch penalty
65
Prédire l’adresse de branchement
• Les adresses de destination sont stockées dans une table à chaque exécution
d’un branchement.
• La table est indexée par le PC de l’instruction (du branchement).
• Lorsque le PC est envoyé à la mémoire, il est envoyé également à la table qui
indique: (1) s’il s’agit d’un branchement, (2) l’adresse de destination si c’est le
cas.
Adresse des
branchements
connus
Adresse de
destination
PC
Adresse
prédite
C’est un branchement /
Ce n’est pas un branchement
(BTB : Branch Target Buffer)
66
Trace cache
Trace cache : cache qui capture les séquences dynamiques d’instructions.
Contient donc des segments d’instructions contenant des branchements,
potentiellement pris.
67
Performance du trace cache
Performance de 3
applications des
SPECint95 simulées sur
une machine de largeur
16 et une prédiction de
branchement parfaite.
68
Trace cache (suite)
69
Trace cache (suite)
70
Instruction flow : réutiliser les
instructions (1)
“recognize that a computation chain has
been previously performed and therefore
need not be performed again”
Fetch Decode Issue Execute Commit
Check for
previous use
Verify arguments
are the same
if reused
71
Instruction flow : réutiliser les
instructions (2)
72
Instruction flow : réutiliser les
instructions (3)
• Table associant 2 opérandes et une opération à un résultat.
• Accès dès que l’instruction est décodée.
• Evite d’occuper une unité fonctionnelle.
• Tables accédées :
– Par l’adresse de l’instruction,
– Les opérandes et le type de l’opération (2 instructions
identiques, mais à une adresse différente utilisent la
même entrée).
A. Sodani and G. S. Sohi. Dynamic Instruction Reuse. 24th Int'l Symp.
on Comp. Arch., 1997.
73
Register data flow :
registres de renommage
• Pour éviter les attentes dues à la réutilisation des registres
: avoir autant de registres que d’instructions présentes
dans le processeur. Registres de renommage. Renommage
explicite.
• Principe :
– après le décodage, tout registre destination est
renommé en un autre registre libre. La correspondance
est enregistrée dans une table.
– ces registres sont mis à jour dès qu’une instruction a fini
son exécution (dans le désordre).
74
Renommage de Registres Explicite (1)
• Emission dans les stations
de réservation ssi registres
disponibles. Registres
physiques
Table de
renommage
des registres
Fenêtre
d’instructions
P10
P9
P8
P7
P6
P2
R6
R5
R4
R3
R2
R1
Table de renommage
Liste de registres libres : P1, P3, P4, P11, P12
LD R1, R2, R2
ADD R3, R1, R1
SUB R1, R4, R4
ADD R5, R1, R1
Convention :
R : registres logiques
P : registres physiques
75
Renommage de Registres Explicite (2)
• Instruction envoyée dans les stations de réservation si il y a des
registres disponibles (renommage explicite de registres).
P10
P9
P8
P7
P6
P2
R6
R5
R4
R3
R2
R1
Table de renommage
Liste de registres libres : P1, P3, P4, P11, P12
LD R1, R2, R2
ADD R3, R1, R1
SUB R1, R4, R4
ADD R5, R1, R1
On alloue P1 pour R1 et on émet dans la station de réservation : LD P1, P6, P6.
P10
P9
P8
P7
P6
P1
R6
R5
R4
R3
R2
R1
Table de renommage
Liste de registres libres : P3, P4, P11, P12
LD R1, R2, R2
ADD R3, R1, R1
SUB R1, R4, R4
ADD R5, R1, R1
On alloue P3 pour R3 et on émet dans la station de réservation : ADD P3, P1, P1.
Lorsque ADD est terminée, on peut libérer P1.
P10
P9
P8
P3
P6
P1
R6
R5
R4
R3
R2
R1
Liste de registres libres : P4, P11, P12, P1
LD R1, R2, R2
ADD R3, R1, R1
SUB R1, R4, R4
ADD R5, R1, R1
On alloue P4 pour R1 et on émet dans la station de réservation : SUB P4, P8, P8.
On procède de la même façon pour ADD P11, P4, P4.
76
Memory data flow : charger en avance
• Préchargement des données : chargement en avance
des données pour recouvrir la latence.
• Mécanismes de prédiction : sur succès, sur échec,
« tagged », table avec pas. Logiciel.
• Niveau de caches : L1 ou L2.
• Où charger les données préchargées : tampon ou
cache.
T.F. Chen and J.L. Baer, "Effective Hardware Based Prefetching for High-
Performance Processors", IEEE Transactions on Computers, Vol. 44
No. 5, May 1995.
77
Prédiction pour ne pas attendre le calcul de l’adresse.
Memory data flow : prédiction
d’adresse
G. Reinman and B. Clader, "Predictive Techniques for Aggressive Load
Speculation", in the 31st International Symposium on Microarchitecture,
1998.
78
Register and Memory data flow :
prédire les valeurs (1)
“predict the results of instructions
based on previously seen results”
Question: Where does value locality occur?
Single-cycle Arithmetic (i.e. addq $1 $2)
Single-cycle Logical (i.e bis $1 $2)
Multi-cycle Arithmetic (i.e. mulq $1 $2)
Register Move (i.e. cmov $1 $2)
Integer Load (i.e. ldq $1 8($2))
Store with base register update
FP Load
FP Multiply
FP Add
FP Move
Somewhat
Yes
No
Yes
Yes
No
Yes
Somewhat
Somewhat
Yes
Somewhat 40-50%
Yes 60-80%
No 20-30%
79
Register and Memory data flow :
prédire les valeurs (2)
• Extension de la prédiction d’adresse d’une lecture.
• Prédiction de la valeur produite par une instruction :
dernière valeur, pas, autres...
• Les instructions dépendantes peuvent être exécutées plus
tôt avec une valeur spéculative.
Y. Sazeides and J. E. Smith, "The Predictability of Data Values," in the 30th
Annual International
Symposium on Microarchitecture, December 1997.
80
Schémas de prédiction
81
Optimiser la bande passante instructions : augmenter la
taille des éléments de prédiction de branchement et le
cache de trace.
Consommer cette bande passante instructions :
– Taille des stations de réservation et nombre d’unités
fonctionnelles.
– Taille des caches de données.
– Nombre de registres de renommage.
Superscalaire plus large
82
Dimensionner plus largement les processeurs
superscalaires (budget de 1 Milliard de transistors
– ~2010)
‰ Prédicteur de branchement
performant de grande taille.
‰Un cache trace large.
‰ Plusieurs instructions
exécutables en parallèle (16
ou 32 instructions par cycle).
‰ Un grand nombre de
stations de réservation
(2000).
‰ 24 à 48 unités
fonctionnelles pipelinées.
‰ Un large cache de données
on-chip.
Yale N. Patt, Sanjay J. Patel, Marius Evers, Daniel H. Friendly, Jaret Stark : One
Billion Transistors, One Uniprocessor, One Chip. IEEE Computer, September 1997, pp. 51-57.
83
ILP
ILP + DLP ILP + TLP
+ILP
+ILP + DLP
+ILP + DLP
+ TLP
Augmenter la performance d’un flot
Augmenter la performance
de plusieurs flots (tâches)
84
Nouvelles applications = applications
multimédia
• Développement du multimédia grand public :
– Numérisation des données multimédia
(audio, images, vidéo).
– Performance des machines.
– Développement d’Internet.
• Besoins en performance :
– Temps réel.
– Réalisme.
– …
“On the next five years, (1998-2002), we believe that
media processing will become the dominant force in
computer architecture” (K. Diefendorf and P. K. Dubey in
IEEE Computer Journal, Sep.97)
80%
CPU
usage
Applications “multimédia” = son + graphique + interactivité.
85
ILP + DLP
• Caractéristiques de ces applications :
– Traitement identique sur un ensemble important de
données.
– Traitement de données contiguës.
• Superscalaire + SIMD : parallélisme de données.
x1 x2 x3 x4 y1 y2 y3 y4
x1*y1 x2*y2 x3*y3 x4*y4
R1: R2:
R3:
∗ ∗ ∗ ∗
86
Processeurs et extensions SIMD
• Extension des jeux d’instructions des
microprocesseurs :
• SIMD entier (MMX, VIS),
• SIMD flottant (SSE, 3DNow!),
• SIMD entier et Flottant (SSE2, AltiVec).
permutation
calcul
87
Extensions SIMD - Exemple :
AltiVec
Fetch
Dispatch
Branch
Write Back
SRU FPU3
FPU2
FPU1
FX1 FX2 LSU2
LSU1
VFP2
VFP3
VFP1
VFP4
VCI2
VCI1
VCI3
VSI
VPU
VALU
Execute stage
Max 4inst/cycle
Max 3inst/cycle
Max 2 inst/cycle
Première implémentation matérielle dans le PowerPC G4 : 162
instructions, 32 registres 128-bits “vectoriels”, deux unités fonctionnelles
pipelinées.
88
Extensions SIMD - Performance
0
0,2
0,4
0,6
0,8
1
M
e
s
a
(
f
p
)
F
I
R
(
f
p
)
S
O
A
D
I
D
C
T
R
G
B
2
Y
C
b
C
r
I
m
a
g
e
F
i
l
t
e
r
OO PPC
OO SIMD
+ Préchargement par « stream ».
89
ILP
ILP + DLP ILP + TLP
+ILP
+ILP + DLP
+ILP + DLP
+ TLP
Augmenter la performance d’un flot
Augmenter la performance
de plusieurs flots (tâches)
90
Exploiting Program Parallelism
Instruction
Loop
Thread
Process
Levels
of
Parallelism
Grain Size (instructions)
1 10 100 1K 10K 100K 1M
91
ILP + TLP
“Simultaneous multithreaded processors” (SMPs) ou
processeurs multiflots :
– Charge plusieurs contextes (flots),
– Les unités fonctionnelles sont partagées entre les flots,
– Les instructions des différents flots sont simultanément
exécutées.
“Chip multiprocessors” (CMPs) ou “multiprocessor chips” :
– Intègre 2 ou plus processeurs complets sur une seule
puce,
– Toutes les unités fonctionnelles pour un processeur sont
dupliquées.
92
Processeurs multiflots
• Motivation : masquer les latences (mémoire, instructions à
longue latence, exceptions, …).
• Exemple : latences mémoire mesurées sur un serveur Alpha
4100 SMP avec 4 processeurs Alpha 21164 à 300 Mhz :
• 7 cycles pour un échec L1 (suivi d’un succès sur le L2
on-chip),
• 21 cycles pour un échec L2 (suivi d’un succès sur le L3
(board-level)),
• 80 cycles pour un échec servi par la mémoire,
• 125 cycles pour un échec “dirty”, i.e., un échec servi
par la hiérarchie mémoire d’un autre processeur.
• Principe : les processeurs multiflots masquent les latences
par un changement de contexte rapide entre les flots
(threads).
93
Différentes approches multiflots
• Entrelacement par cycle : à chaque cycle, une
instruction d’un flot différent est chargée.
• Entrelacement par bloc : les instructions d’un flot
sont exécutées successivement jusqu’à un
événement générant une latence (changement de
contexte).
• Multiflots simultanés : les instructions des flots sont
simultanément distribuées aux différentes unités
du processeur superscalaire.
94
Issue slots
Time
(processor
cycles)
Superscalaire
Multiflots simultanés Multiprocesseurs
Context
switch
Entrelacement par cycle
Context
switch
Entrelacement par bloc
Slots
horizontaux :
- ILP
Slots
verticaux :
+ latence
95
Entrelacement par cycle
Exemple : TERA MTA
• CPU : VLIW (largeur 3).
• Le processeur change de
contexte à chaque cycle
(3ns). Changement de
contexte = 0 cycle.
• 128 flots distincts et 128
ensembles de registres.
• La latence “masquable” est de
128 cycles (384 ns).
• Un nombre important de flots
est nécessaire pour masquer
les latences, performance
“dégradée” pour un seul flot.
Register
state
for 128
threads
Instruction
fetch
& issue
logic
I-cache
Done
D
o
n
e
OK
Fail
~ 16 tick
A and C
execution
pipeline
M-unit
M-ops
A-ops
C-ops
Asynchronous Memory
access through network
(70 ticks avrg. latency)
96
Entrelacement par bloc
Exemple : Sun MAJC
• Sun MAJC5200 :
2 processeurs sur
la puce ; chaque
processeur VLIW
est multiflots
entrelacé (4
flots).
97
Multiflots Simultanés : principe
I8
I7
I6
I2
I5
I4
I1
I6
I5
I4
I9
I3
I2
I1
I4
I3
I6
I2
I1
I9
I6
I3
I5
I2
I4
I1
I6
I2
I5
I2
I6
I2
I5
I4
I5
I4
I1
I1
I9
I3
I2
I1
I4
I1
Superscalaire
Multiflot Simultané
Temps
Temps
Alpha 21464 (Compaq), Hyperthreading dans Pentium 4 (Intel).
Flot 1
Flot 2
Flot 3
Flot 4
• Charger plusieurs flots.
• Partager les UF entre
les flots.
• Exécuter
simultanément les
instructions des
différents flots.
98
Multiflots simultanés
2 approches possibles
• Partager. Les instructions des différents flots partagent toutes les
ressources comme le tampon de chargement, les registres de
renommage des différents bancs de registres, la fenêtre
d’instructions et le buffer de réordonnancement.
-conception matérielle similaire aux processeurs superscalaires,
performance d’un seul flot.
-mais complexité ajoutée, un tag de flot pour les instructions en
cours de traitement, la possibilité de charger et de terminer des
instructions de flots différents, …
• Dupliquer. Tous les tampons internes du processeur superscalaire
sont multipliés et associés à un flot spécifique. L’unité d’émission
doit être capable d’émettre des instructions de différentes fenêtres
d’instructions simultanément dans les unités fonctionnelles.
-modification de l’organisation du processseur superscalaire, mais
partionnement naturel et simplification des étages d’émission et
de retrait.
• Approche hybride.
99
Multiflots simultanés
Exemple : Alpha 21464 (EV8)
• Processeur superscalaire
de degré 8.
• Multiflots simultané (4
flots).
• Les ressources dupliquées
: PC et table de
correspondance pour les
registres.
• Les ressources partagées
: le fichier de registres
(taille augmentée), la file
d’instructions, les L1 et L2
caches, les TLB, les
prédicteurs de
branchement et les unités
fonctionnelles. Pour BTB
et TLB, identifiant par flot.
100
0%
50%
100%
150%
200%
250%
SpecInt SpecFP Mixed Int/FP
1T
2T
3T
4T
Alpha 21464 (EV8)
Informations performance disponibles
101
Intel Xeon Out
Intel Xeon Out-
-of
of-
-order Execution
order Execution
Engine Detailed Pipeline
Engine Detailed Pipeline
Source: Intel Technology Journal , Volume 6, Number 1, February 2002.
102
Multiflots simultanés
Politique de chargement des
flots
• Avantage du SMT : l’unité de chargement entrelace les
flots et charge à chaque cycle plusieurs flots, ceci
augmente la probabilité de charger uniquement des
instructions non spéculatives.
• Autre avantage (en tirer partie) : l’unité de chargement
peut être sélective quand aux flots chargés.
⇒importance de la politique de chargement des flots.
Différentes politiques montrées sur “projet
universitaire” (à l’origine de l’EV8). SMT -
universités de Washington et de San Diego…
103
SMT universités de Washington and
San Diego
Instruction
fetch
Instruction
decode
Instruction
issue
Execution pipelines
Floating-
point
register
file
Integer
register
file
Floating-point
Instruction
Queue
Integer
Instruction
Queue
I-cache
D-cache
Fetch Unit
PC
Decode
Register
Renaming
Floating-point
Units
Integer
load/store
Units
…
…
•Processeur OOO ~ MIPS
R1000.
•8 flots et un superscalaire
de degré 8.
•8 instructions chargées,
décodées, lancées,
exécutées et terminées.
•Chaque flot peut adresser
32 registres matériels
entiers et 32 flottants. Ces
registres sont renommés
dans un banc de registres
large de 356 registres
physiques.
104
Pénaliser flot avec
instructions les + anciennes,
2 flots actifs, 2 * 8
8
2
IQPOSN.2
.8
Flot avec le moins d’échecs
données en cours, 2 flots
actifs, 2 * 8
8
2
MISSCOU
NT.2.8
Flot avec le moins
d’instructions dans les
étages DEC/REN/QUE, 2
flots actifs, 2 * 8
8
2
ICOUNT.
2.8
Flot avec le moins de
branchements non résolus, 2
flots actifs, 2 * 8
8
2
BRCOUNT
.2.8
Round-Robin, 2 flot actifs, 2
* 8
8
2
RR.2.8
Description
Max
instructions
chargées
par flot par
cycle
Flots
par
cycle
Politique
Différentes politiques de chargement (suite)
105
ILP + TLP
Multiprocesseurs on-chip (CMP)
Principe :
• CMPs (Chip MultiProcessors) est composé d’un
petit nombre de processeurs distincts (de 2 à 16)
sur une même puce et exécutant des programmes
parallèles et/ou des tâches indépendantes.
• Toutes les unités fonctionnelles sont dupliquées.
Charge de travail (différents niveaux de parallélisme
en plus de l’ILP) :
• Extraction dynamique des flots de contrôle pour
un flot d’instructions.
• Plusieurs flots d’une même application : boucles,
fonctions (ce qui implique un espace d’adresse
commun pour tous les flots).
• Plusieurs traitements/applications en parallèle
(intra-task, multiprogramming).
106
Avantages et inconvénients
• Facile à implémenter, tester et valider.
• Fréquence élevée : processeur superscalaire “modéré”.
• Scalabilité.
• Mais strict partionnement des ressources, sous-
utilisation potentielle de la puce.
• Problème de la programmation parallèle de codes
« irréguliers ».
• Bande passante mémoire en modèle partagé
• Comparaison avec système parallèle :
– intéraction rapide entre les processeurs, permet
d’exploiter du parallélisme même pour des flots qui
communiquent beaucoup,
– mais toujours problème de bande passante mémoire.
107
Multiprocesseurs on-chip
Multiprocesseurs symétriques à mémoire partagée
Pro-
cessor
Pro-
cessor
Pro-
cessor
Pro-
cessor
Primary
Cache
Secondary
Cache
Bus
Secondary
Cache
Secondary
Cache
Secondary
Cache
Primary
Cache
Primary
Cache
Primary
Cache
Global Memory
108
Partage de la mémoire
« Evaluation of Design Alternatives for a
Multiprocessor Microprocessor », by Basem
A. Nayfeh , Lance Hammond and Kunle
Olukotun, In the 23rd International
Symposium on Computer Architecture, 1996.
Mémoire partagée
Cache secondaire partagé
Cache primaire partagé
109
Exemple : Hydra (Stanford)
Write-through Bus (64b)
Read/Replace Bus (256b)
On-chip L2 Cache
DRAM Main Memory
Rambus Memory Interface
CPU 0
L1 Inst.
Cache L1 Data Cache
CPU 1
L1 Inst.
Cache L1 Data Cache
CPU 2
L1 Inst.
Cache L1 Data Cache
CPU 3
L1 Inst.
Cache L1 Data Cache
I/O Devices
I/O Bus Interface
CPU 0 Memory Controller CPU 1 Memory Controller CPU 2 Memory Controller CPU 3 Memory Controller
Centralized Bus Arbitration Mechanisms
• Single-chip multiprocessor
• Four processors
• Separate primary caches
• Write-through data caches to
maintain coherence
– Shared 2nd-level cache
– Low latency interprocessor
communication (10 cycles)
– Separate read and write
buses
110
Hydra vs. Superscalar
– ILP only
⇒ SS 30-50% better
than single Hydra
processor
– ILP & fine thread
⇒ SS and Hydra
comparable
– ILP & coarse thread
⇒ Hydra 1.5–
2× better
compress
m88ksim
eqntott
MPEG2
applu
apsi
swim
tomcatv
pmake
0
0.5
1
1.5
2
2.5
3
3.5
4
Speedup
Superscalar 6-way issue
Hydra 4 x 2-way issue
OLTP
« The Stanford Hydra CMP », by Lance Hammond, et al., IEEE MICRO Magazine, March-April 2000
111
Piranha
• Compaq :
– Piranha
– 8 Alphas sur une puce
112
Exemple : Power4
• 2 processeurs
superscalaires ( >
1 GhZ).
• Cache L2 partagé
multiports ~ 8-10
cycles a priori
recouvert par OOO.
Spéculation ordre
accès données
(LD/ST). 1.5 MB.
• L1 : 32KB, 3 ports
= 2 loads – 1
store.
• MCM
(MutliChipModule) :
8 POWER 4. NUMA.
113
Comparaison SMT / CMP en
multiprogrammation
Degré 8 2 * degré 4 4 * degré 2 Degré 8
Simulations sur les SPEC 92 en multiprogrammation.
« Simultaneous Multithreading: Maximizing On-Chip Parallelism », by Dean M.
Tullsen, Susan J. Eggers, and Henry M. Levy, In the 22rd Annual International
Symposium on Computer Architecture, 1995.
114
Comparaison SMT / CMP
Simulations de Hammond et al. 1997. A single-chip multiprocessor, IEEE
Computer, September, 1997.
Compress : code entier avec peu d‘ILP (et pas de
TLP).
Mpeg2 : ILP + TLP (à la main). Bcp de calculs.
Tomcatv : code flottant - ILP + TLP (// de boucle
automatique). Bcp accès mémoire.
Multiprogram : plusieurs programmes entiers. Bcp
de calculs.
superscalaire de degré 2
115
Comparaison SMT/CMP (suite)
• Résultats comparaison entre SMT et CMP pas clairs…
• CMP :
– Plus facile à implémenter. Fréquence élevée.
– Programmeurs et compilateurs doivent faire face à la
difficulté de partionner les programmes entre ILP
matériel et TLP pour utiliser au mieux des ressources
.
– Problème applications non parallèles.
– Strict partionnement des ressources, sous-utilisation
de la puce.
• SMT :
– Tolère les latences mémoire.
– Partage dynamique du parallélisme entre ILP et TLP.
– Structure complètement centralisée. Augmentation
du temps de cycle.
116
En résumé, les différentes orientations
Différentes approches dues à différents marchés / applications…
• HP et Intel : performance en exploitant davantage d’ILP notamment
en définissant un nouvel ISA. Mais également en augmentant la
spéculation (IA-32).
• Alpha / Compaq : performance via le SMT (parallélisme ILP + TLP).
• IBM : parallélisme essentiellement de flots.…
• Combiner SMT et CMP :
– Intel : 2-SMT-processor CMP
– Sun Microsystems : 4-SMT-processor CMP
Multiprocesseurs / SMT.
117
POWER5 Chip Overview
• Technology: 130nm
lithography, SOI, Cu wiring
• 276M transistors
• 389 mm2 die size
• Two 8-way superscalar SMT
cores
• Memory subsystem with
1.9MB L2-Cache, L3
directory and memory
controller on chip
• Extensive RAS support
• High-speed elastic bus
interface
POWER5 Microprocessor

Contenu connexe

Similaire à Chapitre-3-Architectures-Haute-Performance-et-embarquées.pdf

Cours_SAM(M14).ppt
Cours_SAM(M14).pptCours_SAM(M14).ppt
Cours_SAM(M14).pptAbdo Brahmi
 
Cours_SAM(M14).ppt
Cours_SAM(M14).pptCours_SAM(M14).ppt
Cours_SAM(M14).pptAbdo Brahmi
 
IPv6 training
IPv6 trainingIPv6 training
IPv6 trainingFred Bovy
 
Compte rendu : Le routage dynamique RIP V1
Compte rendu : Le routage dynamique RIP V1Compte rendu : Le routage dynamique RIP V1
Compte rendu : Le routage dynamique RIP V1Soumia Elyakote HERMA
 
Le microprocesseur
Le microprocesseurLe microprocesseur
Le microprocesseurmdiker
 
notions de routage IP
notions de routage IPnotions de routage IP
notions de routage IPmohamednacim
 
Mises à jour logicielles en environnement Linux Embarqué, petit guide et tour...
Mises à jour logicielles en environnement Linux Embarqué, petit guide et tour...Mises à jour logicielles en environnement Linux Embarqué, petit guide et tour...
Mises à jour logicielles en environnement Linux Embarqué, petit guide et tour...Pierre-jean Texier
 
Supervision industrielle www.automate pro.blogspot.com
Supervision industrielle www.automate pro.blogspot.comSupervision industrielle www.automate pro.blogspot.com
Supervision industrielle www.automate pro.blogspot.comAdnane Ahmidani
 
Cours Benhabiles TMS320.pdf
Cours Benhabiles TMS320.pdfCours Benhabiles TMS320.pdf
Cours Benhabiles TMS320.pdfHouBou3
 
Alphorm.com Formation CCNP ENCOR 350-401 (2of8) : Routing
Alphorm.com Formation CCNP ENCOR 350-401 (2of8) : RoutingAlphorm.com Formation CCNP ENCOR 350-401 (2of8) : Routing
Alphorm.com Formation CCNP ENCOR 350-401 (2of8) : RoutingAlphorm
 
Alphorm.com Formation Cisco CCNA v3 : mise à jour
Alphorm.com Formation Cisco CCNA v3 : mise à jourAlphorm.com Formation Cisco CCNA v3 : mise à jour
Alphorm.com Formation Cisco CCNA v3 : mise à jourAlphorm
 
Université de la performance
Université de la performanceUniversité de la performance
Université de la performancepkernevez
 
BreizhCamp 2019 - IoT et open source hardware pour la collecte de timeseries
BreizhCamp 2019 - IoT et open source hardware pour la collecte de timeseriesBreizhCamp 2019 - IoT et open source hardware pour la collecte de timeseries
BreizhCamp 2019 - IoT et open source hardware pour la collecte de timeseriesXavier MARIN
 
Introduction au modèle EPANET
Introduction au modèle EPANETIntroduction au modèle EPANET
Introduction au modèle EPANETRoland Yonaba
 
DevoxxFR 2019: Consul @Criteo
DevoxxFR 2019: Consul @CriteoDevoxxFR 2019: Consul @Criteo
DevoxxFR 2019: Consul @CriteoPierre Souchay
 

Similaire à Chapitre-3-Architectures-Haute-Performance-et-embarquées.pdf (20)

Cours_SAM(M14).ppt
Cours_SAM(M14).pptCours_SAM(M14).ppt
Cours_SAM(M14).ppt
 
Cours_SAM(M14).ppt
Cours_SAM(M14).pptCours_SAM(M14).ppt
Cours_SAM(M14).ppt
 
1485606887355.pdf
1485606887355.pdf1485606887355.pdf
1485606887355.pdf
 
Chap1 intro 1pp
Chap1 intro 1ppChap1 intro 1pp
Chap1 intro 1pp
 
IPv6 training
IPv6 trainingIPv6 training
IPv6 training
 
Compte rendu : Le routage dynamique RIP V1
Compte rendu : Le routage dynamique RIP V1Compte rendu : Le routage dynamique RIP V1
Compte rendu : Le routage dynamique RIP V1
 
Le microprocesseur
Le microprocesseurLe microprocesseur
Le microprocesseur
 
notions de routage IP
notions de routage IPnotions de routage IP
notions de routage IP
 
Mises à jour logicielles en environnement Linux Embarqué, petit guide et tour...
Mises à jour logicielles en environnement Linux Embarqué, petit guide et tour...Mises à jour logicielles en environnement Linux Embarqué, petit guide et tour...
Mises à jour logicielles en environnement Linux Embarqué, petit guide et tour...
 
Présentation1
Présentation1Présentation1
Présentation1
 
Supervision industrielle www.automate pro.blogspot.com
Supervision industrielle www.automate pro.blogspot.comSupervision industrielle www.automate pro.blogspot.com
Supervision industrielle www.automate pro.blogspot.com
 
Cours Benhabiles TMS320.pdf
Cours Benhabiles TMS320.pdfCours Benhabiles TMS320.pdf
Cours Benhabiles TMS320.pdf
 
Alphorm.com Formation CCNP ENCOR 350-401 (2of8) : Routing
Alphorm.com Formation CCNP ENCOR 350-401 (2of8) : RoutingAlphorm.com Formation CCNP ENCOR 350-401 (2of8) : Routing
Alphorm.com Formation CCNP ENCOR 350-401 (2of8) : Routing
 
Architecture
ArchitectureArchitecture
Architecture
 
Alphorm.com Formation Cisco CCNA v3 : mise à jour
Alphorm.com Formation Cisco CCNA v3 : mise à jourAlphorm.com Formation Cisco CCNA v3 : mise à jour
Alphorm.com Formation Cisco CCNA v3 : mise à jour
 
Démystifier la programmation avec LabVIEW FPGA
Démystifier la programmation avec LabVIEW FPGADémystifier la programmation avec LabVIEW FPGA
Démystifier la programmation avec LabVIEW FPGA
 
Université de la performance
Université de la performanceUniversité de la performance
Université de la performance
 
BreizhCamp 2019 - IoT et open source hardware pour la collecte de timeseries
BreizhCamp 2019 - IoT et open source hardware pour la collecte de timeseriesBreizhCamp 2019 - IoT et open source hardware pour la collecte de timeseries
BreizhCamp 2019 - IoT et open source hardware pour la collecte de timeseries
 
Introduction au modèle EPANET
Introduction au modèle EPANETIntroduction au modèle EPANET
Introduction au modèle EPANET
 
DevoxxFR 2019: Consul @Criteo
DevoxxFR 2019: Consul @CriteoDevoxxFR 2019: Consul @Criteo
DevoxxFR 2019: Consul @Criteo
 

Chapitre-3-Architectures-Haute-Performance-et-embarquées.pdf

  • 1. 1 Architectures haute-performance et embarquées Evolutions des architectures versus la performance Nathalie Drach Equipe ASIM Laboratoire d’Informatique de Paris 6 (LIP6) Université de Pierre et Marie Curie
  • 2. 2 Evolution des processeurs • Evolutions technologiques : – Augmentation de la fréquence. – Augmentation du nombre de transistors. • Evolutions en architecture : – Traduire l’augmentation des transistors en augmentation de performance. Augmentation des performances des processeurs : combinaison entre technologie et (micro)architecture. Technologie Technologie + architecture « Computer Architecture » J. L. Hennessy & D. A. Patterson SIA RoadMap Year 1999 2002 2005 2008 2011 2014 Feature size (nm) 180 130 100 70 50 35 Logic trans/cm2 6.2M 18M 39M 84M 180M 390M Cost/trans (mc) 1.735 .580 .255 .110 .049 .022 #pads/chip 1867 2553 3492 4776 6532 8935 Clock (MHz) 1250 2100 3500 6000 10000 16900 Chip size (mm2 ) 340 430 520 620 750 900 Wiring levels 6-7 7 7-8 8-9 9 10 Power supply (V) 1.8 1.5 1.2 0.9 0.6 0.5 High-perf pow (W) 90 130 160 170 175 183 Battery pow (W) 1.4 2 2.4 2.8 3.2 3.7 “Prévisions” de la SIA (semiconductor industries association, http://www.semichips.org/) :
  • 3. 3 Exploiter l’ILP ILP Superscalaire VLIW Ordonnancement (schedule) dynamique et statique Ordonnancement statique Haute-performance Embarqué Traduire l’augmentation des transistors en augmentation de performance.
  • 4. 4 Evaluer une architecture par la simulation Identifier les facteurs limitatifs Modèles Applications Modifier l’architecture et/ou le programme Itérer Métriques Méthodologie
  • 5. 5 Un programme simple for (i=0; i < n; i++) { a[i] = b[i] + c[i] } 0 → r0 ; i=0 label: load b[r0] → r1 ; b[i] load c[r0] → r2 ; c[i] r1 + r2 → r3 ; r3 = b[i] + c[i] store r3 → a[r0] ; a[i] = r3 r0 + 1 → r0 ; i = i + 1 goto label if r0 < n; continuer si i<n Programme source Programme pseudo-assembleur Modèle d’exécution de type RISC
  • 6. 6 Etapes d’un programme sur un processeur Registres Mémoire Instructions UAL Registres Mémoire Données Bus load b[r0] → r1 load b[r0] → r1 load b[r0] → r1 r0 load b[r0] → r1 r0 @b @b[r0] load b[r0] → r1 @b[r0] b[r0] load b[r0] → r1 r1 load c[r0] → r2 load c[r0] → r2 PC
  • 7. 7 Etapes d’un programme sur un processeur Registres Mémoire Instructions UAL Registres Mémoire Données Bus r1 + r2 -> r3 r1 + r2 ->r3 r1 + r2 -> r3 r1 r2 r1 + r2 -> r3 r2 r1 r1 + r2 r1 + r2 -> r3 r3 PC
  • 9. 9 Augmenter le débit des instructions Registres Mémoire Instructions ALU Registres Mémoire Données load b[r0] → r1 load c[r0] → r2 r1 + r2 → r3 store r3 → a[r0] r0 + 1 → r0 load b[r0] → r1 load c[r0] → r2 r1 + r2 → r3 store r3 → a[r0] load b[r0] → r1 load c[r0] → r2 r1 + r2 → r3 load b[r0] → r1 load c[r0] → r2 load b[r0] → r1
  • 10. 10 Le pipeline Augmenter le débit d’instructions i.e. permettre à plusieurs instructions de subir des traitements distincts (étapes) de la part des différentes unités de calculs. Ajout de registres tampon entre les étages de pipeline.
  • 11. 11 Le pipeline IF ID EX MEM WB IF ID EX MEM WB IF ID EX MEM WB IF ID EX MEM WB IF ID EX MEM WB Profondeur = 5 Cycle CPU Latence = 5 cycles Débit = 1 instruction / cycle • Débit du pipeline : nombre d’instructions pouvant quitter le pipeline à chaque cycle. Performance idéale : CPI = 1. • Latence du pipeline: temps de traversée du pipeline. • Superpipeline : Tc réduit, mais délais augmentés. • Pentium III : 12 étages. • Pentium IV : 20 étages.
  • 12. 12 Augmenter le débit des instructions, mais problème de dépendances Registres Mémoire Instructions ALU Registres Mémoire Données load b[r0] → r1 load c[r0] → r2 r1 + r2 → r3 r1 + r2 → r3
  • 13. 13 Problèmes de dépendances • Problème de dépendances entre instructions : 2 instructions sont dépendantes si l’une doit être exécutée avant l’autre pour maintenir l’exactitude du programme. Ces dépendances génèrent des aléas (hazards) dans le pipeline qui engendrent des délais (stall) i.e. des cycles d’attente. • Aléas de données : une instruction utilise le résultat de l’autre (exemple précédant). • Aléas de branchement : une instruction est un branchement et l’exécution de l’instruction suivante dépend du résultat du branchement. + Aléas structurels : deux instructions demandent simultanément la même ressource.
  • 14. 14 Aléas structurels • Machine pipelinée nécessite de dupliquer toutes les ressources pour permettre toutes les combinaisons d’instructions dans le pipeline. • Un conflit de ressource se produit lorsqu’une ressource matérielle est demandée par plus d’une instruction au même cycle. • Exemple : quand une machine pipelinée possède une mémoire partagée pour les données et les instructions.
  • 16. 16 Aléas de données • Les aléas de données surviennent quand le pipeline change l’ordre des accès lecture/écriture des opérandes. Ces aléas génèrent 1 ou plusieurs cycles pour maintenir une exécution correcte. • Exemple : ADD R1, R2, R3 SUB R4, R1, R5 AND R6, R1, R7 OR R8,R1,R9 XOR R10, R1, R11
  • 17. 17 Classification des aléas de données Soient 2 instructions I, J, avec I précédent J dans le flot d’instructions : • RAW (Read After Write) : une vraie dépendance. J essaie de lire une opérande source avant que I ne l’écrive. J utilise une mauvaise valeur. • WAW (Write After Write) : une dépendance de nom. J essaie d’écrire une opérande avant que I n’écrive son résultat. Les écritures ont lieu dans le mauvais ordre. • WAR (Write After Read) : une dépendance de nom. J essaie d’écrire dans une opérande destination avant que I ne le lise. I utilise une mauvaise valeur. • RAR (Read After Read) : n’est pas un aléa.
  • 18. 18 Aléas de données et pipeline • RAW : résolus en partie par les court-circuits, sinon délai. • WAR et WAW ne sont pas possible dans les pipelines : – Les instructions du pipeline s’exécutent dans le même ordre séquentiel que le programme. – Une opérande est lue avant qu’une instruction suivante ne modifie cet opérande (WAR). – Toutes les écritures sont réalisées dans l’ordre du programme (WAW). • Mais problèmes potentiels dès que l’exécution peut avoir lieu dans le désordre…
  • 19. 19 Aléas de contrôle • Instructions de contrôle = instructions de branchement = instructions de rupture de séquence = instructions conditionnelles ou inconditionnelles. • Deux types d’actions : – évaluation de la condition de branchement (instructions de branchements conditionnels). – Calcul d’adresse - rupture de la séquence (instructions de branchements conditionnels, retour de procédure, branchements inconditionnels). • Ces instructions limitent les performances des processeurs en générant des aléas de contrôle. • En moyenne : 1 instruction de branchement pour 5 instructions.
  • 20. 20 Aléas de contrôle Dans notre pipeline : Le test par rapport à zéro est réalisé dans l’étage EX. L’adresse de branchement est écrite dans l’étage MEM.
  • 21. 21 Aléas de contrôle et pipeline 3 cycles de délai. Si CPI = 1, 30% de branchements => CPI = 1.9!
  • 22. 22 Aléas de contrôle Il faut le plus tôt possible : – déterminer si le branchement est pris ou non pris, et, – calculer l’adresse du branchement pris. • Solution : – Mettre le test par rapport à 0 dans l’étage ID/EX. – Ajouter un additionneur pour le nouveau PC dans l’étage ID/EX. • Résultat : délai de branchement 1 cycle.
  • 23. 23 Opérations flottantes et pipeline Latency = 0 Latence = 3 Pipelinée Latence = 6 Pipelinée Latence = 24 Non-pipelinée Integer Unit Floating Point (FP)/Integer Multiply FP/Integer Divider IF ID WB MEM FP Adder EX Opérations flottantes nécessitent plus d’un cycle. Latence : temps entre une instruction qui produit un résultat et une instruction qui utilise ce résultat.
  • 24. 24 Aléas et pipelines flottants • RAW : délai plus important du à la latence des instructions flottantes. • WAW : peut survenir s’il est possible que les instructions réalisent WB dans le désordre. • WAR : est impossible, car les registres sont lus dans l’ordre. • Aléas structurels : – Unité flottante non disponible (à cause d’une division). – MEM, WB peuvent être traversés par plusieurs instructions simultanément.
  • 25. 25 Exemple : Aléas de données (RAW) IF MEM ID EX WB IF ID M1 M6 M7 M2 M3 M4 M5 MEM WB IF ID A1 A4 A3 A2 MEM WB CC 1 CC 2 CC 3 CC 8 CC 9 CC 4 CC 5 CC 6 CC 7 CC 10 CC 11 CC12 CC13 CC14 CC15 CC16 CC17 CC18 IF ID MEM EX WB STALL STALL STALL STALL STALL STALL STALL STALL STALL STALL STALL STALL STALL STALL STALL STALL STALL LD F4, 0(R2) MULTD F0, F4, F6 ADDD F2, F0, F8 SD 0(R2), F2
  • 26. 26 Exemple : Aléas structurels IF ID A1 A4 A3 A2 MEM WB IF ID M1 M6 M7 M2 M3 M4 M5 MEM WB IF ID MEM EX WB IF ID MEM EX WB MULTD F0, F4, F6 LD F2, 0(R2) ADDD F2, F4, F6 CC 1 CC 2 CC 3 CC 8 CC 9 CC 4 CC 5 CC 6 CC 7 CC 10 CC 11 IF ID MEM EX WB IF ID MEM EX WB IF ID MEM EX WB . . . (integer) . . . (integer) . . . (integer) . . . (integer)
  • 27. 27 Exploiter l’ILP ILP Superscalaire VLIW Ordonnancement (schedule) dynamique et statique Ordonnancement statique Haute-performance Embarqué Traduire l’augmentation des transistors en augmentation de performance.
  • 28. 28 Superscalaire • Superscalaire : exécuter plusieurs instructions en parallèle (exemple : superscalaire de degré 2 ; 2 instructions exécutées par cycle). • Pour mesurer l’ILP : IPC = nombre d’Instructions Par Cycle = 1 / CPI. IF ID EX W B MEM IF IF IF ID ID ID EX EX EX MEM MEM MEM WB WB WB
  • 30. 30 Plus précisément… In-order or Out-Of-Order Ordonnancement dynamique des instructions et exécution dans le désordre. Gestion décentralisée avec stations de réservation : algorithme de Tomasulo.
  • 31. 31 Algorithme d’Ordonnancement Dynamique : Emission dans les Stations de Réservation (1) File d’instructions Unité fonctionnelle B (Mem) Chargement d’instructions 1 2 3 4 5 6 r1 r2 r3 r4 r5 r6 0 1 1 1 1 1 B1 0 0 0 0 0 R Valeur Vld SR 1 r2 1 r2 1 LD 0 0 0 1 0 1 Vide FU Op Dest S1 V1 SR1 S2 V2 SR2 Hypothèses : • add, sub = 1 cycle. • ld = 1 cycle si succès dans cache L1, ld = 3 cycles si succès dans cache L2. LD R1, R2, R2 ADD R3, R1, R1 SUB R1, R4, R4 ADD R5, R1, R1 Unité fonctionnelle A (Int) 0 1 0 1 0 1 Vide FU Op Dest S1 V1 SR1 S2 V2 SR2 ADD R5, R1, R1 SUB R1, R4, R4 ADD R3, R1, R1 A3 A2 A1 B3 B2 B1 Station de réservation • File d’instructions : stocker instructions à exécuter. • Stations de réservation : exécuter les instructions dès que leurs opérandes sont disponibles.
  • 32. 32 Algorithme d’Ordonnancement Dynamique : Emission dans les Stations de Réservation (2) File d’instructions Unité fonctionnelle B (Mem) Chargement d’instructions 1 2 3 4 5 6 r1 r2 r3 r4 r5 r6 0 1 0 1 1 1 B1 0 A1 0 0 0 R Valeur Vld SR 1 r2 1 r2 1 LD 0 0 0 1 0 1 Vide FU Op Dest S1 V1 SR1 S2 V2 SR2 Hypothèses : • add, sub = 1 cycle. • ld = 1 cycle si succès dans cache L1, ld = 3 cycles si succès dans cache L2. LD R1, R2, R2 ADD R3, R1, R1 SUB R1, R4, R4 ADD R5, R1, R1 Unité fonctionnelle A (Int) B1 0 B1 0 3 + 0 0 0 1 0 1 Vide FU Op Dest S1 V1 SR1 S2 V2 SR2 ADD R5, R1, R1 SUB R1, R4, R4 A3 A2 A1 B3 B2 B1
  • 33. 33 Algorithme d’Ordonnancement Dynamique : Emission dans les Stations de Réservation (3) File d’instructions Unité fonctionnelle B (Mem) Chargement d’instructions 1 2 3 4 5 6 r1 r2 r3 r4 r5 r6 0 1 0 1 1 1 A2 0 A1 0 0 0 R Valeur Vld SR 1 r2 1 r2 1 LD 0 0 0 1 0 1 Vide FU Op Dest S1 V1 SR1 S2 V2 SR2 Hypothèses : • add, sub = 1 cycle. • ld = 1 cycle si succès dans cache L1, ld = 3 cycles si succès dans cache L2. LD R1, R2, R2 ADD R3, R1, R1 SUB R1, R4, R4 ADD R5, R1, R1 Unité fonctionnelle A (Int) B1 0 B1 0 3 + 0 0 1 r4 1 r4 1 - 0 0 0 1 Vide FU Op Dest S1 V1 SR1 S2 V2 SR2 ADD R5, R1, R1 A3 A2 A1 B3 B2 B1 Renommage de registres implicite
  • 34. 34 Algorithme d’Ordonnancement Dynamique : Emission dans les Stations de Réservation (4) File d’instructions Unité fonctionnelle B (Mem) Chargement d’instructions 1 2 3 4 5 6 r1 r2 r3 r4 r5 r6 0 1 0 1 0 1 A2 0 A1 0 A3 0 R Valeur Vld SR 1 r2 1 r2 1 LD 0 0 0 1 0 1 Vide FU Op Dest S1 V1 SR1 S2 V2 SR2 Hypothèses : • add, sub = 1 cycle. • ld = 1 cycle si succès dans cache L1, ld = 3 cycles si succès dans cache L2. LD R1, R2, R2 ADD R3, R1, R1 SUB R1, R4, R4 ADD R5, R1, R1 Unité fonctionnelle A (Int) B1 0 B1 0 3 + 0 0 1 r4 1 r4 1 - 0 0 A 2 0 A 2 0 5 + 0 0 Vide FU Op Dest S1 V1 SR1 S2 V2 SR2 A3 A2 A1 B3 B2 B1 Instructions prêtes à être exécutées ?
  • 35. 35 Algorithme d’Ordonnancement Dynamique : Exécution – Succès dans le Cache L1 (1) File d’instructions LD R1, R2, R2 Chargement d’instructions 1 2 3 4 5 6 v1’ r2 r3 r4 r5 r6 1 1 0 1 0 1 A2 0 A1 0 A3 0 R Valeur Vld SR 1 r2 1 r2 1 LD 1 0 0 1 0 1 Vide FU Op Dest S1 V1 SR1 S2 V2 SR2 Hypothèses : • instructions dans les stations de réservation. • add, sub = 1 cycle. • ld = 1 cycle si succès dans cache L1, ld = 3 cycles si succès dans cache L2. LD R1, R2, R2 ADD R3, R1, R1 SUB R1, R4, R4 ADD R5, R1, R1 SUB R1, R4, R4 B1 1 v1 B1 1 v1 3 + 0 0 1 r4 1 r4 1 - 1 0 A2 1 v1’ A2 1 v1’ 5 + 0 0 Vide FU Op Dest S1 V1 SR1 S2 V2 SR2 Unité fonctionnelle B (Mem) Unité fonctionnelle A (Int) A3 A2 A1 B3 B2 B1 Toutes les SR espionnent le bus.
  • 36. 36 Algorithme d’Ordonnancement Dynamique : Exécution – Succès dans le Cache L1 (2) File d’instructions Chargement d’instructions 1 2 3 4 5 6 v1’ r2 v3 r4 r5 r6 1 1 1 1 0 1 A2 0 A1 0 A3 0 R Valeur Vld SR 1 r2 1 r2 1 LD 1 1 0 1 0 1 Vide FU Op Dest S1 V1 SR1 S2 V2 SR2 LD R1, R2, R2 ADD R3, R1, R1 SUB R1, R4, R4 ADD R5, R1, R1 ADD R3, R1, R1 B1 1 V1 B1 1 v1 3 + 1 0 1 r4 1 r4 1 - 1 1 A2 1 v1’ A2 1 v1’ 5 + 0 0 Vide FU Op Dest S1 V1 SR1 S2 V2 SR2 Unité fonctionnelle B (Mem) Unité fonctionnelle A (Int) Hypothèses : • instructions dans les stations de réservation. • add, sub = 1 cycle. • ld = 1 cycle si succès dans cache L1, ld = 3 cycles si succès dans cache L2. A3 A2 A1 B3 B2 B1
  • 37. 37 Algorithme d’Ordonnancement Dynamique : Exécution – Succès dans le Cache L1 (3) File d’instructions Chargement d’instructions 1 2 3 4 5 6 v1’ r2 v3 r4 v5 r6 1 1 1 1 1 1 A2 0 A1 0 A3 0 R Valeur Vld SR 1 r2 1 r2 1 LD 1 1 0 1 0 1 Vide FU Op Dest S1 V1 SR1 S2 V2 SR2 Hypothèses : • instructions dans les stations de réservation. • add, sub = 1 cycle. • ld = 1 cycle si succès dans cache L1, ld = 3 cycles si succès dans cache L2. LD R1, R2, R2 ADD R3, R1, R1 SUB R1, R4, R4 ADD R5, R1, R1 ADD R5, R1, R1 B1 1 V1 B1 1 v1 3 + 1 1 1 r4 1 r4 1 - 1 1 A2 1 v1’ A2 1 v1’ 5 + 1 0 Vide FU Op Dest S1 V1 SR1 S2 V2 SR2 Unité fonctionnelle B (Mem) Unité fonctionnelle A (Int) A3 A2 A1 B3 B2 B1
  • 38. 38 Algorithme d’Ordonnancement Dynamique : Exécution – Echec dans le Cache L1 (1) File d’instructions LD R1, R2, R2 -1- Chargement d’instructions 1 2 3 4 5 6 v1 r2 r3 r4 r5 r6 1 1 0 1 0 1 A2 0 A1 0 A3 0 R Valeur Vld SR 1 r2 1 r2 1 LD 1 0 0 1 0 1 Vide FU Op Dest S1 V1 SR1 S2 V2 SR2 Hypothèses : • instructions dans les stations de réservation. • add, sub = 1 cycle. • ld = 1 cycle si succès dans cache L1, ld = 3 cycles si succès dans cache L2. LD R1, R2, R2 ADD R3, R1, R1 SUB R1, R4, R4 ADD R5, R1, R1 SUB R1, R4, R4 B1 0 B1 0 3 + 0 0 1 r4 1 r4 1 - 1 0 A2 1 v1 A2 1 v1 5 + 0 0 Vide FU Op Dest S1 V1 SR1 S2 V2 SR2 Unité fonctionnelle B (Mem) Unité fonctionnelle A (Int) A3 A2 A1 B3 B2 B1
  • 39. 39 Algorithme d’Ordonnancement Dynamique : Exécution – Echec dans le Cache L1 (2) File d’instructions LD R1, R2, R2 -2- Chargement d’instructions 1 2 3 4 5 6 v1 r2 r3 r4 v5 r6 1 1 0 1 1 1 A2 0 A1 0 A3 0 R Valeur Vld SR 1 r2 1 r2 1 LD 1 0 0 1 0 1 Vide FU Op Dest S1 V1 SR1 S2 V2 SR2 Hypothèses : • instructions dans les stations de réservation. • add, sub = 1 cycle. • ld = 1 cycle si succès dans cache L1, ld = 3 cycles si succès dans cache L2. LD R1, R2, R2 ADD R3, R1, R1 SUB R1, R4, R4 ADD R5, R1, R1 ADD R5, R1, R1 B1 0 B1 0 3 + 0 0 1 r4 1 r4 1 - 1 1 A2 1 v1 A2 1 v1 5 + 1 0 Vide FU Op Dest S1 V1 SR1 S2 V2 SR2 Unité fonctionnelle B (Mem) Unité fonctionnelle A (Int) A3 A2 A1 B3 B2 B1 Recouvrir la latence
  • 40. 40 Algorithme d’Ordonnancement Dynamique : Exécution – Echec dans le Cache L1 (3) File d’instructions LD R1, R2, R2 -3- Chargement d’instructions 1 2 3 4 5 6 v1 r2 r3 r4 v5 r6 1 1 0 1 1 1 A2 0 A1 0 A3 0 R Valeur Vld SR 1 r2 1 r2 1 LD 1 0 0 1 0 1 Vide FU Op Dest S1 V1 SR1 S2 V2 SR2 Hypothèses : • instructions dans les stations de réservation. • add, sub = 1 cycle. • ld = 1 cycle si succès dans cache L1, ld = 3 cycles si succès dans cache L2. LD R1, R2, R2 ADD R3, R1, R1 SUB R1, R4, R4 ADD R5, R1, R1 B1 1 v1’ B1 1 v1’ 3 + 0 0 1 r4 1 r4 1 - 1 1 A2 1 v1 A2 1 v1 5 + 1 1 Vide FU Op Dest S1 V1 SR1 S2 V2 SR2 Unité fonctionnelle B (Mem) Unité fonctionnelle A (Int) A3 A2 A1 B3 B2 B1
  • 41. 41 Algorithme d’Ordonnancement Dynamique : Exécution – Echec dans le Cache L1 (4) File d’instructions Chargement d’instructions 1 2 3 4 5 6 v1 r2 v3 r4 v5 r6 1 1 1 1 1 1 A2 0 A1 0 A3 0 R Valeur Vld SR 1 r2 1 r2 1 LD 1 1 0 1 0 1 Vide FU Op Dest S1 V1 SR1 S2 V2 SR2 Hypothèses : • instructions dans les stations de réservation. • add, sub = 1 cycle. • ld = 1 cycle si succès dans cache L1, ld = 3 cycles si succès dans cache L2. LD R1, R2, R2 ADD R3, R1, R1 SUB R1, R4, R4 ADD R5, R1, R1 B1 1 V1’ B1 1 V1’ 3 + 1 0 1 r4 1 r4 1 - 1 1 A2 1 v1 A2 1 v1 5 + 1 1 Vide FU Op Dest S1 V1 SR1 S2 V2 SR2 Unité fonctionnelle B (Mem) Unité fonctionnelle A (Int) ADD R3, R1, R1 A3 A2 A1 B3 B2 B1
  • 42. 42 Algorithme d’Ordonnancement Dynamique : les Contraintes Matérielles • Contraintes matérielles : – Nombre d’instructions dans la file d’instructions. – Nombre d’entrées dans les stations de réservation. – Nombre d’instructions émis par cycle. – Occupation du bus commun de données. – Renommage de registres implicite. – Efficacité du prédicteur de branchements. File instructions Registres UF FP Bus commun de données Chargement instructions UF Mem UF Int complexe UF Int simple
  • 43. 43 Exécution dans le désordre Terminaison dans l’ordre Tampon de réordonnancement #reg tag ID valeur ROB #reg : numéro registre à mettre à jour. tag : validité résultat. ID : identifiant instruction. valeur : valeur du registre. • Une instruction effectue l’étape de terminaison lorsqu’elle est en tête du ROB – Les instructions effectuent l’étape de terminaison dans l’ordre du programme. • L’état logique de l’architecture n’est modifié que lors de l’étape de terminaison (commit) – ⇒ il est possible d’avoir des interruptions précises malgré l’exécution dans le désordre. • Etat logique: registres et mémoire. • Lorsqu’une instruction sort du ROB: – le résultat est écrit dans le registre correspondant, – OU la donnée est envoyée à la mémoire (écriture en mémoire) • Processeur superscalaire de degré n: n instructions peuvent effectuer simultanément l’étape de terminaison. • Si l’instruction en tête du ROB n’a pas terminé son exécution: le processeur est bloqué.
  • 44. 44 Processeur Superscalaire : Adaptabilité Dynamique Int Int Mem FP Registres Logique de contrôle et d’émission Instructions exécutées en parallèle Code séquentiel • Extraire du parallélisme d’instructions. – Prédiction de branchement. • Recouvrir la latence des instructions. – Exécution des instructions dans le désordre. – Cache non bloquant. Bloc de base Point d’entrée Point de sortie On peut exécuter en parallèle ADD R5, R6, R6 MUL R8, R7, R7 1 2 3 LD R1, R2, R2, R2 ADD R3, R1, R1 SUB R6, R4, R4 ADD R5, R6, R6 B1 MUL R8, R7, R7 Non pris Pris
  • 45. 45 ILP - Limitations Register renaming : infinite virtual registers and all WAW & WAR hazards are avoided Branch prediction–perfect : no mispredictions Perfect memory : no miss, perfect cache L1 Memory-address alias: addresses are known & a store can be moved before a load provided addresses not equal Programs 0 20 40 60 80 100 120 140 160 gcc espresso li fpppp doducd tomcatv 54.8 62.6 17.9 75.2 118.7 150.1 IPC
  • 46. 46 En réalité et en détail 0 0,5 1 1,5 2 2,5 3 3,5 4 4,5 5 5,5 6 wave5 fpppp apsi turb3d applu mgrid hydro2d su2cor swim tomcatv vortex perl ijpeg li compress gcc m88ksim go uops Instruction cache stalls Resource capacity stalls Branch mispredict penalty Data Cache Stalls
  • 47. 47 Exploiter l’ILP ILP Superscalaire VLIW Ordonnancement (schedule) dynamique et statique Ordonnancement statique Haute-performance Embarqué Traduire l’augmentation des transistors en augmentation de performance.
  • 48. 48 Architecture VLIW (Very Large Instruction Word) • ILP statique (ordonnancement statique). Optimisations à la compilation très importantes. • Instructions longues initialisant simultanément plusieurs opérations indépendantes. • Caractéristiques : opérations de type RISC, pipeliné, branchements retardés, gardes, mémoire cache, … • Limitations de l’analyse statique… Modèle machine Int Int Mem FP Registres Logique de contrôle
  • 49. 49 Processeur VLIW : Ordonnancement Statique • Ordonnancement fonction : – Nombre d’unités fonctionnelles. – Latence des instructions. • Ordonnancement statique : – Renommage des registres. – Placement dans les slots. – Insertion de NOP. B1 4 ADD R5, R6, R6 3 ADD R3, R1, R1 2 MUL R8, R7, R7 5 LD R1, R2, R2 SUB R6, R4, R4 1 Slot 4 Flottant Slot 3 Mémoire Slot 2 Int complexe Slot 1 Int simple Table d’utilisation des ressources Instruction longue/VLIW Code parallèle SUB R6, R4, R4 NOP NOP LD R1, R2, R2 ADD R3, R1, R1 NOP NOP NOP ADD R5, R6, R6 NOP NOP NOP B1 NOP NOP NOP NOP MUL R8, R7, R7 NOP NOP Hypothèses : toutes les instructions exécutée en 1 cycles 1 2 3 LD R1, R2, R2, R2 ADD R3, R1, R1 SUB R6, R4, R4 ADD R5, R6, R6 B1 MUL R8, R7, R7 Non pris Pris
  • 50. 50 Améliorer encore les performances • Nombre de transistors augmente : comment s’en servir pour « obtenir plus de performance » ? -> Exploiter plus de parallélisme… Year of 1st shipment 1997 1999 2002 2005 2008 2011 2014 Local Clock (GHz) 0,75 1,25 2,1 3,5 6 10 16,9 Across Chip (GHz) 0,75 1,2 1,6 2 2,5 3 3,674 Chip Size (mm²) 300 340 430 520 620 750 901 Dense Lines (nm) 250 180 130 100 70 50 35 Number of chip I/O 1515 1867 2553 3492 4776 6532 8935 Transistors per chip 11M 21M 76M 200M 520M 1,4B 3,62B “Prévisions” de la SIA (semiconductor industries association, http://www.semichips.org/)
  • 51. 51 ILP ILP + DLP ILP + TLP +ILP +ILP + DLP +ILP + DLP + TLP Augmenter la performance d’un flot Augmenter la performance de plusieurs flots (tâches)
  • 52. 52 Exploiter différentes formes de parallélisme SMT : multiflots simultanés CMP : multiprocesseurs on- chip SIMD Superscalaire + large + spéculatif VLIW +dynamique (EPIC) Autres ILP TLP DLP ILP
  • 53. 53 Que faut-il optimiser pour accroître l’ILP sur un processeur superscalaire? • Optimiser la bande passante instructions : le nombre d’instructions « utiles » chargées, décodées et lancées (instruction flow). • Consommer cette bande passante instructions : – Optimiser le taux auquel les résultats sont produits (register data flow). – Optimiser le nombre de données chargées de la mémoire (memory data flow).
  • 54. 54 Superscalaire superspéculatif Instruction flow : prédiction de branchement sophistiquée, trace cache, réutiliser les instructions. Register data flow : renommage de registres spéculatif, prédiction de valeur. Memory data flow : charger en avance, prédiction d’adresses, de dépendances et de valeurs.
  • 55. 55 A Taxonomy of Speculation Speculative Execution Control Speculation Data Speculation Branch Direction Branch Target Data Location Data Value What can we speculate on?
  • 56. 56 Branchement Instructions de contrôle = instructions de branchement = instructions de rupture de séquence = instructions conditionnelles ou inconditionnelles. • Deux types d’actions : – Déterminer la condition de branchement (instructions de branchements conditionnels) i.e. branchement pris ou non pris. – ET rupture de la séquence (instructions de branchements conditionnels, retour de procédure, branchements inconditionnels) i.e. calculer l’adresse de branchement (cas où branchement pris). • En moyenne : 1 instruction de branchement pour 5 instructions.
  • 57. 57 Stratégie de Prédiction (1) • Principe: apprentissage des comportements individuels des branchements. • Un premier mécanisme: l’historique local – Un automate à 2 états par branchement, – Un automate à 4 états par branchement. 10 n bits PC 2n éléments Prédiction Prédit Pris 11 Prédit Faiblement Pris 10 Prédit Faiblement Non Pris 01 Prédit Non Pris 00 Pris (1) Non Pris (0) Mise à jour de la table après obtention de la valeur de la condition Prédit Pris 1 Prédit Non Pris 0 OU
  • 58. 58 Corrélation entre branchements • Prédicteur à 2 bits performant pour les programmes qui contiennent beaucoup de boucles (calcul flottant intensif). • Dans les programmes entiers, les branchements sont surtout corrélés (dépendants). Example : if (d==0) /* branch b1*/ d=1; if (d==1) /*branch b2 */ ...
  • 60. 60 Stratégies de Prédiction (3) 1 1 0 0 1100 ... ... 1 1 Index predict: taken BHR Branch Pattern History Table (PHT) shift direction Gag (4 bits) 1 seul BHT n ... ... ... ... 2**n tables, # BHT 1 1 0 0 ... ... 1 1 Index ... @ de branchements BHR ... GAp (4 bits) 1 seul reg d ’historique mais avec @de branchement Deux bits de prédiction
  • 61. 61 Stratégies de Prédiction (4) ... ... ... ... # BHT ... ... 1 1 b1 Index Per-address BHT ... ... 0 0 1 1 0 0 1 1 ... Branch address b2 Branch address b1 0 1 b2 Pap(4) ... ... 1 1 Index BHT ... ... 0 0 1 1 Branch address 0 0 1 1 Branch address Pag(4) Plusieurs reg à dec d ’historique, 1 par branchement mais pas d ’@ 1 BHR par Branch
  • 62. 62 Stratégies de Prédiction (5) PC BHR Conca PHT n m m+n PC BHR OUX PHT m m m gselect gshare
  • 64. 64 Importance d’une bonne prédiction de branchement IPC idéal = 4 - 20% de branchements conditionnels Prediction accuracy Instructions per cycle (IPC) 0 0,5 1 1,5 2 2,5 3 3,5 4 0,5 0,52 0,54 0,56 0,58 0,6 0,62 0,64 0,66 0,68 0,7 0,72 0,74 0,76 0,78 0,8 0,82 0,84 0,86 0,88 0,9 0,92 0,94 0,96 0,98 1 8 cycles 14 cycles Branch penalty
  • 65. 65 Prédire l’adresse de branchement • Les adresses de destination sont stockées dans une table à chaque exécution d’un branchement. • La table est indexée par le PC de l’instruction (du branchement). • Lorsque le PC est envoyé à la mémoire, il est envoyé également à la table qui indique: (1) s’il s’agit d’un branchement, (2) l’adresse de destination si c’est le cas. Adresse des branchements connus Adresse de destination PC Adresse prédite C’est un branchement / Ce n’est pas un branchement (BTB : Branch Target Buffer)
  • 66. 66 Trace cache Trace cache : cache qui capture les séquences dynamiques d’instructions. Contient donc des segments d’instructions contenant des branchements, potentiellement pris.
  • 67. 67 Performance du trace cache Performance de 3 applications des SPECint95 simulées sur une machine de largeur 16 et une prédiction de branchement parfaite.
  • 70. 70 Instruction flow : réutiliser les instructions (1) “recognize that a computation chain has been previously performed and therefore need not be performed again” Fetch Decode Issue Execute Commit Check for previous use Verify arguments are the same if reused
  • 71. 71 Instruction flow : réutiliser les instructions (2)
  • 72. 72 Instruction flow : réutiliser les instructions (3) • Table associant 2 opérandes et une opération à un résultat. • Accès dès que l’instruction est décodée. • Evite d’occuper une unité fonctionnelle. • Tables accédées : – Par l’adresse de l’instruction, – Les opérandes et le type de l’opération (2 instructions identiques, mais à une adresse différente utilisent la même entrée). A. Sodani and G. S. Sohi. Dynamic Instruction Reuse. 24th Int'l Symp. on Comp. Arch., 1997.
  • 73. 73 Register data flow : registres de renommage • Pour éviter les attentes dues à la réutilisation des registres : avoir autant de registres que d’instructions présentes dans le processeur. Registres de renommage. Renommage explicite. • Principe : – après le décodage, tout registre destination est renommé en un autre registre libre. La correspondance est enregistrée dans une table. – ces registres sont mis à jour dès qu’une instruction a fini son exécution (dans le désordre).
  • 74. 74 Renommage de Registres Explicite (1) • Emission dans les stations de réservation ssi registres disponibles. Registres physiques Table de renommage des registres Fenêtre d’instructions P10 P9 P8 P7 P6 P2 R6 R5 R4 R3 R2 R1 Table de renommage Liste de registres libres : P1, P3, P4, P11, P12 LD R1, R2, R2 ADD R3, R1, R1 SUB R1, R4, R4 ADD R5, R1, R1 Convention : R : registres logiques P : registres physiques
  • 75. 75 Renommage de Registres Explicite (2) • Instruction envoyée dans les stations de réservation si il y a des registres disponibles (renommage explicite de registres). P10 P9 P8 P7 P6 P2 R6 R5 R4 R3 R2 R1 Table de renommage Liste de registres libres : P1, P3, P4, P11, P12 LD R1, R2, R2 ADD R3, R1, R1 SUB R1, R4, R4 ADD R5, R1, R1 On alloue P1 pour R1 et on émet dans la station de réservation : LD P1, P6, P6. P10 P9 P8 P7 P6 P1 R6 R5 R4 R3 R2 R1 Table de renommage Liste de registres libres : P3, P4, P11, P12 LD R1, R2, R2 ADD R3, R1, R1 SUB R1, R4, R4 ADD R5, R1, R1 On alloue P3 pour R3 et on émet dans la station de réservation : ADD P3, P1, P1. Lorsque ADD est terminée, on peut libérer P1. P10 P9 P8 P3 P6 P1 R6 R5 R4 R3 R2 R1 Liste de registres libres : P4, P11, P12, P1 LD R1, R2, R2 ADD R3, R1, R1 SUB R1, R4, R4 ADD R5, R1, R1 On alloue P4 pour R1 et on émet dans la station de réservation : SUB P4, P8, P8. On procède de la même façon pour ADD P11, P4, P4.
  • 76. 76 Memory data flow : charger en avance • Préchargement des données : chargement en avance des données pour recouvrir la latence. • Mécanismes de prédiction : sur succès, sur échec, « tagged », table avec pas. Logiciel. • Niveau de caches : L1 ou L2. • Où charger les données préchargées : tampon ou cache. T.F. Chen and J.L. Baer, "Effective Hardware Based Prefetching for High- Performance Processors", IEEE Transactions on Computers, Vol. 44 No. 5, May 1995.
  • 77. 77 Prédiction pour ne pas attendre le calcul de l’adresse. Memory data flow : prédiction d’adresse G. Reinman and B. Clader, "Predictive Techniques for Aggressive Load Speculation", in the 31st International Symposium on Microarchitecture, 1998.
  • 78. 78 Register and Memory data flow : prédire les valeurs (1) “predict the results of instructions based on previously seen results” Question: Where does value locality occur? Single-cycle Arithmetic (i.e. addq $1 $2) Single-cycle Logical (i.e bis $1 $2) Multi-cycle Arithmetic (i.e. mulq $1 $2) Register Move (i.e. cmov $1 $2) Integer Load (i.e. ldq $1 8($2)) Store with base register update FP Load FP Multiply FP Add FP Move Somewhat Yes No Yes Yes No Yes Somewhat Somewhat Yes Somewhat 40-50% Yes 60-80% No 20-30%
  • 79. 79 Register and Memory data flow : prédire les valeurs (2) • Extension de la prédiction d’adresse d’une lecture. • Prédiction de la valeur produite par une instruction : dernière valeur, pas, autres... • Les instructions dépendantes peuvent être exécutées plus tôt avec une valeur spéculative. Y. Sazeides and J. E. Smith, "The Predictability of Data Values," in the 30th Annual International Symposium on Microarchitecture, December 1997.
  • 81. 81 Optimiser la bande passante instructions : augmenter la taille des éléments de prédiction de branchement et le cache de trace. Consommer cette bande passante instructions : – Taille des stations de réservation et nombre d’unités fonctionnelles. – Taille des caches de données. – Nombre de registres de renommage. Superscalaire plus large
  • 82. 82 Dimensionner plus largement les processeurs superscalaires (budget de 1 Milliard de transistors – ~2010) ‰ Prédicteur de branchement performant de grande taille. ‰Un cache trace large. ‰ Plusieurs instructions exécutables en parallèle (16 ou 32 instructions par cycle). ‰ Un grand nombre de stations de réservation (2000). ‰ 24 à 48 unités fonctionnelles pipelinées. ‰ Un large cache de données on-chip. Yale N. Patt, Sanjay J. Patel, Marius Evers, Daniel H. Friendly, Jaret Stark : One Billion Transistors, One Uniprocessor, One Chip. IEEE Computer, September 1997, pp. 51-57.
  • 83. 83 ILP ILP + DLP ILP + TLP +ILP +ILP + DLP +ILP + DLP + TLP Augmenter la performance d’un flot Augmenter la performance de plusieurs flots (tâches)
  • 84. 84 Nouvelles applications = applications multimédia • Développement du multimédia grand public : – Numérisation des données multimédia (audio, images, vidéo). – Performance des machines. – Développement d’Internet. • Besoins en performance : – Temps réel. – Réalisme. – … “On the next five years, (1998-2002), we believe that media processing will become the dominant force in computer architecture” (K. Diefendorf and P. K. Dubey in IEEE Computer Journal, Sep.97) 80% CPU usage Applications “multimédia” = son + graphique + interactivité.
  • 85. 85 ILP + DLP • Caractéristiques de ces applications : – Traitement identique sur un ensemble important de données. – Traitement de données contiguës. • Superscalaire + SIMD : parallélisme de données. x1 x2 x3 x4 y1 y2 y3 y4 x1*y1 x2*y2 x3*y3 x4*y4 R1: R2: R3: ∗ ∗ ∗ ∗
  • 86. 86 Processeurs et extensions SIMD • Extension des jeux d’instructions des microprocesseurs : • SIMD entier (MMX, VIS), • SIMD flottant (SSE, 3DNow!), • SIMD entier et Flottant (SSE2, AltiVec). permutation calcul
  • 87. 87 Extensions SIMD - Exemple : AltiVec Fetch Dispatch Branch Write Back SRU FPU3 FPU2 FPU1 FX1 FX2 LSU2 LSU1 VFP2 VFP3 VFP1 VFP4 VCI2 VCI1 VCI3 VSI VPU VALU Execute stage Max 4inst/cycle Max 3inst/cycle Max 2 inst/cycle Première implémentation matérielle dans le PowerPC G4 : 162 instructions, 32 registres 128-bits “vectoriels”, deux unités fonctionnelles pipelinées.
  • 88. 88 Extensions SIMD - Performance 0 0,2 0,4 0,6 0,8 1 M e s a ( f p ) F I R ( f p ) S O A D I D C T R G B 2 Y C b C r I m a g e F i l t e r OO PPC OO SIMD + Préchargement par « stream ».
  • 89. 89 ILP ILP + DLP ILP + TLP +ILP +ILP + DLP +ILP + DLP + TLP Augmenter la performance d’un flot Augmenter la performance de plusieurs flots (tâches)
  • 91. 91 ILP + TLP “Simultaneous multithreaded processors” (SMPs) ou processeurs multiflots : – Charge plusieurs contextes (flots), – Les unités fonctionnelles sont partagées entre les flots, – Les instructions des différents flots sont simultanément exécutées. “Chip multiprocessors” (CMPs) ou “multiprocessor chips” : – Intègre 2 ou plus processeurs complets sur une seule puce, – Toutes les unités fonctionnelles pour un processeur sont dupliquées.
  • 92. 92 Processeurs multiflots • Motivation : masquer les latences (mémoire, instructions à longue latence, exceptions, …). • Exemple : latences mémoire mesurées sur un serveur Alpha 4100 SMP avec 4 processeurs Alpha 21164 à 300 Mhz : • 7 cycles pour un échec L1 (suivi d’un succès sur le L2 on-chip), • 21 cycles pour un échec L2 (suivi d’un succès sur le L3 (board-level)), • 80 cycles pour un échec servi par la mémoire, • 125 cycles pour un échec “dirty”, i.e., un échec servi par la hiérarchie mémoire d’un autre processeur. • Principe : les processeurs multiflots masquent les latences par un changement de contexte rapide entre les flots (threads).
  • 93. 93 Différentes approches multiflots • Entrelacement par cycle : à chaque cycle, une instruction d’un flot différent est chargée. • Entrelacement par bloc : les instructions d’un flot sont exécutées successivement jusqu’à un événement générant une latence (changement de contexte). • Multiflots simultanés : les instructions des flots sont simultanément distribuées aux différentes unités du processeur superscalaire.
  • 94. 94 Issue slots Time (processor cycles) Superscalaire Multiflots simultanés Multiprocesseurs Context switch Entrelacement par cycle Context switch Entrelacement par bloc Slots horizontaux : - ILP Slots verticaux : + latence
  • 95. 95 Entrelacement par cycle Exemple : TERA MTA • CPU : VLIW (largeur 3). • Le processeur change de contexte à chaque cycle (3ns). Changement de contexte = 0 cycle. • 128 flots distincts et 128 ensembles de registres. • La latence “masquable” est de 128 cycles (384 ns). • Un nombre important de flots est nécessaire pour masquer les latences, performance “dégradée” pour un seul flot. Register state for 128 threads Instruction fetch & issue logic I-cache Done D o n e OK Fail ~ 16 tick A and C execution pipeline M-unit M-ops A-ops C-ops Asynchronous Memory access through network (70 ticks avrg. latency)
  • 96. 96 Entrelacement par bloc Exemple : Sun MAJC • Sun MAJC5200 : 2 processeurs sur la puce ; chaque processeur VLIW est multiflots entrelacé (4 flots).
  • 97. 97 Multiflots Simultanés : principe I8 I7 I6 I2 I5 I4 I1 I6 I5 I4 I9 I3 I2 I1 I4 I3 I6 I2 I1 I9 I6 I3 I5 I2 I4 I1 I6 I2 I5 I2 I6 I2 I5 I4 I5 I4 I1 I1 I9 I3 I2 I1 I4 I1 Superscalaire Multiflot Simultané Temps Temps Alpha 21464 (Compaq), Hyperthreading dans Pentium 4 (Intel). Flot 1 Flot 2 Flot 3 Flot 4 • Charger plusieurs flots. • Partager les UF entre les flots. • Exécuter simultanément les instructions des différents flots.
  • 98. 98 Multiflots simultanés 2 approches possibles • Partager. Les instructions des différents flots partagent toutes les ressources comme le tampon de chargement, les registres de renommage des différents bancs de registres, la fenêtre d’instructions et le buffer de réordonnancement. -conception matérielle similaire aux processeurs superscalaires, performance d’un seul flot. -mais complexité ajoutée, un tag de flot pour les instructions en cours de traitement, la possibilité de charger et de terminer des instructions de flots différents, … • Dupliquer. Tous les tampons internes du processeur superscalaire sont multipliés et associés à un flot spécifique. L’unité d’émission doit être capable d’émettre des instructions de différentes fenêtres d’instructions simultanément dans les unités fonctionnelles. -modification de l’organisation du processseur superscalaire, mais partionnement naturel et simplification des étages d’émission et de retrait. • Approche hybride.
  • 99. 99 Multiflots simultanés Exemple : Alpha 21464 (EV8) • Processeur superscalaire de degré 8. • Multiflots simultané (4 flots). • Les ressources dupliquées : PC et table de correspondance pour les registres. • Les ressources partagées : le fichier de registres (taille augmentée), la file d’instructions, les L1 et L2 caches, les TLB, les prédicteurs de branchement et les unités fonctionnelles. Pour BTB et TLB, identifiant par flot.
  • 100. 100 0% 50% 100% 150% 200% 250% SpecInt SpecFP Mixed Int/FP 1T 2T 3T 4T Alpha 21464 (EV8) Informations performance disponibles
  • 101. 101 Intel Xeon Out Intel Xeon Out- -of of- -order Execution order Execution Engine Detailed Pipeline Engine Detailed Pipeline Source: Intel Technology Journal , Volume 6, Number 1, February 2002.
  • 102. 102 Multiflots simultanés Politique de chargement des flots • Avantage du SMT : l’unité de chargement entrelace les flots et charge à chaque cycle plusieurs flots, ceci augmente la probabilité de charger uniquement des instructions non spéculatives. • Autre avantage (en tirer partie) : l’unité de chargement peut être sélective quand aux flots chargés. ⇒importance de la politique de chargement des flots. Différentes politiques montrées sur “projet universitaire” (à l’origine de l’EV8). SMT - universités de Washington et de San Diego…
  • 103. 103 SMT universités de Washington and San Diego Instruction fetch Instruction decode Instruction issue Execution pipelines Floating- point register file Integer register file Floating-point Instruction Queue Integer Instruction Queue I-cache D-cache Fetch Unit PC Decode Register Renaming Floating-point Units Integer load/store Units … … •Processeur OOO ~ MIPS R1000. •8 flots et un superscalaire de degré 8. •8 instructions chargées, décodées, lancées, exécutées et terminées. •Chaque flot peut adresser 32 registres matériels entiers et 32 flottants. Ces registres sont renommés dans un banc de registres large de 356 registres physiques.
  • 104. 104 Pénaliser flot avec instructions les + anciennes, 2 flots actifs, 2 * 8 8 2 IQPOSN.2 .8 Flot avec le moins d’échecs données en cours, 2 flots actifs, 2 * 8 8 2 MISSCOU NT.2.8 Flot avec le moins d’instructions dans les étages DEC/REN/QUE, 2 flots actifs, 2 * 8 8 2 ICOUNT. 2.8 Flot avec le moins de branchements non résolus, 2 flots actifs, 2 * 8 8 2 BRCOUNT .2.8 Round-Robin, 2 flot actifs, 2 * 8 8 2 RR.2.8 Description Max instructions chargées par flot par cycle Flots par cycle Politique Différentes politiques de chargement (suite)
  • 105. 105 ILP + TLP Multiprocesseurs on-chip (CMP) Principe : • CMPs (Chip MultiProcessors) est composé d’un petit nombre de processeurs distincts (de 2 à 16) sur une même puce et exécutant des programmes parallèles et/ou des tâches indépendantes. • Toutes les unités fonctionnelles sont dupliquées. Charge de travail (différents niveaux de parallélisme en plus de l’ILP) : • Extraction dynamique des flots de contrôle pour un flot d’instructions. • Plusieurs flots d’une même application : boucles, fonctions (ce qui implique un espace d’adresse commun pour tous les flots). • Plusieurs traitements/applications en parallèle (intra-task, multiprogramming).
  • 106. 106 Avantages et inconvénients • Facile à implémenter, tester et valider. • Fréquence élevée : processeur superscalaire “modéré”. • Scalabilité. • Mais strict partionnement des ressources, sous- utilisation potentielle de la puce. • Problème de la programmation parallèle de codes « irréguliers ». • Bande passante mémoire en modèle partagé • Comparaison avec système parallèle : – intéraction rapide entre les processeurs, permet d’exploiter du parallélisme même pour des flots qui communiquent beaucoup, – mais toujours problème de bande passante mémoire.
  • 107. 107 Multiprocesseurs on-chip Multiprocesseurs symétriques à mémoire partagée Pro- cessor Pro- cessor Pro- cessor Pro- cessor Primary Cache Secondary Cache Bus Secondary Cache Secondary Cache Secondary Cache Primary Cache Primary Cache Primary Cache Global Memory
  • 108. 108 Partage de la mémoire « Evaluation of Design Alternatives for a Multiprocessor Microprocessor », by Basem A. Nayfeh , Lance Hammond and Kunle Olukotun, In the 23rd International Symposium on Computer Architecture, 1996. Mémoire partagée Cache secondaire partagé Cache primaire partagé
  • 109. 109 Exemple : Hydra (Stanford) Write-through Bus (64b) Read/Replace Bus (256b) On-chip L2 Cache DRAM Main Memory Rambus Memory Interface CPU 0 L1 Inst. Cache L1 Data Cache CPU 1 L1 Inst. Cache L1 Data Cache CPU 2 L1 Inst. Cache L1 Data Cache CPU 3 L1 Inst. Cache L1 Data Cache I/O Devices I/O Bus Interface CPU 0 Memory Controller CPU 1 Memory Controller CPU 2 Memory Controller CPU 3 Memory Controller Centralized Bus Arbitration Mechanisms • Single-chip multiprocessor • Four processors • Separate primary caches • Write-through data caches to maintain coherence – Shared 2nd-level cache – Low latency interprocessor communication (10 cycles) – Separate read and write buses
  • 110. 110 Hydra vs. Superscalar – ILP only ⇒ SS 30-50% better than single Hydra processor – ILP & fine thread ⇒ SS and Hydra comparable – ILP & coarse thread ⇒ Hydra 1.5– 2× better compress m88ksim eqntott MPEG2 applu apsi swim tomcatv pmake 0 0.5 1 1.5 2 2.5 3 3.5 4 Speedup Superscalar 6-way issue Hydra 4 x 2-way issue OLTP « The Stanford Hydra CMP », by Lance Hammond, et al., IEEE MICRO Magazine, March-April 2000
  • 111. 111 Piranha • Compaq : – Piranha – 8 Alphas sur une puce
  • 112. 112 Exemple : Power4 • 2 processeurs superscalaires ( > 1 GhZ). • Cache L2 partagé multiports ~ 8-10 cycles a priori recouvert par OOO. Spéculation ordre accès données (LD/ST). 1.5 MB. • L1 : 32KB, 3 ports = 2 loads – 1 store. • MCM (MutliChipModule) : 8 POWER 4. NUMA.
  • 113. 113 Comparaison SMT / CMP en multiprogrammation Degré 8 2 * degré 4 4 * degré 2 Degré 8 Simulations sur les SPEC 92 en multiprogrammation. « Simultaneous Multithreading: Maximizing On-Chip Parallelism », by Dean M. Tullsen, Susan J. Eggers, and Henry M. Levy, In the 22rd Annual International Symposium on Computer Architecture, 1995.
  • 114. 114 Comparaison SMT / CMP Simulations de Hammond et al. 1997. A single-chip multiprocessor, IEEE Computer, September, 1997. Compress : code entier avec peu d‘ILP (et pas de TLP). Mpeg2 : ILP + TLP (à la main). Bcp de calculs. Tomcatv : code flottant - ILP + TLP (// de boucle automatique). Bcp accès mémoire. Multiprogram : plusieurs programmes entiers. Bcp de calculs. superscalaire de degré 2
  • 115. 115 Comparaison SMT/CMP (suite) • Résultats comparaison entre SMT et CMP pas clairs… • CMP : – Plus facile à implémenter. Fréquence élevée. – Programmeurs et compilateurs doivent faire face à la difficulté de partionner les programmes entre ILP matériel et TLP pour utiliser au mieux des ressources . – Problème applications non parallèles. – Strict partionnement des ressources, sous-utilisation de la puce. • SMT : – Tolère les latences mémoire. – Partage dynamique du parallélisme entre ILP et TLP. – Structure complètement centralisée. Augmentation du temps de cycle.
  • 116. 116 En résumé, les différentes orientations Différentes approches dues à différents marchés / applications… • HP et Intel : performance en exploitant davantage d’ILP notamment en définissant un nouvel ISA. Mais également en augmentant la spéculation (IA-32). • Alpha / Compaq : performance via le SMT (parallélisme ILP + TLP). • IBM : parallélisme essentiellement de flots.… • Combiner SMT et CMP : – Intel : 2-SMT-processor CMP – Sun Microsystems : 4-SMT-processor CMP Multiprocesseurs / SMT.
  • 117. 117 POWER5 Chip Overview • Technology: 130nm lithography, SOI, Cu wiring • 276M transistors • 389 mm2 die size • Two 8-way superscalar SMT cores • Memory subsystem with 1.9MB L2-Cache, L3 directory and memory controller on chip • Extensive RAS support • High-speed elastic bus interface POWER5 Microprocessor