17-21 octobre 2005 formation continue - cnrs laurence viry analyse et optimisation de code principes...
TRANSCRIPT
17-21 Octobre 2005 Formation Continue - CNRS Laurence Viry
Analyse et Optimisation de code
Principes généraux - Architectures
17 – 21 Octobre 2005 Formation Continue – CNRS Françoise Roch
Optimisation séquentielle
Principes généraux
Architecture des processeurs, évolution les 30 dernières
années
Architecture de la mémoire
Quelques techniques d’optimisations
Méthodologie proposée
Optimisation du compilateur
Timing et profiling
Quelques méthodes d’optimisation “manuelle”
17 – 21 Octobre 2005 Formation Continue – CNRS Françoise Roch
Principes Généraux
Architecture des processeurs
Augmenter le vitesse d’horloge des processeurs
Évolution ces 30 dernières années
Techniques de micro-architecture permettant d’augmenter le nombre d’instructions par cycle
Architecture de la mémoire
Mémoire hiérarchique (registre, cache,…)
Mémoire virtuelle et Paging
Optimisation des accès
Quelques techniques d’optimisation
17 – 21 Octobre 2005 Formation Continue – CNRS Françoise Roch
Architecture des processeursFréquence d’horloge
La fréquence de l’horloge détermine la durée d’un cycle
Chaque opération utilise un certain nombre de cycles
La fréquence d’horloge n’est pas le seul critère de performance
La fréquence d’horloge est fonction de : La technologie des semi-conducteurs Le packaging Les circuits …
17 – 21 Octobre 2005 Formation Continue – CNRS Françoise Roch
Comment faire des processeurs plus rapides?
Augmenter la fréquence d’horloge (limites techniques, solution coûteuse)
Permettre l’exécution simultanée de plusieurs instructions Exécution en parallèle (duplication de composants
hardware, coûteux) Pipelining (pas de duplication de composants
hardware
Améliorer les accès mémoire Mémoire hiérarchique Optimisation des accès
17 – 21 Octobre 2005 Formation Continue – CNRS Françoise Roch
Latence : Communications processeur -DRAMP
erf
orm
an
ce
10
100
1000
19
80
19
81
19
82
19
83
19
84
19
85
19
86
19
87
19
88
19
89
19
90
19
91
19
92
19
93
19
94
19
95
19
96
19
97
19
98
19
99
20
00
Time
1
CPU
DRAM
Moore’s Law
μProc60%/année
DRAM7%/année
Processeur-Mémoire Performance50%/année
17 – 21 Octobre 2005 Formation Continue – CNRS Françoise Roch
Qu’est ce que le software Pipelining?
Parallélisme d’instructions
Une opération s’exécute en plusieurs étapes indépendantes par des éléments différents du processeur
Le pipelining consiste à exécuter simultanément des étapes différentes d’ opérations différentes
Exemple: opération s’effectuant en 5 étapes
Charge l’instruction
Charge lesopérandes
ExécuteDécode Ecriture
17 – 21 Octobre 2005 Formation Continue – CNRS Françoise Roch
Software Pipelining (suite)
3 instructions simultanées dans le pipe
Décode Chargeopérandes Exécute Ecriture
Charge l’instruction Décode
Charge l’instruction
Charge l’instruction
EcritureExécuteChargeopérandes
ExécuteChargeopérandesDécode Ecriture
3 instructions en parallèle en 7 cycles (15 cycles en séquentiel)
17 – 21 Octobre 2005 Formation Continue – CNRS Françoise Roch
Software Pipelining (suite)
Sans pipelining résultat tous les deux
cycles pour un processeur
195Mhz: 97Mflops
Avec pipelining Après l’initialisation du
pipe: 1 résultat par cycle pour un processeur
195Nhz: 195Mflops
En général, l’unrolling des boucles améliore le parallélisme d’instructions
do i=1,1000000t(i)=t(i)*t(i)
enddo
do i=1,1000000,2
t(i)=t(i)*t(i
t(i+1)=t(i+1)*t(i+1)enddo
17 – 21 Octobre 2005 Formation Continue – CNRS Françoise Roch
Pipelining: accès mémoire
L’accès mémoire est une fonction coûteuse en temps qui prend plusieurs cycles.
Utiliser le procédé de pipelining pour le superposer à d’autres fonctions du processeur
L’optimisation du compilateur peut réordonner les instructions pour favoriser ce procédé
17 – 21 Octobre 2005 Formation Continue – CNRS Françoise Roch
Familles de processeurs
4 Grandes familles de processeurs (30 dernières années)
CISC (1970s):Complex Instruction Set Computer
Processeur Vectoriel
RISC: Reduced Instruction Set Computer
VLIW: Very long Instruction Word
17 – 21 Octobre 2005 Formation Continue – CNRS Françoise Roch
Architecture CISC
Objectif: Minimiser le nombre d’instructions assembleur permettant de traduire les constructions des langages évolués.
Introduit dans les années 70
Propriétés: Nombreux types d’instructions et d’instructions d’accès
mémoire Longueur des instructions variables Difficulté d’utiliser la technique de pipeline
Exemples Vax11/780 Pentium Pro
17 – 21 Octobre 2005 Formation Continue – CNRS Françoise Roch
Architecture RISC
Objectif: Processeur placé sur un seul chip Diminuer le nombre de cycles par instruction (CPI) Simplifier la gestion du séquenceur et du pipeline
Introduit dans les années 80 Propriétés:
Jeu d’instructions réduit et longueur de ces instructions fixe Favorise le pipeline
Incorpore: Load/Store set architecture Branch prediction Superscalar processing
Grand nombre de registres: limite les accès à la mémoire Exemples : superscalaire RISC processeurs
MIPS R10K/R12K/R14K/R16K, Alpha 21264, SUN UltraSparc-3, IBM Power3/4
17 – 21 Octobre 2005 Formation Continue – CNRS Françoise Roch
Architecture Superscalaire
Multiplie les unités fonctionnelles Gestion des instructions
Statique (in-order): exécutées dans l’ordre du code machine
Dynamique (out-of-order):le hardware modifie l’ordre des instructions pour favoriser le parallélisme (faible nombre d’instructions)
Exécution spéculative: exécution avant que le contrôle des dépendances soient effectués
Out-of-order et speculative instruction tendent à améliorer le parallélisme d’instruction
17 – 21 Octobre 2005 Formation Continue – CNRS Françoise Roch
Vers les architectures VLIW
Obstacles à la performance sur les systèmes superscalaires « standard »:
Les branchements Les mauvaises prédictions Les petites branches (limite le parallélisme)
La latence de la mémoire Utilise plus d’un cycle d’horloge
L’extraction du parallélisme des instructions Le compilateur « sérialise » le code, dont le
parallélisme intrinsèque doit être redécouvert dynamiquement par le processeur
17 – 21 Octobre 2005 Formation Continue – CNRS Françoise Roch
Architecture VLIW(Very Long Instruction Word)
Objectif: Le processeur exécute de longues instructions contenant
plusieurs instructions élémentaires Propriétes
Format des instructions: Instructions de grande taille Paquet d’instructions contenant explicitement son
parallélisme Permet au compilateur de passer des informations sur le
parallélisme du code au hardware (EPIC) Exemple:
Intel-HP IA-64 Itanium et Itanium2
17 – 21 Octobre 2005 Formation Continue – CNRS Françoise Roch
EPIC(Explicitly Parallel Instruction Computing)
Implémentation d’une architecture VLIW Format des instructions: regroupement en « bundle »
de 128bits composé de 3 instructions de 41 bits (pas forcément indépendantes) Template indiquant la possibilité de parallélisation de ces
instructions et un chaînage possible des « bundle »
Instruction 1 Instruction 2 Instruction 3 template
41bits 41bits 41bits 5bits
128 bits
17 – 21 Octobre 2005 Formation Continue – CNRS Françoise Roch
Évolutions récentes des architectures (années 90)
Adressage 64 bits
Optimisations:
Branchement conditionnel – exécution conditionnelle
De l’utilisation des caches: hardware prefetching
Faster integer and floating-point operations
Réduction du coût des branchements par l’utilisation de « dynamic hardware prediction »
…
17 – 21 Octobre 2005 Formation Continue – CNRS Françoise Roch
Architecture Pentium4
17 – 21 Octobre 2005 Formation Continue – CNRS Françoise Roch
Architecture Opteron
17 – 21 Octobre 2005 Formation Continue – CNRS Françoise Roch
Architecture 64 bits: Motivations
Des applications nécessitant des ressources accrues
Data Base, Data mining,… Calcul scientifique, simulation, grid computing Multi-média:son, vidéo
Calcul en flottants plus efficace en 64 bits (SSE)
Capacité d’adressage accrue:
)(1800642
4322
théoriqueTB
GB
17 – 21 Octobre 2005 Formation Continue – CNRS Françoise Roch
Architecture 64 bits
PA-RISC: serveurs HP
Power : gros serveurs IBM
AMD64 : début 2000
Intel Itanium : début 2000
17 – 21 Octobre 2005 Formation Continue – CNRS Françoise Roch
Architecture IA-64
Concept EPIC: Explicit Parallel Instruction Computing
Parallélisme au niveau des instructions Concept des instructions « bundle » (EPIC) Information sur le parallélisme fournie par le compilateur Grand nombre de registres
128 flottants, 128généraux, 64 prédicats, Instruction load/Store
Concept d’ «instruction groups » Ensemble d’instructions indépendantes Nombre illimité d’instructions
Utilisation maximale des ressources
17 – 21 Octobre 2005 Formation Continue – CNRS Françoise Roch
Autres apports de IA-64
Prédiction de branchement: différentes parties du branchement sont naturellement //, traitées par le concept EPIC
Spéculative load: découpée en 2 parties 1ère partie: initialisation du load dans le cache 2ème partie: recherche de la donnée En cas d’exception, un « flag » est généré et
récupéré dans la 2ème partie Augmentation du nombre de registres Les branchements et les « load » exécutés à tort
apportent une pénalité inférieure au gain de temps généré par le parallélisme
17 – 21 Octobre 2005 Formation Continue – CNRS Françoise Roch
Architecture IA-64Implications Logicielles: compilateur
Rôle dominant dans les performances de l’application
Les optimisations standards d’un compilateur
Un compilateur pour Itanium doit: Maximiser le parallélisme au niveau des
instructions (data speculation, template et bundle,instruction group,…)
Minimiser les effets de latence mémoire (predication, speculation, prefetching,…)
17 – 21 Octobre 2005 Formation Continue – CNRS Françoise Roch
Architecture AMD64 (x86_64)
Première présentation officielle: octobre
2001
Commercialisation: Opteron Avril 2003/
Athlon64 septembre 2003
Nouveau jeu d’instructions (ABI) 64 bits
Support X86 32 bits en natif
Spécifications publiques: www.x86_64.org
17 – 21 Octobre 2005 Formation Continue – CNRS Françoise Roch
Architecture AMD 64 (x86_64)
Compatibilité avec le standard 32bits Intel (compatibilité avec les instructions x86)
Double le nombre de registre généraux (8 à 16),
Inclut le contrôleur mémoire dans la puce diminue la latence des accès mémoire de 30% (~80 ns)
Adressage indirect ( évite la gestion longue des nombres à 64bits)
17 – 21 Octobre 2005 Formation Continue – CNRS Françoise Roch
Conclusion : architectures 64 bits
AMD64: Évolution en douceur Pas de rupture avec x86 Satisfait le client aujourd’hui
Itanium 2 : nouvelle architecture favorisant le parallélisme Rôle important du compilateur Pas directement compatible avec IA-32, émulateur
permettant de transformer un jeu d’instructions IA-32 en jeu d’instruction IA-64
Abandon progressif des restrictions de X86 Investissement à long terme, architecture plus
efficace dans le futur????
17 – 21 Octobre 2005 Formation Continue – CNRS Françoise Roch
Conclusion : architectures 64 bits
Migration logicielle Investissement logiciel important pour une
conversion à une architecture différente Une application 32 bits ne s’exécute pas
forcément plus/aussi vite sur une architecture 64 bits
AMD et INTEL ne sont pas les seuls à proposer des architectures 64bits (SUN, APPLE,…)
SUN commercialise aussi des serveurs avec des processeurs AMD64
17 – 21 Octobre 2005 Formation Continue – CNRS Françoise Roch
Technologies des mémoires
Principalement deux types à base de semi-conducteur DRAM (Dynamic Random Acess Memory): chaque bit est
représenté par une charge électrique qui doit être rafraîchie à chaque lecture/écriture.
SRAM (Static Random Access Memory): retient ses données aussi longtemps qu’il y a du courant
Temps d’un cycle SRAM de 8 à 16 fois plus rapide qu’un cycle de DRAM
Coût de la mémoire SRAM de 8 à 16 fois plus élevé que la mémoire DRAM
Solution le plus couramment choisie: De 1 à 3 niveaux de SRAM en mémoire cache La mémoire principale en DRAM La mémoire virtuelle sur des disques
17 – 21 Octobre 2005 Formation Continue – CNRS Françoise Roch
Accès Mémoire
Mémoire hiérarchique Registres Caches Mémoire Virtuelle
Organisation des caches
Optimisation des accès mémoire
Outils d’analyse identifiant les problèmes de cache
Quelques exemples
21-25 Octobre 2005 Formation Continue – CNRS Laurence Viry
Registres
1 ou plusieurs caches*
RAM : mémoire primaire
Disques: mémoire secondaire
CD,bande, … : mémoire tertiaire
vit
esse
Taille
Mémoire hiérarchique
*: les caches peuvent être organisés de façon hiérarchique
17 – 21 Octobre 2005 Formation Continue – CNRS Françoise Roch
Organisation des caches
Le cache est divisée en lignes de cache de n mots Direct-Mapped Cache
Chaque adresse mémoire est associée à une ligne de cache
Fully Associative Cache Chaque adresse correspond à n’importe quelle ligne
de cache N-way set-associative Cache (2-way et 4-Way)
Une adresse a une alternative de N lignes de cache Instruction Cache
17 – 21 Octobre 2005 Formation Continue – CNRS Françoise Roch
Cache
Localité temporaire et spatiale des données
Cache Hit Fournit la donnée demandée à partir du cache
Cache miss Récupère la donnée dans la mémoire principale La stocke dans le cache Fournit la donnée demandée à partir du cache
17 – 21 Octobre 2005 Formation Continue – CNRS Françoise Roch
Cache thrashing
parameter (max=1024*1024) dimension a(max),b(max),c(max),d(max) …… do i=1,max a(i)=b(i) + c(i)*d(i) enndo
Difficultés Les vecteurs sont alloués de façon contigue Chaque vecteur à une taille de 4MB (taille du cache secondaire)
Deux méthodes pour corriger ce problème Redimensionner les vecteurs
Introduire des variables entre les tableaux pour décaler les adresses
17 – 21 Octobre 2005 Formation Continue – CNRS Françoise Roch
Mémoire Virtuelle
Dernière couche de la hiérarchie mémoireRegistresCache L1…Cache LNMémoire principaleSWAP – disque
Chaque programme utilise un espace d’adressage logique en correspondance avec l’adressage physique pour l’accès aux données
Une page est le plus petit espace mémoire contigüe alloué à un programme.
17 – 21 Octobre 2005 Formation Continue – CNRS Françoise Roch
Pourquoi la mémoire virtuelle
Allocation mémoire Espace mémoire divisé en pages pas forcément
contiguës Simplifie l’allocation mémoire associé à un processus
Code relocation Map des adresses logiques identiques à chaque run
Pagination Transfert des pages de la mémoire principale au
disque en fonction de l’utilisation Disque dernier niveau de la hiérarchie mémoire
(swap)
17 – 21 Octobre 2005 Formation Continue – CNRS Françoise Roch
Mémoire Virtuelle : Page
Les transferts de la mémoire virtuelle à la mémoire physique se font par pages
données
ProcessRegion Table
PageTable
Virtual Translation
Physical Address
Virtual addressLocation 1000
17 – 21 Octobre 2005 Formation Continue – CNRS Françoise Roch
TLB (Translation Lookaside Buffer)
TLB : Cache contenant les informations nécessaires aux translations « adresse virtuelle – adresse physique »
Réduit le coût des références mémoire Taille du TLB limité TLB misses: L’adresse n’est pas dans le TLB
Chercher l'information dans une page en mémoire
La page contenant la donnée est sur disque, générer une nouvelle page en mémoire
17 – 21 Octobre 2005 Formation Continue – CNRS Françoise Roch
Page Faults
Scénario générant un page fault
Il n'existe pas de table concernant la page
La page a été restockée sur disque
Chaque programme génère des "page fault"
Beaucoup de "page faults" Mémoire partagée par plusieurs processus
Mémoire requise supérieure à la mémoire réelle disponible
17 – 21 Octobre 2005 Formation Continue – CNRS Françoise Roch
Architecture Alpha 21264
Architecture RISC Software Pipelining Mémoire Hiérarchique (registre, caches,mémoire
principale) Système de prédiction de branchement Prefetching
Architecture Super-Scalaire Modification de l’ordre de l’exécution des instructions Exécution spéculative …
Optimisation du parallélisme d’instructions
17 – 21 Octobre 2005 Formation Continue – CNRS Françoise Roch
Alpha 21264 Architecture
Super-scalaire 4 chargements d’instruction par cycle 6 instructions par cycle
4 instructions entières 2 instructions en virgule flottante
1 unité non bloquante “Load/Store” 4 unités fonctionnelles entières 64 bits 1 unité fonctionnelle addition virgule flottante 32/64 bits 1 unité fonctionnelle multiplication virgule flottante 32/64
bits unité fonctionnelle SQRT en virgule flottante prefetch: charge les données dans le cache avant leur utilisation déplacement conditionnel remplace les branchements à l’intérieur des
boucles
17 – 21 Octobre 2005 Formation Continue – CNRS Françoise Roch
Mémoire hiérarchique ES45 (EV68)
Registres Le processeur utilise uniquement les données dans les
registres Temps d’accès: 2ns
Deux niveaux de caches (sur certaines machines 3 niveaux) Cache primaire (L1)
Accès par bloc (ligne de cache): 32 bytes Taille: 64KB - Temps d’accès: 2 à 3 cycles
Cache secondaire (L2) Accès par bloc : 128 bytes Taille: 16Mb Temps d’accès : 10 à 15 cycles
Mémoire principale ( taille 4GB/proc, latence: 220ns )
17 – 21 Octobre 2005 Formation Continue – CNRS Françoise Roch
Le processeur Itanium2 d’Intel
Architecture Itanium2 : Quatrième génération de processeurs 64 bit d’Intel : Itanium2
(Madison9M) EPIC: Explicit Parallel Instruction Computing Fréquence : 1.5 Ghz Puissance crête : 6 Gflops/s
1500 MHz * 2 madd/cycle 6 GFLOPS
Intel Itanium2 : L1I : 16ko; 64o/line ; 4 way L1D : write through; 16ko; 1/- cycle; 64o/line ; 4 way ;
(2ld&2st)/cycle L2U : write back; 256ko; 5/6cycle; 128o/line; 8 way; (4ldf) |
(2ldf[p]&2stf) L3U : write back; 4Mo; 12/13cycle; 128o/line ; 24 way ; 48Go/s Memory Front Side Bus (FSB) : 128o/line ; 6.4 Go/s
21-25 Octobre 2005 Formation Continue – CNRS Laurence Viry
128
FPR
egis
ters
1 ko
128
Inte
ger
Reg
iste
rs
1 ko
L1D
cac
he
16 ko
L2U
cac
he25
6 ko
L3U
cac
he
4 Mo
32 Go/s
16 Go/s 32 Go/s
32 Go/s 6.4 Go/s
2 cycles 5 cycles 12 cycles
5+1 cycles12+1cycles
16 Go/s
16 Go/sAltix™:145+ ns
Le processeurs Itanium2 ® d ’INTEL ®
Debits et latences des accès mémoire
Formation Continue – CNRS Laurence Viry
| |21 – 25 Octobre 2005
Silicon ProcessSilicon Process
180 180 nnmm 130 nm130 nm 90 nm90 nm
20022002
ItaniumItanium®® 2 2
(McKinley) (McKinley) - 900 Mhz, 3.6 Gflops, 1.5 Mo L3 cache- 1 GHz, 4Gflops, 3 Mo L3 Cache)
ItaniumItanium®® 2 2
(McKinley) (McKinley) - 900 Mhz, 3.6 Gflops, 1.5 Mo L3 cache- 1 GHz, 4Gflops, 3 Mo L3 Cache)
4GflopsMax.
Le processeurs Itanium2 ® d ’INTEL ® : Roadmap
20052005MontecitoMontecito
(Dual Core on a Die)(Dual Core on a Die)Each CoreEach Core
(>=2 GHz, >=8Gflops, (>=2 GHz, >=8Gflops, 12Mo L3 Cache)12Mo L3 Cache)
MontecitoMontecito(Dual Core on a Die)(Dual Core on a Die)
Each CoreEach Core(>=2 GHz, >=8Gflops, (>=2 GHz, >=8Gflops,
12Mo L3 Cache)12Mo L3 Cache)
>16Gflops
Low PowerLow Power
MontecitoMontecito
Dual Core Processor Dual Core Processor
Follow-onFollow-on
Low PowerLow Power
MontecitoMontecito
Dual Core Processor Dual Core Processor
Follow-onFollow-on
20032003ItaniumItanium®® 2 2(Madison)(Madison)
- 1.5 GHz, 6Gflops, 6 Mo L3 Cache - 1.3 Ghz, 5.2 Gflops, 3 Mo L3 cache
ItaniumItanium®® 2 2(Madison)(Madison)
- 1.5 GHz, 6Gflops, 6 Mo L3 Cache - 1.3 Ghz, 5.2 Gflops, 3 Mo L3 cache
>5GflopsMax.
Low Power Low Power ItaniumItanium®® 2 2 (Deerfield)(Deerfield)
- 1.0 GHz, 4Gflops, 1.5Mo L3 Cache 62 Watts- 1.4 Ghz, 4.6 Gflops, 1.5/3 Mo L3 cache
Low Power Low Power ItaniumItanium®® 2 2 (Deerfield)(Deerfield)
- 1.0 GHz, 4Gflops, 1.5Mo L3 Cache 62 Watts- 1.4 Ghz, 4.6 Gflops, 1.5/3 Mo L3 cache
ItaniumItanium®® 2 2(Madison 9M)(Madison 9M)
-1.6 GHz, 6.4Gflops, 6/9 Mo L3 Cache- 1.5 Ghz, 6 Gflops, 4 Mo L3 cache
ItaniumItanium®® 2 2(Madison 9M)(Madison 9M)
-1.6 GHz, 6.4Gflops, 6/9 Mo L3 Cache- 1.5 Ghz, 6 Gflops, 4 Mo L3 cache
Fin 04Fin 04
6.4Gflops
Low Power Low Power ItaniumItanium®® 2 2
Deerfield+ Processor Deerfield+ Processor Follow-onFollow-on
Low Power Low Power ItaniumItanium®® 2 2
Deerfield+ Processor Deerfield+ Processor Follow-onFollow-on
…
17 – 21 Octobre 2005 Formation Continue – CNRS Françoise Roch
Power5 (IBM)
Processeur Dual core Interface mémoire intégrée Fréquence d’horloge max 1.9 GHz 4 flops/cycle SMT : Simultaneous Multi Threading L1I: 64 Ko ; 2 way L1D : 32 Ko ; 4 way L2 : 1.9 Mo ; 128o line; 10 way L3 off chip : 36 Mo ; 256o line; 12 way
17 – 21 Octobre 2005 Formation Continue – CNRS Françoise Roch
Architecture du processeur power5
17 – 21 Octobre 2005 Formation Continue – CNRS Françoise Roch
POWER4 / POWER5
17 – 21 Octobre 2005 Formation Continue – CNRS Françoise Roch
Achitecture opteron d’AMD
Architecture Opteron : Première génération de processeur 64 bit d’AMD : Opteron Fréquence : 2.6 Ghz Puissance crête : 5.2 Gflops/s
2600 MHz * 2 op/cycle 5.2 GFLOPS (Pas de FMA)
Architecture Mémoire: L1I : 64ko; 64o /line 2 way
L1D : 64ko; 64o /line ; 2 way ; 3 cycle latency ; 2 op 64bit/cycle (ld,st ou combinaison des 2)
L2U : 256ko; 64o /line ; 16 way
PAS de cache L3 Memory Front Side Bus (FSB) : Fréquence du proc. : 2.6 GHz ; FSB
bandwidth : 20.8 Go/s
17 – 21 Octobre 2005 Formation Continue – CNRS Françoise Roch
Architecture OpteronLiens Hypertransport
3 liens hypertransport 6.4 Go/s par lien (3.2 Go/s dans chaque
direction)
Bi-processeurs : débit I/O max 24 Go/s
Quadri-processeurs : débit I/O max 32 Go/s
Glueless processor