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

Slides:



Advertisements
Présentations similaires
GEF 435 Principes des systèmes d’exploitation
Advertisements

Électronique de base du processeur
Le Concept du programme enregistré
Architecture de machines Le microprocesseur
TECHNOLOGIE DES ORDINATEURS
ARCHITECTURE INTERNE d’un MICROPROCESSEUR
Concepts d’architectures avancées
GEF 435 Principes des systèmes dexploitation Structure des systèmes dexploitation (Tanenbaum 1.7)
Objectif de l’exposé.
Le Concept du programme enregistré
Le jeu d ’instructions Introduction Un jeu d ’instruction classique
Mémoire & Processus Cours SE - SRC
Architecture Systèmes
Chapitre 8 : L’architecture de base des ordinateurs
Mémoire cache ou antémémoire
Architectures et systèmes à microprocesseurs – ELEC288
Démarche de résolution de problèmes
RESUMES Module II1 SOMMAIRE CYCLE 1 : Saisir – Afficher – Données
Architecture des Ordinateurs
Optimisation et parallélisation de code pour processeur à instructions SIMD multimedia François Ferrand.
LES SYSTEMES AUTOMATISES
Les systèmes multiprocesseurs Ph. Sèvre le 19/12/08.
Introduction Objectifs du cours Évaluation Références
Gei 431 Architecture des ordinateurs II – Frédéric Mailhot Systèmes Pipeline – opérations multicycles Nous avons vu jusquà maintenant comment faire un.
Systèmes Superscalaires et VLIW
Gei 431 Architecture des ordinateurs II – Frédéric Mailhot Et maintenant, où allons-nous? Après toutes les techniques vues jusquici: Que peut-on faire.
Gestion de Fichiers Tri Interne Efficace et Tri Externe.
Parallélisme des instructions
Parallélisme des instructions
Chap. 2 - Structure d’un ordinateur
L'Unité centrale (CPU) Le CPU doit être rapide (mesuré en temps de CPU) UNITE DE CONTROLE Générer les signaux de control/temps Contrôler le décodage/exécution.
Lycée ELKHAWARIZMI De SAFI
PROJET CAPS Compilation, Architecture, Processeurs Superscalaires et Spécialisées.
André Seznec Caps Team IRISA/INRIA 1 Processeurs Hautes Performances Panorama et Nouveaux Défis André Seznec IRISA/INRIA
Cours de Structure et Technologie des composants d’ordinateurs
INF3500 : Conception et implémentation de systèmes numériques Pierre Langlois Encodage du jeu d’instructions.
Un survol du language C.
3-Présentation d’un µP simple
INF3500 : Conception et implémentation de systèmes numériques Pierre Langlois Performance de circuits.
INF3500 : Conception et implémentation de systèmes numériques Pierre Langlois Modélisation VHDL de.
ARPO: architecture des processeurs superscalaires,VLIW et optimisation André Seznec et François Bodin.
Programmation Système et Réseau
PROJET CAPS Compilation, Architecture, Parallélisme et Système.
INF8505: processeurs embarqués configurables Département de génie informatique et génie logiciel Conception de processeurs – partie 2 Approches traditionnelles.
Gei 431 Architecture des ordinateurs II – Frédéric Mailhot Étude de cas Maintenant qu’on a vu les pipelines, le superscalaire, le VLIW, la gestion des.
COURS_1 JC LP MD.
Projet de Fin d’Etudes – Optimisation SSE 1/28. 1) Présentation du Stage 2) Les instructions SSE 3) Algorithme DSP Audio Conclusion 2/28 Projet de Fin.
Structures de données avancées : LH (Hachage linéaire) D. E ZEGOUR Institut National d ’Informatique.
Simulation de jeux d’instructions à hautes performances
Architecture et technologie des ordinateurs II
Un programme Algorithme permettant au processeur de s'alimenter:
PROJET CAPS Compilation, Architecture, Processeurs Superscalaires et Spécialisées.
INTRODUCTION à LA PROGRAMMATION
PROJET CAPS Compilation, Architecture, Processeurs Superscalaires et Spécialisées.
ARPO: architecture des processeurs superscalaires,VLIW et optimisation André Seznec et François Bodin.
Micro contrôleurs M. Boutemeur
IRISA/INRIA Les processeurs Alpha et ou comment Compaq espère mener la course en tête.
PROJET CAPS Compilation, Architecture, Parallélisme et Système.
Architecture et technologie des ordinateurs II
Patricia Renault UPMC 2005/2006
1 Microprocesseurs Hautes Performances André Seznec IRISA/INRIA
Création et Optimisation de Modules Audio avec les instructions SSE
Architecture et technologie des ordinateurs II
Chapitre 4 La représentation des nombres.
Chapitre 3 L’accès aux données.
Chapitre 9 Les caractères.
Architecture des ordinateurs
Formations Système Embarqué & Informatique Industrielle
ARCHITECTURE MATERIELLE D’UN SYSTEME A MICROPROCESSEUR
Systèmes à microprocesseur Les mémoires
Transcription de la présentation:

IRISA/INRIA

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

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 à à 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 : 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 R 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 R cycles sur le Pentium II 7-9 cycles sur le DEC 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 (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 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 & t=3 & & 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 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 : MIPS R2000, Sparc 1990 : IBM Power, Intel i : 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 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 , 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 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

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 :=)

IRISA/INRIA Remerciements Joel Emer Peter Bannon Shubu Mukherjee

IRISA/INRIA Et la concurrence ?

IRISA/INRIA IBM Power 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

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

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

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

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

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

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 ?

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