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