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

Faire une suggestion

Avez-vous trouvé des erreurs dans linterface ou les textes ? Ou savez-vous comment améliorer linterface utilisateur de StudyLib ? Nhésitez pas à envoyer vos suggestions. Cest très important pour nous !