Processeurs Hautes Performances Panorama et Nouveaux Défis André Seznec IRISA/INRIA http://www.irisa.fr/caps 1 André Seznec Caps Team IRISA/INRIA Microprocesseurs Hautes Performances Plan Quelques données en 2000 Quel jeu d'instructions Le pipeline Le parallélisme d’instructions L’exécution spéculative La hiérarchie mémoire Le parallélisme de processus 2 André Seznec Caps Team Irisa Microprocesseurs Hautes Performances Quelques repères (2000) Fréquence : 400 Mhz à 1 Ghz Durée d'une opération ALU: 1 cycle Durée d'une opération flottante : 3 cycles Lecture/écriture dans un registre : 1 cycle souvent un chemin critique ... Lecture/écriture du cache L1: 1-2 cycles dilemme taille-associativité-temps d ’accès 3 André Seznec Caps Team Irisa Microprocesseurs Hautes Performances Quelques repères (2000) L'intégration : 0.25m, 0.18m, 0.125m (2001) 10 à 20 millions de transistors de logique Le reste en mémoire cache: jusqu'à 100 millions de transistors 20 à 60 Watts > 100 W bientôt 400 à 600 broches > 1000 bientôt 4 André Seznec Caps Team Irisa Microprocesseurs Hautes Performances Quelques repères (sept 2000) Processeurs x86 pour PC: bas de gamme: 500 Mhz, <100 $ haut de gamme: 1,1 Ghz, 700 $ La mémoire DRAM : 1$ le Mbyte La mémoire SRAM : 50$ le Mbyte 5 André Seznec Caps Team Irisa Microprocesseurs Hautes Performances Compatibilité binaire Une donnée économique : 300 000 000 de PCs ! un nouveau jeu d'instructions: RISQUÉ !! Le monde change (peut-être): les processeurs enfouis, le multimédia l'IA 64 arrive 6 André Seznec Caps Team Irisa Microprocesseurs Hautes Performances Architecture 32 ou 64 bits Architecture 32 bits: l'adresse virtuelle est de 32 bits PowerPC, x86, Architecture 64 bits : l'adresse virtuelle est de 64 bits. MIPS III, Alpha, Ultrasparc, HP-PA 2.x, IA64 En 2005: les jeux ? Word ? LE MOUVEMENT EST INEXORABLE: x86 7 la rupture? André Seznec Caps Team Irisa Microprocesseurs Hautes Performances Quel jeu d'instructions ? CISC: x86 RISC: Sparc, Mips, Alpha, PowerPC, HP-PA EPIC: IA-64 est-ce que c’est important ? 8 André Seznec Caps Team Irisa Microprocesseurs Hautes Performances Les jeux d’instructions processeurs RISC Une seule taille d'instruction : 32 bits simplifie le décodage adresse suivante Architecture load/store Modes d'adressage simples : basé et indexé Instructions simples registre-registre Avantage : se pipeline bien 9 André Seznec Caps Team Irisa Microprocesseurs Hautes Performances RISC (2) registres généraux + registres flottants accès à la mémoire: de l'octet au mot de 64 bits ALIGNE support limité à l’exécution spéculative: CMOV 10 André Seznec Caps Team Irisa Microprocesseurs Hautes Performances Le jeu d’instructions CISC x86 taille d’instruction variable opérandes en mémoire ou en registres code destructeur: on écrit l’un des opérandes durée de certaines opérations imprévisibles 11 André Seznec Caps Team Irisa Microprocesseurs Hautes Performances Le jeu d’instruction EPIC IA64 EPIC IA64 = RISC + plus de registres (128 entiers, 128 flottants) + 3 instructions codées en 128 bits + 64 registres de prédicats + dépendances gérées par le matériel + (?) Advanced Loads Idée: le compilateur gère le parallélisme d’instructions 12 André Seznec Caps Team Irisa Microprocesseurs Hautes Performances IA 64 L’angoisse de la page blanche !? -Support matériel au pipeline logiciel • Rotating registers • Gestion de boucle -Fenêtres de registres: à taille variable! -Pas d’adressage basé -adressage post-incrémenté - (?) Advanced Loads 13 André Seznec Caps Team Irisa Microprocesseurs Hautes Performances ISA: est-ce important ? 32 ou 64 bits: vers l’abandon (ou la mutation !) d’x86 Les performances: et x86 ? :=) en flottant !! à technologie égale ? 14 André Seznec Caps Team Irisa Microprocesseurs Hautes Performances ISA: est-ce important (2) ? x86: traduction en mOpérations 4 cycles perdus ! Ou utilisation d’un trace cache x86 pas assez de registres flottants Alpha 21264: 2 opérandes 1 résultat le + performant des RISCs Itanium: l ’IA 64 dans l’ordre 800 Mhz en 0.18 m (pas encore disponible !) Alpha 15 21164 700 Mhz 0.35m (1997) André Seznec Caps Team Irisa Microprocesseurs Hautes Performances Et alors ? x86: + base installée, +poids d’Intel, « doit» monter à 64 bits IA64: + support à l ’exécution spéculative, +poids d’Intel Alpha: + le plus « clean », -stratégie de Compaq Sparc: = jeu d ’instructions, + SUN Power(PC): complexe, =IBM et Motorola 16 André Seznec Caps Team Irisa Microprocesseurs Hautes Performances L’angoisse de l’architecte 400 mm2 de silicium 3 générations de technologie en avant que faire pour obtenir les performances ? Pipeline Parallélisme d’instruction L’exécution spéculative La hiérarchie mémoire Le parallélisme de processus 17 André Seznec Caps Team Irisa Microprocesseurs Hautes Performances Le pipeline: de plus en plus profond Plus on stresse l'horloge, moins on en fait en un cycle. 1 cycle = traversée d’une ALU + rebouclage Communications intra-CPU de + en + longues: plusieurs cycles pour traverser le composant Le contrôle est de + en + complexe: plus d’instructions en // plus de spéculation 18 André Seznec Caps Team Irisa Microprocesseurs Hautes Performances Quelques profondeurs de pipeline 12-14 cycles sur l’Intel Pentium III 10-12 cycles sur l’AMD Athlon 7-9 cycles sur l’Alpha 21264 9 cycles sur l’UltraSparc 10 cycles sur l’Itanium 20 cycles sur Willlamette Et ça ne va pas s’améliorer !! 19 André Seznec Caps Team Irisa Microprocesseurs Hautes Performances Le //isme d’instructions Superscalaire: le droit de lancer les instructions en // est géré par matériel à l’exécution Compatibilité binaire d’une génération sur l ’autre TOUS LES PROCESSEURS SONT SUPERSCALAIRES 20 André Seznec Caps Team Irisa Microprocesseurs Hautes Performances Le degré superscalaire Difficile à définir: « performance qu’on est certain de ne pas dépasser » 4 inst / cycles sur presque tous les processeurs existants 6 inst / cycles sur Itanium 8 inst / cycles sur le (futur) Alpha 21464 16 -32 sur Alpha 21964 ?? En 2012 ? :=) 21 André Seznec Caps Team Irisa Microprocesseurs Hautes Performances 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 dépendances de données Les branchements. 22 André Seznec Caps Team Irisa Microprocesseurs Hautes Performances Exécution dans l’ordre ou dans le désordre Respecter l’ordre du programme ou non: Ah! Si toutes les latences étaient connues statiquement,… Les « partisans » de l ’ordre: UltraSparc 3, Itanium Le compilateur doit faire le travail Les « partisans » du désordre: Alpha 21264, Pentium III, Athlon, Power (PC), HP-PA 8500 23 André Seznec Caps Team Irisa Microprocesseurs Hautes Performances Pourquoi l’exécution dans l’ordre simple à mettre en œuvre moins de transistors moins de temps de développement horloge rapide (discutable) pipeline moins profond le compilateur « voit » tout: la micro-architecture le programme 24 André Seznec Caps Team Irisa Microprocesseurs Hautes Performances Pourquoi l’exécution dans le désordre l ’ILP statique est limité dans les codes non réguliers le compilateur ne « voit » pas tout: latences inconnues à la compilation (in)dépendances inconnues à la compilation pas besoin de recompiler hum !! 25 André Seznec Caps Team Irisa Microprocesseurs Hautes Performances Exécution dans le désordre (1) Principe : exécuter les instructions dès que : opérandes disponibles et unités fonctionnelles disponibles Mise en œuvre : une grande fenêtre d'instructions où on choisit les instructions exécutables 26 André Seznec Caps Team Irisa Microprocesseurs Hautes Performances Exécution dans le désordre (2) Le séquencement consiste à : Lire les instructions en // Marquer les dépendances Renommer les registres Dispatcher vers les unités fonctionnelles Attendre .. La gestion des dépendances prend de la place et du temps : pipeline profond 27 André Seznec Caps Team Irisa Microprocesseurs Hautes Performances 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. 28 André Seznec Caps Team Irisa Microprocesseurs Hautes Performances Dépendances mémoires 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 29 André Seznec Caps Team Irisa Microprocesseurs Hautes Performances Dépendances mémoires (2) Solution (actuelle): Exécution optimiste dans le désordre Réparation si la dépendance existe Pb: coût de la réparation Prochaine génération: la prédiction de dépendances sur la mémoire Moshovos et Sohi, Micro'30, décembre 1997 Chrysos et Emer, ISCA ’26, juin 1998 30 André Seznec Caps Team Irisa Microprocesseurs Hautes Performances Les dépendances de contrôle 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 II Cycle 18 sur Willamette Pas question de perdre tous ces cycles ! 31 André Seznec Caps Team Irisa Microprocesseurs Hautes Performances Prédiction de branchement dynamique Garder un historique des derniers passages et utiliser cet historique pour anticiper le branchement Mise en œuvre: une table lue en même temps que le cache d’instructions On prédit: la cible et la direction des branchements les retours de procédures les branchements indirects 32 André Seznec Caps Team Irisa Microprocesseurs Hautes Performances 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 • schémas hybrides 33 André Seznec Caps Team Irisa Microprocesseurs Hautes Performances Prédiction de branchement 1992: DEC 21064, schéma à 1 bit 1993: Pentium, schéma à 2 bits 1995: PentiumPro, historique local 1998: DEC 21264, prédicteur hybride 34 André Seznec Caps Team Irisa Microprocesseurs Hautes Performances 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 pour les procédures Support dans les jeux d'instructions pour l’exécution spéculative: CMOV prédicats de l ’IA64 35 André Seznec Caps Team Irisa Microprocesseurs Hautes Performances Exécution dans le désordre: Savoir « défaire » Mauvaise prédiction de branchement Mauvaise anticipation d'indépendance Interruption, exception Valider dans l’ordre du programme Ne rien faire de définitif dans le désordre 36 André Seznec Caps Team Irisa Microprocesseurs Hautes Performances Savoir « défaire » Une copie du fichier de registres est mise à jour dans l'ordre du programme ou Une <<carte>> registres logiques-registres physiques est sauvegardée Les écritures en mémoire sont faites à la validation 37 André Seznec Caps Team Irisa Microprocesseurs Hautes Performances De l'importance de la hiérarchie mémoire Exemple : 4 instructions/cycle, 1 accès mémoire par cycle 10 cycles de penalité sur le L2 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 400 instructions : 395 cycles 38 André Seznec Caps Team Irisa Microprocesseurs Hautes Performances Sauf que .. Les caches primaires sont non-bloquants Le cache secondaire est pipeliné La mémoire est pipelinée Préchargement matériel et logiciel Latence et débit sont importants 39 André Seznec Caps Team Irisa Microprocesseurs Hautes Performances Caches primaires: tendance générale 1-2 cycles pour lecture ou écriture multiples accès par cycle non-bloquant associatif faible degré Restera petit ! Une exception: HP-PA 8500 40 André Seznec Caps Team Irisa Microprocesseurs Hautes Performances Caches secondaires : tendance générale Il n’est plus question de s’en passer ! Généralisation on-chip ou sur le module Accès pipeliné latence courte : 7-12 cycles bus 128 bits, devrait s’élargir temps de cycle: 1-3 cycles processeurs La contention sur le cache L2 devient un goulot d’étranglement 41 André Seznec Caps Team Irisa Microprocesseurs Hautes Performances La mémoire principale Loin, trop loin du processeur: plusieurs centaines d’instructions Vers un abandon du modèle classique ? mémoire sur le bus système: • cohérence par snooping bus mémoire + bus système • cohérence par directory 42 André Seznec Caps Team Irisa Microprocesseurs Hautes Performances la mémoire principale sur le bus système 43 André Seznec Caps Team Irisa Microprocesseurs Hautes Performances Mémoire principale en connexion directe 44 André Seznec Caps Team Irisa Microprocesseurs Hautes Performances Que faire avec un milliard de transistors ou plus? IRAM: le processeur et sa mémoire monoprocesseur + exécution spéculative Le parallélisme de processus: multiprocesseur à mémoire partagée processeur SMT 45 André Seznec Caps Team Irisa Microprocesseurs Hautes Performances IRAM le processeur et sa mémoire sur un même composant bande passante mémoire énorme à un coût limité Une fausse bonne idée Consommation mémoire des applications augmente Extensibilité ? La solution pour certaines applications enfouies 46 André Seznec Caps Team Irisa Microprocesseurs Hautes Performances Un monoprocesseur + exécution spéculative superscalaire 16 ou 32 voies hyperspéculation: branchements, dépendances, données .. Les défis: la qualité de la prédiction les temps de communication sur le composant la contention sur les structures: • caches , registres, ... 47 André Seznec Caps Team Irisa Microprocesseurs Hautes Performances Le //isme de processus: à la croisée des chemins Le parallélisme « gros grain » arrive sur le composant Un multiprocesseur on-chip ? • IBM Power 4 ( fin 2001) Simultaneous Multithreading ? • Compaq Alpha 21464 ( 2003) 48 André Seznec Caps Team Irisa Microprocesseurs Hautes Performances Un multiprocesseur on-chip Peut-être la solution, mais .. Où sont les applications? La bande passante sur la mémoire? Et la performance sur un processus ? Manquons-nous d'imagination à ce point? 49 André Seznec Caps Team Irisa Microprocesseurs Hautes Performances multiprocesseur on-chip: IBM Power 4 (2001) Marché visé: les serveurs 2 processeurs superscalaire 4 voies sur un composant: cache secondaire partagé 4 composants sur un même MCM (multichip module) bande passante énorme sur le MCM 50 André Seznec Caps Team Irisa Microprocesseurs Hautes Performances La vision du programmeur 51 André Seznec Caps Team Irisa Microprocesseurs Hautes Performances Simultaneous Multithreading (SMT) Les UFs d’un processeur sont sous-utilisées SMT: Partager les UFs d’un processeur superscalaire entre plusieurs processus Avantages: 1 processus a toutes les ressources partage dynamique des structures (caches, prédicteurs, UFs) 52 André Seznec Caps Team Irisa Microprocesseurs Hautes Performances SMT: Alpha 21464 (2003) Un processeur superscalaire 8 voies Performance ultime sur un processus Si multiprocessus, 4 processus se partagent les unités fonctionnelles: Surcoût pour ce partage 5-10 % 53 André Seznec Caps Team Irisa Microprocesseurs Hautes Performances La vision du programmeur 54 André Seznec Caps Team Irisa Microprocesseurs Hautes Performances Le SMT: les voies de la recherche Speculative multithreading: un coup plus loin que la prédiction de branchement Multipath execution: dans le doute, exécutons les 2 branches Flot de support: Utilisons un flot <<esclave>> pour accélérer le flot principal: • préchargement • anticipation de branchement 55 André Seznec Caps Team Irisa Microprocesseurs Hautes Performances Boule de cristal Le processeur du PC en 2010 Jeu d'instruction x86+: extension pour mode + de 32 bits Superscalaire 10 voies SMT Exécution dans le désordre < 50 mm2 support multiprocesseur: cache snooping 56 André Seznec Caps Team Irisa Microprocesseurs Hautes Performances Boule de cristal Le processeur du serveur en 2010 Jeu d'instruction IA64 ou Alpha+ les registres de prédicats !! Multi SMT 10 voies Prédiction de dépendances agressif Multipath execution support multiprocesseur: directory coherence 57 André Seznec Caps Team Irisa Microprocesseurs Hautes Performances La vision du programmeur ! 58 André Seznec Caps Team Irisa Microprocesseurs Hautes Performances Les grandes questions Saura-t-on maitriser la complexité du design? Qui saura programmer ces monstres ? 59 André Seznec Caps Team Irisa