La présentation est en train de télécharger. S'il vous plaît, attendez

La présentation est en train de télécharger. S'il vous plaît, attendez

Analyse et Optimisation de code

Présentations similaires


Présentation au sujet: "Analyse et Optimisation de code"— Transcription de la présentation:

1 Analyse et Optimisation de code
Principes généraux - Architectures 17-21 Octobre 2005 Formation Continue - CNRS Laurence Viry

2 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” Le but de cette présentation est de mettre en évidence un certain nombre de règles et de techniques permettant d’optimiser un code sur les architectures actuelles. Certaines techniques valides pour une application vont au contraire détériorer les performances d’une autre application. Il est nécessaire d’acquérir une compréhension minimum De l’architecture des processeurs, du travail effectué par les compilateurs,…. de la façon dont un code est implémenté sur la machine, la façon dont on peut modifier cette implémentation pour améliorer les performances de ce code. D’autres techniques simples permettent d’améliorer considérablement les performances. Pour améliorer les performances d’une application, il est nécessaire de déterminer les parties du code qui ont une forte consommation CPU (outils d’analyse de performance). A cette connaissance devra s’ajouter l’analyse des causes de cette forte consommation (compteurs Hardware)… 17 – 21 Octobre 2005 Formation Continue – CNRS Françoise Roch

3 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

4 Architecture des processeurs Fré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

5 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 La vitesse d’horloge d’un processeur détermine la vitesse globale du processeur. La loi de Moore dit que les performances CPU des processeurs doublent tous les 18 mois, cette loi s’est vérifiée les 40 dernières années mais cette évolution a ses limites physiques. Un certain nombre de paramètres fixent la vitesse d’horloge. Certains calculateurs « exotics « peuvent atteindre une très bonne vitesse d’horloge mais ils consomment trop d’énergie, font trop de bruits, dissipent trop de chaleur, prennent trop de place. => Augmenter la vitesse d’horloge a ses limites pour augmenter les performances d’un processeur. Conjointement, d’autres domaines de la technologie des calculateurs ont considérablement évolués. Le coût et la taille des espaces de stockage ont évolués en suivant également des courbes exponentielles. Par contre, la latence (temps d’accès à ces mémoires) n’a pas suivi la même rapidité d’évolution. Ce déséquilibre entre les performances CPU et la mémoire a engendré de nouvelle architecture des processeurs, de la mémoire et de nouvelles technologies (parallélisme d’instructions, …) 17 – 21 Octobre 2005 Formation Continue – CNRS Françoise Roch

6 Latence : Communications processeur -DRAM
60%/année 1000 CPU Moore’s Law Performance 100 Processeur-Mémoire Performance 50%/année 10 DRAM 7%/année Cette figure montre une comparaison de l’évolution des performances du CPU et des accès mémoires.  il faudra optimiser les effets de la latence de la mémoire dans l’algorithme et l’implémentation du code d’une application. L’évolution de l’architecture des processeurs tiendra compte également de cet écart de performance. DRAM 1 1980 1981 1982 1983 1984 1985 1986 1987 1988 1989 1990 1991 1992 1993 1994 1995 1996 1997 1998 1999 2000 Time 17 – 21 Octobre 2005 Formation Continue – CNRS Françoise Roch

7 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 L’approche qui consiste à multiplier les unités fonctionnelles pour obtenir le parallélisme d’instructions est trop coûteuse. L’idée est de commencer une instructions sans attendre que la précédente soit terminée. On obtient l’exécution simultanée d’opérations sans dupliquer les composants hardware. Un tel mécanisme existe dans tous les calculateurs – CISC et RISC- mais à des degrés différents. Charge l’instruction Décode Charge les opérandes Exécute Ecriture 17 – 21 Octobre 2005 Formation Continue – CNRS Françoise Roch

8 Software Pipelining (suite)
3 instructions simultanées dans le pipe Charge l’instruction Décode Charge opérandes Exécute Ecriture Charge l’instruction Décode Charge opérandes Exécute Ecriture Charge l’instruction Décode Charge opérandes Exécute Ecriture Pipelining n’est pas aussi simple: Le retard sur une étape doit être coordonné avec celles qui suivent(accès mémoire…) Un saut à une nouvelle adresse du programme (if,…) est une cause de pénalité d’utilisation du pipelining.Il y a nécessité de vider le pipe et de réinitialiser le pipe pour les instructions indiquées par le branchement. Hélas, les instructions de branchement interviennent souvent, 5 instructions sur 10, ce qui laisse tout de même la technique performante. 3 instructions en parallèle en 7 cycles (15 cycles en séquentiel) 17 – 21 Octobre 2005 Formation Continue – CNRS Françoise Roch

9 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, t(i)=t(i)*t(i) enddo do i=1, ,2 t(i)=t(i)*t(i t(i+1)=t(i+1)*t(i+1) 17 – 21 Octobre 2005 Formation Continue – CNRS Françoise Roch

10 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

11 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

12 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

13 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 Pour diminuer le coût et pour augmenter la vitesse d’horloge, le processeur est placé sur un seul chip. Ce qui impose de réduire le jeu d’instructions et les instructions sont toutes de la m^me longueur. Les instructions sont toutes de la même longueur. Ce qui favorise la technique de pipeline. Utilisation d’instruction load/store dans lesquelles les références mémoire se font de façon explicite. Cette caractéristique est imposée pour une meilleure utilisation des pipeline. Permettre à des instructions logiques ou arithmétiques de contenir des accès mémoire imposerait des longueurs variables d’instructions et compliqueraient le pipeline. Les références mémoire peuvent prendre plus de temps que les autres instructions Minimiser l’impact de la présence de branches dans le pipeline d’instructions en utilisant des techniques de prédiction (Branch prediction). Le processeur reconnaît une instruction de branchement, consulte une table de l’historique du comportement de cette instruction à partir de laquelle il effectue une prédiction.Le schéma de prédiction d’une branche simple fournit plus de 90% de réponses correctes. Les processeurs super scalaire Unités fonctionnelles multiples qui opérent en parallèle. Gestion staique ou dynamique des instructions Statique: in-order execution, exécution dans l’ordre des instructions Dynamique : out-of-order execution Une instruction peut-être exécutée avant qu’une instruction précédente soit terminée Exécution spéculative: exécution avant que le contrôle des dépendances soient effectués. Le résultat d’une instruction pourra alors ne pas être retenu. Out-of-order et speculative instruction tend à améliorer le parallélisme d’instruction (LIP: instruction level parallélisme) 17 – 21 Octobre 2005 Formation Continue – CNRS Françoise Roch

14 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 Exécution spéculative: exécution avant que le contrôle des dépendances soient effectués. Le résultat d’une instruction pourra alors ne pas être retenu. Out-of-order et speculative instruction tend à améliorer le parallélisme d’instruction (LIP: instruction level parallélisme) 17 – 21 Octobre 2005 Formation Continue – CNRS Françoise Roch

15 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 Le principe utilisé par l’IA-64 est d’améliorer la latence et les prédictions de branches en augmentant la banade passante et d’améliorer le parallélisme d’instructions. 17 – 21 Octobre 2005 Formation Continue – CNRS Françoise Roch

16 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

17 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 » 128 bits VLIW instructions set impose l’indépendance Out-of-order microprocesseur est obligé de redéfinir les dépendances dans le code, il ne peut travailler que sur un faible nombre d’instruction. EPIC définit un moyen pour que ces dépendances mises en évidence par le compilateur soient explicitement fournies au hardware. Instruction 1 Instruction 2 Instruction 3 template 41bits 41bits 41bits 5bits 17 – 21 Octobre 2005 Formation Continue – CNRS Françoise Roch

18 É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

19 Formation Continue – CNRS Françoise Roch
Architecture Pentium4 17 – 21 Octobre 2005 Formation Continue – CNRS Françoise Roch

20 Formation Continue – CNRS Françoise Roch
Architecture Opteron 17 – 21 Octobre 2005 Formation Continue – CNRS Françoise Roch

21 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: Problèmes: Nouvelle architecture matérielle  nouvelle architecture logicielle Gros investissement initial Design du processeur Compilateurs Sortie simultanée de deux architectures concurrentes Compatibilité avec avec X86: Indispensable??? A quel prix??? 17 – 21 Octobre 2005 Formation Continue – CNRS Françoise Roch

22 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

23 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 Le compilateur est capable à un plus haut niveau que le « scheduler » d’exploiter le parallélisme d’un programme et de le rendre explicite dans le code machine  Meilleure capacité d’exploiter le parallélismede l’architecture Hardware 17 – 21 Octobre 2005 Formation Continue – CNRS Françoise Roch

24 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 IA-64 permet la combinaison d’instructions dépendantes et indépendantes, l’information sera dans les bits template, ce qui élimine l’abondance des NOPS dans les architectures VLIW standar. Augmentation du nombre de registres: « 128 général-purpose register » et 128 « floatinf-point register » Augmente la gestion des registres qui est prise en charge par le compilateur. Le traitement du parallèlisme par le compilateur (restructuration du code,…), les « predicated instructions », …permettent une plus grande utilisation des unités fonctionnelles. EPIC concet et IA-64 ont le potentiel pour améliorer de manière significative les performances, à conditions d’utiliser un compilateur performant. 17 – 21 Octobre 2005 Formation Continue – CNRS Françoise Roch

25 Architecture IA-64 Implications 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

26 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: 17 – 21 Octobre 2005 Formation Continue – CNRS Françoise Roch

27 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) Compatibilité avec le standard 32bits d’Intel. Pour pouvoir bénéficier des performances de l’architecture 64 bits, il faudra compiler en 64bits, y compris le système Inclut le contrôleur mémoire dans la puce diminue la latence des accès mémoirede 30% Le contrôleur est lié à une technologie externe, toute évolution de cette technologie peut nécessiter une évolution simultanée du processeur 17 – 21 Octobre 2005 Formation Continue – CNRS Françoise Roch

28 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

29 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

30 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 Presque toutes les mémoires sont à base de semi-conducteur Trouver un compromis entre le prix, la rapidité d’accès et la taille Deux paramètres temps Access time: temps entre la requête de lecture/écriture et l’arrivée à destination de la donnée Cycle time: temps minimum entre deux requêtes de lecture/écriture en mémoire Comme il n’a pas nécessité de rafraichir la mémoire SRAM, il n’y a pas de distinction entre « access time » et « cycle time » pour ce type de mémoire. Par contre pour avoir le temps entre deux transactions de mémoire DRAM est la somme de ces deux paramètres temps. 17 – 21 Octobre 2005 Formation Continue – CNRS Françoise Roch

31 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 Avoir un processeur rapide ne suffit pas, il faut que l’accès à la mémoire augmente en conséquence. Plus la mémoire est rapide d’accès plus elle est coûteuse => Mémoire hiérarchique (petite mémoire rapide près du processeur et mémoire de capacité plus grande à l’extérieur. Registres: La mémoire la plus rapide d’accès, la plus proche du processeur. Toute opération utilise le stockage de ses opérandes dans les registres. Il y a un nombre limité de registres. Si le processeur a besoin de plus de registres, il devra vider certains registres et stocker l’information ailleurs et charger les données utiles dans les registres disponibles. Les performances seront accrues si les données fréquemment utilisées sont dans les registres. Cache: C’est un stockage mémoire à accès rapide donc coûteuse et de petite taille situé entre les registres et la mémoire principale. Le but va être de réutiliser au maximum les données chargées dans un cache en utilisant les principes de localité spaciale et temporaire. Il faudra également tenir compte de l’organisation de ces caches. En général, on étend le principe du cache primaire à une deuxième zone mémoire moins rapide que le cache primaire mais plus rapide que la mémoire principale. Ce type de mémoire sera plus grande que le cache primaire(parce que moins coûteuse), elle se situe entre le cache primaire et la mémoire principale. 17 – 21 Octobre 2005 Formation Continue – CNRS Françoise Roch

32 Formation Continue – CNRS Laurence Viry
Mémoire hiérarchique Registres 1 ou plusieurs caches* Taille vitesse RAM : mémoire primaire Disques: mémoire secondaire CD,bande, … : mémoire tertiaire *: les caches peuvent être organisés de façon hiérarchique 21-25 Octobre 2005 Formation Continue – CNRS Laurence Viry

33 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 Organisation des caches: Un cache est divisé en ligne de cache, chacune de ces lignes contenant plusieurs mots. Lorsque le processeur a besoin d’une donnée, le cache regarde si il possède cette donnée. Si non, le cache transmet la requête à la mémoire principale. Il ne récupère pas que la seule donnée demandée mais une ligne de cache entière. Donc si le processeur demande une donnée voisine, il a une forte probabilité que le cache puisse lui fournir. Direct-mapped cache stocke chaque adresse de la mémoire à une place précise dans le cache, ce qui génère dans certains cas des conflits d’accès et des va et vient cache mémoire. Full-associative cache peut stocker la ligne de cache dans n’importe quelle partie du cache, la ligne de cache la plus anciennement consultée sera éliminée du cache. Ce type de cache est très consommateur en taille sur le chip, coût et vitesse, ils ont tendance à être de petite taille. N-Set-assocaitive cache: N direct-mapped cache côte à côte pour un seul cache. Chaque adresse correspond à une ligne particulière de cache des N direct-mapped caches. En général N=2 ou 4 (Itanium 2 N=4) 17 – 21 Octobre 2005 Formation Continue – CNRS Françoise Roch

34 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 Cache replacement Policy: C’est la méthode utilisée pour sortir du cache un ligne de cache lorsqu’un nouvelle ligne doit être chargée. Cache Write Strategy: mise à jour dans la mémoire d’une donnée qui a été modifiée dans un cache. Deux des stratégies couramment utilisées: Write back cache: modifiée dans la mémoire uniquement lorsque la ligne de cache sera remise en mémoire Write Through cache: la donnée sera immédiatement modifiée dans le cache te dans la mémoire. Le trafic mémoire pourra être considérablement réduit dans le cas « Write Back » Cache contention sur des machines SMP: Sur une machine parallèle à mémoire partagée, les processeurs se partagent la même mémoire mais ils ont leurs propres caches. Un protocol de cohérence de cache permet de s’assurer que tous les processeurs ont une vision cohérente des données. On peut avoir un « Cache Contention » quand plusieurs processeurs modifient une même ligne de cache de façon répétée. On aura alors une baisse de performance. 17 – 21 Octobre 2005 Formation Continue – CNRS Françoise Roch

35 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

36 Formation Continue – CNRS Françoise Roch
Mémoire Virtuelle Dernière couche de la hiérarchie mémoire Registres Cache L1 Cache LN Mémoire principale SWAP – 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. L’OS crée un espace d’adresses virtuelles, divisé en page, gardant les pages non nécessaire sur le disque et ne les chargeant qu’en cas de besoin. Chaque programme découple les adresses utilisées par le programme (adresses virtuelles) avec les adresses physiques . Le programme voit l’espace des adresses qui commence à zéro ce qui ne correspond pas à l’espace d’adressage physique. Ceci apporte une certaine flexibilité et donne l’impression à chaque programme d’avoir l’intégralité de la mémoire à lui seul. La mémoire du programme est divisée en PAGES, la taille d’une page dépendant de la machine. Les pages allouées ne sont pas forcément contiguës mais dépendent des besoins du programme=> optimisation des accès mémoire, minimisation des transferts disques. Page Tables: 17 – 21 Octobre 2005 Formation Continue – CNRS Françoise Roch

37 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) Espace de pagination sur le disque est la dernière partie et la moins performante de la hiérarchie mémoire à laquelle fera référence un programme. On peut considérer la relation entre mémoire principale et espace de pagination comme étant de même nature que la relation entre mémoire principale et cache. Le même type d’optimisation sera appliquée, basée sur le principe de localité. On peut exécuter des programmes qui ont besoin de plus de mémoire que la mémoire disponible sur la machine mais avec des chutes de performance dues aux accès mémoire (cache misses et TLB misses). 17 – 21 Octobre 2005 Formation Continue – CNRS Françoise Roch

38 Mémoire Virtuelle : Page
Les transferts de la mémoire virtuelle à la mémoire physique se font par pages Process Region Table Virtual Translation Page Table Physical Address Page Tables: C‘est la "page table" qui contient l'information qui permet de passer de l'adresse virtuelle connue par le programme à l'adresse physique. Chaque process a plusieurs page table associées à différentes régions comme le code objet, les données. Pour déterminer la localisation d'une variable, il faudra: Déterminer quelle "page table" est concernée Le programme connaît l'adresse virtuelle de la page table, il faut une translation supplémentaire adresse virtuelle-adresse physique. Ensuite, on récupère la donnée Virtual address Location 1000 données 17 – 21 Octobre 2005 Formation Continue – CNRS Françoise Roch

39 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 Le principe qui permet de récupérer une donnée nécessite deux translations adresse virtuelle-adresse physique, ce qui est beaucoup trop compliqué et peu performant. Le principe du cache est également appliqué aux "page table". Chaque machine moderne utilisant la mémoire virtuelle possède un cache spécial appelé "translation lookaside buffer" (TLB). L'exploration du TLB se fait en même temps que l'exécution de l'instruction. Si l'adresse de la donnée est dans le cache, l'accès sera très rapide. 17 – 21 Octobre 2005 Formation Continue – CNRS Françoise Roch

40 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

41 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 Architecture RISC: Pipelining Mémoire Hierarchique Architecture Super-scalaire: Modification de l’ordre des instructions ce qui implique que ces instructions sont exécutées aussitôt que c’est possible. Utiliser plusieurs unités fonctionnelles en cachant la latence de la mémoire. Le compilateur ne peut pas tout prendre en charge. Exécution spéculative: spéculation sur le chargement. L’instruction est exécutée même si elle ne fait pas encore partie du flot des instructions à exécuter. On verra que dans le cas des prédictions de branchement, cela permettra d’effectuer du software pipelining la ou le traitement du branchement empêchait tout parallélisme. Prédiction sur les branchements: le système de branchement ainsi que l’exécution spéculative va permettre grâce aux techniques de pipelining une utilisation optimisée du parallélisme d’instructions. Optimisation du parallélisme d’instructions 17 – 21 Octobre 2005 Formation Continue – CNRS Françoise Roch

42 Formation Continue – CNRS Françoise Roch
Alpha 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

43 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

44 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 : ko; o/line ; 4 way L1D : write through; ko; 1/- cycle; 64o/line ; 4 way ; (2ld&2st)/cycle L2U : write back; ko; 5/6cycle; 128o/line; 8 way; (4ldf) | (2ldf[p]&2stf) L3U : write back; Mo; 12/13cycle; 128o/line ; 24 way ; 48Go/s Memory Front Side Bus (FSB) : o/line ; Go/s 17 – 21 Octobre 2005 Formation Continue – CNRS Françoise Roch

45 Le processeurs Itanium2 ® d ’INTEL ®
Debits et latences des accès mémoire 2 cycles 5 cycles 12 cycles 16 ko 1 ko 4 Mo 256 ko 16 Go/s 32 Go/s 128 Integer Registers L1D cache 6.4 Go/s 32 Go/s 16 Go/s L3U cache L2U cache 1 ko 32 Go/s 128 FP Registers 16 Go/s Altix™: 145+ ns 5+1 cycles 12+1cycles 21-25 Octobre 2005 Formation Continue – CNRS Laurence Viry

46 Le processeurs Itanium2 ® d ’INTEL ® : Roadmap
4Gflops Max. >5Gflops Max. 6.4Gflops >16Gflops 2002 2003 Fin 04 2005 Itanium® 2 (McKinley) - 900 Mhz, 3.6 Gflops, Mo L3 cache - 1 GHz, 4Gflops, 3 Mo L3 Cache) Itanium® 2 (Madison) - 1.5 GHz, 6Gflops, 6 Mo L3 Cache - 1.3 Ghz, 5.2 Gflops, Mo L3 cache Itanium® 2 (Madison 9M) -1.6 GHz, 6.4Gflops, 6/9 Mo L3 Cache - 1.5 Ghz, 6 Gflops, Mo L3 cache Montecito (Dual Core on a Die) Each Core (>=2 GHz, >=8Gflops, 12Mo L3 Cache) Low Power Itanium® 2 (Deerfield) - 1.0 GHz, 4Gflops, Mo L3 Cache Watts - 1.4 Ghz, 4.6 Gflops, 1.5/3 Mo L3 cache Low Power Itanium® 2 Deerfield+ Processor Follow-on Low Power Montecito Dual Core Processor Follow-on Silicon Process 180 nm 130 nm 90 nm 21 – 25 Octobre 2005 Formation Continue – CNRS Laurence Viry

47 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 PSeries 690 est construit à partir de POWER4 Multi-chip qui contiennent 4 power4 chips. Power4 Cache Power4 L1 Cache: 64KB direct-mapped L1 instruction cache 32KB two-way set associative L1 data cache Chacun ayant des lignes de caches de 128 bytes utilisant une police de replacement de type round-robin. Mise à jour dans L2 de toute donnée modifiée dans L1 Power4 L2 Cache: 1440 Unified L2 cache partagé par les deux processeurs sur le chip. Power4 L3 Cache: 32MB 8 way set associative caches qui sont combinés par paires ou quadruplets pour fournir un cache de 64Mb ou 128MB.. Power4 Hardware Data Prefetch…. Unités fonctionnelles du Power4 17 – 21 Octobre 2005 Formation Continue – CNRS Françoise Roch

48 Architecture du processeur power5
17 – 21 Octobre 2005 Formation Continue – CNRS Françoise Roch

49 Formation Continue – CNRS Françoise Roch
POWER4 / POWER5 17 – 21 Octobre 2005 Formation Continue – CNRS Françoise Roch

50 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 : ko; 64o /line 2 way L1D : ko; 64o /line ; 2 way ; 3 cycle latency ; 2 op 64bit/cycle (ld,st ou combinaison des 2) L2U : ko; 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

51 Architecture Opteron 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 17 – 21 Octobre 2005 Formation Continue – CNRS Françoise Roch


Télécharger ppt "Analyse et Optimisation de code"

Présentations similaires


Annonces Google