Les processeurs

publicité
Titre_Itanium_XP
29/12/04
11:14
Page 1
Les processeurs
Itanium
Programmation
et optimisation
Smail
Jamel
© Groupe Eyrolles, 2005,
ISBN : 2-212-11536-9
Niar
Tayeb
Livre Itanium.book Page IX Mardi, 28. décembre 2004 3:05 15
Table des matières
Introduction . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
1
Pourquoi l’architecture EPIC ? . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
1
La roadmap Itanium d’Intel . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
2
Pourquoi faut-il optimiser ses applications pour EPIC ? . . . . . . . . . . .
6
Notre stratégie d’optimisation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
7
Le futur d’Itanium . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
8
La technologie HT . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Pour aller plus loin . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
9
12
En résumé . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
16
CHAPITRE 1
L’architecture de l’Itanium
et son jeu d’instructions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
19
Le parallélisme d’instructions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
20
Pipeline . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Architectures VLIW, EPIC et superscalaires . . . . . . . . . . . . . . . . . . . . . .
21
24
Principe de fonctionnement des architectures superscalaires, VLIW
et micro-architecture de l’Itanium . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
25
Lecture des instructions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Exécution des instructions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
25
27
Le jeu d’instructions de l’Itanium . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
34
Les instructions arithmétiques entières . . . . . . . . . . . . . . . . . . . . . . . . . .
Les instructions logiques . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
35
35
Livre Itanium.book Page X Mardi, 28. décembre 2004 3:05 15
X
Les processeurs Itanium
Les instructions de décalage . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Les instructions de comparaison . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Les instructions de branchement . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Les instructions d’accès mémoire . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
35
36
37
39
Le format des instructions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
41
Les techniques avancées pour la spéculation dans l’Itanium . . . . . . . . .
La spéculation de contrôle . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Les branchements par le mécanisme de prédicat . . . . . . . . . . . . . . . . . . .
Dépendance de données et spéculation . . . . . . . . . . . . . . . . . . . . . . . . . . .
Le pipeline logiciel . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
44
44
45
47
49
En résumé . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
53
CHAPITRE 2
Exploiter EPIC dans les applications . . . . . . . . . . . . . . . . . . . . . . . .
55
Restructuration des boucles . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Optimisation du code par transformation des boucles . . . . . . . . . . . . . . .
57
58
Exploitation par l’utilisation des pragmas . . . . . . . . . . . . . . . . . . . . . .
Directive pour le dépliage de boucles. . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Directive pour la distribution de boucles . . . . . . . . . . . . . . . . . . . . . . . . . .
Directive pour le préchargement des données . . . . . . . . . . . . . . . . . . . . . .
Directive pour le pipeline logiciel . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Performance des pragmas sur le programme saxpy . . . . . . . . . . . . . . . . . .
Analyse de code par génération de rapport de compilation . . . . . . . . . . . .
73
73
74
75
75
76
L’optimisation interprocédurale . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
79
L’optimisation guidée par profil . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
84
En résumé . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
85
72
CHAPITRE 3
Lire l’assembleur EPIC et aider le compilateur . . . . . . . . . . . . . .
87
Lire l’assembleur EPIC . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Pourquoi utiliser l’assembleur ? . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Trouver ses marques . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Les optimisations du compilateur . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
La boucle pipeline logicielle . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Méthode de calcul logiciel . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Aider le compilateur à faire mieux . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
87
88
89
95
98
102
104
Livre Itanium.book Page XI Mardi, 28. décembre 2004 3:05 15
Table des matières
XI
Tester la méthode . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Dresser le profil et chercher le « code chaud » . . . . . . . . . . . . . . . . . . . . .
110
En résumé . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
132
112
CHAPITRE 4
L’analyse micro-architecturale . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
133
Les objectifs et les outils . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
134
Les compteurs architecturaux . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
BE_FLUSH_BUBBLE-ALL . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
BE_L1D_FPU_BUBBLE-ALL . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
BE_EXE_BUBBLE-ALL . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
BE_RSE_BUBBLE-ALL . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
BACK_END_BUBBLE-FE . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
136
138
141
147
149
150
Dans notre exemple . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Affiner les mesures de VTune . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
161
En résumé . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
161
151
CHAPITRE 5
Le portage 64 bits . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
163
Exécuter du code 32 bits . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
163
Les problèmes liés au portage . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Les stratégies de portage . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Les problèmes liés aux données . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Les problèmes liés au code . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
167
168
169
173
Exemples de portage . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Compilation pas à pas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Un cas sous Windows . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Un cas sous Linux . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
177
183
188
En résumé . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
192
176
CHAPITRE 6
Études de cas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
195
La méthodologie globale . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Le banc de tests . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
L’optimisation itérative . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
196
197
198
Livre Itanium.book Page XII Mardi, 28. décembre 2004 3:05 15
XII
Les processeurs Itanium
Simulation à N corps : SimToile . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Le code de référence . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Portage 64 bits . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Analyse micro-architecturale . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Optimisations avancées . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
199
201
203
208
209
Lancer de rayon : POV-Ray . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Code de référence . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Portage 64 bits . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Analyse micro-architecturale . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Optimisations avancées . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
213
217
218
224
226
En résumé . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
227
ANNEXE 1
Présentation du simulateur HP Ski . . . . . . . . . . . . . . . . . . . . . . . . . . . .
229
Premiers pas avec Nue et Ski . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
229
ANNEXE 2
API de chronométrage . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
233
ANNEXE 3
Code des chapitres 3 et 4 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
239
ANNEXE 4
Bibliographie . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
249
ANNEXE 5
Sigles et acronymes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
251
Index . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
255
Téléchargement