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
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)
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
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
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
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
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.
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.
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.
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
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