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

IRISA/INRIA. Processeurs Hautes Performances Panorama et Nouveaux Défis André Seznec IRISA/INRIA

Présentations similaires


Présentation au sujet: "IRISA/INRIA. Processeurs Hautes Performances Panorama et Nouveaux Défis André Seznec IRISA/INRIA"— Transcription de la présentation:

1 IRISA/INRIA

2 Processeurs Hautes Performances Panorama et Nouveaux Défis André Seznec IRISA/INRIA http://www.irisa.fr/caps

3 IRISA/INRIA Plan Quelques données 32 ou 64 bits Le pipeline Le superscalaire La prédiction de branchement Les caches Quel jeu d'instruction Le Pentium II: mais que reste-t-il au RISC Directions de la recherche Tout ce dont je n'ai pas parlé Quelques repères (1998) Fréquence : 300 à 700 Mhz Durée d'une addition entière 64 bits : 1 cycle Durée d'une opération flottante : 3 cycles Lecture/écriture d'un mot dans un registre : 1 cycle Lecture/écriture d'un mot dans un cache primaire : 1 cycle Quelques repères (1998) L'intégration : Transition de 0.35 à 0.25 5 à 10 millions de transistors de logique Le reste en mémoire cache: jusqu'à 100 millions de transistors 20 à 60 Watts 400 à 600 broches Quelques repères (1998) Processeurs x86 pour PC: Haut de gamme: Bas de gamme: Haut de gamme bas de gamme : 2 ans La mémoire: DRAM : 2 le Mbyte, divisé par 10 en 2 ans SRAM : 50 le Mbyte (133 Mhz) Compatibilité binaire Une donnée économique : 300 000 000 de PCs ! un nouveau jeu d'instructions: RISQUÉ !! Le monde change : Les processeurs enfouis, le multimédia l'IA 64 !! Architecture 32 ou 64 bits Architecture 32 bits : l'adresse virtuelle est de 32 bits. ex : IBM Power2, PowerPC 60x, Intel Pentium et Pentium II 1992 Architecture 64 bits : l'adresse virtuelle est de 64 bits. MIPS R4000, DEC Alpha, Ultrasparc, PowerPC620 Faux 64 bits : 40 bits sur le MIPS R10000 43 bits sur les DEC 21x64 Applications : Les bases de données La grande simulation numérique Les machines multiprocesseurs En 2005: les jeux ? Word ? LE MOUVEMENT EST INEXORABLE: x86 la rupture? Le problème : 5-10 millions de transistors de logique de la mémoire: peut- être 100 millions de transistors Qu'en faire pour obtenir la performance ? Aujourd'hui: Le pipeline L'exécution superscalaire La prédiction de branchement Les caches Avec quel jeu d'instruction ? Le pipeline 1 cycle = 1 opération ALU TENDANCE LOURDE : pipeline profond Plus on stresse l'horloge, moins on peut en faire en un cycle. Plus on veut exécuter d'instructions en parallèle, plus complexe est le contro^le 9 cycles sur l'UltraSparc 5-7 cycles sur le MIPS R10000 12 cycles sur le Pentium II 7-9 cycles sur le DEC 21264 6-8 cycles sur l'IBM Power 604 Les processeurs superscalaires Principes : Lancer plusieurs instructions par cycle, le droit de lancer les instructions est géré à l'exécution Avantages : Compacité du code Compatibilité binaire TOUS LES PROCESSEURS SONT SUPERSCALAIRES. superscalaire naturel : les unités fonctionnelles existantes dans les microprocesseurs ne sont pas dupliquées ALU Unité flottante Accès à la mémoire Unité de séquencement Exemples : DEC 21064, IBM Power, Power601, MIPS R5000 Certaines unités fonctionnelles dupliquées : TI SuperSparc : 2 ALUs MIPS R8000, IBM Power2 : 2 opérateurs flottants, 2 accès au cache + tous les processeurs "high-end" annoncés après 1995 Superscalaire : les problèmes Parallélisme d'instructions limité : 3 à 8 instructions par cycle Le fichier de registres : le nombre de ports augmentent chemin critique La fourniture des instructions aux UFs La gestion des dépendances de données Les branchements. Un superscalaire synchrone : le DEC 21164 (fin 1994) figure=/arch_dd/seznec /rapportmicro1995/figu res/dec_3pipinst.eps,w idth=15cm figure=/arch_dd/seznec /rapportmicro1995/figu res/dec_pipinstr.eps,w idth=15cm Un superscalaire synchrone : le DEC 21164 700 Mhz : privéligie l'horloge Lecture de 4 instructions : alignées Décodage Affectation des unités fonctionnelles Gestion des dépendances : lancement dans l'ordre Nombreuses restrictions : Groupes d'instructions alignés Lancement dans l'ordre Pas de refonte de blocs Exécution dans le désordre MIPS R10000, PowerPC604, HP8xxx, Intel Pentium II,.. Principe : exécuter les instructions dès que possible : opérandes disponibles unités fonctionnelles disponibles Les pbs à résoudre : La fourniture des instructions La gestion des dépendances de données La gestion des branchements Les interruptions Exécution dans le désordre Principe : avoir une grande fenêtre d'instructions exécutables en avance, pour pouvoir choisir des instructions exécutables Le séquencement consiste à : Lire les instructions en // Marquer les dépendances Dispatcher vers les unités fonctionnelles La gestion des dépendances prend de la place et du temps : pipeline profond Renommage de registres : ou comment enlever les fausses dépendances Aléas WAW et WAR sur les registres peuvent être évitées par renommage dynamique des registres. figure=/arch_dd/seznec /rapportmicro1995/figu res/power_exrenom.eps, width=16cm Doublement des écritures par les lectures sur la mémoire (1) pour exécuter une écriture sur la mémoire, on a besoin de la donnée à écrire en dehors de toute information, toute lecture mémoire est potentiellement dépendante de toute écriture mémoire précédente Solution (provisoire): Calcul des adresses dans l'ordre du programme Dépassement des écritures par les lectures avec détection des aléas Doublement des écritures par les lectures sur la mémoire (2) Solution (actuelle): Exécution optimiste dans le désordre Réparation si dépendence existe Pb coût de la réparation Un domaine de recherche actif: La prédiction de dépendences sur la mémoire Éviter le coût de la réparation Court-circuiter la mémoire: tabularl c l c.., r1 & t=1 &.., r1 & t=1 st r1, @X & t=3 & & ld @X, r5 & t=5 & & add r5,.. & t=6 & add r1,.. & t=2 tabular Moshovos et Sohi, Micro'30, décembre 1997 Les branchements 15 à 30 des instructions sont des branchements. La cible et la direction d'un branchement sont connues très tard dans le pipeline : Cycle 7 sur le DEC 21264 Cycle 11 sur l'Intel Pentium II6 Au plus to^t !! prédiction de branchement de ne pas perdre (toujours) ces cycles. Le jeu en vaut la chandelle ! PREDICTION DE BRANCHEMENT DYNAMIQUE Principe : Garder une historique des derniers passages Utiliser cette historique pour anticiper le branchement Implémentation : Une table lue en même temps que les instructions : Historique (Branch History Table) Cibles (Branch Target Buffer) + Return Stack À venir: prédiction des branchements indirects PREDICTION DE BRANCHEMENT Branchements conditionnels: Plus important de prédire la direction que la cible Schémas de prédiction de plus en plus complexes: adresse + historique des derniers branchements (global ou local) prédicteurs hybrides.. Pb des interférences sur les tables de prédictions Michaud et al., Sprangle et al, ISCA 1997, Lee et al, Micro 30, 1997 Branchements inconditionnels: prédiction des branchements indirects: Return Stack adresse + historique: Chang et al. ISCA 1997 PREDICTION DE BRANCHEMENT : utilisation Schémas : 1992: DEC 21064, schéma à 1 bit 1993: Pentium, schéma à 2 bits 1995: PentiumPro, Two-level adaptative branch prediction 1997: DEC 21264, prédicteur hybride Tables : DEC 21064: recalcul de la cible Pentium: Branch Target Buffer DEC 21264, Pentium II: BTB + Return Stack Prédiction de branchement : tendance générale Schémas de plus en plus complexes Découplage de la prédiction de l'adresse et de la direction Pile de retour dans les processeurs CMOV Support dans les jeux d'instructions pour l'éxécution spéculative IL EST NORMAL DE CONSACRER AUTANT DE SILICIUM A LA PREDICTION DE BRANCHEMENT QU'AUX CACHES PRIMAIRES. Savoir défaire Avec exécution dans le désordre, on doit pouvoir "défaire" : Fausse prédiction de branchement Fausse anticipation d'indépendence Interruption, exception Une solution : Une copie du fichier de registres est mise a jour dans l'ordre du programme Les écritures en mémoire doivent attendre leur tour De l'importance des caches Exemple : 4 instructions/cycle, 1 accès mémoire par cycle 10 cycles de penalité pour cache de second niveau 50 cycles pour la mémoire 2 de défauts d'instructions L1 4 de défauts données L1 1 référence sur 4 en défaut sur L2 Pour exécuter 100 instructions : cycles 1.08 inst/cycle Sauf que.. Les caches primaires sont non-bloquants Le cache secondaire est pipeliné La mémoire est pipelinée Caches primaires : tendance générale Le temps de lecture ou d'écriture est 1 cycle : le cache primaire restera petit Le cache primaire supporte plusieurs accès par cycle : le cache primaire restera petit Le cache primaire est non bloquant : en cas de défaut, seules les instructions dépendantes sont retardées L'accès au cache secondaire est pipeliné. La taille des blocs dans le cache est petite : aujourd'hui 32 bytes, devrait diminuer à 16 bytes Caches secondaires : tendance générale Ils deviennent obligatoires ! Généralisation on-chip Accès pipeliné : transactions imbriquées Latence d'accès très courte : 5-7 cycles Temps de cycle : 1-2 cycles Bus 128 bits La contention sur le cache secondaire devient un goulot d'étranglement Quel jeu d'instructions ? La saga RISC : 1980 : Patterson et Ditzel formalisent le concept 1982 : IBM 801, RISC I et RISC II 1987-88 : MIPS R2000, Sparc 1990 : IBM Power, Intel i860 1992-95 : DEC Alpha, TI Supersparc, MIPS R4000, R8000 et R10000, HP8000, Ultrasparc,.. Intel xxx86 fait de la résistance ! Jeux d'instructions des processeurs RISC Principes communs : Une seule taille d'instruction : 32 bits simplifie le décodage et le calcul de l'anticipation de l'adresse suivante Architecture load/store : pas d'opérations avec opérandes ou résultat en mémoire Modes d'adressage simples : basé et indexé Instructions simples registre-registre : opérandes dans les registres et résultat dans les registres Avantage : se pipeline bien Instructions d'accès à la mémoire Formats accédés : En général, de l'octet au mot de 32 ou 64 bits ALIGNE Sur le DEC Alpha, mots de 32 ou 64 bits (erreur réparée sur 21164AA) tabularlll adressage & reg & Base & 2 Read +1 Write & Alpha, MIPS Indexe & 3 Read + 1 Write & Sparc preincremente& 3 Read + 2 Write & PowerPC tabular Instructions complexes Multiply-add flottant (PowerPC, MIPS IV) Visual Instruction Set: UltraSparc CMOV: Alpha, Sparc 9, MIPS IV, PentiumPro Branch and Count: PowerPC Support à la prédiction de branchement : Sparc 9, Alpha Le Pentium II La revanche du CISC Les difficultés liées au jeu d'instructions: Taille d'instructions variables (1 à 15 bytes) Plusieurs occupations successives d'une même ressource Nombre d'itérations inconnu sur certaines instructions Temps d'exécution imprévisible pour certaines instructions Pentium II Solution adoptée Une constation : les jeux d'instruction RISC sont plus simples à pipeliner et exécuter en parallèle La solution : exécuter du "code " RISC ! Comment ? Le décodage des instructions est remplacée par une traduction en pseudo-code RISC Pentium II Exemple : MEM + REG - - MEM - 4 ops (RISC- like) La plupart des instructions sont traduites en 1 à 4 ops. - traduites en un cycle instructions ne pouvant pas être traduites en un nombre fixé de op (boucles, instruction flottantes transcendantales,..) : traduites en plusieurs cycles 3 traducteurs en parallèles (1 complexe + 2 simples) Pentium II Les ops sont exécutées dans le désordre: renommage de registres stations de réservations.. Buffer de réordonnancement Jusqu'à 5 ops par cycles. Mais que reste-t-il au RISC Une moins grande complexité d'intégration : 4.5 million transistors de logique - 2.3 pour le MIPS R10000 Un pipeline moins long : la phase de traduction des instructions Un jeu d'instruction mieux adapté : plus de registres entiers et flottants. - plus facile d'optimiser pour un compilateur. Jeux d'instructions:Et maintenant ? CISC obsolète: il l'était déjà en 1985 !! Les jeux d'instruction RISC actuels ne sont pas adaptés à l'ILP : Détection des dépendances à l'exécution Aucun support pour l'exécution spéculative Trop peu de registres pour le compilateur Ratio information/taille de l'instruction faible IA-64 (1) EPIC: Explicitely Parallel Instruction Computing Héritier du VLIW Parallélisme explicite Grand nombre de registres (128) Support pour l'exécution spéculative 3 instructions sur 128 bits Exécution dans l'ordre Avantages: simplicité du contro^le, horloge IA-64 (2) Les questions: Expansion de code: 4/3 plus exécution spéculative !! La qualité de la compilation ? L'utilisation des unités fonctionnelles ? Exécution dans le désordre ? Prédictions de valeurs, de dépendances, de threads ? Microarchitecture: le futur immédiat 4 8 instructions décodées par cycles Exécution dans le désordre Pipeline de séquencement très long Caches premier niveau multiport, non- bloquants, accédés en un cycle Caches second niveau pipeliné (sur le composant) Prédiction de branchement de plus en plus sophistiquée Support multiprocesseur sur le composant Microarchitecture: les directions de recherches Que faire avec un milliard de transistors ou plus? IRAM: le processeur et sa mémoire Un multiprocesseur à mémoire partagée Un monoprocesseur + exécution spéculative Un processeur multiflot simultané multiflot simultané + exécution spéculative + speculative multithreading IRAM le processeur et sa mémoire sur un même composant: bande passante mémoire énorme coût limité Une fausse bonne idée: Consommation mémoire des applications augmentent. Extensibilité Peut être la solution pour certaines applications enfouies Un multiprocesseur à mémoire partagée Peut-être la solution, mais.. Ou` sont les applications? La bande passsante sur la mémoire? Et la performance sur une application? Manquons-nous d'imagination à ce point? Un monoprocesseur + exécution spéculative Avant 1996: Parallélisme d'instructions limité par: Le graphe data-flow des dépendances du programme La bande passante de chargement d'instructions La précision de la prédiction de branchements L'ILP exploitable ? 5 instructions ? Un monoprocesseur + exécution spéculative En 1996-97, introduction de: La prédiction de valeurs, Lipasti et al, ASPLOS Oct. 96 La prédiction de dépendences, Moshovos et al., Micro Dec. 97 Estimation de confiance, Jacobsen et al., Micro Dec. 96 Multiple-block ahead branch prediction, Seznec et al., ASPLOS Oct. 96 et Trace Cache, Rotenberg et al, Micro Dec. 96 + Speculative Multithreading, 4 articles à HPCA en Feb. 98 ! L'ILP exploitable ? 10 ? 20 ? 100? Multiflot simultané Idée: partage des ressources d'un processeur superscalaire entre plusieurs processus + Un processus: Performance d'un monoprocesseur + Plusieurs processus: Partage des ressources, moins d'instructions exécutées spéculativement - Contention sur les caches Surcoût limité par rapport à un processeur superscalaire Tullsen et al ISCA 95, ISCA 96 Hily, thèse 97 Monoprocesseur + Multiflot simultané + speculative multithreading Prédiction de branchement: l'instruction suivante Speculative multithreading: prédire (anticiper) la tâche suivante Plusieurs itérations d'une même boucle Le retour d'une procédure.. Recherches encore balbutiantes.. Boule de cristal Le processeur du PC en 2008: Jeu d'instruction x86+: extension pour mode + de 32 bits Support multiflot simultané Exécution dans le désordre Instruction fetch aggressif (2 à 4 basic blocks par cycle par flot) Prédiction de dépendences aggressif Support à la prédiction de valeurs (limité) Speculative multithreading limité LA QUESTION Saura-t-on maitriser la complexité du design? Ce dont je n'ai pas parlé La mémoire principale Les bus systèmes Les MMUs Les instructions multimédia Le support multiprocesseur Les optimisations logicielles La stratégie des constructeurs.. ou comment Compaq espère mener la course en tête

4 IRISA/INRIA Avertissement J ’ai travaillé pendant 1 an avec le groupe Alpha –peut-être un peu biaisé :=) –j ’espère avoir gardé l ’esprit critique :=) N ’attendez pas de grandes révélations: –j ’ai signé un NDA :=)

5 IRISA/INRIA Remerciements Joel Emer Peter Bannon Shubu Mukherjee

6 IRISA/INRIA Et la concurrence ?

7 IRISA/INRIA IBM Power 4 2001 2 processeurs sur un composant –superscalaire 4 inst/cycles 4 composants sur un MCM –bande passante ENORME sur le MCM Ne cherche pas la performance ultime sur un processus

8 IRISA/INRIA SUN UltraSparc 3 –2000 –4 voies superscalaire –Exécution dans l ’ordre – 600 Mhz (!!) en 0.25  UltraSparc 5 –« rumored » SMT out-of-order

9 IRISA/INRIA IA 64 nouveau jeu d’ínstructions Intel/HP 64 bits Adopté par HP, SGI, IBM, Compaq,.. Processeur Itanium pour 2ieme moitié de 2000

10 IRISA/INRIA IA 64 (2) De bonnes idées: –128 registres généraux, 128 registres flottants, 64 registres de prédicats Des moins bonnes: –fenêtres de registres –registres glissants –pas d ’adressage basé –Explicitly Parallel Instruction set Computing

11 IRISA/INRIA Itanium Exécution dans l ’ordre 2 groupes de 3 instructions par cycle 800 Mhz (?) en 0.18 

12 IRISA/INRIA x86 aujourd’hui Amd Athlon et Intel Pentium –1 Ghz !!! En mars 2000 –Excellentes performances en entier –Pauvres sur le flottant –Pas franchement adapté au multiprocessing

13 IRISA/INRIA x86 demain Intel Willamette 09/00 ? –1.5 Ghz !!! –ALUs double pumped !! –Pipeline de 20 cycles ?! Amd Sledgehammer –x86 étendu à 64 bits –fin 2001 ?

14 IRISA/INRIA Conclusion Les processeurs Alpha devraient être dans la course pour le haut de gamme (au moins pour quelques années) La concurrence: – IBM Power 4 –les processeurs x86


Télécharger ppt "IRISA/INRIA. Processeurs Hautes Performances Panorama et Nouveaux Défis André Seznec IRISA/INRIA"

Présentations similaires


Annonces Google