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

Gei 431 Architecture des ordinateurs II GEI 431 - Frédéric Mailhot 1. Introduction 2. Concepts de base du pipeline 3. Utilisation d'unités d'exécution.

Présentations similaires


Présentation au sujet: "Gei 431 Architecture des ordinateurs II GEI 431 - Frédéric Mailhot 1. Introduction 2. Concepts de base du pipeline 3. Utilisation d'unités d'exécution."— Transcription de la présentation:

1 Gei 431 Architecture des ordinateurs II GEI Frédéric Mailhot 1. Introduction 2. Concepts de base du pipeline 3. Utilisation d'unités d'exécution multiples 4. Méthodes superscalaires et VLIW 5. Structures superscalaires 6. Gestion avancée des branchements 7. Études de cas 8. Machines "Dataflow" 9. Développements futurs 10. Mémoires caches 11. Multiprocesseurs 12. VHDL 13. Introduction à la synthèse logique 14. BDD et algorithme de buffering

2 Gei 431 Architecture des ordinateurs II – Frédéric Mailhot Introduction Objectifs du cours Évaluation Références Matière du cours: - Techniques modernes darchitecture - Les systèmes parallèles - La synthèse automatisée de circuit

3 Introduction © 2004 Frédéric Mailhot Université de Sherbrooke Matière couverte Amélioration des derniers 10 ans Comprendre ce qui sen vient dici 10 ans

4 Introduction © 2004 Frédéric Mailhot Université de Sherbrooke Pourquoi lévolution de larchitecture? Loi de Moore: 2X plus de transistors / 18 mois Depuis 15 ans: environ 1000X (de 4 à 0.13 microns) En 2008: 0.05 micron, 100M transistors, plusieurs GHz Différence croissante entre le délai intra-chip et le délai extra-chip Importance croissante des interconnections entre les transistors Corrolaire de la loi de Moore: augmentation exponentielle de la puissance dissipée (à voltage constant)

5 Introduction © 2004 Frédéric Mailhot Université de Sherbrooke Défis Taille et puissance Comment gérer laugmentation de puissance consommée? (prédite par Dennart en 70) Performance du système Quest-ce qui définit la performance? Où doit-on miser pour augmenter la performance? Complexité Comment gérer le design de systèmes de plus en plus gros?

6 Introduction © 2004 Frédéric Mailhot Université de Sherbrooke Force motrice derrière larchitecture des ordinateurs Fin des années 80, début 90: Performance des processeurs Fin des années 90, début 2000: Puissance Accès à la mémoire lent Fiabilité Coût de développement, maintenance de logiciel Désuétude rapide Performance des processeurs

7 Introduction © 2004 Frédéric Mailhot Université de Sherbrooke Quallons-nous étudier ici? Techniques damélioration de la performance des processeurs utilisées depuis 10 ans: Parallélisme (MLP, ILP) Pipelines / superscalaires / VLIW Multiprocesseurs Synchronisation Techniques modernes de conception de circuits Synthèse de haut niveau, logique HDLs (Hardware Description Languages) Technologies-cibles: ASIC, FPGA

8 Introduction © 2004 Frédéric Mailhot Université de Sherbrooke Comment améliorer la performance? Matériel Dispositifs Ensemble dinstructions (RISC vs CISC) Conception Techniques de synthèse Techniques de test Parallélisme MLP (Machine Level Parallelism) ILP (Instruction Level Parallelism)

9 Introduction © 2004 Frédéric Mailhot Université de Sherbrooke Matériel: Amélioration des dispositifs Plus grande intégration (Moore / Dennart) Utilisation nouvelle des composants FPGA: utilisation déléments reconfigurables Protocoles dentrées/sorties différents E.g. Rambus

10 Introduction © 2004 Frédéric Mailhot Université de Sherbrooke Matériel: Amélioration des dispositifs Silicium Sous 0.1 um (IBM prévoit 0.05 um en 2008) Oxyde trop mince -> effet tunnel Variations locales du dopage Transport ballistique DIBL (Drain-Induced Barrier Lowering) Arseniure de Gallium (AsGa), Germanium- Silicium (siGe) ? Communications optiques?

11 Introduction © 2004 Frédéric Mailhot Université de Sherbrooke Matériel: Amélioration des dispositifs (2) Superconducteurs à haute température? Systèmes quantiques? Nanotechnologie?

12 Introduction © 2004 Frédéric Mailhot Université de Sherbrooke Matériel: ensemble dinstructions RISC: instructions plus simples à décoder Plus dinstructions pour la même tâche Chaque instruction sexécute plus rapidement CISC: instructions complexes VLIW (Very Large Instruction Word)

13 Introduction © 2004 Frédéric Mailhot Université de Sherbrooke Conception: techniques de synthèse Langages de haut niveau (VHDL, Verilog) Synthèse de haut niveau Synthèse logique Placement / Routage

14 Introduction © 2004 Frédéric Mailhot Université de Sherbrooke Conception: techniques de test Vecteurs de test Modèle stuck-at JTAG et Full / Partial Scan BIST (Built-In Self-Test)

15 Introduction © 2004 Frédéric Mailhot Université de Sherbrooke Parallélisme: MLP Machines massivement parallèles Thinking machines Masspar NOW (Network of Workstations) Multiprocesseurs ASCI White Beowulf

16 Introduction © 2004 Frédéric Mailhot Université de Sherbrooke Parallélisme: ILP Pipelines Méthodes superscalaires Scoreboard, Tomasulo Prédiction des branches Méthodes statiques / dynamiques Spéculation (EPIC – Explicitely Parallel Instructions Computer) Machines « multithreaded »

17 Gei 431 Architecture des ordinateurs II – Frédéric Mailhot Systèmes Pipeline Les systèmes modernes utilisent tous des architectures pipelines – Pourquoi?

18 Pipeline © 2004 Frédéric Mailhot Université de Sherbrooke Matière couverte Principes de base des systèmes pipelines Utilisation de pipeline dans un microprocesseur simple Problèmes rencontrés

19 Pipeline © 2004 Frédéric Mailhot Université de Sherbrooke Exemple: le lavage du linge Soient 4 étudiants qui désirent faire leur lavage Il y a une laveuse, une sécheuse, et une table pour plier le linge Le lavage prend 30 minutes Le séchage prend 40 minutes Le pliage prend 20 minutes Si lopération commence à 6h00 du soir, à quelle heure termineront-ils?

20 Pipeline © 2004 Frédéric Mailhot Université de Sherbrooke Lavage du linge: 1ère itération L: 30 S: 40 P: 20 4 * ( ) = 360 minutes On termine à minuit

21 Pipeline © 2004 Frédéric Mailhot Université de Sherbrooke Lavage du linge: 2e itération: pipeline L:30, S: 40, P: 20 On superpose le lavage, séchage et pliage: On termine à 21h30 Régime permanent: 100 min/pers

22 Pipeline © 2004 Frédéric Mailhot Université de Sherbrooke Lavage du linge: 3e itération – sécheuse/plieuse L:30, SP: 50 (une sécheuse/plieuse): SP = 50, au lieu de S + P = = On termine à 21h50 Régime permanent: 100 min/pers

23 Pipeline © 2004 Frédéric Mailhot Université de Sherbrooke Lavage du linge: 4e itération: 2 sécheuses L:30, S1: 20, S2: 20, P: On termine à 21h00 Régime permanent: 110 min/pers

24 Pipeline © 2004 Frédéric Mailhot Université de Sherbrooke Lavage du linge: 5e itération: 1 sécheuse « haute température » L:30, S1: 15, S2: 20, P: On termine à 21h00 Régime permanent: 110 min/pers

25 Pipeline © 2004 Frédéric Mailhot Université de Sherbrooke Lavage du linge: 6e itération: 2 sécheuses « haute température » L:30, S1: 15, S2: 15, P: On termine à 20h50! Régime permanent: 80 min/pers

26 Pipeline © 2004 Frédéric Mailhot Université de Sherbrooke Leçons du pipeline de lavage Le pipeline naméliore pas la latence. Il améliore le temps moyen par tâche (throughput) La vitesse du pipeline est limitée par létage le plus lent Plusieurs tâches se font en parallèle Accélération possible: nombre détages Les durées détage inégales limitent laccélération Le temps de remplir et de vider le pipeline réduit laccélération

27 Pipeline © 2004 Frédéric Mailhot Université de Sherbrooke Le processeur DLX (De Luxe)

28 Pipeline © 2004 Frédéric Mailhot Université de Sherbrooke Vue « pipeline » du DLX

29 Pipeline © 2004 Frédéric Mailhot Université de Sherbrooke La loi de Amdahl N = (performance avec amélioration) (performance sans amélioration) = 1 (1 – Fraction améliorée) + Fraction (améliorée) Accélération (améliorée)

30 Pipeline © 2004 Frédéric Mailhot Université de Sherbrooke Performance: principe de base Comment mesurer et comparer la performance? X est N fois plus rapide que Y veut dire: N = (temps dexécution de Y) (temps dexécution de X) On doit distinguer le temps de réponse pour une tâche du temps moyen de réponse (throughput)

31 Pipeline © 2004 Frédéric Mailhot Université de Sherbrooke Équation de la performance dun CPU Temps CPU = coups dhorloge dun programme multiplié par la période de lhorloge Soit IC = Instruction Count = Nombre dinstructions dun programme Soit CPI = Clock cycle Per Instruction = coups dhorloge dun programme IC Alors: temps CPU = IC * CPI * période de lhorloge

32 Pipeline © 2004 Frédéric Mailhot Université de Sherbrooke Le pipeline – principes de base Une instruction par coup dhorloge Linformation doit être propagée dun étage à lautre Il ne peut y avoir de conflit de ressources Lajout de registres (ou de latches) a un impact sur la période de lhorloge

33 Pipeline © 2004 Frédéric Mailhot Université de Sherbrooke Le DLX – pipeline à 5 étages

34 Pipeline © 2004 Frédéric Mailhot Université de Sherbrooke Larrêt temporaire du pipeline (stall) Dans certains cas, on doit arrêter temporairement un ou plusieurs étages dun processeur: « cache miss » Problème local à une instruction

35 Pipeline © 2004 Frédéric Mailhot Université de Sherbrooke Impact des « stalls » sur la performance Amélioration = CPI(sans) * période (sans) CPI(avec) période (avec) CPI(avec) = 1 + stall / instruction Amélioration = CPI(sans) 1 + stall / instruction Amélioration = profondeur du pipeline 1 + stall / instruction

36 Pipeline © 2004 Frédéric Mailhot Université de Sherbrooke Les obstacles majeurs au pipeline Problèmes structuraux Problèmes de dépendances de données Problèmes de contrôle

37 Pipeline © 2004 Frédéric Mailhot Université de Sherbrooke Exemple de problème de structure

38 Pipeline © 2004 Frédéric Mailhot Université de Sherbrooke Effet dun problème de structure sur les stall

39 Pipeline © 2004 Frédéric Mailhot Université de Sherbrooke Pipelines: classification des problèmes de dépendance de données RAW (Read after Write): instruction subséquente lit la source avant que linstruction précédente lait écrite. Problème résolu avec « forwarding » WAW (Write after Write): instruction subséquente tente décrire une destination avant que linstruction précédente lait écrite. Ce type de problème existe dans les pipelines où lécriture se fait à plus dun endroit WAR (Write after Read): instruction subséquente écrit la destination avant que linstruction précédente ne lait lue. Ce type de problème peut apparaître lorsquil y a des écritures hâtives et des lectures tardives

40 Pipeline © 2004 Frédéric Mailhot Université de Sherbrooke Problème de dépendance de données RAW

41 Pipeline © 2004 Frédéric Mailhot Université de Sherbrooke Solution au RAW: le « forwarding »

42 Pipeline © 2004 Frédéric Mailhot Université de Sherbrooke Autre exemple de « forwarding »

43 Pipeline © 2004 Frédéric Mailhot Université de Sherbrooke Pipeline: Problèmes de données exigeant des retards (stalls) Soit la séquence dinstructions suivante: LWR1, 0 (R2) SUBR4, R1, R5 ANDR6, R1, R7 ORR8, R1, R9 La 1ère instruction est une lecture de la mémoire. La 2e utilise dans lALU la valeur lue en mémoire (MEM1 et ALU2 sont concurrentes) Solution: on utilise un dispositif matériel, le « pipeline interlock », pour détecter ce cas et introduire un retard (stall)

44 Pipeline © 2004 Frédéric Mailhot Université de Sherbrooke Stalls: impact sur la performance Supposons que 30% des instructions sont des « load » Supposons que 50% des instructions qui suivent un « load » utilisent la valeur lue Le CPI de linstruction qui suit le « load » est de 1.5 (stall ½ du temps) Puisque 30% des instructions sont des « load », les CPI moyen devient: CPI = (0,7 * 1 + 0,3 * 1,5) = 1,15

45 Pipeline © 2004 Frédéric Mailhot Université de Sherbrooke Certains « stalls » peuvent être évités, mais pas tous

46 Pipeline © 2004 Frédéric Mailhot Université de Sherbrooke Effet dun « stall » sur le pipeline

47 Pipeline © 2004 Frédéric Mailhot Université de Sherbrooke La nécéssité des « stall » - exemple LWR1, 0(R1) IFID EXMEM WB SUB R4, R1, R5IF IDEX MEM WB AND R6, R1, R7 IFID EX MEM WB OR R8, R1, R9IF ID EX MEM WB LWR1, 0(R1) IFID EXMEM WB SUB R4, R1, R5IF IDstall EX MEM WB AND R6, R1, R7 IFstall ID EX MEM WB OR R8, R1, R9stall IF ID EX MEM WB

48 Pipeline © 2004 Frédéric Mailhot Université de Sherbrooke Pipeline: utilisation des compilateurs pour réduire les problèmes de dépendences Linstruction de haut niveau suivante: A = B + C cause un délai (stall) pour charger la 2e valeur (C) Solution: on tente, à laide du compilateur, déviter de générer du code où un « load » est immédiatement suivi par lutilisation du registre visé. Cette technique est appellée « pipeline scheduling » ou « instruction scheduling »

49 Pipeline © 2004 Frédéric Mailhot Université de Sherbrooke Exemple de « pipeline scheduling » Soient les instructions suivantes: A = B + C D = E – F Le code suivant évitera les « stall »: LWRb, B LWRc, C LWRe, E ADDRa, Rb, Rc LWRf, F SWA, Ra SUBRd, Re, Rf SWD, Rd

50 Pipeline © 2004 Frédéric Mailhot Université de Sherbrooke Réalisation du contrôle du pipeline du DLX Lorsquune instruction passe de ID à EX, on dit que linstruction est émise (issued). Dans le DLX, tous les problèmes de dépendances de données peuvent être détectés durant la phase ID. Sil y a un problème de dépendance, il ny a quà retarder lémission de linstruction. De même, on peut détecter durant la phase ID quels « forwarding » devront être faits, et à quels moments Pour pouvoir contrôler ces 2 opérations, il y a 4 cas à considérer: Pas de dépendance Dépendance qui exige un « stall » Dépendance qui exige un « forward » Dépendance dénouée delle-même

51 Pipeline © 2004 Frédéric Mailhot Université de Sherbrooke Pipeline: insertion de « stalls » Lorsquon détecte un problème de dépendance de données exigeant un « stall », il faut simplement faire 3 choses: Émettre un no-op à létage EX Recirculer létat de ID Conserver le même IF

52 Pipeline © 2004 Frédéric Mailhot Université de Sherbrooke Pipeline: insertion de « forward » Pour détecter la nécessité de faire un « forward », il y a un certain nombre de cas qui doivent être détectés dans le pipeline. Dans le DLX, il y a 10 cas à considérer pour les « forward sur les entrées de lALU Note: lajout de chemins de « forward » implique que la taille des multiplexeurs des destinations doit augmenter

53 Pipeline © 2004 Frédéric Mailhot Université de Sherbrooke Cas à considérer pour le « forwarding » des entrées de lALU du DLX

54 Pipeline © 2004 Frédéric Mailhot Université de Sherbrooke Pipeline: délais causés par des problèmes de contrôle Lorsquon exécute un branchement (branch), limpact sur la performance peut être important. Dans le DLX tel que présenté jusquà maintenant, la modification du PC (lorsquun branchement est utilisé) ne se fait quà la fin de létage MEM. Le plus simple à faire est de retarder lexécution jusquà ce que le PC soit valide. Dans ce cas, on doit attendre 3 cycles dhorloge. Mais… Cext très coûteux! Pour réduire les délais des branchements, on peut faire 2 choses: Déterminer plus rapidement si le branchement est utilisé ou non Calculer le PC résultant plus rapidement

55 Pipeline © 2004 Frédéric Mailhot Université de Sherbrooke Pipeline: réduction des délais des branchements La solution simple est de retarder lexécution en présence de branchements, mais elle est coûteuse en termes de performance. Peut-on faire mieux?

56 Pipeline © 2004 Frédéric Mailhot Université de Sherbrooke Pipeline: réduction des délais de branchement

57 Pipeline © 2004 Frédéric Mailhot Université de Sherbrooke Pipeline: réduction des délais de branchement (2) On peut supposer que le branchement ne sera pas effectué. Dans ce cas, on continue tout simplement de lire des instructions pendant le calcul du branchement On peut supposer que le branchement sera effectué. On commence à lire les instructions dès que la destination du branchement est connue. Pour le DLX, ceci napporte rien, puisquon sait simultanément la destination et la décision de branchement

58 Pipeline © 2004 Frédéric Mailhot Université de Sherbrooke Pipeline: réduction des délais des branchements (3) On peut utiliser le branchement retardé (delayed branch). Dans le DLX, puisquil y a au maximum un délai dune instruction avant de connaître la décision de branchement, on utilise un « branch- delay slot ». Cest-à-dire que linstruction qui suit immédiatement celle de branchement est une instruction commue aux deux possibilités de branchement.

59 Pipeline © 2004 Frédéric Mailhot Université de Sherbrooke Pipeline: branchement retardé Il existe trois possibilités pour utiliser le « branch-delay slot »: Intervertir linstruction de branchement et celle qui la précède. Ceci ne fonctionne que si cette instruction naffecte pas le branchement Utiliser la première instruction du branchement effectué. Ne fonctionne que si cette instruction naffecte pas le branchement non-effectué Utiliser la première instruction du branchement non- effectué. Dual de la solution précédente. Que choisir? Tout dépend…

60 Pipeline © 2004 Frédéric Mailhot Université de Sherbrooke Lutilisation du « branch-delay slot »

61 Pipeline © 2004 Frédéric Mailhot Université de Sherbrooke Pipeline: Branchement retardé (2) Que faire sil ny a pas dinstructions sans impact sur lautre branche? Solution: on peut inclure dans le matériel un système de reconnaissance et délimination des mauvaises instructions de « branch-delay slot ». Il suffit que le compilateur indique pour quelle branche linstruction du « branch-delay slot » fonctionne. Le processeur na quà comparer la prédiction du compilateur avec la décision réelle, et canceller linstruction si la prédiction est invalide.

62 Pipeline © 2004 Frédéric Mailhot Université de Sherbrooke Pipeline: prédiction des branchements Comment le compilateur peut-il décider des branchements? Étude du comportement des programmes en général (% général des branchements utilisés, vers lavant et vers larrière) Étude des résultats de lexécution du programme (souvent, système bi-modal)

63 Pipeline © 2004 Frédéric Mailhot Université de Sherbrooke Performance des « branch-delay slots »

64 Pipeline © 2004 Frédéric Mailhot Université de Sherbrooke Pipeline: pourquoi est-ce difficile à réaliser? Difficulté majeure: comment gérer les exceptions (interruptions)? Utilisation de périphériques Utilisation de services du système dexploitation Exceptions arithmétiques Fautes de pages Fautes de segmentation Etc. Difficulté dérivée: exceptions multiples, exceptions désordonnées

65 Pipeline © 2004 Frédéric Mailhot Université de Sherbrooke Exemples dexceptions Requête dentrée/sortie Appel à une fonction de lOS à partir dune application Debuggage: tracing, breakpoints Dépassement arithmétique (overflow, underflow) Faute de page Mauvais accès à la mémoire Instruction non-définie Mauvais fonctionnement du matériel Problème dalimentation

66 Gei 431 Architecture des ordinateurs II – Frédéric Mailhot Systèmes Pipeline – opérations multicycles Nous avons vu jusquà maintenant comment faire un pipeline simple, avec une seule unité dexécution. Comment peut-on ajouter de multiples unités dexécution, certaines utilisant plus dun coup dhorloge pour faire leurs calculs?

67 Pipeline multicycles © 2004 Frédéric Mailhot Université de Sherbrooke DLX plus complet: plus dunités dexécution Pour améliorer le DLX, nous allons maintenant considérer lajout de plusieurs unités dexécution à lALU initial: Unité daddition point flottant Unité de multiplication dentiers Unité de multiplication point flottant Unite de division

68 Pipeline multicycles © 2004 Frédéric Mailhot Université de Sherbrooke Le DLX avec des unités dexécution multiples

69 Pipeline multicycles © 2004 Frédéric Mailhot Université de Sherbrooke Pipeline: Comment utiliser des opérations multicycles? Jusquà maintenant, nous navons considéré que des opérations sur les entiers dans lALU. Quarrive-t-il lorsquon incorpore des opérations à point flottant? Ou bien on allonge le cycle de lhorloge Ou bien on augmente la taille du circuit On bien on permet dintégrer des opérations multi- cycles dans le pipeline

70 Pipeline multicycles © 2004 Frédéric Mailhot Université de Sherbrooke Le DLX avec des unité dexécution point flottant

71 Pipeline multicycles © 2004 Frédéric Mailhot Université de Sherbrooke Pipeline: intégration des opérations multicycles But: permettre à un opérateur point flottant dutiliser plus dun cycle dhorloge pour effectuer son travail Nous supposerons que lunité point flottant peut utiliser un nombre arbitraire de cycles (le nombre exact dépend du type dopération). Nous supposerons de plus quil peut y avoir plusieurs unités point flottant en parallèle

72 Pipeline multicycles © 2004 Frédéric Mailhot Université de Sherbrooke Pipeline: intégration des opérations multicycles (2) Nous définissons 2 termes: la latence et lintervalle démission Latence: durée de lopération totale par rapport à la durée dune opération ALU sur des entiers Intervalle démission (initiation interval): délai entre lémission de deux opérations du même type

73 Pipeline multicycles © 2004 Frédéric Mailhot Université de Sherbrooke Pipeline: unités multicycles Soient les 5 opérations suivantes: ALU entier, accès à la mémoire, addition FP, multiplication FP/entier, division FP, avec les paramètres suivants: Quelles sont les implications de ce tableau? LatenceIntervalle démission ALU entier01 Accès mémoire11 Addition FP31 Multiplication FP61 Division FP24

74 Pipeline multicycles © 2004 Frédéric Mailhot Université de Sherbrooke Pipeline: implications multicycles Toutes les opérations peuvent commencer une instruction par coup dhorloge, excepté la division. Celle-ci peut donc causer des problèmes structuraux (structural hazards). Dans ce cas, la seule solution est de faire des « stalls » Puisque les opérations sont de durée variable, il se peut que deux opérations atteignent létage décriture en même temps Il peut y avoir des problèmes de dépendance de données de type WAW Les instructions peuvent être complétées dans un ordre différent que lordre démission Puisque la latence est plus longue, il y aura plus de problèmes de type RAW

75 Pipeline multicycles © 2004 Frédéric Mailhot Université de Sherbrooke Pipeline multicycle: solution à lécriture multiple Il est possible que deux instructions ou plus se terminent en même temps, et tentent décrire leurs résultats simultanément. Quoi faire? On pourrait ajouter des registres à plusieurs ports dentrée. On ajouterait beaucoup de matériel pour un cas relativement peu fréquent. Et il faudrait de toutes façons gérer lécriture simultanée au même registre Une meilleure solution est de détecter lutilisation simultanée (on peut le faire dès létage ID), et réserver lutilisation de létage décriture. Comment? En utilisant un registre à décalage pour réserver létage MEM. De cette façon, on peut faire un « stall » de lopération problématique au niveau du ID.

76 Pipeline multicycles © 2004 Frédéric Mailhot Université de Sherbrooke Pipeline multicycles: sommaire du contrôle 1. Vérification de problèmes de structure (seulement avec le diviseur) 2. Vérification de problèmes de type RAW 3. Vérification de problèmes de type WAW

77 Pipeline multicycles © 2004 Frédéric Mailhot Université de Sherbrooke Pipeline: quoi dautre? Que peut-on faire pour augmenter lefficacité des méthodes de pipeline? Dans le MIPS 4000, on a utilisé plus détages de pipeline (8 au lieu de 5). En répartissant les opérations sur plus détages, il est possible daugmenter la vitesse de lhorloge. Dans le R4000, on a ajouté des étages pour laccès à la mémoire. On appelle parfois cette technique le « superpipelining »

78 Pipeline multicycles © 2004 Frédéric Mailhot Université de Sherbrooke Le MIPS R4000 Dans le MIPS R4000, les étages sont les suivants: IF / IS / RF / EX / DF / DS / TC / WB IF: première partie du « instruction fetch » (sélection du PC, début daccès) ID: deuxième partie du « instruction fetch » (lecture) RF: instruction decode, register fetch, cache hit? EX: unité dexécution DF: data fetch DS: deuxième partie de laccès à la mémoire (lecture) TC: cache hit? WB: write back

79 Pipeline multicycles © 2004 Frédéric Mailhot Université de Sherbrooke Le MIPS R4000 (2)

80 Pipeline multicycles © 2004 Frédéric Mailhot Université de Sherbrooke La suite chez SGI

81 Gei 431 Architecture des ordinateurs II – Frédéric Mailhot Systèmes Superscalaires et VLIW Parallélisme des instructions: quoi dautre? Avec le pipeline, nous avons vu une des techniques de parallélisme des instructions (ILP ou Instruction Level Parallelism). Que peut-on faire de plus? VLIW (Very Large Instruction Word) Techniques superscalaires

82 Systèmes superscalaires et VLIW © 2004 Frédéric Mailhot Université de Sherbrooke Limites du pipelining, et comment les dépasser Pour une machine pipeline, on peut espérer au mieux lexécution dune instruction par coup dhorloge: il ny a jamais plus dune instruction lue par coup dhorloge. Rappel: temps CPU = IC * CPI * période de lhorloge Pour augmenter la performance, on peut donc: Diminuer le nombre dinstructions (IC) Diminuer le CPI Diminuer la période de lhorloge

83 Systèmes superscalaires et VLIW © 2004 Frédéric Mailhot Université de Sherbrooke Limites du pipelining, et comment les dépasser (2) Une question fondamentale se pose: 1.Est-il préférable de tenter de simplifier le circuit pour augmenter la fréquence de lhorloge? 2.Ou bien, doit-on rendre le circuit plus complexe pour tenter de faire plus durant la même période dhorloge? Larchitecture RISC, avec le pipeline, procède de la première approche. Les résultats sont probants, mais il semble quon ne puisse réduire la période de lhorloge en dessous dun certain seuil. Doù: il faut aussi considérer la deuxième approche (ce que lon fait avec le VLIW et le superscalaire).

84 Systèmes superscalaires et VLIW © 2004 Frédéric Mailhot Université de Sherbrooke Comment augmenter le ILP: en considérant plus dune instruction par coup dhorloge Lidée de base ici est que la fréquence de lhorloge ne peut être réduite indéfiniment, et donc que pour une certaine durée dhorloge, on doit réussir à faire plus de travail utile. Comment faire? Lorsque nous arrivons à traiter tout près dune instruction par coup dhorloge, la seule chose à faire de plus est de tenter de lire, décoder et exécuter plus dune instruction par coup dhorloge…

85 Systèmes superscalaires et VLIW © 2004 Frédéric Mailhot Université de Sherbrooke Exécution de multiples instructions par coup dhorloge: difficultés Lorsquon tente dexécuter plus dune instruction par coup dhorloge, cela implique quau même moment plusieurs instructions, qui ont été produites selon une certaine séquence par le compilateur et apparaissent séquentiellement en mémoire, doivent être séparées en des chemins dexécution parallèles Deux façons de faire cela: Décider au moment de la compilation des instructions qui peuvent sexécuter en parallèle (approche VLIW, EPIC) Décider au moment de lexécution des séquences dinstructions qui peuvent se faire en parallèle (approche superscalaire)

86 Systèmes superscalaires et VLIW © 2004 Frédéric Mailhot Université de Sherbrooke VLIW: quest-ce que cest? VLIW: technique pour exécuter plusieurs opérations en parallèle Méthode: on définit des groupes de plusieurs instructions, qui sont lues, décodées et exécutées en parallèle. Chaque groupe devient une « super-instruction » destinée à être lue dun bloc par le processeur VLIW Avantage: le compilateur décide des instructions à grouper ensemble. Ceci élimine pour le processeur VLIW le fardeau du scheduling des instructions (détermination des instructions qui peuvent être exécutées en parallèle). Le processeur est donc plus simple à concevoir, et par conséquent peut être plus rapide.

87 Systèmes superscalaires et VLIW © 2004 Frédéric Mailhot Université de Sherbrooke Superscalaire: quest-ce que cest? Superscalaire: technique pour exécuter plusieurs opérations en parallèle Méthode: lit en même temps des blocs dinstructions séquentielles (compilées de façon traditionnelle), et le processeur décide dynamiquement quelles instructions du bloc peuvent sexécuter en parallèle Avantage: On utilise un compilateur traditionnel pour produire le code exécutable Le parallélisme est extrait de façon dynamique par le processeur, donnant une plus grande marge de manœuvre pour le scheduling des instructions

88 Systèmes superscalaires et VLIW © 2004 Frédéric Mailhot Université de Sherbrooke VLIW vs superscalaire: les enjeux Le débat entre VLIW et superscalaire sapparente au débat CISC/RISC du début des années 80: simplicité du matériel (et performance améliorée) vs simplicité du compilateur Selon vous, lequel devrait gagner la bataille? VLIW? Superscalaire?

89 Systèmes superscalaires et VLIW © 2004 Frédéric Mailhot Université de Sherbrooke Le vainqueur apparent: le VLIW Comme le RISC a pris le dessus sur le CISC parce que le matériel est plus simple à réaliser et donc plus rapide, le VLIW devrait produire des systèmes plus performants Évidemment, les compilateurs devraient être améliorés, mais le type daméliorations requises (détection de parallélisme au niveau des instructions) est déjà possible.

90 Systèmes superscalaires et VLIW © 2004 Frédéric Mailhot Université de Sherbrooke VLIW: larchitecture du futur? Mais… il y a un problème important avec le VLIW: cest le compilateur qui prend en charge toutes les dépendances entre les instructions, et qui les résout lors de la compilation. Doù deux constats importants: 1.Le compilateur est lié intimement à limplémentation de larchitecture. Si celle-ci change, le compilateur (et donc le code) doit changer. Que fait-on avec nos « vieux » logiciels lorsquon change de machine? 2.La résolution de conflits se fait lors de la compilation. Elle doit donc être conservatrice. Dans un autre type darchitecture (i.e. le superscalaire) on fait cette résolution de façon dynamique. Doù plus de flexibilité et potentiellement une amélioration de la performance. Autre limitation du VLIW: puisque le code doit être libre de dépendances, il est presque impossible de lécrire en langage assembleur

91 Systèmes superscalaires et VLIW © 2004 Frédéric Mailhot Université de Sherbrooke La suite: le superscalaire Nous couvrirons principalement les techniques superscalaires dans ce qui suit. Pourquoi? Le VLIW est une extension relativement simple du pipeline (en théorie, on pourrait imaginer quon ne fait que mettre un ensemble de machines pipelines indépendantes en parallèle). Pour ce qui est du superscalaire, la gestion dynamique des dépendances entre instructions est beaucoup plus sophistiquée, et exige quon sy arrête pour comprendre ce qui se passe.

92 Gei 431 Architecture des ordinateurs II – Frédéric Mailhot Systèmes Superscalaires Comment peut-on déterminer de façon dynamique, au niveau du processeur, quelles sont les instructions qui peuvent sexécuter en parallèles? Dans ce qui suit nous étudierons larchitecure superscalaire générale, et nous examinerons en particulier deux méthodes utilisées pour extraire dynamiquement le parallélisme des instructions: La méthode « scoreboard » La méthode de Tomasulo

93 Systèmes superscalaires © 2004 Frédéric Mailhot Université de Sherbrooke Architecture superscalaire: introduction Idée derrière larchitecture superscalaire: émission de plus dune instruction par coup dhorloge, à partir de code compilé de façon traditionnelle Mécanismes sous-jacents: Décodage parallèle Gestion dinstructions multiples Émission dinstructions multiples Exécution parallèle des instructions Préservation de lordre des instructions Préservation de lordre des exceptions Utilisation du scoreboard ou de la méthode de Tomasulo

94 Systèmes superscalaires © 2004 Frédéric Mailhot Université de Sherbrooke Architecture superscalaire: Gestion dinstructions multiples Puisquil y a plusieurs instructions émises en même temps, les problèmes de structure, de dépendances de données (RAW, WAW) et de contrôle seront exacerbés Il est impératif de gérer efficacement lémission des instructions (structure, dépendances de données) Scoreboard Tomasulo Il faut minimiser les délais causés par le branchements (contrôle) Techniques de prévision et de spéculation liées aux branchements

95 Systèmes superscalaires © 2004 Frédéric Mailhot Université de Sherbrooke Superscalaire: technique du scoreboard Origine: Control Data CDC 6600, en… 1963! Technique utilisée au départ pour maintenir un taux dexécution de une instruction par coup dhorloge, en absence de problèmes de structure Extension: utilisation de multiples instructions par coup dhorloge Idée: si une instruction est arrêtée (« stalled »), on peut utiliser une instruction subséquente si elle ne dépend pas de celle qui est arrêtée

96 Systèmes superscalaires © 2004 Frédéric Mailhot Université de Sherbrooke Superscalaire: technique du scoreboard (2) Le scoreboard est un tableau interne qui contient toute linformation nécessaire (au sujet des instructions présentes dans le processeur) pour décider quand et où exécuter chacune des instructions On y conserve létat de chacune des unités dexécution, ainsi que le statut de chacun des registres

97 Systèmes superscalaires © 2004 Frédéric Mailhot Université de Sherbrooke Superscalaire: architecture pour la méthode du scoreboard

98 Systèmes superscalaires © 2004 Frédéric Mailhot Université de Sherbrooke Superscalaire: technique du scoreboard (3) Pour chaque unité dexécution, on doit connaître: Si elle est en opération Lopération qui y est effectuée Le nom des registres de destination et des opérandes Le nom des unités dexécution qui doivent produire les valeurs requises pour les registres des opérandes (si les valeurs courantes ne sont pas prêtes) Létat des registres des opérandes Le scoreboard utilise toutes ces valeurs pour décider à quel moment les instructions peuvent être exécutées

99 Systèmes superscalaires © 2004 Frédéric Mailhot Université de Sherbrooke Superscalaire: exemple de scoreboard Statut des instructions InstructionsÉmiseOpérandes lusExécutionÉcriture LD F6,34(R2) LD F2, 45(R3) MULTD F0,F2,F4 SUBD F8,F6,F2 DIVD F10,F0,F6 ADDD F6,F8,F2 Statut des unités dexécution NomUtiliséOpF iF jF kQ jQ kR jR k ALU Mult1 Mult2 Add Div Statut des registres de résultats F0F2F4F6F8F10F12…F30 UE

100 Systèmes superscalaires © 2004 Frédéric Mailhot Université de Sherbrooke Superscalaire: exemple de scoreboard Statut des instructions InstructionsÉmiseOpérandes lusExécutionÉcriture LD F6,34(R2)ll LD F2, 45(R3) MULTD F0,F2,F4 SUBD F8,F6,F2 DIVD F10,F0,F6 ADDD F6,F8,F2 Statut des unités dexécution NomUtiliséOpF iF jF kQ jQ kR jR k ALUouiLoadF6R2non Mult1non Mult2non Addnon Divnon Statut des registres de résultats F0F2F4F6F8F10F12…F30 UEALU

101 Systèmes superscalaires © 2004 Frédéric Mailhot Université de Sherbrooke Superscalaire: exemple de scoreboard Statut des instructions InstructionsÉmiseOpérandes lusExécutionÉcriture LD F6,34(R2)lll LD F2, 45(R3) MULTD F0,F2,F4 SUBD F8,F6,F2 DIVD F10,F0,F6 ADDD F6,F8,F2 Statut des unités dexécution NomUtiliséOpF iF jF kQ jQ kR jR k ALUouiLoadF6R2non Mult1non Mult2non Addnon Divnon Statut des registres de résultats F0F2F4F6F8F10F12…F30 UEALU

102 Systèmes superscalaires © 2004 Frédéric Mailhot Université de Sherbrooke Superscalaire: exemple de scoreboard Statut des instructions InstructionsÉmiseOpérandes lusExécutionÉcriture LD F6,34(R2)llll LD F2, 45(R3) MULTD F0,F2,F4 SUBD F8,F6,F2 DIVD F10,F0,F6 ADDD F6,F8,F2 Statut des unités dexécution NomUtiliséOpF iF jF kQ jQ kR jR k ALUnon Mult1non Mult2non Addnon Divnon Statut des registres de résultats F0F2F4F6F8F10F12…F30 UE

103 Systèmes superscalaires © 2004 Frédéric Mailhot Université de Sherbrooke Superscalaire: exemple de scoreboard Statut des instructions InstructionsÉmiseOpérandes lusExécutionÉcriture LD F6,34(R2)llll LD F2, 45(R3)ll MULTD F0,F2,F4 SUBD F8,F6,F2 DIVD F10,F0,F6 ADDD F6,F8,F2 Statut des unités dexécution NomUtiliséOpF iF jF kQ jQ kR jR k ALUouiLoadF2R3non Mult1non Mult2non Addnon Divnon Statut des registres de résultats F0F2F4F6F8F10F12…F30 UEALU

104 Systèmes superscalaires © 2004 Frédéric Mailhot Université de Sherbrooke Superscalaire: exemple de scoreboard Statut des instructions InstructionsÉmiseOpérandes lusExécutionÉcriture LD F6,34(R2)llll LD F2, 45(R3)ll MULTD F0,F2,F4l SUBD F8,F6,F2 DIVD F10,F0,F6 ADDD F6,F8,F2 Statut des unités dexécution NomUtiliséOpF iF jF kQ jQ kR jR k ALUouiLoadF2R3non Mult1ouiMulF0F2F4ALUnonoui Mult2non Addnon Divnon Statut des registres de résultats F0F2F4F6F8F10F12…F30 UEMult1ALU

105 Systèmes superscalaires © 2004 Frédéric Mailhot Université de Sherbrooke Superscalaire: exemple de scoreboard Statut des instructions InstructionsÉmiseOpérandes lusExécutionÉcriture LD F6,34(R2)llll LD F2, 45(R3)ll MULTD F0,F2,F4l SUBD F8,F6,F2l DIVD F10,F0,F6 ADDD F6,F8,F2 Statut des unités dexécution NomUtiliséOpF iF jF kQ jQ kR jR k ALUouiLoadF2R3non Mult1ouiMulF0F2F4ALUnonoui Mult2non AddouiSubF8F6F2ALUouinon Divnon Statut des registres de résultats F0F2F4F6F8F10F12…F30 UEMult1ALUAdd

106 Systèmes superscalaires © 2004 Frédéric Mailhot Université de Sherbrooke Superscalaire: exemple de scoreboard Statut des instructions InstructionsÉmiseOpérandes lusExécutionÉcriture LD F6,34(R2)llll LD F2, 45(R3)ll MULTD F0,F2,F4l SUBD F8,F6,F2l DIVD F10,F0,F6l ADDD F6,F8,F2 Statut des unités dexécution NomUtiliséOpF iF jF kQ jQ kR jR k ALUouiLoadF2R3non Mult1ouiMulF0F2F4ALUnonoui Mult2non AddouiSubF8F6F2ALUouinon DivouiDivF10F0F6Mult1nonoui Statut des registres de résultats F0F2F4F6F8F10F12…F30 UEMult1ALUAddDiv

107 Systèmes superscalaires © 2004 Frédéric Mailhot Université de Sherbrooke Superscalaire: exemple de scoreboard Statut des instructions InstructionsÉmiseOpérandes lusExécutionÉcriture LD F6,34(R2)llll LD F2, 45(R3)lll MULTD F0,F2,F4l SUBD F8,F6,F2l DIVD F10,F0,F6l ADDD F6,F8,F2 Statut des unités dexécution NomUtiliséOpF iF jF kQ jQ kR jR k ALUouiLoadF2R3non Mult1ouiMulF0F2F4ALUnonoui Mult2non AddouiSubF8F6F2ALUouinon DivouiDivF10F0F6Mult1nonoui Statut des registres de résultats F0F2F4F6F8F10F12…F30 UEMult1ALUAddDiv RAW: LD-> MULTD, SUBD MULTD-> DIVD SUBD-> ADDD WAR: DIVD-> ADDD Struct: SUBD-> ADDD

108 Systèmes superscalaires © 2004 Frédéric Mailhot Université de Sherbrooke Superscalaire: exemple de scoreboard Statut des instructions InstructionsÉmiseOpérandes lusExécutionÉcriture LD F6,34(R2)llll LD F2, 45(R3)llll MULTD F0,F2,F4l SUBD F8,F6,F2l DIVD F10,F0,F6l ADDD F6,F8,F2 Statut des unités dexécution NomUtiliséOpF iF jF kQ jQ kR jR k ALUouiLoadF2R3non Mult1ouiMulF0F2F4ALUnonoui Mult2non AddouiSubF8F6F2ALUouinon DivouiDivF10F0F6Mult1nonoui Statut des registres de résultats F0F2F4F6F8F10F12…F30 UEMult1AddDiv

109 Systèmes superscalaires © 2004 Frédéric Mailhot Université de Sherbrooke Superscalaire: exemple de scoreboard Statut des instructions InstructionsÉmiseOpérandes lusExécutionÉcriture LD F6,34(R2)llll LD F2, 45(R3)llll MULTD F0,F2,F4ll SUBD F8,F6,F2ll DIVD F10,F0,F6l ADDD F6,F8,F2 Statut des unités dexécution NomUtiliséOpF iF jF kQ jQ kR jR k ALUnon Mult1ouiMulF0F2F4non Mult2non AddouiSubF8F6F2non DivouiDivF10F0F6Mult1nonoui Statut des registres de résultats F0F2F4F6F8F10F12…F30 UEMult1AddDiv

110 Systèmes superscalaires © 2004 Frédéric Mailhot Université de Sherbrooke Superscalaire: exemple de scoreboard Statut des instructions InstructionsÉmiseOpérandes lusExécutionÉcriture LD F6,34(R2)llll LD F2, 45(R3)llll MULTD F0,F2,F4ll SUBD F8,F6,F2llll DIVD F10,F0,F6l ADDD F6,F8,F2 Statut des unités dexécution NomUtiliséOpF iF jF kQ jQ kR jR k ALUnon Mult1ouiMulF0F2F4non Mult2non AddouiSubF8F6F2non DivouiDivF10F0F6Mult1nonoui Statut des registres de résultats F0F2F4F6F8F10F12…F30 UEMult1AddDiv

111 Systèmes superscalaires © 2004 Frédéric Mailhot Université de Sherbrooke Superscalaire: exemple de scoreboard Statut des instructions InstructionsÉmiseOpérandes lusExécutionÉcriture LD F6,34(R2)llll LD F2, 45(R3)llll MULTD F0,F2,F4ll SUBD F8,F6,F2llll DIVD F10,F0,F6l ADDD F6,F8,F2ll Statut des unités dexécution NomUtiliséOpF iF jF kQ jQ kR jR k ALUnon Mult1ouiMulF0F2F4non Mult2non AddouiAdddF6F8F2non DivouiDivF10F0F6Mult1nonoui Statut des registres de résultats F0F2F4F6F8F10F12…F30 UEMult1AddDiv

112 Systèmes superscalaires © 2004 Frédéric Mailhot Université de Sherbrooke Superscalaire: exemple de scoreboard Statut des instructions InstructionsÉmiseOpérandes lusExécutionÉcriture LD F6,34(R2)llll LD F2, 45(R3)llll MULTD F0,F2,F4ll SUBD F8,F6,F2llll DIVD F10,F0,F6l ADDD F6,F8,F2lll Statut des unités dexécution NomUtiliséOpF iF jF kQ jQ kR jR k ALUnon Mult1ouiMulF0F2F4non Mult2non AddouiAdddF6F8F2non DivouiDivF10F0F6Mult1nonoui Statut des registres de résultats F0F2F4F6F8F10F12…F30 UEMult1AddDiv RAW: MULTD-> DIVD WAR: DIVD-> ADDD

113 Systèmes superscalaires © 2004 Frédéric Mailhot Université de Sherbrooke Superscalaire: exemple de scoreboard Statut des instructions InstructionsÉmiseOpérandes lusExécutionÉcriture LD F6,34(R2)llll LD F2, 45(R3)llll MULTD F0,F2,F4llll SUBD F8,F6,F2llll DIVD F10,F0,F6l ADDD F6,F8,F2lll Statut des unités dexécution NomUtiliséOpF iF jF kQ jQ kR jR k ALUnon Mult1ouiMulF0F2F4non Mult2non AddouiAdddF6F8F2non DivouiDivF10F0F6Mult1nonoui Statut des registres de résultats F0F2F4F6F8F10F12…F30 UEMult1AddDiv

114 Systèmes superscalaires © 2004 Frédéric Mailhot Université de Sherbrooke Superscalaire: exemple de scoreboard Statut des instructions InstructionsÉmiseOpérandes lusExécutionÉcriture LD F6,34(R2)llll LD F2, 45(R3)llll MULTD F0,F2,F4llll SUBD F8,F6,F2llll DIVD F10,F0,F6ll ADDD F6,F8,F2lll Statut des unités dexécution NomUtiliséOpF iF jF kQ jQ kR jR k ALUnon Mult1non Mult2non AddouiAdddF6F8F2non DivouiDivF10F0F6oui Statut des registres de résultats F0F2F4F6F8F10F12…F30 UEAddDiv

115 Systèmes superscalaires © 2004 Frédéric Mailhot Université de Sherbrooke Superscalaire: exemple de scoreboard Statut des instructions InstructionsÉmiseOpérandes lusExécutionÉcriture LD F6,34(R2)llll LD F2, 45(R3)llll MULTD F0,F2,F4llll SUBD F8,F6,F2llll DIVD F10,F0,F6ll ADDD F6,F8,F2llll Statut des unités dexécution NomUtiliséOpF iF jF kQ jQ kR jR k ALUnon Mult1non Mult2non AddouiAdddF6F8F2non DivouiDivF10F0F6non Statut des registres de résultats F0F2F4F6F8F10F12…F30 UEAddDiv

116 Systèmes superscalaires © 2004 Frédéric Mailhot Université de Sherbrooke Superscalaire: exemple de scoreboard Statut des instructions InstructionsÉmiseOpérandes lusExécutionÉcriture LD F6,34(R2)llll LD F2, 45(R3)llll MULTD F0,F2,F4llll SUBD F8,F6,F2llll DIVD F10,F0,F6ll ADDD F6,F8,F2llll Statut des unités dexécution NomUtiliséOpF iF jF kQ jQ kR jR k ALUnon Mult1non Mult2non Addnon DivouiDivF10F0F6non Statut des registres de résultats F0F2F4F6F8F10F12…F30 UEDiv

117 Systèmes superscalaires © 2004 Frédéric Mailhot Université de Sherbrooke Superscalaire: exemple de scoreboard Statut des instructions InstructionsÉmiseOpérandes lusExécutionÉcriture LD F6,34(R2)llll LD F2, 45(R3)llll MULTD F0,F2,F4llll SUBD F8,F6,F2llll DIVD F10,F0,F6llll ADDD F6,F8,F2llll Statut des unités dexécution NomUtiliséOpF iF jF kQ jQ kR jR k ALUnon Mult1non Mult2non Addnon DivouiDivF10F0F6non Statut des registres de résultats F0F2F4F6F8F10F12…F30 UEDiv

118 Systèmes superscalaires © 2004 Frédéric Mailhot Université de Sherbrooke Superscalaire: exemple de scoreboard Statut des instructions InstructionsÉmiseOpérandes lusExécutionÉcriture LD F6,34(R2)llll LD F2, 45(R3)llll MULTD F0,F2,F4llll SUBD F8,F6,F2llll DIVD F10,F0,F6llll ADDD F6,F8,F2llll Statut des unités dexécution NomUtiliséOpF iF jF kQ jQ kR jR k ALUnon Mult1non Mult2non Addnon Divnon Statut des registres de résultats F0F2F4F6F8F10F12…F30 UE

119 Systèmes superscalaires © 2004 Frédéric Mailhot Université de Sherbrooke Superscalaire: méthode de Tomasulo Origine: IBM System/ 360 modèle 91 en… 1967! Inventée par Robert Tomasulo Technique utilisée pour éliminer les « fausses » dépendances qui proviennent de lutilisation des mêmes registres à des fins différentes. La méthode de Tomasulo est une extension de la méthode du scoreboard Idée: Lorsquil y a de fausses dépendances de données parce quon réutilise les mêmes registres, on na quà « renommer » les registres (register renaming)

120 Systèmes superscalaires © 2004 Frédéric Mailhot Université de Sherbrooke Superscalaire: méthode de Tomasulo (2) On utilise des étiquettes sur les données pour indiquer doù elles doivent provenir lorsque le registre dorigine des opérandes nest pas encore valide On utilise un bus de données commun (Common Data Bus, CDB) qui transporte à la fois les données et létiquette de leur unité dexécution dorigine Tous les endroits qui attendent une donnée « écoutent » le CDB et attrapent les données qui leur sont destinées On utilise des « stations de réservation » pour conserver les instructions en attente dexécution. Il peut y avoir une station de réservation par unité dexécution, ou une par type dunité dexécution, ou même une seule pour toutes les unités dexécution

121 Systèmes superscalaires © 2004 Frédéric Mailhot Université de Sherbrooke Superscalaire: architecture pour la méthode de Tomasulo

122 Systèmes superscalaires © 2004 Frédéric Mailhot Université de Sherbrooke Superscalaire: différences entre les méthodes de Tomasulo et scoreboard Tomasulo: Pas de vérification des cas de WAW et/ou WAR (lutilisation détiquettes de provenance élimine ces problèmes) Utilisation du CDB pour obtenir directement les résultats, sans avoir à passer par les registres Load/Store considérés comme des unités dexécution au même titre que les additions/multiplications/divisions

123 Systèmes superscalaires © 2004 Frédéric Mailhot Université de Sherbrooke Superscalaire: exemple de Tomasulo Statut des instructions InstructionsÉmiseExécutionÉcriture LD F6,34(R2)lll LD F2, 45(R3) MULTD F0,F2,F4 SUBD F8,F6,F2 DIVD F10,F0,F6 ADDD F6,F8,F2 Stations de réservation NomUtiliséOpV jV kQ jQ k Add1non Add2non Mult1non Mult2non Div1non Statut des registres de résultats F0F2F4F6F8F10F12…F30 UE

124 Systèmes superscalaires © 2004 Frédéric Mailhot Université de Sherbrooke Superscalaire: exemple de Tomasulo Statut des instructions InstructionsÉmiseExécutionÉcriture LD F6,34(R2)lll LD F2, 45(R3)ll MULTD F0,F2,F4 SUBD F8,F6,F2 DIVD F10,F0,F6 ADDD F6,F8,F2 Stations de réservation NomUtiliséOpV jV kQ jQ k Add1non Add2non Mult1non Mult2non Div1non Statut des registres de résultats F0F2F4F6F8F10F12…F30 UELoad2 Résultat attendu de Load2

125 Systèmes superscalaires © 2004 Frédéric Mailhot Université de Sherbrooke Superscalaire: exemple de Tomasulo Statut des instructions InstructionsÉmiseExécutionÉcriture LD F6,34(R2)lll LD F2, 45(R3)ll MULTD F0,F2,F4l SUBD F8,F6,F2 DIVD F10,F0,F6 ADDD F6,F8,F2 Stations de réservation NomUtiliséOpV jV kQ jQ k Add1non Add2non Mult1ouiMULTDReg(F4)Load2 Mult2non Div1non Statut des registres de résultats F0F2F4F6F8F10F12…F30 UEMult1Load2

126 Systèmes superscalaires © 2004 Frédéric Mailhot Université de Sherbrooke Superscalaire: exemple de Tomasulo Statut des instructions InstructionsÉmiseExécutionÉcriture LD F6,34(R2)lll LD F2, 45(R3)ll MULTD F0,F2,F4l SUBD F8,F6,F2l DIVD F10,F0,F6 ADDD F6,F8,F2 Stations de réservation NomUtiliséOpV jV kQ jQ k Add1ouiSUBDReg(F6)Load2 Add2non Mult1ouiMULTDReg(F4)Load2 Mult2non Div1non Statut des registres de résultats F0F2F4F6F8F10F12…F30 UEMult1Load2Add1

127 Systèmes superscalaires © 2004 Frédéric Mailhot Université de Sherbrooke Superscalaire: exemple de Tomasulo Statut des instructions InstructionsÉmiseExécutionÉcriture LD F6,34(R2)lll LD F2, 45(R3)ll MULTD F0,F2,F4l SUBD F8,F6,F2l DIVD F10,F0,F6l ADDD F6,F8,F2 Stations de réservation NomUtiliséOpV jV kQ jQ k Add1ouiSUBDReg(F6)Load2 Add2non Mult1ouiMULTDReg(F4)Load2 Mult2non Div1ouiDIVDReg(F6)Mult1 Statut des registres de résultats F0F2F4F6F8F10F12…F30 UEMult1Load2Add1Div1

128 Systèmes superscalaires © 2004 Frédéric Mailhot Université de Sherbrooke Superscalaire: exemple de Tomasulo Statut des instructions InstructionsÉmiseExécutionÉcriture LD F6,34(R2)lll LD F2, 45(R3)ll MULTD F0,F2,F4l SUBD F8,F6,F2l DIVD F10,F0,F6l ADDD F6,F8,F2l Stations de réservation NomUtiliséOpV jV kQ jQ k Add1ouiSUBDReg(F6)Load2 Add2ouiADDDAdd1Load2 Mult1ouiMULTDReg(F4)Load2 Mult2non Div1ouiDIVDReg(F6)Mult1 Statut des registres de résultats F0F2F4F6F8F10F12…F30 UEMult1Load2Add2Add1Div1

129 Systèmes superscalaires © 2004 Frédéric Mailhot Université de Sherbrooke Superscalaire: exemple de Tomasulo Statut des instructions InstructionsÉmiseExécutionÉcriture LD F6,34(R2)lll LD F2, 45(R3)lll MULTD F0,F2,F4l SUBD F8,F6,F2l DIVD F10,F0,F6l ADDD F6,F8,F2l Stations de réservation NomUtiliséOpV jV kQ jQ k Add1ouiSUBDReg(F6)Load2 Add2ouiADDDAdd1Load2 Mult1ouiMULTDReg(F4)Load2 Mult2non Div1ouiDIVDReg(F6)Mult1 Statut des registres de résultats F0F2F4F6F8F10F12…F30 UEMult1Load2Add2Add1Div1

130 Systèmes superscalaires © 2004 Frédéric Mailhot Université de Sherbrooke Superscalaire: exemple de Tomasulo Statut des instructions InstructionsÉmiseExécutionÉcriture LD F6,34(R2)lll LD F2, 45(R3)lll MULTD F0,F2,F4ll SUBD F8,F6,F2ll DIVD F10,F0,F6l ADDD F6,F8,F2l Stations de réservation NomUtiliséOpV jV kQ jQ k Add1ouiSUBDReg(F6)Val(F2) Add2ouiADDDVal(F2)Add1 Mult1ouiMULTDVal(F2)Reg(F4) Mult2non Div1ouiDIVDReg(F6)Mult1 Statut des registres de résultats F0F2F4F6F8F10F12…F30 UEMult1Add2Add1Div1

131 Systèmes superscalaires © 2004 Frédéric Mailhot Université de Sherbrooke Superscalaire: exemple de Tomasulo Statut des instructions InstructionsÉmiseExécutionÉcriture LD F6,34(R2)lll LD F2, 45(R3)lll MULTD F0,F2,F4ll SUBD F8,F6,F2lll DIVD F10,F0,F6l ADDD F6,F8,F2l Stations de réservation NomUtiliséOpV jV kQ jQ k Add1ouiSUBDReg(F6)Val(F2) Add2ouiADDDVal(F2)Add1 Mult1ouiMULTDVal(F2)Reg(F4) Mult2non Div1ouiDIVDReg(F6)Mult1 Statut des registres de résultats F0F2F4F6F8F10F12…F30 UEMult1Add2Add1Div1

132 Systèmes superscalaires © 2004 Frédéric Mailhot Université de Sherbrooke Superscalaire: exemple de Tomasulo Statut des instructions InstructionsÉmiseExécutionÉcriture LD F6,34(R2)lll LD F2, 45(R3)lll MULTD F0,F2,F4ll SUBD F8,F6,F2lll DIVD F10,F0,F6l ADDD F6,F8,F2ll Stations de réservation NomUtiliséOpV jV kQ jQ k Add1non Add2ouiADDDVal(F8)Val(F2) Mult1ouiMULTDVal(F2)Reg(F4) Mult2non Div1ouiDIVDReg(F6)Mult1 Statut des registres de résultats F0F2F4F6F8F10F12…F30 UEMult1Add2Div1

133 Systèmes superscalaires © 2004 Frédéric Mailhot Université de Sherbrooke Superscalaire: exemple de Tomasulo Statut des instructions InstructionsÉmiseExécutionÉcriture LD F6,34(R2)lll LD F2, 45(R3)lll MULTD F0,F2,F4ll SUBD F8,F6,F2lll DIVD F10,F0,F6l ADDD F6,F8,F2lll Stations de réservation NomUtiliséOpV jV kQ jQ k Add1non Add2ouiADDDVal(F8)Val(F2) Mult1ouiMULTDVal(F2)Reg(F4) Mult2non Div1ouiDIVDReg(F6)Mult1 Statut des registres de résultats F0F2F4F6F8F10F12…F30 UEMult1Add2Div1

134 Systèmes superscalaires © 2004 Frédéric Mailhot Université de Sherbrooke Superscalaire: exemple de Tomasulo Statut des instructions InstructionsÉmiseExécutionÉcriture LD F6,34(R2)lll LD F2, 45(R3)lll MULTD F0,F2,F4lll SUBD F8,F6,F2lll DIVD F10,F0,F6l ADDD F6,F8,F2lll Stations de réservation NomUtiliséOpV jV kQ jQ k Add1non Add2non Mult1ouiMULTDVal(F2)Reg(F4) Mult2non Div1ouiDIVDReg(F6)Mult1 Statut des registres de résultats F0F2F4F6F8F10F12…F30 UEMult1Div1

135 Systèmes superscalaires © 2004 Frédéric Mailhot Université de Sherbrooke Superscalaire: exemple de Tomasulo Statut des instructions InstructionsÉmiseExécutionÉcriture LD F6,34(R2)lll LD F2, 45(R3)lll MULTD F0,F2,F4lll SUBD F8,F6,F2lll DIVD F10,F0,F6ll ADDD F6,F8,F2lll Stations de réservation NomUtiliséOpV jV kQ jQ k Add1non Add2non Mult1non Mult2non Div1ouiDIVDVal(F0)Reg(F6) Statut des registres de résultats F0F2F4F6F8F10F12…F30 UEDiv1

136 Systèmes superscalaires © 2004 Frédéric Mailhot Université de Sherbrooke Superscalaire: exemple de Tomasulo Statut des instructions InstructionsÉmiseExécutionÉcriture LD F6,34(R2)lll LD F2, 45(R3)lll MULTD F0,F2,F4lll SUBD F8,F6,F2lll DIVD F10,F0,F6lll ADDD F6,F8,F2lll Stations de réservation NomUtiliséOpV jV kQ jQ k Add1non Add2non Mult1non Mult2non Div1ouiDIVDVal(F0)Reg(F6) Statut des registres de résultats F0F2F4F6F8F10F12…F30 UEDiv1

137 Systèmes superscalaires © 2004 Frédéric Mailhot Université de Sherbrooke Superscalaire: exemple de Tomasulo Statut des instructions InstructionsÉmiseExécutionÉcriture LD F6,34(R2)lll LD F2, 45(R3)lll MULTD F0,F2,F4lll SUBD F8,F6,F2lll DIVD F10,F0,F6lll ADDD F6,F8,F2lll Stations de réservation NomUtiliséOpV jV kQ jQ k Add1non Add2non Mult1non Mult2non Div1non Statut des registres de résultats F0F2F4F6F8F10F12…F30 UE

138 Systèmes superscalaires © 2004 Frédéric Mailhot Université de Sherbrooke Superscalaire: Exemple de la puissance de la méthode de Tomasulo Soit une portion de code où les éléments dun tableau doivent tous être multipliés par une certaine constante: Loop:LD F0, 0(R1) MULTD F4, F0, F2 SD 0(R1), F4 SUBI R1, R1, #8 BNEZ R1, Loop; Branchement si R1 != 0

139 Systèmes superscalaires © 2004 Frédéric Mailhot Université de Sherbrooke Superscalaire: Exemple de la puissance de la méthode de Tomasulo (2) Dans la boucle quon vient de voir, lutilisation répétitive de F0, F4 et R1 fait quon ne peut exécuter quune itération à la fois si rien de spécial nest fait On peut résoudre ce problème au niveau du compilateur, et faire ce quon appelle du « loop unrolling », cest-à-dire utiliser différents registres pour éliminer les dépendances entre les itérations successives

140 Systèmes superscalaires © 2004 Frédéric Mailhot Université de Sherbrooke Superscalaire: Exemple de la puissance de la méthode de Tomasulo (3) Exemple de boucle « déroulée » (unrolled loop): LD F0, 0(R1) MULTD F4, F0, F2 SD 0(R1), F4 SUBI R1, R1, #8 LD F6, 0(R1) MULTD F8, F6, F2 SD 0(R1), F8 SUBI R1, R1, #8 LD F10, 0(R1) MULTD F12, F10, F2 … Cette méthode fonctionne au niveau du compilateur si: On connaît le nombre ditération au moment de la compilation Il y a assez de registres dans la machine pour contenir toutes les itérations quon désire exécuter en parallèle

141 Systèmes superscalaires © 2004 Frédéric Mailhot Université de Sherbrooke Superscalaire: Exemple de la puissance de la méthode de Tomasulo (4) Au lieu de faire le travail de déroulement des boucles au niveau de la compilation, on peut le faire dynamiquement avec la méthode de Tomasulo! Il nest plus nécessaire de connaître le nombre ditérations lors de la compilation Le nombre de registres de la machine nest plus un goulot détranglement Dans ce qui suit, on fera une simulation de ce qui se passe avec le système de Tomasulo. On supposera que les branchements nexistent pas (i.e., quils sont prédits correctement)

142 Systèmes superscalaires © 2004 Frédéric Mailhot Université de Sherbrooke Superscalaire: 2e exemple de Tomasulo Statut des instructions InstructionsÉmiseExécutionÉcriture LD F0, 0(R1)ll MULTD F4, F0, F2 SD 0(R1), F4 LD F0, 0(R1) MULTD F4, F0, F2 SD 0(R1), F4 Stations de réservation NomUtiliséOpV jV kQ jQ k Store1non Store2non Mult1non Mult2non Div1non Statut des registres de résultats F0F2F4F6F8F10F12…F30 UELoad1

143 Systèmes superscalaires © 2004 Frédéric Mailhot Université de Sherbrooke Superscalaire: 2e exemple de Tomasulo Statut des instructions InstructionsÉmiseExécutionÉcriture LD F0, 0(R1)ll MULTD F4, F0, F2l SD 0(R1), F4 LD F0, 0(R1) MULTD F4, F0, F2 SD 0(R1), F4 Stations de réservation NomUtiliséOpV jV kQ jQ k Store1non Store2non Mult1ouiMULTDReg(F2)Load1 Mult2non Div1non Statut des registres de résultats F0F2F4F6F8F10F12…F30 UELoad1Mult1

144 Systèmes superscalaires © 2004 Frédéric Mailhot Université de Sherbrooke Superscalaire: 2e exemple de Tomasulo Statut des instructions InstructionsÉmiseExécutionÉcriture LD F0, 0(R1)ll MULTD F4, F0, F2l SD 0(R1), F4l LD F0, 0(R1) MULTD F4, F0, F2 SD 0(R1), F4 Stations de réservation NomUtiliséOpV jV kQ jQ k Store1ouiSDMult1 Store2non Mult1ouiMULTDReg(F2)Load1 Mult2non Div1non Statut des registres de résultats F0F2F4F6F8F10F12…F30 UELoad1Mult1

145 Systèmes superscalaires © 2004 Frédéric Mailhot Université de Sherbrooke Superscalaire: 2e exemple de Tomasulo Statut des instructions InstructionsÉmiseExécutionÉcriture LD F0, 0(R1)ll MULTD F4, F0, F2l SD 0(R1), F4l LD F0, 0(R1)ll MULTD F4, F0, F2 SD 0(R1), F4 Stations de réservation NomUtiliséOpV jV kQ jQ k Store1ouiSDMult1 Store2non Mult1ouiMULTDReg(F2)Load1 Mult2non Div1non Statut des registres de résultats F0F2F4F6F8F10F12…F30 UELoad2Mult1

146 Systèmes superscalaires © 2004 Frédéric Mailhot Université de Sherbrooke Superscalaire: 2e exemple de Tomasulo Statut des instructions InstructionsÉmiseExécutionÉcriture LD F0, 0(R1)ll MULTD F4, F0, F2l SD 0(R1), F4l LD F0, 0(R1)ll MULTD F4, F0, F2l SD 0(R1), F4 Stations de réservation NomUtiliséOpV jV kQ jQ k Store1ouiSDMult1 Store2non Mult1ouiMULTDReg(F2)Load1 Mult2ouiMULTDReg(F2)Load2 Div1non Statut des registres de résultats F0F2F4F6F8F10F12…F30 UELoad2Mult2

147 Systèmes superscalaires © 2004 Frédéric Mailhot Université de Sherbrooke Superscalaire: 2e exemple de Tomasulo Statut des instructions InstructionsÉmiseExécutionÉcriture LD F0, 0(R1)ll MULTD F4, F0, F2l SD 0(R1), F4l LD F0, 0(R1)ll MULTD F4, F0, F2l SD 0(R1), F4l Stations de réservation NomUtiliséOpV jV kQ jQ k Store1ouiSDMult1 Store2ouiSDMult2 Mult1ouiMULTDReg(F2)Load1 Mult2ouiMULTDReg(F2)Load2 Div1non Statut des registres de résultats F0F2F4F6F8F10F12…F30 UELoad2Mult2

148 Systèmes superscalaires © 2004 Frédéric Mailhot Université de Sherbrooke Superscalaire: 2e exemple de Tomasulo Statut des instructions InstructionsÉmiseExécutionÉcriture LD F0, 0(R1)lll MULTD F4, F0, F2l SD 0(R1), F4l LD F0, 0(R1)lll MULTD F4, F0, F2l SD 0(R1), F4l Stations de réservation NomUtiliséOpV jV kQ jQ k Store1ouiSDMult1 Store2ouiSDMult2 Mult1ouiMULTDVal(Load1)Reg(F2) Mult2ouiMULTDVal(Load2)Reg(F2) Div1non Statut des registres de résultats F0F2F4F6F8F10F12…F30 UEMult2

149 Systèmes superscalaires © 2004 Frédéric Mailhot Université de Sherbrooke Superscalaire: 2e exemple de Tomasulo Statut des instructions InstructionsÉmiseExécutionÉcriture LD F0, 0(R1)lll MULTD F4, F0, F2lll SD 0(R1), F4ll LD F0, 0(R1)lll MULTD F4, F0, F2lll SD 0(R1), F4ll Stations de réservation NomUtiliséOpV jV kQ jQ k Store1ouiSDVal(Mult1) Store2ouiSD Val(Mult2) = Reg(F4) Mult1non Mult2non Div1non Statut des registres de résultats F0F2F4F6F8F10F12…F30 UE

150 Systèmes superscalaires © 2004 Frédéric Mailhot Université de Sherbrooke Superscalaire: Tomasulo VS Scoreboard Tomasulo: Dénoue automatiquement les problèmes de WAR et WAW Utilisation du CDB élimine le délai de lecture des registres après quun résultat est obtenu (lecture directe sur le bus) Plus complexe en termes de matériel: bus plus large (multiples données+étiquettes), nécéssité de mémoire associative distribuée Scoreboard: Plus simple à réaliser Ne peut résoudre les problèmes de WAW quavec des « stalls »

151 Systèmes superscalaires © 2004 Frédéric Mailhot Université de Sherbrooke Superscalaire: Que choisir – Tomasulo ou Scoreboard? Pour une machine assez simple, qui német quune instruction par coup dhorloge, la complexité supplémentaire de Tomasulo est probablement trop importante pour en valoir la peine (un bon compilateur peut probablement faire aussi bien) Pour une machine complexe, qui supporte plusieurs émissions par coup dhorloge, où il est possible que lutilisation des registres cause des problèmes de WAW, Tomasulo est probablement le meilleur choix

152 Systèmes superscalaires © 2004 Frédéric Mailhot Université de Sherbrooke La quête de la performance: récapitulation Nous avons vu jusquici que pour améliorer la performance des processeurs, on peut: Utiliser le pipeline (instructions découpées en petits éléments quon peut exécuter en parallèle, amélioration de la période de lhorloge) Utiliser plusieurs unités dexécution en parallèle, qui ont possiblement des temps de latence différents (permet lajout de matériel dédié pour produire plus rapidement des multiplications, divisions et additions point flottant) Utiliser des méthodes superscalaires pour parvenir à exécuter plus dune instruction par coup dhorloge Scoreboard Tomasulo

153 Systèmes superscalaires © 2004 Frédéric Mailhot Université de Sherbrooke La quête de la performance: récapitulation (2) Nous avons aussi vu quil existe dautres facteurs qui influencent la performance: 1.Les branchements 2.Laccès à la mémoire (lecture/écriture) Pour la suite, nous verrons ce quon peut faire dabord pour le premier facteur (les branchements), et ensuite pour laccès à la mémoire

154 Gei 431 Architecture des ordinateurs II – Frédéric Mailhot Gestion des branchements Lun des goulots détranglements des processeurs moderne est ce qui se passe en présence de branchements Que peut-on faire pour accélérer lexécution du code en présence de branchements conditionnels?

155 Gestion des branchements © 2004 Frédéric Mailhot Université de Sherbrooke Pourquoi la gestion des branchements est de première importance dans les architectures superscalaires? Nous savons déjà que dans une simple machine pipeline comme le DLX, chaque branchement causera possiblement un délai de 2 coups dhorloge. En conséquence, il y aura dans ce cas deux instructions qui devront être éliminées, et le CPI augmentera en conséquence Dans une machine superscalaire, le problème est encore plus aigu: à chaque coup dhorloge, on lit maintenant plusieurs instructions (de 2 à 8 instructions simultanées) Un délai de 2 coups dhorloge peut donc maintenant représenter plus dune dizaine dinstructions Limpact sur le CPI est donc encore plus important pour une machine superscalaire que pour un simple pipeline

156 Gestion des branchements © 2004 Frédéric Mailhot Université de Sherbrooke Prédiction des branchements Nous avons vu déjà quil est possible dutiliser des prédictions statiques (décidées au niveau du compilateur) pour améliorer la performance des branchements Pourquoi ne pas tenter de faire des prévisions dynamiques (i.e. basée sur léxécution actuelle du code)?

157 Gestion des branchements © 2004 Frédéric Mailhot Université de Sherbrooke Accélérer les branchements: les choix possibles Déterminer plus tôt si le branchement sera pris ou non (branch resolution) Utiliser des prédictions de branchement et lexécution spéculative Pouvoir revenir en arrière si la prédiction savère fausse Déterminer plus tôt la destination du branchement Garder dans un tampon ladresse de destination du branchement, pour utilisation future Permettre de gérer plusieurs branchements imbriqués Il peut arriver quun branchement ne soit toujours pas résolu lorsquun 2e branchement doit être traité

158 Gestion des branchements © 2004 Frédéric Mailhot Université de Sherbrooke Prédiction dynamique des branchements: Prédiction 1-bit 1ère idée (simple): on utilise un registre à 1 bit pour capturer la décision du dernier branchement. Lors du traitement de toute instruction de branchement, on met le registre à 1 si le branchement a été effectué, et à 0 si le branchement na pas été effectué. Chaque fois quon rencontre une instruction de branchement, on utilise le registre de prédiction pour tenter de deviner la décision de branchement. Évidemment, la prédiction doit être validée plus tard par la vraie décision de branchement! (Et si la prédiction était mauvaise, on doit pouvoir éliminer les instructions inappropriées et commencer à lire et exécuter les bonnes instructions)

159 Gestion des branchements © 2004 Frédéric Mailhot Université de Sherbrooke Prédiction dynamique des branchements: Prédiction 1-bit (2) Le système simple quon vient de présenter va bien fonctionner tant quon a affaires au même branchement, mais la prévision naura pas de sens dès quon passera à une autre instruction de branchement… Que peut-on faire? On peut utiliser une petite mémoire de 2^k bits, et pour chaque instruction de branchement, on utilise les k bits dadresse les plus petits de cette instruction pour accéder à la mémoire prédictive. (Idée connexe: hash de ladresse sur k bits) On utilise maintenant 2^k bits au lieu dun seul bit, mais la prévision est valable pour un ensemble plus grand de branchements (on appelle tout de même cette technique « prédiction à 1-bit »)

160 Gestion des branchements © 2004 Frédéric Mailhot Université de Sherbrooke Prédiction dynamique des branchements: problèmes avec la prédiction 1-bit Supposons une boucle qui sexécute 10 fois, et qui est elle- même ré-exécutée répétitivement. Quel sera le pourcentage de succès de notre prédicteur à 1 bit en régime permanent? Évidemment, le dernier branchement de la boucle (lorsquon sort après 10 itérations) est toujours mal prédit. De plus, le branchement de sortie de la boucle va modifier la valeur de notre prédicteur à 1-bit (il va maintenant prédire quon sort de la boucle), et donc la prochaine fois quon exécutera cette boucle, le premier branchement sera aussi mal prédit. Donc, on se trompe 2 fois sur dix (20% derreur)! Comment faire mieux?

161 Gestion des branchements © 2004 Frédéric Mailhot Université de Sherbrooke Prédiction dynamique des branchements: Prédiction 2-bits Pour diminuer le pourcentage derreur de notre prédiction, on peut utiliser 2 bits au lieu de 1. Avec 2 bits, on peut représenter 4 états, ce qui nous permet de définir une petite machine à états finis. Par exemple, on peut définir un compteur avec saturation: (11) branche (10) branche (01) ne branche pas (00) ne branche pas branche ne branche pas branche ne branche pas Note: en blanc, prédiction en orange, valeur calculée (réelle)

162 Gestion des branchements © 2004 Frédéric Mailhot Université de Sherbrooke Prédiction dynamique des branchements: Prédiction 2-bits La machine à états finis précédente va doucement évoluer vers lun des deux pôles, et ensuite va tendre à rester dans cet état pendant longtemps. Chez SUN, pour le Ultra-SPARC-I, on a utilisé une version légèrement modifiée de cette machine à états finis: Note: en blanc, prédiction en orange, valeur calculée (réelle) (11) branche (10) branche (01) ne branche pas (00) ne branche pas branche ne branche pas branche ne branche pas

163 Gestion des branchements © 2004 Frédéric Mailhot Université de Sherbrooke Prédiction dynamique des branchements: Efficacité de la prédiction 2-bits

164 Gestion des branchements © 2004 Frédéric Mailhot Université de Sherbrooke Prédiction dynamique des branchements: Prédiction n-bits? On vient de voir quen passant dun prédicteur à 1-bit à un prédicteur à 2-bits, on diminue le pourcentage derreur. On peut continuer dans le même sens, et passer à un prédicteur a k-bit… Est-ce une bonne idée?

165 Gestion des branchements © 2004 Frédéric Mailhot Université de Sherbrooke Prédiction dynamique des branchements: Prédiction n-bits? Réponse: non, les résultats sont essentiellement les mêmes quavec un prédicteur à 2-bits

166 Gestion des branchements © 2004 Frédéric Mailhot Université de Sherbrooke Prédiction dynamique des branchements: problèmes avec la prédiction 2-bits La prédiction à 2-bits est plus efficace que la prédiction à 1-bit, mais elle nest tout de même pas si bonne. Avec les benchmarks entiers, ce type de prédiction se trompe plus de 11% du temps. Quoi faire? Augmenter la taille de la mémoire? Pas très efficace Tenir compte de la corrélation entre les branchements? Oui! (Idée de Pan, So et Rameh, 1992)

167 Gestion des branchements © 2004 Frédéric Mailhot Université de Sherbrooke Prédiction dynamique des branchements: problèmes de corrélation Soit le code suivant: if (d == 0) d = 1; if (d == 1)… Ceci devient: BNEZ R1, L1branche b1 (d != 0) ADDI R1, R0, 1 L1:SUBI R3, R1, 1 BNEZ R3, L2branche b2 (d != 1) L2:… Supposons que le code est exécuté avec les valeurs d = 2,0,2,0. Quest-ce qui arrive à nos prédictions?

168 Gestion des branchements © 2004 Frédéric Mailhot Université de Sherbrooke Prédiction dynamique des branchements: utilisation de la corrélation Puisque les branchements sont souvent dépendants les uns des autres, comment peut-on faire pour en tenir compte lors de notre prédiction? Nous utiliserons un registre à décalage de « m » bits pour conserver les valeurs des « m » derniers branchements. Ces « m » bits seront ensuite utilisés en partie pour adresser notre tampon de prédiction (le lire, et lorsque la décision définitive de branchement est prise, lécrire) Le reste de ladresse utilisée pour lire le tampon proviendra des k bits les plus faibles de ladresse de linstruction de branchement que nous sommes à prédire

169 Gestion des branchements © 2004 Frédéric Mailhot Université de Sherbrooke Prédiction dynamique des branchements: utilisation de la corrélation (2) Si on utilise les « m » derniers branchements (leurs valeurs, 1 ou 0, étant conservées dans un registre à décalage de « m » bits) Si on utilise un prédicteur à n-bits dans notre tampon de prédiction On dit que le prédicteur basé sur la corrélation est un prédicteur (m,n) Notre prédicteur 2-bits vu auparavant est donc un (0,2), puisquil nutilisait aucune historique Les prédicteurs (2,2) donnent habituellement de bons résultats

170 Gestion des branchements © 2004 Frédéric Mailhot Université de Sherbrooke Prédiction dynamique des branchements: utilisation de la corrélation (3) Branch history register (BHR) Pattern History Table (PHT)

171 Gestion des branchements © 2004 Frédéric Mailhot Université de Sherbrooke Prédiction dynamique des branchements: utilisation de la corrélation (4) Le prédicteur (2,2) donne des résultats supérieurs ou égaux à ceux de prédicteurs 2- bits utilisant beaucoup plus de mémoire

172 Gestion des branchements © 2004 Frédéric Mailhot Université de Sherbrooke Prédiction dynamique des branchements: corrélation différente (Yeh et Patt, en 1992, 1993): Lorsquon parle de corrélation (m,n) (m choix de branchements, n bits de prédiction), doit-on considérer les « m » choix de branchements globalement ou localement? De même, la mémoires des « n » bits de prédiction doit-elle être globale ou locale? En dautres mots, aurait-on intérêt à produire localement ou globalement linformation dans le BHR (Branch History Register)? Même question pour le PHT (Pattern History Table)?

173 Gestion des branchements © 2004 Frédéric Mailhot Université de Sherbrooke Prédiction dynamique des branchements: corrélation différente (2) On appellera prédicteur XAy des systèmes de prédiction de branchement Adaptifs (le A du milieu) où le type de BHR (Branch History Register) est « X », et le type de PHT (Pattern History Table) est « y ».

174 Gestion des branchements © 2004 Frédéric Mailhot Université de Sherbrooke Prédiction dynamique des branchements: corrélation différente (3) On définit les types de prédicteurs XAy suivants: G: BHR global (unique) g: PHT global (unique) P: BHR local, lu/écrit par adresse complète p: PHT local, lu/écrit par adresse complète S: BHR utilisant un sous-ensemble des bits dadresse s: PHT utilisant un sous-ensemble des bits dadresse On peut donc avoir des prédicteurs de 9 types différents: GAg, GAp, GAs, PAg, PAp, PAs, SAg, SAp et SAs

175 Gestion des branchements © 2004 Frédéric Mailhot Université de Sherbrooke Prédiction dynamique des branchements: corrélation différente (4) Exemple: GAg Un seul BHR (Branch History Register), un seul PHT (Pattern History Table) On appelle GAg(4) un tel système qui utilise 4 bits pour le BHR (Branch History Register)

176 Gestion des branchements © 2004 Frédéric Mailhot Université de Sherbrooke Prédiction dynamique des branchements: Système de Yeh et Patt Exemple: GAg(4) shift BHR PHT Prédiction: on branche!

177 Gestion des branchements © 2004 Frédéric Mailhot Université de Sherbrooke Prédiction dynamique des branchements: Système de Yeh et Patt (2) Exemple: GAp(4) GAs(4): comme GAp(4), mais avec un sous-ensemble de ladresse de linstruction de branchement shift BHR PHT … Adresse de linstruction de branchement Prédiction: on branche!

178 Gestion des branchements © 2004 Frédéric Mailhot Université de Sherbrooke Prédiction dynamique des branchements: Système de Yeh et Patt (3) Exemple: PAg(4) Semblable: SAg(4) PHT shift BHR Adresse de linstruction de branchement Prédiction: on ne branche pas!

179 Gestion des branchements © 2004 Frédéric Mailhot Université de Sherbrooke Prédiction dynamique des branchements: Système de Yeh et Patt (4) Exemple: PAp(4) Semblable: SAs(4) PHT shift BHR Adresse de linstruction de branchement … Adresse de linstruction de branchement Prédiction: on branche!

180 Gestion des branchements © 2004 Frédéric Mailhot Université de Sherbrooke Prédiction dynamique des branchements: Système de Yeh et Patt (5) Coût en matériel des différents systèmes de prédiction adaptive: Meilleur système avec un budget de 128k bits: GAs(13,32), qui obtient 97,2% de succès avec les SPEC89 Type de prédicteur Longueur du BHR Nombre de PHT Coût (nombre de bits à emmagasiner) GAg(k)k1k + 2^k * 2 GAs(k,p)kpk + p * 2^k * 2 SAg(k,s)k1s * k + 2^k * 2 SAs(k,s,p)kps * k + p * 2^k * 2

181 Gestion des branchements © 2004 Frédéric Mailhot Université de Sherbrooke Prédiction dynamique des branchements: Système de Yeh et Patt (6) Fait intéressant: Les systèmes utilisant de linformation globale semblent donner de meilleurs résultats pour des programmes qui utilisent des opérations sur des entiers (ces applications utilisent habituellement beaucoup de conditions) Les systèmes utilisant de linformation locale semblent donner de meilleurs résultats pour des programmes qui utilisent des opérations sur des nombres à point flottant (ces applications utilisent souvent des boucles) GAs(13,32) est probablement un bon compromis entre ces deux types dapplications

182 Gestion des branchements © 2004 Frédéric Mailhot Université de Sherbrooke Gestion des branchements: manque-t-il quelque chose? Nous avons maintenant une technique intéressante pour prédire si un branchement sera accepté ou non. Est-ce quil nous manque encore quelque chose pour que le tout fonctionne vraiment? Oui! Cest bien de savoir si le branchement sera pris ou non, mais il faut encore savoir où va nous mener ce branchement pour aller chercher linstruction suivante en cas de branchement…

183 Gestion des branchements © 2004 Frédéric Mailhot Université de Sherbrooke Gestion des branchements: Branch target Buffer Pour savoir où aller dès que le prédicteur a produit son estimé, on utilise une mémoire tampon qui contient ladresse de destination du branchement en question. On appelle ce dispositif un Branch Target Buffer (BTB) Ce tampon associe ladresse dun branchement avec ladresse de destination utilisée précédemment Dans les processeurs qui contiennent des mémoires caches pour les instructions directement sur le circuit (I- cache), on peut immédiatement aller chercher linstruction de destination Dans les processeurs qui nont pas de I-cache (vieux), on a considéré mettre directement linstruction dans le tampon. On appelle alors le tampon un Branch Target Address cache (BTAC)

184 Gestion des branchements © 2004 Frédéric Mailhot Université de Sherbrooke Gestion des branchements: Branch Target Buffer

185 Gestion des branchements © 2004 Frédéric Mailhot Université de Sherbrooke Gestion des branchements: utilisation du BTB

186 Gestion des branchements © 2004 Frédéric Mailhot Université de Sherbrooke Gestion de branchements: quoi dautre? Jusquici, nous avons parlé de: Techniques de prédiction statiques (au niveau du compilateur) Techniques de prédictions dynamiques (prédiction à 2- bits, prédiction adaptive) Techniques pour conserver ladresse de destination des branchements Quest-ce qui manque à notre arsenal? Lexécution spéculative

187 Gestion des branchements © 2004 Frédéric Mailhot Université de Sherbrooke Gestion des branchements: spéculation Soit le code suivant: if (x == 0) { /* branche b1 */ a = b + c ; d = e – f ; } g = h * i ;/* instruction indépendante de b1 */ En supposant que la condition b1 soit faussement prédite prise, linstruction « g = h * i » sera retranchée du processeur alors quelle doit être exécutée de toutes façons

188 Gestion des branchements © 2004 Frédéric Mailhot Université de Sherbrooke Gestion des branchements: spéculation (2) Si le processeur le supporte, le compilateur pourrait réécrire la portion de code précédente comme suit: Pred = (x == 0) ;/* branche b1 */ if Pred then a = b + c ;/* Opération effectuée seulement si */ if Pred then d = e – f ;/* Pred est vrai */ g = h * i ; Cette technique est utilisée dans le processeur Itanium (aka Merced, IA64) de Intel / HP

189 Gestion des branchements © 2004 Frédéric Mailhot Université de Sherbrooke Gestion des branchement: spéculation (3) Certains processeurs font aussi ce quon appelle du « eager » ou « multipath » execution: Le processeur exécute en parallèle les 2 branches dune condition, et élimine celle qui est mauvaise lorsquon connaît le résultat de la condition Fonctionne bien pour des conditions qui ont peu dinstruction à lintérieur En théorie, avec un nombre infini dunités dexécution, on peut paralléliser toutes les branches. En pratique, le nombre dunités dexécution du processeur limite le nombre de branches effectivement exécutées en parallèle

190 Gestion des branchements © 2004 Frédéric Mailhot Université de Sherbrooke Gestion des branchement: spéculation (4) Puisque la spéculation est limitée par le matériel disponible, il faut choisir judicieusement les branches quon exécute de façon spéculative Comment? En intégrant un système de prédiction des branches!

191 Gestion des branchements © 2004 Frédéric Mailhot Université de Sherbrooke Gestion des branchements – effets des langages orientés-objet Lorsquon examine le code exécutable de programmes écrits dans des langages de programmation orientés-objet (e.g. C++, Java), on saperçoit quil existe un bon nombre de branchements dont la destination nest pas une constante Cela vient du fait que certaines méthodes sont décidées de façon dynamique, au cours de lexécution du programme La destination des branchements étant variable, il devient intéressant dutiliser un Branch Target Buffer (BTB), ou même de lintégrer au Pattern History Table (PHT) pour pouvoir prédire rapidement la destination du branchement

192 Gestion des branchements © 2004 Frédéric Mailhot Université de Sherbrooke Processeurs réels et gestion des branchements TechniqueProcesseur Pas de prédictionIntel 8086 Prédiction statique non-prise prise prise (vers larrière) / non-prise (avant) Intel i486 Sun SuperSPARC HP-PA-7x00 Prédiction dynamique 1-bit 2-bits Adaptive DEC Alpha 21064, AMD-K5 PowerPC 604, MIPS R10000 Intel Pentium Pro, Pentium II, AMD K-6 SpéculationIntel / HP Itanium

193 Gei 431 Architecture des ordinateurs II – Frédéric Mailhot Étude de cas Maintenant quon a vu les pipelines, le superscalaire, le VLIW, la gestion des branchements… Nous verrons comment le tout est intégré dans quelques processeurs connus: 1. La famille Pentium, Pentium Pro, Pentium II, Pentium MMX, Pentium III, (Pentium 4) 2. Le processeur Itanium de Intel / HP 3. Le processeur Crusoë de Transmeta

194 Études de cas © 2004 Frédéric Mailhot Université de Sherbrooke Note de départ Nous parlerons ici de processeurs pour lesquels tous les détails techniques ne sont pas disponibles. Ce qui suit est donc incomplet, et peut contenir des erreurs.

195 Études de cas © 2004 Frédéric Mailhot Université de Sherbrooke Cas 1: Famille Pentium Lensemble dinstructions (ISA – Instruction Set Architecture) x86 débute avec le processeur CISC 8086, suivi par la suite des processeurs scalaires 8088, 80286, Intel386, Intel486, suivi des processeurs superscalaires des familles P5 et P6 Le premier Pentium fait partie de la famille P5 Cest une machine superscalaire qui peut émettre 2 instructions par coup dhorloge La famille P6 apparaît en 1995, avec le Pentium Pro, suivi du Pentium MMX (P5) et du Pentium II (P6) en 1997 En 1999, on introduit les instructions « Internet Streaming SIMD extension » (ISSE), avec le Pentium III Fin 2000, apparaît le Pentium 4, avec ISSE 2, et le « hyper pipelining » (pipeline de 20 étages)

196 Études de cas © 2004 Frédéric Mailhot Université de Sherbrooke Cas 1: Famille Pentium AnnéeTypeTransistors (x 1000) m MHzÉmission ( Ops) 1993Pentium3 1000, Pentium3 3000, Pentium MMX4 5000, PentiumPro5 5000, Celeron7 500 – , Pentium II7 5000,25233 – Pentium II Xeon7 5000,25400 – Pentium III9 5000,25450 – Pentium III Xeon9 5000, Pentium 4?0,181,3 – 2 GHz3 (?)

197 Études de cas © 2004 Frédéric Mailhot Université de Sherbrooke Cas 1: Famille Pentium Pentium II: Exécution dinstructions dans le désordre, utilisation du « register renaming » Utilisation de la méthode de Tomasulo Mémoire cache séparée pour les instructions et les données ISA: IA-32, instructions x86 transformées en instructions pseudo-RISC ( ops) envoyées dans une station de réservation centralisée (appelée « instruction window ») Les ops peuvent être exécutées dans le désordre, mais avant (et après) leur exécution elles sont envoyées à un tampon qui écrit les résultats dans le bon ordre (« reorder buffer »)

198 Études de cas © 2004 Frédéric Mailhot Université de Sherbrooke Cas 1: Microprocesseur Pentium II L2 Cache Bus Interface Unit Microcode Instruction Sequencer Instruction Fetch Unit (I-cache) Branch Target Buffer Register Alias Table Instruction Decode Unit External Bus Memory Reorder Buffer D-Cache Unit Reservation Station Unit Memory Interface Unit Functional Units Reorder Buffer and Retirement Register File

199 Études de cas © 2004 Frédéric Mailhot Université de Sherbrooke L2 Cache Bus Interface Unit Microcode Instruction Sequencer Instruction Fetch Unit (I-cache) Branch Target Buffer Register Alias Table Instruction Decode Unit External Bus Memory Reorder Buffer D-Cache Unit Reservation Station Unit Memory Interface Unit Functional Units Reorder Buffer and Retirement Register File Cas 1: Microprocesseur Pentium II (Décodage) Microcode Instruction Sequencer Instruction Fetch Unit (I-cache) Branch Target Buffer Register Alias Table Instruction Decode Unit I-Cache Next IP

200 Études de cas © 2004 Frédéric Mailhot Université de Sherbrooke Cas 1: Microprocesseur Pentium II (Décodage) Microcode Instruction Sequencer Instruction Fetch Unit (I-cache) Branch Target Buffer Register Alias Table Instruction Decode Unit I-Cache Next IP Lunité « Next IP » génère ladresse pour le I-Cache Basé sur linformation provenant du BTB, qui utilise un prédicteur adaptif 2 niveaux (type Yeh et Patt) Le BTB a 512 entrées Les branches mal prédites causent un délai moyen de 15 cycles (minimum: 11 cycles)

201 Études de cas © 2004 Frédéric Mailhot Université de Sherbrooke Cas 1: Microprocesseur Pentium II (Décodeur) Microcode Instruction Sequencer Instruction Fetch Unit (I-cache) Branch Target Buffer Register Alias Table Instruction Decode Unit I-Cache Next IP Alignement Instruction IA-32 Geneal DecoderSimple Decoder op1 op2 op3

202 Études de cas © 2004 Frédéric Mailhot Université de Sherbrooke Cas 1: Microprocesseur Pentium II (Décodeur) Le Décodeur lit 16 octets, et aligne les octets des instructions (jusquà 7 octets / instruction), qui sont de taille variable Il y a 3 unités de décodage: Le décodeur général (traite les instructions complexes, et génère de 1 à 4 ops) 2 décodeurs simples (traitent les instructions de LOAD et registre-à- registre, générant 1 op) Le décodeur peut générer jusquà 6 ops par cycle La station de réservation peut accepter jusquà 3 ops par cycle Alignement Instruction IA-32 Geneal DecoderSimple Decoder op1 op2 op3

203 Études de cas © 2004 Frédéric Mailhot Université de Sherbrooke Cas 1: Microprocesseur Pentium II (Décodeur) Les ops sont des instructions pseudo-RISC, de taille fixe, qui contiennent un code dopération, deux opérandes pour les sources, et un opérande pour la destination Les instructions x86 les plus complexes (celles qui requièrent plus de 4 ops) sont décodées à laide du « Microcode Instruction Sequencer » Instructions registres-à-registres: 1 op Instructions Load: 1 op Instructions Store, Read / Modify: 2 ops Instructions registres-mémoire: 2- 3 ops Instructions Read / Modify / Write: 4 ops RAT: Conversion de registres en étiquettes liées au matériel Ensuite, les ops sont envoyées au ROB et au RSU Microcode Instruction Sequencer Instruction Fetch Unit (I-cache) Branch Target Buffer Register Alias Table (RAT) Instruction Decode Unit I-Cache Next IP

204 Études de cas © 2004 Frédéric Mailhot Université de Sherbrooke L2 Cache Bus Interface Unit Microcode Instruction Sequencer Instruction Fetch Unit (I-cache) Branch Target Buffer Register Alias Table (RAT) Instruction Decode Unit External Bus Memory Reorder Buffer D-Cache Unit Reservation Station Unit (RSU) Memory Interface Unit Functional Units Reorder Buffer (ROB) and Retirement Register File Cas 1: Microprocesseur Pentium II (ROB et RSU)

205 Études de cas © 2004 Frédéric Mailhot Université de Sherbrooke Cas 1: Microprocesseur Pentium II (ROB et RSU) Le ROB garde en mémoire lordre des ops, pour quà la fin de leur exécution elles puissent être « retirées » (retired) dans le bon ordre (écriture dans les registres ou en mémoire) Le RSU contient une fenêtre de 20 ops, qui peuvent être exécutées dans le désordre Memory Reorder Buffer D-Cache Unit Reservation Station Unit (RSU) Memory Interface Unit Functional Units Reorder Buffer (ROB) and Retirement Register File

206 Études de cas © 2004 Frédéric Mailhot Université de Sherbrooke Cas 1: Microprocesseur Pentium II (Reorder Buffer - ROB) Le ROB est utilisé à deux reprises dans le processeur: 1.Entre le décodage des instructions et lexécution des ops : On indique alors lordre relatif des ops dans une instruction et des ops appartenant à des instructions distinctes 2.Après lexécution, pour les retirer dans le bon ordre: Retirer une instruction, cest écrire de façon permanente (commit) les changements de valeurs de registres et de la mémoire, dans une mémoire tampon temporaire, le Retirement Register File (RRF) Le processeur peut retirer 3 ops par coup dhorloge Une op peut être retirée si: Son exécution est terminée Toutes les autres ops de la même instruction sont terminées (?) Toutes les autres instructions qui précèdent sont terminées (et leurs ops respectives) Il ny a pas eu dinterruption, dexception ou derreur de prédiction de branchement

207 Études de cas © 2004 Frédéric Mailhot Université de Sherbrooke L2 Cache Bus Interface Unit Microcode Instruction Sequencer Instruction Fetch Unit (I-cache) Branch Target Buffer Register Alias Table (RAT) Instruction Decode Unit External Bus Memory Reorder Buffer D-Cache Unit Reservation Station Unit (RSU) Memory Interface Unit Functional Units Reorder Buffer (ROB) and Retirement Register File Cas 1: Microprocesseur Pentium II (Exécution)

208 Études de cas © 2004 Frédéric Mailhot Université de Sherbrooke L2 Cache Bus Interface Unit Microcode Instruction Sequencer Instruction Fetch Unit (I-cache) Branch Target Buffer Register Alias Table (RAT) Instruction Decode Unit External Bus Memory Reorder Buffer D-Cache Unit Reservation Station Unit (RSU) Memory Interface Unit Functional Units Reorder Buffer (ROB) and Retirement Register File Cas 1: Microprocesseur Pentium II (Exécution) Reservation Station Unit (RSU) Port0 Port1 Port2 Port3 Port4 Store Functional Unit Load Functional Unit MMX FU Jump FU Integer Functional Unit MMX FU Floating Pt FU Integer Functional Unit

209 Études de cas © 2004 Frédéric Mailhot Université de Sherbrooke Cas 1: Microprocesseur Pentium II (Exécution) Reservation Station Unit (RSU) Port0 Port1 Port2 Port3 Port4 Store Functional Unit Load Functional Unit MMX FU Jump FU Integer Functional Unit MMX FU Floating Pt FU Integer Functional Unit Si une op a les valeurs de ses opérandes dentrées, et que le FU requis est libre, le RSU peut faire lémission Le RSU peut émettre jusquà 5 ops par cycle (une par port), mais en moyenne cest 3 ops

210 Études de cas © 2004 Frédéric Mailhot Université de Sherbrooke Cas 1: Microprocesseur Pentium II (Exécution) Port du RSUFU LatenceIntervalle démission 0 Integer Arithmetic / logical / Shift 11 Integer multiplication 41 Floating Point Add 31 Floating Point Multiplication 52 Floating Point Division Long MMX Arithmetic / logical / Shift 11 MMX Multiplication 31 1 Integer Arithmetic / logical / Shift 11 MMX Arithmetic / logical / Shift 11 2 Load 31 3 Store Address 31 4 Store Data 11

211 Études de cas © 2004 Frédéric Mailhot Université de Sherbrooke Cas 1: Microprocesseur Pentium II (Pipeline) BTB0 BTB1 IFU0 IFU1 IFU2 IDU0 IDU1 RAT ROB read Accès BTB Accès I-cache Decode Fetch et pre-decode Register renaming Reorder Buffer read Port 0 Port 1 Port 2 Port 3 Port 4 ROB read RSU Exécution Émission Reorder Buffer read Reservation Station ROB write RRF Retraite Reorder Buffer Write Retirement Opérations dans lordreOpérations dans le désordreOpérations dans lordre

212 Études de cas © 2004 Frédéric Mailhot Université de Sherbrooke Cas 1: Microprocesseur Pentium 4 (Diagramme)

213 Études de cas © 2004 Frédéric Mailhot Université de Sherbrooke Cas 1: Microprocesseur Pentium 4 (Pipeline) Le pipeline du Pentium 4 a 20 étages ( environ 2 fois plus que le Pentium III): Avantage: il est plus facile daugmenter la fréquence de lhorloge Inconvénient: remplir / vider le pipeline prend du temps…

214 Études de cas © 2004 Frédéric Mailhot Université de Sherbrooke Cas 2: Itanium Développé conjointement par HP et Intel: ISA mis au point chez HP Design matériel principalement chez Intel But: mettre au point la prochaine génération de processeurs haute performance 64 bits Principes de base: éliminer les goulots détranglements connus des systèmes superscalaires existants

215 Études de cas © 2004 Frédéric Mailhot Université de Sherbrooke Cas 2: Itanium (2) Ce qui limite la performance dans les systèmes superscalaires « standard »: Les branchements Les mauvaises prédictions limitent la performance Les petites branches (peu de code) ont peu de code à exécuter, ce qui limite le parallélisme Laccès à la mémoire Utilise plus dun coup dhorloge Souvent, on doit faire un load juste après un branchement Lextraction 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

216 Études de cas © 2004 Frédéric Mailhot Université de Sherbrooke Cas 2: Itanium – Les limites de la performance: Branchements Erreurs de prédiction limitent la performance Les petits blocs de destination limitent le parallélisme Mauvaise utilisation des machines ayant beaucoup dunités dexécution Ld R1 Use R1 St R2 Ld R4 Use R4 IF THEN ELSE Tranches dexécution inutilisées

217 Études de cas © 2004 Frédéric Mailhot Université de Sherbrooke Cas 2: Itanium – Les limites de la performance (2): Latence de la mémoire Temps daccès à la mémoire augmente continuellement par rapport à la vitesse des processeurs Délais de chargement exacerbés par les machines qui exécutent plus dune instruction par coup dhorloge branchement load utilisation Le branchement est une barrière branchement load utilisation Machine scalaireMachine 4 X superscalaire

218 Études de cas © 2004 Frédéric Mailhot Université de Sherbrooke Cas 2: Itanium – Les limites de la performance (3): Extraction du parallélisme Modèle dexécution séquentiel Le compilateur a une vue limitée, indirecte du matériel Code source original Code parallèle Compilateur Code machine séquentiel Code parallèle … Unités dexécution multiples Matériel

219 Études de cas © 2004 Frédéric Mailhot Université de Sherbrooke Compilateur « Expose » Cas 2: Itanium – Meilleure stratégie: parallélisme explicite Le compilateur expose, améliore et exploite le parallélisme du programme source et le rend explicite dans le code machine Code source original « Améliore » Code machine parallèle « Exploite »

220 Études de cas © 2004 Frédéric Mailhot Université de Sherbrooke Cas 2: Itanium – Format des instructions Les instructions sont regroupées en paquets de 128 bits Chaque instruction fait 40 bits Il y a un gabarit (template) de 8 bits qui indique quelles instructions peuvent sexécuter en parallèle Permet au compilateur dextraire plus de parallélisme Simplifie le matériel en éliminant les mécanismes de détection dynamiques Augmentation modeste de la taille du code Instructions EPIC: Explicitely Parallel Instruction Computing (parallélisme explicite grâce aux gabarits) Instruction 1Instruction 0GabaritInstruction 2 Groupe de 128 bits 127 0

221 Études de cas © 2004 Frédéric Mailhot Université de Sherbrooke Cas 2: Itanium – Branchements traditionnels Architecture traditionnelle: 4 blocs de base Les conditions introduisent des branchements Instr 1 Instr 2. p1, p2 <- cmp(a == b) Jump p2 Instr 3 Instr 4. Jump Instr 5 Instr 6. Instr 7 Instr 8. if then else

222 Études de cas © 2004 Frédéric Mailhot Université de Sherbrooke Cas 2: Itanium – Utilisation de « prédicats » Instr 1 Instr 2. p1, p2 <- cmp(a == b) Jump p2 Instr 3 Instr 4. Jump Instr 5 Instr 6. Instr 7 Instr 8. if then else (p1) (p2)

223 Études de cas © 2004 Frédéric Mailhot Université de Sherbrooke Cas 2: Itanium – Utilisation de « prédicats » Instr 1 Instr 2. p1, p2 <- cmp(a == b) Jump p2 Instr 3 Instr 4. Jump Instr 5 Instr 6. Instr 7 Instr 8. if then else Architecture traditionnelle: 4 blocs Instr 1 Instr 2. p1, p2 <- cmp(a == b) Instr 7 Instr 8. if then else Instr 3 Instr 4. (p1) Instr 5 Instr 6. (p2) Architecture EPIC: 1 seul bloc Les prédicats permettent une meilleure utilisation du matériel parallèle

224 Études de cas © 2004 Frédéric Mailhot Université de Sherbrooke Cas 2: Itanium – Utilisation de « prédicats » Le compilateur a une plus grande marge de manœuvre pour faire le « scheduling » des instructions La plupart des instructions peuvent inclure des prédicats Létat de la machine (les registres et la mémoire) ne sont mis à jour que si le prédicat est vrai. Sinon, linstruction devient effectivement un NOP Le compilateur assigne des prédicats aux instructions, qui sont déterminés par les instructions de comparaison EPIC définit 64 registres de prédicats à 1-bit Lutilisation de prédicats élimine les branchements Convertit une dépendance de contrôle en dépendance de données Réduit les pénalités pour les mauvaises prédictions Exécution parallèle de plus dinstructions Utilisation plus efficace du matériel parallèle Sur les SPEC89, près de ½ des branchements sont éliminés

225 Études de cas © 2004 Frédéric Mailhot Université de Sherbrooke Cas 2: Itanium – Délais daccès à la mémoire avec les machines traditionnelles La lecture de la mémoire affecte la performance de façon majeure Souvent le LOAD est la 1ère instruction dune chaîne dinstructions dépendantes Il peut y avoir une grande latence Les LOAD peuvent causer des exceptions Instr 1 Instr 2. Jump p2 Load Utilisation. Barrière Architecture traditionnelle

226 Études de cas © 2004 Frédéric Mailhot Université de Sherbrooke Cas 2: Itanium – Spéculation On sépare la lecture du traitement des exceptions Linstruction de lecture spéculative (ld.s) démarre un Load et détecte les exceptions Les exceptions sont propagées (à laide dun jeton attaché au registre de destination) de ls.s à chk.s La vérification spéculative (chk.s) « rend publiques » les exceptions détectées par ld.s Détection des exceptions Livraison des exceptions Architecture EPIC ld.s Instr 1 Instr 2 …. Jump p2 chk.s Utilisation. Propagation des Exceptions

227 Études de cas © 2004 Frédéric Mailhot Université de Sherbrooke Cas 2: Itanium – Spéculation Donne plus de liberté au compilateur pour le scheduling Permet aux instructions ld.s dapparaître avant les branchements Chk.s demeure à sa position initiale, et initie une correction si une exception est détectée Instr 1 Instr 2. Jump p2 Load Utilisation. Barrière Architecture traditionnelleArchitecture EPIC ld.s Instr 1 Instr 2 …. Jump p2 chk.s Utilisation. Propagation des Exceptions Détection des exceptions Livraison des exceptions

228 Études de cas © 2004 Frédéric Mailhot Université de Sherbrooke Cas 2: Itanium: Exemple - La boucle des 8 Reines if ((b[ j ] == true) && (a[ i + j ] == true) && (c[ i - j + 7 ] == true)) Vrai Mauvaise préd 38% 43% 72% 33% 47% 39% Code original R1 = &b[ j ] R3 = &a [i+j] R5 = &c [i-j+7] Ld R2 = [R1] P1, P2 <- cmp(R2 == true) br exit Ld R4 = [R3] P3, P4 <- cmp(R4 == true) br exit Ld R6 = [R5] P5, P6 <- cmp(R6 == true) br then else cycles, 3 mauvaises prédictions possibles

229 Études de cas © 2004 Frédéric Mailhot Université de Sherbrooke Cas 2: Itanium: Exemple - La boucle des 8 Reines if ((b[ j ] == true) && (a[ i + j ] == true) && (c[ i - j + 7 ] == true)) Code original R1 = &b[ j ] R3 = &a [i+j] R5 = &c [i-j+7] Ld R2 = [R1] P1, P2 <- cmp(R2 == true) br exit Ld R4 = [R3] P3, P4 <- cmp(R4 == true) br exit Ld R6 = [R5] P5, P6 <- cmp(R6 == true) br then else cycles, 3 mauvaises prédictions possibles 9 cycles, 3 mauvaises prédictions possibles Spéculation R1 = &b[ j ] R3 = &a [i+j] R5 = &c [i-j+7] Ld R2 = [R1] Ld.s R4 = [R3] Ld.s R6 = [R5] P1, P2 <- cmp(R2 == true) br exit 1 2 Chk.s R4 P3, P4 <- cmp(R4 == true) br exit 6 Chk.s R6 P5, P6 <- cmp(R6 == true) br then else 8 9

230 Études de cas © 2004 Frédéric Mailhot Université de Sherbrooke Cas 2: Itanium: Exemple - La boucle des 8 Reines if ((b[ j ] == true) && (a[ i + j ] == true) && (c[ i - j + 7 ] == true)) 9 cycles, 3 mauvaises prédictions possibles Spéculation R1 = &b[ j ] R3 = &a [i+j] R5 = &c [i-j+7] Ld R2 = [R1] Ld.s R4 = [R3] Ld.s R6 = [R5] P1, P2 <- cmp(R2 == true) br exit 1 2 Chk.s R4 P3, P4 <- cmp(R4 == true) br exit 6 Chk.s R6 P5, P6 <- cmp(R6 == true) br then else cycles, 1 mauvaise prédiction possible 2 Usage de prédicats R1 = &b[ j ] R3 = &a [i+j] R5 = &c [i-j+7] Ld R2 = [R1] Ld.s R4 = [R3] Ld.s R6 = [R5] P1, P2 <- cmp(R2 == true) br exit Chk.s R4 P3, P4 <- cmp(R4 == true) br exit Chk.s R6 P5, P6 <- cmp(R6 == true) br then else

231 Études de cas © 2004 Frédéric Mailhot Université de Sherbrooke Cas 2: Itanium: Exemple - La boucle des 8 Reines if ((b[ j ] == true) && (a[ i + j ] == true) && (c[ i - j + 7 ] == true)) 7 cycles, 1 mauvaise prédiction possible 2 Usage de prédicats R1 = &b[ j ] R3 = &a [i+j] R5 = &c [i-j+7] Ld R2 = [R1] Ld.s R4 = [R3] Ld.s R6 = [R5] P1, P2 <- cmp(R2 == true) br exit Chk.s R4 P3, P4 <- cmp(R4 == true) br exit Chk.s R6 P5, P6 <- cmp(R6 == true) br then else Code original R1 = &b[ j ] R3 = &a [i+j] R5 = &c [i-j+7] Ld R2 = [R1] P1, P2 <- cmp(R2 == true) br exit Ld R4 = [R3] P3, P4 <- cmp(R4 == true) br exit Ld R6 = [R5] P5, P6 <- cmp(R6 == true) br then else cycles, 3 mauvaises prédictions possibles Résultat: réduction de près de la moitié du nombre de cycles 2/3 des erreurs possibles de prédictions sont éliminées

232 Études de cas © 2004 Frédéric Mailhot Université de Sherbrooke Cas 2: Itanium - Conclusion EPIC (Explicitely Parallel Instruction Computing) Utilise du code assembleur où le parallélisme est indiqué explicitement avec des gabarits (templates) Utilise la prédication pour éliminer les branchements (utilisation de 64 registres de statut qui permettent lexécution conditionnelle dinstructions) Utilise la spéculation pour diminuer limpact des Loads (on sépare le chargement du traitement des exceptions) Architecture des instructions faite pour que les processeurs soient facilement améliorés par des ajouts de matériel parallèle supplémentaire

233 Études de cas © 2004 Frédéric Mailhot Université de Sherbrooke Cas 3: Crusoë de Transmeta Processeur destiné au marché des machines portables Requiert très peu de puissance électrique comparé à dautres processeurs ayant des performances semblables Attrait intéressant: utilise un noyau VLIW sur lequel un émulateur logiciel peut interpréter des instructions destinées à un autre processeur Transmeta a démontré lutilisation dune application hybride Java / x86, où lensemble des instructions sont exécutées (interprétées et traduites) sur le VLIW sous- jacent

234 Études de cas © 2004 Frédéric Mailhot Université de Sherbrooke Cas 3: Crusoë de Transmeta Pour contrôler ses besoins de puissance électrique, Crusoe détecte si le système est peu utilisé, et à la fois réduit la fréquence de lhorloge (de 700 MHz à 200MHz) et le potentiel dalimentation (de 1,65 V à 1,1 V) Puisque P = ½ f * C V^2, La puissance est diminuée de (700 / 200) * (1,65 / 1,1)^2 et P = (1 / 7,88) * P( près de 8 fois moins de puissance )

235 Études de cas © 2004 Frédéric Mailhot Université de Sherbrooke Cas 3: Crusoë – CMS ( Code Morphing Software ) Le processeur Crusoe est un VLIW sur lequel sexécute un logiciel dinterprétation dinstructions x86

236 Études de cas © 2004 Frédéric Mailhot Université de Sherbrooke Cas 3: Crusoë - CMS Le CMS (Code Morphing System) Interprétation des instructions x86 en instructions VLIW Mise en mémoire des séquences dinstructions fréquentes Réutilisation des instructions déjà traduites

237 Études de cas © 2004 Frédéric Mailhot Université de Sherbrooke Cas 3: Crusoë: Diagramme Diagramme du 5400:

238 Études de cas © 2004 Frédéric Mailhot Université de Sherbrooke Cas 3: Crusoë Le 5400:

239 Gei 431 Architecture des ordinateurs II – Frédéric Mailhot Digression: «Control flow » et « Data flow » Jusquici, les processeurs que nous avons étudié ont tous été du type « Von Neumann », cest- à-dire des machines où un « program counter » indique où aller chercher la prochaine instruction. Cest ce quon appelle le modèle « control flow », et cest le type de machine principal qui existe de nos jours Mais… on peut imaginer un autre paradigme pour lexécution des instructions!

240 Processeurs Data Flow © 2004 Frédéric Mailhot Université de Sherbrooke Comment faire un processeur autrement quen utilisant le « control flow » de Von Neumann? Rappelons-nous notre étude du Itanium: nous avons vu que les programmes peuvent être représentés par des graphes: Ces graphes représentent le fait que les instructions ont des dépendances entre elles à cause des données

241 Processeurs Data Flow © 2004 Frédéric Mailhot Université de Sherbrooke Lidée derrière les processeurs « Data flow » Sachant que ce qui va empêcher une instruction de sexécuter, ce sont les valeurs inconnues des opérandes, on peut changer le mode dopération de la machine: Au lieu dindiquer où se trouve la prochaine instruction, on indique quelles sont les dépendances entre les instructions Lorsque toutes les valeurs dentrées dune instruction sont connues, on peut alors lexécuter

242 Processeurs Data Flow © 2004 Frédéric Mailhot Université de Sherbrooke Processeur VS matériel dédié En fait, le mode dopération « Data Flow » est la méthode utilisée lors de la génération de circuits matériels, par exemple dans les ASICs (Application Specific Integrated Circuits) Lorsquon fait la synthèse de circuits à partir de langages HDL (VHDL ou Verilog), cest aussi le modèle « Data Flow » qui est utilisé On verra cela avec un peu plus de détail plus tard durant la session De cette façon, lordre dexécution des opérations est décidé de façon dynamique, pendant que le système est à évaluer les données

243 Processeurs Data Flow © 2004 Frédéric Mailhot Université de Sherbrooke Processeurs « Data Flow » Depuis le début des années 70, il y a eu plusieurs processeurs « Data Flow » étudié par diverses équipes de recherche MIT Static Dataflow Machine (1975) Manchester Dataflow Machine (1979) Hughes Dataflow Multiprocessor (1985) Stateless Data-Flow Architecture (1993) Et beaucoup dautres… Plusieurs types de machines Dataflow ont été étudiées, mais nous nous contenterons dun bref aperçu de la plus simple, la méthode « statique »

244 Processeurs Data Flow © 2004 Frédéric Mailhot Université de Sherbrooke Approche simple: Static dataflow On utilise des jetons (tokens) pour indiquer la validité des données * SQRT xy z 2 3 n i n j Jeton de données Jeton de retour Arc de données Arc de retour (acknowlege) * 2 3 n j x y sqrt z n i x y z n j n i

245 Processeurs Data Flow © 2004 Frédéric Mailhot Université de Sherbrooke Approche simple: Static dataflow On peut utiliser deux façons différentes dinitier les calculs: Push ou Pull: Push: on fait le calcul de la sortie lorsque tous les opérandes sont connus (le contrôle des calculs va des entrées vers les sorties) Pull: on initie le calcul dune valeur que lorsquelle est nécessaire (le contrôle des calculs va des sorties vers les entrées)

246 Processeurs Data Flow © 2004 Frédéric Mailhot Université de Sherbrooke Exemple: la MIT Static Dataflow Machine Operation Unit(s) Instruction Queue Activity Store Send Unit Receive Unit Update Unit Fetch Unit Processing Element Vers le Communication Network

247 Processeurs Data Flow © 2004 Frédéric Mailhot Université de Sherbrooke Exemple: la MIT Static Dataflow Machine Operation Unit(s) Instruction Queue Activity Store Send Unit Receive Unit Update Unit Fetch Unit Processing Element Vers le Communication Network PE Communication Network …

248 Processeurs Data Flow © 2004 Frédéric Mailhot Université de Sherbrooke Machines Dataflow – Remarques et conclusion Certaines idées des machines Dataflow ont été reprises dans les processeurs de type Von Neumann « traditionnels »: Le « renaming », avec utilisation du Common Data Bus, est assez proche des idées dataflow: une instruction ne sexécute que lorsque tous ses opérandes sont prêts Lexécution des instructions dans le « désordre » respecte toujours la disponibilité des opérandes, comme dans les systèmes Dataflow

249 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 de plus? Question plus fondamentale (et importante): Lorsque toutes les techniques vues jusquici sont en place, doù viennent les limites de performance?

250 Que nous réserve le futur? © 2004 Frédéric Mailhot Université de Sherbrooke Quelles sont les limites de performance qui nont pas été abordées jusquici? Dans les années 50, lorsquon sest aperçu que les ordinateurs passaient le plus clair de leur temps à faire des entrées/sorties, on a découplé les E/S (I/O) du processeur central. Plus tard, on a même introduit les systèmes « batch », pour augmenter le niveau dutilisation du CPU central. En quoi ces deux problèmes des années 50 sont- ils semblables à ce qui limite maintenant la performance?

251 Que nous réserve le futur? © 2004 Frédéric Mailhot Université de Sherbrooke Le temps daccès à la mémoire est grand! Maintenant, dans les années 2000, quest-ce qui limite la performance des processeurs? Le temps daccès à la mémoire est de plus en plus grand par rapport au temps dexécution du processeur. Lorsquun accès à la mémoire est fait, on observe les temps daccès suivants (valeurs provenant dun processeur Alpha à 300 MHz): Pas de délai pour le cache L1 7 cycles pour un accès manqué dans L1, réussi dans L2 21 cycles pour un accès manqué dans L2, réussi dans L3 80 cycles pour un accès à la mémoire

252 Que nous réserve le futur? © 2004 Frédéric Mailhot Université de Sherbrooke Les implications des grands temps daccès Les délais impliqués lorsque les données ne sont pas dans les mémoires caches sont très grands. Donc, lorsquil y a un « cache miss », le processeur va sarrêter pendant un long moment (en supposant quon ne peut exécuter dautres instructions qui sont déjà dans le processeur): Ceci va se passer assez souvent lorsquon vient de faire un saut dans une nouvelle partie de code Si le délai daccès à la mémoire est trop grand, éventuellement linstruction en attente va arrêter toutes les autres à causes de dépendances de données Dune certain façon, on revient au problème vécu dans les années 50: le processeur passe trop de temps à faire des entrées/sorties, et le CPU (les unités dexécution dans notre cas) sont trop souvent inactives en attendant que les données soient disponibles)

253 Que nous réserve le futur? © 2004 Frédéric Mailhot Université de Sherbrooke Une solution possible aux grands temps daccès à la mémoire Dans les années 50, on a tout fait pour garder le CPU occupé autant que possible Dans les années 2000, on doit aussi tenter de garder (toutes) les unités dexécution occupées, même pendant un accès à la mémoire… Au niveau du système dexploitation, on sait quil y a souvent beaucoup de threads qui existent au niveau du répartiteur. Et si on faisait le context switch entre les threads au niveau du processeur?…

254 Que nous réserve le futur? © 2004 Frédéric Mailhot Université de Sherbrooke Les processeurs multithreaded: lavenir? Puisque le processeur est souvent inactif (en tout ou en partie, i.e. toutes/certaines unités dexécution sont inutilisées), une idée intéressante est de faire exécuter plusieurs threads parallèles par le processeur En ayant plus dinstructions parmi lesquelles choisir, le taux doccupation des unités dexécution devrait augmenter

255 Que nous réserve le futur? © 2004 Frédéric Mailhot Université de Sherbrooke Les processeurs multithreaded: Quest-ce que cest? On définit une machine « multithreaded » ainsi: Processeur dans lequel les instructions à exécuter proviennent potentiellement de différents threads Quel est lavantage de ces machines? Lorsquun thread est immobilisé (par une instruction en attente de quelque donnée ou unité dexécution), dautres instructions provenant de dautres threads peuvent sexécuter Les threads partagent la même mémoire, donc laccès à la mémoire (le tableau des pages) na pas besoin dêtre modifié

256 Que nous réserve le futur? © 2004 Frédéric Mailhot Université de Sherbrooke Types de machines « multithread » Machine single-thread scalaire: 1111 Temps

257 Que nous réserve le futur? © 2004 Frédéric Mailhot Université de Sherbrooke Types de machines « multithread » Machine multi-thread scalaire par bloc: 1234 Temps 121 Changement de contexte (Context Switch) 12

258 Que nous réserve le futur? © 2004 Frédéric Mailhot Université de Sherbrooke Types de machines « multithread » Machine multi-thread scalaire cycle-par-cycle: 1234 Temps Changement de contexte (Context Switch)

259 Que nous réserve le futur? © 2004 Frédéric Mailhot Université de Sherbrooke Types de machines « multithread » Machine single-thread superscalaire: 1 Temps

260 Que nous réserve le futur? © 2004 Frédéric Mailhot Université de Sherbrooke Types de machines « multithread » Machine single-thread VLIW: 1 Temps NNNNNN

261 Que nous réserve le futur? © 2004 Frédéric Mailhot Université de Sherbrooke Types de machines « multithread » Machine multi-thread superscalaire cycle-par- cycle: Temps Changement de contexte (Context Switch)

262 Que nous réserve le futur? © 2004 Frédéric Mailhot Université de Sherbrooke Types de machines « multithread » Machine multi-thread VLIW cycle-par-cycle: Temps Changement de contexte (Context Switch) NNNNNNNNNNN

263 Que nous réserve le futur? © 2004 Frédéric Mailhot Université de Sherbrooke Types de machines « multithread » Machine multi-thread superscalaire par émission (Simultaneous multithreading, SMT): Université de Washington (1995), Karlsruhe (1996) 1234 Temps

264 Que nous réserve le futur? © 2004 Frédéric Mailhot Université de Sherbrooke Types de machines « multithread » Machine multi-thread scalaire par émission (chip multiprocessor, CMP): 1234 Temps

265 Que nous réserve le futur? © 2004 Frédéric Mailhot Université de Sherbrooke Le futur: quoi dautre? On a remarqué que dans de nombreux programmes, les mêmes variables sont lues de façon répétitive avec les mêmes valeurs. Idée: on va commencer lexécution dune instruction avant de connaître la valeur de ses opérandes, en utilisant des valeurs « prédites » à partir des valeurs précédentes On appelle cette technique la « superspéculation »

266 Que nous réserve le futur? © 2004 Frédéric Mailhot Université de Sherbrooke La superspéculation Les processeurs utilisant cette technique utilisent deux sous-systèmes: Un système « front end » qui spécule de façon agressive, allant jusquà prédire les valeurs manquantes Un système « back end » qui valide les prédictions de valeurs et qui peut corriger le tir lorsque nécessaire

267 Gei 431 Architecture des ordinateurs II – Frédéric Mailhot Hiérarchie de la mémoire Les processeurs modernes requièrent beaucoup de mémoire rapide. Or, plus la mémoire est rapide, plus elle est chère. Que faire pour obtenir à coût raisonnable une machine performante? On utilise une hiérarchie de mémoires cache

268 Hiérarchie de la mémoire © 2004 Frédéric Mailhot Université de Sherbrooke Pourquoi les mémoires caches fonctionnent-elles? Les mémoires caches fonctionnent parce que les mêmes instructions sont réutilisées de multiples fois (évidemment si chaque instruction nétait utilisée quune seule fois, lutilisation de la mémoire cache ne serait pas très en vogue…) On parle de localité des références: Localité temporelle Les instructions utilisées récemment sont souvent réutilisées Localité spatiale Les instructions voisines sont souvent exécutées de concert Localité séquentielle Les branchements constituent de 20 à 30% des instructions. Donc, de 70 à 80% des instructions sexécutent toujours en séquence Les branchements vont souvent prendre les mêmes chemins pendant un certain temps (les branchements sont corrélés)

269 Hiérarchie de la mémoire © 2004 Frédéric Mailhot Université de Sherbrooke Pourquoi une hiérarchie de mémoire? Plus la mémoire a un temps daccès petit, plus elle coûte cher. Il vaut donc la peine dutiliser le moins possible de mémoire rapide tout en conservant une performance acceptable: Touchant le processeur, on a la mémoire la plus rapide (et aussi la plus chère) En bout de ligne, on a la mémoire principale, suivie du disque De nos jours, le premier niveau de mémoire cache se trouve souvent sur le même chip que le processseur (le 2e niveau peut aussi sy retrouver)

270 Hiérarchie de la mémoire © 2004 Frédéric Mailhot Université de Sherbrooke Coût de la mémoire et temps daccès

271 Hiérarchie de la mémoire © 2004 Frédéric Mailhot Université de Sherbrooke Taille de la mémoire cache et probabilité de « hit »

272 Hiérarchie de la mémoire © 2004 Frédéric Mailhot Université de Sherbrooke Mémoire cache: comment ça marche? Lidée de la mémoire cache, cest de conserver dans une mémoire rapide les données dont on aura besoin bientôt Il existe plusieurs techniques pour distinguer les données emmagasinées dans la mémoire cache: Mapping associatif Mapping direct Mapping par ensemble associatif (set-associative)

273 Hiérarchie de la mémoire © 2004 Frédéric Mailhot Université de Sherbrooke Mémoire associative: comment ça marche Chaque entrée dans ce type de mémoire contient une clé et une valeur. Pour accéder à la valeur, il suffit de présenter la bonne clé (cest la même idée que pour un tableau de hachage) Lorsquon présente une clé à ce type de mémoire, toutes les clés de toutes les entrées de la mémoire sont comparées en parallèle. Celle qui est identique (si elle existe) détermine quelle valeur est présentée à la sortie

274 Hiérarchie de la mémoire © 2004 Frédéric Mailhot Université de Sherbrooke Mémoire associative: comment ça marche 0x00CCBB xCC0011B x000011B x x00CCBB50 0xCC0011B xFFFFFFFF x000011B0 Mémoire cache

275 Hiérarchie de la mémoire © 2004 Frédéric Mailhot Université de Sherbrooke Mémoire associative: pour ou contre? Avantages: Très flexible Peut être très rapide Inconvénients: Système coûteux (chaque élément de mémoire doit contenir un comparateur!)

276 Hiérarchie de la mémoire © 2004 Frédéric Mailhot Université de Sherbrooke Mapping direct Match? … 0x000011B … Mémoire Taille de la mémoire: 64K X taille (données) ComparateurDonnées 0x00CCBB50 Addresse (index) ÉtiquettesDonnées Étiquettes

277 Hiérarchie de la mémoire © 2004 Frédéric Mailhot Université de Sherbrooke Mapping direct: pour ou contre? Avantages: Utilise de la mémoire rapide mais « standard » (sans comparateur intégré) Moins coûteux que la mémoire associative Désavantages: Requiert un peu de circuiterie additionnelle Si 2 addresses utilisées dans la même période de temps ont le même index, il y aura continuellement des collisions…

278 Hiérarchie de la mémoire © 2004 Frédéric Mailhot Université de Sherbrooke Mapping set-associative Données 0x00CCBB50 Addresse (index) Match? Système à Mapping direct 321 Système à Mapping direct 321 Système à Mapping direct 321 Étiquette

279 Hiérarchie de la mémoire © 2004 Frédéric Mailhot Université de Sherbrooke Mapping set-associative: bilan Bon compromis entre mapping direct et mapping associatif: Moins coûteux que la mémoire associative Permet davoir des addresses dont les index sont les mêmes

280 Hiérarchie de la mémoire © 2004 Frédéric Mailhot Université de Sherbrooke Mémoire cache: que fait-on lorsque la mémoire est pleine? Lorsque la mémoire cache est remplie et une nouvelle valeur doit y être écrite, on doit faire de la place… Les méthodes utilisées sont variables: Remplacement aléatoire Remplacement « Least Frequently Used », LFU Un compteur comptabilise le nombre de fois quune valeur est utilisée Remplacement « Least Recently Used », LRU Avec une mémoire cache assez grande, les méthodes LRU et aléatoires donnent des résultats comparables (sachant que la méthode aléatoire est beaucoup plus simple à mettre en place, que choisiriez-vous?)

281 Hiérarchie de la mémoire © 2004 Frédéric Mailhot Université de Sherbrooke Mémoire cache: que fait-on lors décritures? Il existe deux méthodes de gérer les écritures en mémoire par le biais de la mémoire cache: Write-through: Dès quune nouvelle valeur est écrite, on fait lécriture en mémoire principale, et on garde (ou pas) cette valeur dans la mémoire cache. Write-back: On conserve la nouvelle valeur dans la mémoire cache, et éventuellement on écrit cette valeur dans la mémoire principale Avantage du write-back: Une série de lectures/écritures à la même adresse nimplique pas de délai pour les écritures intermédiaires Avantages du write-through: lorsquon manque de place dans la mémoire cache (à cause dun read miss), il ny a jamais décriture requise

282 Hiérarchie de la mémoire © 2004 Frédéric Mailhot Université de Sherbrooke Mémoire cache: write-back, write-through Lorsque ladresse de destination de lécriture nest pas en mémoire (write miss), on peut soit garder une copie dans la mémoire cache (write allocate), soit ne rien faire (no write allocate) Le write allocate est habituellement associé au write-back, où on espère quune prochaine écriture pourra se faire directement dans la mémoire cache Le no-write allocate est habituellement associé au write- through, puisque les écritures subséquentes vont de toutes façons aller jusquà la mémoire principale

283 Hiérarchie de la mémoire © 2004 Frédéric Mailhot Université de Sherbrooke La performance des mémoires cache La performance des mémoires cache dépend évidemment de la quantité de « misses ». On peut séparer ceux-ci en trois catégories: Obligatoires – lorsquon accède à une adresse pour la première fois De capacité – lorsque la mémoire cache était pleine et quon a dû laisser aller certaines des valeurs lues précédemment De conflit – lorsque deux adresses distinctes correspondent à la même entrée dans la mémoire cache La performance du système dépend aussi du délai encouru lors dun « miss ». Pour optimiser la performance dun système, il faut donc à la fois réduire le nombre de misses, et réduire les délais encourus lors de « misses »

284 Gei 431 Architecture des ordinateurs II – Frédéric Mailhot Les multiprocesseurs Jusquà maintenant, nous avons parlé longuement des microprocesseurs. Nous allons maintenant étudier les multiprocesseurs, comment ils fonctionnent, quels sont les problèmes particuliers qui apparaissent.

285 Les multiprocesseurs © 2004 Frédéric Mailhot Université de Sherbrooke Les multiprocesseurs Périodiquement, depuis les années 60, on a prédit la fin des uniprocesseurs, au profit des multiprocesseurs On parle souvent de la vitesse de la lumière comme dune limite proche dêtre atteinte: C = 3 X 10 ^ 8 m/s – » 15 cm / 0,5 ns (2 GHz) On dit que des architectures nouvelles (multiprocesseurs) devront être utilisées pour continuer daméliorer la performance Mais… depuis 1985, laugmentation de performance des processeurs est la plus importante depuis la fin des années 50!

286 Les multiprocesseurs © 2004 Frédéric Mailhot Université de Sherbrooke Les multiprocesseurs – pourquoi En supposant que les microprocesseurs demeurent la technologie dominante pour les uniprocesseurs, il semble naturel dimaginer en connecter plusieurs ensemble pour augmenter la performance Il nest pas clair que le taux dinnovation au niveau de larchitecture pourra se continuer longtemps Il semble quil y ait des progrès constants dans les 2 domaines où les machines parallèles ont le plus de difficulté: le logiciel et les interconnexions

287 Les multiprocesseurs © 2004 Frédéric Mailhot Université de Sherbrooke Les types de multiprocesseurs Taxonomie proposée par Flynn dans les années 60: SISD (Single Instruction Single Data): uniprocesseur SIMD (Single Instruction Multiple Data): plusieurs processeurs, qui exécutent en parallèle les mêmes instructions sur plusieurs données MISD (Multiple Instruction Single Data): pas dexemple connu MIMD (Multiple Instruction Multiple Data): plusieurs processeurs qui opèrent de façon indépendantes ou semi-indépendantes sur leurs données

288 Les multiprocesseurs © 2004 Frédéric Mailhot Université de Sherbrooke Types de multiprocesseurs utilisés Les premiers multiprocesseurs étaient du type SIMD, et cette architecture est encore utilisée pour certaines machines spécialisées Le type MIMD semble être la cible de choix de nos jours pour des ordinateurs dapplication courante: Les MIMD sont flexibles: on peut les utiliser comme machines à un seul utilisateur, ou comme machines multi-programmées Les MIMD peuvent être bâties à partir de processeurs existants

289 Les multiprocesseurs © 2004 Frédéric Mailhot Université de Sherbrooke Au centre des processeurs MIMD: la mémoire On peut classifier les processeurs MIMD en deux classes, dépendant du nombre de processeurs dans la machine. Ultimement, cest lorganisation de la mémoire qui est affectée: Mémoire partagée centralisée (centralized shared memory) Mémoire distribuée

290 Les multiprocesseurs © 2004 Frédéric Mailhot Université de Sherbrooke Cohérence de la mémoire cache Architecture possible des multiprocesseurs Multiprocesseur Mémoire partagée centralisée (UMA) Mémoire distribuée Basée sur lespionnage (bus) Espace dadressage unique (NUMA) Espace dadressage privé (multi-ordinateurs) Write invalidate protocol Write update protocol Write-through (mémoire centrale) Write-back (mémoire centrale) Basée sur un répertoire

291 Les multiprocesseurs © 2004 Frédéric Mailhot Université de Sherbrooke Mémoire partagée centralisée

292 Les multiprocesseurs © 2004 Frédéric Mailhot Université de Sherbrooke Mémoire partagée centralisée La mémoire partagée centralisée (centralized shared memory) est utilisée par des machines dau plus une douzaine de processeurs en 1995 On utilise un bus qui connecte les processeurs et la mémoire, avec laide de mémoire cache locale. On appelle ce type de structure de mémoire le Uniform Memory Access (UMA).

293 Les multiprocesseurs © 2004 Frédéric Mailhot Université de Sherbrooke Mémoire distribuée

294 Les multiprocesseurs © 2004 Frédéric Mailhot Université de Sherbrooke Architecture possible des multiprocesseurs Multiprocesseur Mémoire partagée centralisée (UMA) Mémoire distribuée

295 Les multiprocesseurs © 2004 Frédéric Mailhot Université de Sherbrooke Mémoire distribuée La mémoire distribuée est utilisée dans des machines utilisant « beaucoup » de processeurs, qui requièrent une bande passante trop grande pour une mémoire unique « Beaucoup » tend à diminuer avec le temps, puisque la performance des processeurs continue daugmenter plus rapidement que celle de la mémoire Avantages de la mémoire distribuée: il est plus facile daugmenter la bande passante de la mémoire si la plupart des accès mémoire sont locaux. La latence est aussi améliorée lorsquon utilise la mémoire locale

296 Les multiprocesseurs © 2004 Frédéric Mailhot Université de Sherbrooke Modèles de mémoire distribuée Il existe deux modèles de mémoire distribuée: Espace dadressage unique, accessible par tous les processeurs, mais distribué parmi les processeurs. On dit de ce système quil est Non-Uniform Memory Access (NUMA), parce que le temps daccès à la mémoire dépend de lendroit où se trouve la région qui est adressée (locale ou distante) Espace dadressage privé, où chaque processeur a un accès exclusif à la mémoire locale. On appelle parfois ces systèmes des systèmes multi-ordinateurs (multi-computers) Pour ces deux modèles, le mode de communication diffère: Pour la mémoire partagée, la communication se fait de façon implicite, en écrivant/lisant la mémoire. Pour la mémoire privée, on doit utiliser des messages explicites entre les processeurs pour passer linformation de lun à lautre, doù leur nom de machines à passage de message (Message Passing Machines)

297 Les multiprocesseurs © 2004 Frédéric Mailhot Université de Sherbrooke Architecture possible des multiprocesseurs Multiprocesseur Mémoire partagée centralisée (UMA) Mémoire distribuée Espace dadressage unique (NUMA) Espace dadressage privé (multi-ordinateurs)

298 Les multiprocesseurs © 2004 Frédéric Mailhot Université de Sherbrooke Avantages et inconvénients des mécanismes de communication Mémoire partagée: Mécanisme bien connu Facile à programmer (et facile de bâtir des compilateurs) Meilleure utilisation de la bande passante (protection de la mémoire au niveau du matériel, et non au niveau du système dexploitation Possibilité dutiliser des techniques de caching Message-passing: Matériel simplifié Communication explicite, exigeant lintervention du programmeur

299 Les multiprocesseurs © 2004 Frédéric Mailhot Université de Sherbrooke Paramètres de communication Bande passante: Limitée par linterconnection ou par les processeurs eux- mêmes? Temps de latence Temps de préparation de lenvoyeur + temps de vol + (taille du message) / (bande passante) + temps de réception. Élimination apparente de la latence (latency hiding) Comment minimiser limpact de la latence? Impact au niveau du logiciel

300 Les multiprocesseurs © 2004 Frédéric Mailhot Université de Sherbrooke Limites de la programmation parallèle Loi de Amdahl: Speedup = 1_____________ Fraction(améliorée) + (1 - Fraction(améliorée) Speedup(amélioré) Soit un speedup désiré de 80 avec 100 processeurs. Quelle portion de lapplication peut être séquentielle? Fraction(parallèle) = > 0,25% maximum peut être séquentielle

301 Les multiprocesseurs © 2004 Frédéric Mailhot Université de Sherbrooke Limites de la programmation parallèle (II) Importance de la latence: Dans les machines parallèles daujourdhui, laccès à de linformation sur un autre processeur peut prendre entre 50 et 10,000 coups dhorloge. Soit une machine qui prend 2,000 ns pour un accès mémoire à distance, une horloge de 10 ns, et un CPI de base de 1.0. Quelle est limpact sur le CPI si 0,5% des instructions font un accès mémoire à distance? Accès à distance = 2,000 / 10 = 200 coups dhorloge CPI = ,5% X 200 = 2.0

302 Les multiprocesseurs © 2004 Frédéric Mailhot Université de Sherbrooke Les systèmes à mémoire partagée centralisée Dans ce qui suit, nous allons maintenant étudier comment faire un système parallèle MIMD qui utilise de la mémoire partagée centralisée

303 Les multiprocesseurs © 2004 Frédéric Mailhot Université de Sherbrooke La cohérence de la mémoire – quest-ce que cest? Comme pour les uniprocesseurs, il est essentiel pour la performance des multiprocesseurs que le temps daccès à la mémoire soit raisonnable Lutilisation de mémoire cache est donc encore de première importance Puisquon est en présence de plusieurs machines, il se peut quune adresse mémoire utilisée par une machine « A » soit modifiée par une machine « B ». Il faut sassurer que les données gardées dans les mémoires caches soient les mêmes pour tous les processeurs. Cest ce quon appelle la « cohérence » de la mémoire

304 Les multiprocesseurs © 2004 Frédéric Mailhot Université de Sherbrooke Exemple du problème de cohérence de cache TempsÉvénementCache du CPU A Cache du CPU B Contenu de la mémoire, adresse « X » 01 1CPU A lit X11 2CPU B lit X111 3CPU A écrit 0 dans X 010

305 Les multiprocesseurs © 2004 Frédéric Mailhot Université de Sherbrooke Définition de la cohérence de la mémoire Définition 1: Chaque lecture de la mémoire retourne la valeur écrite le plus récemment Cette définition traite de 2 concepts: La cohérence (est-ce que la lecture retourne la bonne valeur) La consistence (quand est-ce quune valeur écrite devient visible?)

306 Les multiprocesseurs © 2004 Frédéric Mailhot Université de Sherbrooke Définition de la cohérence La mémoire est cohérente si: Un read par le processeur P à ladresse X qui suit un write à ladresse X par le processeur P, sans quil ny ait eu décriture par dautres processeurs, retourne toujours la valeur écrite par P Un read par P à ladresse X qui suit un write par Q à ladresse X retourne la valeur écrite par Q si les 2 événements sont assez distants dans le temps Les écritures au même endroit sont sérialisées Les écritures par deux processeurs P et Q à ladresse X sont vues dans le même ordre par tout processeur du système

307 Les multiprocesseurs © 2004 Frédéric Mailhot Université de Sherbrooke Fonction de la mémoire cache La mémoire cache a deux fonctions: La migration: On transporte les valeurs dans la mémoire cache locale pour diminuer le temps daccès La réplication: Lorsquune donnée est modifiée, toutes les caches qui la détiennent doivent être infformées

308 Les multiprocesseurs © 2004 Frédéric Mailhot Université de Sherbrooke Dans un système à multiprocesseur, comment connaître létat des différentes caches? Il existe deux classes de protocoles de cohérence de cache: Basé sur un répertoire (directory based): létat de partage des adresses de la mémoire est conservé dans un endroit unique, le directory Basé sur lespionnage (snooping): chaque mémoire cache est branchée sur un bus de mémoire commun, et écoute continuellement ce qui se passe

309 Les multiprocesseurs © 2004 Frédéric Mailhot Université de Sherbrooke Cohérence de la mémoire cache Architecture possible des multiprocesseurs Multiprocesseur Mémoire partagée centralisée (UMA) Mémoire distribuée Basée sur lespionnage (bus) Espace dadressage unique (NUMA) Basée sur un répertoire

310 Les multiprocesseurs © 2004 Frédéric Mailhot Université de Sherbrooke Méthodes de maintient de la cohérence Il y a deux façons de sassurer de la cohérence des caches: Obtenir laccès exclusif de ladresse mémoire visée Mettre à jour les autres copies Lusage exclusif de la mémoire est appelé le protocole décriture invalidante (write invalidate protocol). Le principe est le suivant: suivant lécriture dune donnée, toutes les autres copies de cette donnée sont marquées comme étant invalides. La mise à jour des autres copies est appelée le protocole décriture et mise à jour (write update protocol, aussi appellé write broadcast protocol). Ici, chaque écriture est suivie de messages de mises à jour pour les autres versions de la même donnée.

311 Les multiprocesseurs © 2004 Frédéric Mailhot Université de Sherbrooke Cohérence de la mémoire cache Architecture possible des multiprocesseurs Multiprocesseur Mémoire partagée centralisée (UMA) Basée sur lespionnage (bus) Write invalidate protocol Write update protocol

312 Les multiprocesseurs © 2004 Frédéric Mailhot Université de Sherbrooke Méthodes de maintient de la cohérence (II) Les deux protocoles dopération ont des caractéristiques différentes qui infuencent leur performance: Dans le cas décritures multiples au même espace mémoire, sans lecture intermédiaire: Le protocole de mise à jour utilisera de multiples appels aux autres machines Le protocole dusage exclusif nutilisera quun seul accès dinvalidation. Il est possible de regrouper les mots mémoire pour le protocole dusage exclusif, et ainsi diminuer le nombre dinvalidations nécessaires lors décriture à des adresses adjacentes (on invalide toute un bloc de mémoire) Cette possibilités nexiste pas pour le protocole de mise à jour.

313 Les multiprocesseurs © 2004 Frédéric Mailhot Université de Sherbrooke Méthodes de maintient de la cohérence (III) Le délai nécessaire entre lécriture dune donnée et sa lecture sur une autre machine est habituellement plus petit avec un protocole de mise à jour Le protocole dusage exclusif est maintenant le plus utilisé dans les machines multiprocesseurs

314 Les multiprocesseurs © 2004 Frédéric Mailhot Université de Sherbrooke Implémentation du protocole dusage exclusif Comment réaliser ce protocole? Sur un multiprocesseur à petite échelle, on utilise le bus comme moyen privilégié de synchronisation. Pour pouvoir écrire dans la mémoire, un processeur doit dabord obtenir le contrôle du bus. Ensuite, ladresse de la mémoire modifiée est envoyée sur le bus. Tous les autres processeurs sont continuellement à lécoute. Si une écriture est faite à une adresse mémoire qui est dans leur cache, cette adresse est invalidée.

315 Les multiprocesseurs © 2004 Frédéric Mailhot Université de Sherbrooke Implémentation du protocole dusage exclusif (II) Pour la lecture, sil y a un cache miss, le processeur va demander la donnée sur le bus. Ici, il y a 2 possibilités: Si la mémoire centrale est continuellement mise à jour (write-through), alors elle peut fournir la valeur demandée. Si au contraire on utilise lécriture avec délai (write- back), il se peut que ce soit un processeur qui détienne la valeur la plus récente. Pour ce type de machine, les processeurs doivent écouter le bus pour la lecture aussi, et fournir la valeur demandée en interrompant la lecture de la mémoire centrale.

316 Les multiprocesseurs © 2004 Frédéric Mailhot Université de Sherbrooke Cohérence de la mémoire cache Architecture possible des multiprocesseurs Multiprocesseur Mémoire partagée centralisée (UMA) Basée sur lespionnage (bus) Write invalidate protocol Write update protocol Write-through (mémoire centrale) Write-back (mémoire centrale)

317 Les multiprocesseurs © 2004 Frédéric Mailhot Université de Sherbrooke Implémentation du protocole dusage exclusif (III) On peut ajouter de linformation dans la mémoire cache locale pour améliorer le rendement du système (write-back). On utilise alors un bit de partage: Lors de lécriture dune adresse mémoire, on met le bit de partage à 0. Lors décritures subséquentes, on ninforme personne de lécriture si le bit de partage est toujours à 0. Si un autre processeur lit cette adresse mémoire, le bit de partage est mis à 1, et une écriture subséquente va donc générer une invalidation. Note: comment permettre laccès efficace de la mémoire cache à la fois par le processeur et par le système de surveillance du bus? On peut tout simplement dédoubler linformation de partage. Une façon de faire est dutiliser des caches multi-niveaux.

318 Les multiprocesseurs © 2004 Frédéric Mailhot Université de Sherbrooke Protocole « write-invalidate »

319 Les multiprocesseurs © 2004 Frédéric Mailhot Université de Sherbrooke Protocole « write – invalidate » unifié

320 Les multiprocesseurs © 2004 Frédéric Mailhot Université de Sherbrooke Cohérence de la mémoire cache Architecture possible des multiprocesseurs Multiprocesseur Mémoire partagée centralisée (UMA) Mémoire distribuée Basée sur lespionnage (bus) Espace dadressage unique (NUMA) Espace dadressage privé (multi-ordinateurs) Write invalidate protocol Write update protocol Write-through (mémoire centrale) Write-back (mémoire centrale) Basée sur un répertoire

321 Les multiprocesseurs © 2004 Frédéric Mailhot Université de Sherbrooke Gestion de la mémoire pour des machines à beaucoup de processeurs Lorsquon désire utiliser beaucoup de processeurs, la méthode de mémoire partagée centralisée ne fonctionne plus: les délais deviennent trop importants Solution: utiliser de la mémoire partagée distribuée Problème (toujours le même): cohérence des mémoires cache. Solution possible: on défend dutiliser de la mémoire cache pour les données partagées! Cest la solution adoptée entres autres par le Cray T3D. Chaque nœud possède une mémoire cache uniquement pour ses données privées (locales).

322 Les multiprocesseurs © 2004 Frédéric Mailhot Université de Sherbrooke Problème de cohérence de cache pour des machines à beaucoup de processeurs Solution possible: gestion logicielle (simplifie le matériel), mais… Pas de mécanismes efficaces pour « passer » le problème au compilateur, et faire gérer le problème de cohérence sans lintervention du programmeur On ne peut accéder à des adresses adjacentes de façon efficace. Meilleure solution: utiliser un système matériel qui assure la cohérence des caches

323 Les multiprocesseurs © 2004 Frédéric Mailhot Université de Sherbrooke Mémoire partagée distribuée: le répertoire, un protocole plus efficace que lespionnage Au lieu de faire de lespionnage (snooping), du bus de connexion des processeurs, on peut utiliser un répertoire qui indique létat de la mémoire. En particulier, le répertoire peut indiquer létat de chaque bloc de mémoire qui peut se retrouver dans la mémoire cache. On y indique par exemple quelles mémoires cache ont des copies de quels blocs de mémoire, et si la mémoire a été modifiée (dirty bit) ou non.

324 Les multiprocesseurs © 2004 Frédéric Mailhot Université de Sherbrooke Mémoire partagée distribuée: le répertoire Problème avec le répertoire: La quantité dinformation à emmagasiner est proportionnelle au nombre de blocs de mémoire multiplié par le nombre de processeurs. Pour plus de 100 processeurs, on peut avoir un problème despace requis pour le répertoire… Autre problème: le répertoire lui-même peut devenir le goulot détranglement (trop de requêtes). Solution: Le répertoire lui-même peut être distribué de concert avec la mémoire

325 Les multiprocesseurs © 2004 Frédéric Mailhot Université de Sherbrooke Système multiprocesseur à répertoire distribué

326 Les multiprocesseurs © 2004 Frédéric Mailhot Université de Sherbrooke Protocole de répertoire simple Pour fonctionner correctement, le système doit pouvoir gérer 2 types dopérations: Les lectures manquées (« read miss ») Les écritures dans un bloc de mémoire partagée Pour ce faire, le répertoire doit contenir linformation suivante pour chaque bloc de mémoire: Mémoire partagée (un ou plusieurs processeurs utilisent ce bloc mémoire, qui est à jour) Mémoire non en cache (aucun processeur nutilise une copie de ce bloc mémoire) Mémoire exclusive ( un et un seul processeur utilise ce bloc, qui a été écrit et donc qui nest plus à jour) Il faut savoir quels processeurs utilisent le bloc mémoire sil est partagé. On peut utiliser un vecteur de bits par bloc mémoire pour gérer cette information

327 Les multiprocesseurs © 2004 Frédéric Mailhot Université de Sherbrooke Protocole de répertoire simple (2) On suppose que la machine contient un grand nombre de processeurs. Il nest plus possible dutiliser le bus pour résoudre les problèmes daccès simultanés. De plus, on suppose que la communication se fait de point à point (pourquoi?)

328 Les multiprocesseurs © 2004 Frédéric Mailhot Université de Sherbrooke Protocole dutilisation de répertoire

329 Les multiprocesseurs © 2004 Frédéric Mailhot Université de Sherbrooke Protocole dutilisation de répertoire

330 Gei 431 Architecture des ordinateurs II – Frédéric Mailhot Le VHDL De nos jours, les circuits numériques de haute performance sont habituellement créés à partir de descriptions en langages de haut niveau. Nous allons maintenant parler de lun de ces langages, le VHDL

331 Le VHDL © 2004 Frédéric Mailhot Université de Sherbrooke Le VHDL: Quest-ce que cest, et à quoi cela sert-il? VHDL: VHSIC Hardware Description Language VHSIC:Very High Speed Integrated Circuit (projet de grande envergure du DoD (Departement of Defense) Américain, mis en place dans les années 80 Principe de base:Définir un langage de description de matériel qui puisse être utilisé pour simuler du matériel numérique Extension:Utilisation du même langage pour la synthèse automatique de circuits

332 Le VHDL © 2004 Frédéric Mailhot Université de Sherbrooke VHDL: Est-ce le seul HDL? Il existe plusieurs autres langages de description de matériel, entre autres: Verilog (Très populaire aux États-Unis, utilisé aussi en Europe, au Japon et au Canada) UDL/1 (Utilisé à un certain moment au Japon) Estérel (langage académique – Français) HardwareC (langage académique – Stanford) Verilog est plus simple que le VHDL, mais est un peu moins utilisé

333 Le VHDL © 2004 Frédéric Mailhot Université de Sherbrooke « Design Flow » moderne Design fonctionnel Design « Register Transfer Level » Design Logique Design « Physique » Simulation comportermentale Simulation RTL Validation Simulation logique Vérification Simulation de fautes Analyse des délais Analyse du circuit « Design Rule Checking »

334 Le VHDL © 2004 Frédéric Mailhot Université de Sherbrooke Concepts de base Description du système: Structurale Comportementale (behavioral) Événements Délais de propagation Concurrence Timing: Synchrone Asynchrone Signaux: Forme Valeur Partage Simulation dévénements discrets

335 Le VHDL © 2004 Frédéric Mailhot Université de Sherbrooke Pourquoi utiliser des langages HDL? Pour accélérer la conception de circuits (raison économique) Pour permettre la conception de circuits très complexes (150 millions de portes logiques dici 5 ans) Pour pouvoir représenter les systèmes numériques selon les différents axes dabstraction

336 Le VHDL © 2004 Frédéric Mailhot Université de Sherbrooke Pourquoi mettre en marché plus rapidement? Temps Revenus Délai Augmentation du marché Déclin du marché Revenus maximum Pertes de revenus

337 Le VHDL © 2004 Frédéric Mailhot Université de Sherbrooke Le « Y » de Gadjsky Comportemental Structural Physique Transistors Portes Registres Processeurs Cellules Modules Circuits Printed Circuit Board Algorithmes Register transfer Expressions Booléennes Fonctions de transfert

338 Le VHDL © 2004 Frédéric Mailhot Université de Sherbrooke Valeur des signaux À la base, tout système numérique est constitué de signaux binaires. VHDL supporte le bit au plus bas niveau. Valeur possible du bit:0 ou 1 Est-ce suffisant?

339 Le VHDL © 2004 Frédéric Mailhot Université de Sherbrooke Valeur des signaux ValeurInterprétation00 - Forcé11 - ForcéUUninitialized (non-initialisé)XInconnu - ForcéZHaute impédanceWInconnu - FaibleL0 - FaibleH1 - Faible-Dont Care Standard IEEE 1164:

340 Le VHDL © 2004 Frédéric Mailhot Université de Sherbrooke Premier concept de base: les entités (entity) Première étape de définition de matériel: définir linterface Comment: à laide de la déclaration « entity »

341 Le VHDL © 2004 Frédéric Mailhot Université de Sherbrooke Les « entity » Linterface externe du circuit ci-haut est spécifiée par la déclaration « entity » suivante: entity half_adder is port(a, b: in bit; sum, carry: out bit); end half_adder; a b sum carry

342 Le VHDL © 2004 Frédéric Mailhot Université de Sherbrooke Exemple dentity: multiplexeur de bus entity mux is port (I0, I1 : in std_ulogic_vector (7 downto 0); I2, I3: in std_ulogic_vector (7 downto 0); Sel: in std_ulogic_vector (1 downto 0); z : out std_ulogic_vector (7 downto 0)); end mux;

343 Le VHDL © 2004 Frédéric Mailhot Université de Sherbrooke Exemple dentity: Flip-flop entity D_ff is port (D,Clk, S, R: in std_ulogic; Q, Qbar:out std_ulogic); end D_ff;

344 Le VHDL © 2004 Frédéric Mailhot Université de Sherbrooke Deuxième concept de base: les énoncés concurrents Il faut être capable de définir la fonctionnalité de notre système, qui représente ce que le matériel devra effectuer Puisquon parle de matériel, tout ce qui est décrit va « sexécuter » en parallèle Pour décrire la fonctionnalité dun système, on utilise la déclaration « architecture », qui implicitement contient des énoncés concurrents

345 Le VHDL © 2004 Frédéric Mailhot Université de Sherbrooke Exemple darchitecture: un demi- additionneur library IEEE; use IEEE.std_logic_1164.all; entity half_adder is port(a, b: in bit; sum, carry: out bit); end half_adder; architecture comportement_concurrent of half_adder is begin sum <= (a xor b) after 5 ns; carry <= (a and b) after 5 ns; end comportement_concurrent;

346 Le VHDL © 2004 Frédéric Mailhot Université de Sherbrooke Signaux à source multiples Quarrive-t-il si un signal est produit par plus dune source (e.g. élément dun bus)? Quarrive-t-il si les différentes sources ne déterminent pas la même valeur? On utilise une fonction de « résolution » pour traiter ces cas Dans la librairie IEEE, le type « std_logic » du standard 1164 est résolu

347 Le VHDL © 2004 Frédéric Mailhot Université de Sherbrooke Assignations conditionnelles On peut utiliser une assignation conditionnelle pour définir la valeur dun signal: library IEEE; use IEEE.std_logic_1164.all; entity mux4 is port (In0, In1, In2, In3: in std_logic_vector (7 downto 0); S0, S1: in std_logic; z: out std_logic_vector (7 downto 0)); end mux4; architecture comportemental of mux4 is begin z <= In0 after 5 ns when S0 = 0 and S1 = 0 else In1 after 5 ns when S0 = 0 and S1 = 1 else In2 after 5 ns when S0 = 1 and S1 = 0 else In3 after 5 ns when S0 = 1 and S1 = 1 else after 5 ns; end comportemental;

348 Le VHDL © 2004 Frédéric Mailhot Université de Sherbrooke Utilisation de sélecteurs Lorsquil y a un grand nombre de possibilités qui sont toutes énumérées, on peut utiliser un sélecteur

349 Le VHDL © 2004 Frédéric Mailhot Université de Sherbrooke Utilisation de sélecteurs – exemple library IEEE; use IEEE.std_logic_1164.all; entity memoire is port (addr1,addr2: in std_logic_vector (2 downto 0); mem1: out std_logic_vector (31 downto 0)); end memoire; architecture comportemental of memoire is signal reg0, reg1, reg2, reg3: std_logic_vector (31 downto 0):= to_stdlogicvector(x1234AB); signal reg4, reg5, reg6, reg7: std_logic_vector (31 downto 0):= to_stdlogicvector(x5678FF); begin with addr1 select mem1 <= reg0 after 5 ns when 000; reg1 after 5 ns when 001; reg2 after 5 ns when 010; reg3 after 5 ns when 011; reg4 after 5 ns when others; end comportemental;

350 Le VHDL © 2004 Frédéric Mailhot Université de Sherbrooke Les délais VHDL permet de modéliser différents types de délais, qui sont utiles lors des simulations: Délais dinertie (inertial delay): représentent la durée minimum dune entrée pour que son effet puisse être observé à la sortie. Utile pour tenir compte du temps de montée/descente E.g.: sum <= reject 2 ns inertial (a xor b) after 5 ns; Délais de transport: représentent le délai encouru par les interconnections. Utile pour tenir compte des délais RC dans les longs fils E.g.: sum <= transport (a xor b) after 5 ns; Délais « delta »: utilisés à linterne par les simulateurs pour ordonner larrivée des signaux

351 Le VHDL © 2004 Frédéric Mailhot Université de Sherbrooke Les délais: exemple library IEEE; use IEEE.std_logic_1164.all; entity half_adder is port(a, b: in std_logic; sum, carry: out std_logic); end half_adder; architecture delai_transport of half_adder is signal s1, s2: std_logic := 0; begin s1 <= (a xor b) after 2 ns; s2 <= (a and b) after 2 ns; sum <= transport s1 after 4 ns; carry <= transport s2 after 4 ns; end delai_transport; a b sum carry s2 s1 sum carry b a s1 s Temps (ns) inertie transport

352 Le VHDL © 2004 Frédéric Mailhot Université de Sherbrooke Les délais: exemple library IEEE; use IEEE.std_logic_1164.all; entity circuit is port(a, b: in std_logic; z: out std_logic); end circuit; architecture circ of circuit is signal s1, s2, s3, s4: std_logic; begin s1 <= not a; s2 <= not b; s3 <= not ( s1 and b); s4 <= not (s2 and a); z <= not (s3 and s4); end circ; s1 s2 b a s3 z Temps (ns) a b z s2 s1 s3 s4

353 Le VHDL © 2004 Frédéric Mailhot Université de Sherbrooke Les délais: exemple a b z s2 s1 s3 s4 s1 s2 b a s3 z Temps (ns) s4 b s2 s3 z Temps (ns)

354 Le VHDL © 2004 Frédéric Mailhot Université de Sherbrooke Modélisation de comportement Pour décrire des systèmes plus complexes quun petit groupe de simples portes logiques, nous devons ajouter un nouveau concept: le processus (process) Le «process » a une liste de dépendance (dependency list). Lorsquun ou plusieurs signaux de la liste sont modifiés, le process est enclenché

355 Le VHDL © 2004 Frédéric Mailhot Université de Sherbrooke Les processus: exemple library IEEE; use IEEE.std_logic_1164.all; use IEEE.std_logic_arith.all; entity mem is port( addr: in std_logic_vector (31 downto 0); wr_data: in std_logic_vector (31 downto 0); Mem_wr, Mem_rd: in std_logic; rd_data: out std_logic_vector (31 downto 0); end mem; architecture comport of mem is type memo_arr is array(0 to 3) of std_logic_vector (31 downto 0); begin memo_proc: process ( addr, wr_data) variable data_memo: memo_arr := ( to_stdlogicvector(X ), to_stdlogicvector(X )); variable addr_int: integer; begin addr_int := to_integer(addr (1 downto 0)); if (Mem_wr = 1 then data_memo(addr_int) := wr_data; elsif Mem_rd = 1 then rd_data <= data_memo(addr_int); end if; end process memo_proc; end comport;

356 Le VHDL © 2004 Frédéric Mailhot Université de Sherbrooke If, Case, For et While À lintérieur dun « process », on peut utiliser des « if » et/ou des « case ». Lexécution est alors séquentielle De même, on peut utiliser des boucles pour contrôler lexécution. Les « for » sont à bornes fixes, alors que les « while » ne le sont pas.

357 Le VHDL © 2004 Frédéric Mailhot Université de Sherbrooke If, case: exemple library IEEE; use IEEE.std_logic_1164.all; entity half_adder is port(a, b: in bit; sum, carry: out bit); end half_adder; architecture proc_add of half_adder is begin sum_proc: process (a, b) begin if (a = b) then sum <= 0 after 5 ns; else sum <= (a or b) after 5 ns; end if; end process sum_proc; carry_proc: process (a, b) begin case a is when 0 => carry <= a after 5 ns; when 1 => carry <= b after 5 ns; when others => carry <= X after 5 ns; end case; end process carry_proc; end proc_add;

358 Le VHDL © 2004 Frédéric Mailhot Université de Sherbrooke For loop: exemple library IEEE; use IEEE.std_logic_1164.all; use IEEE.std_logic_arith.all; entity mult32 is port(mult1: in std_logic_vector (31 downto 0); mult2: in std_logic_vector (31 downto 0); prod: out std_logic_vector (63 downto 0)); end mult32; architecture comp_mult of mult32 is constant delai_module: Time:= 10 ns; begin mult_proc: process (mult1, mult2) variable prod_reg : std_logic_vector (63 downto 0) := to_stdlogicvector(X ); variable mult_reg : std_logic_vector (31 downto 0) := to_stdlogicvector(X ); begin mult_reg := mult1; prod_reg (63 downto 0) := to_ stdlogicvector(X ) & mult2; for index in 1 to 32 loop if prod_reg(0) = 1 then prod_reg(63 downto 32) := prod_reg(63 downto 32) + mult_reg(31 downto 0); end if; prod_reg(63 downto 0) := 0 & prod_reg (63 downto 1); end loop; prod <= prod_reg after delai_module; end process mult_proc; end comp_mult;

359 Le VHDL © 2004 Frédéric Mailhot Université de Sherbrooke Communication entre processus Les signaux sont globaux: il est possible à un processus daccéder (lire et/ou écrire) un signal dun autre processus La communication entre processus se fait donc à laide de signaux Note: on parle ici de processus qui font partie dune même architecture… Exemple: additionneur 1-bit

360 Le VHDL © 2004 Frédéric Mailhot Université de Sherbrooke Exemple de communication entre processus: additionneur 1-bit Demi-additionneur HA1 Demi-additionneur HA2 Somme C_out In1 In2 C_in Demi-additionneur s1 s3 s2 OR1

361 Le VHDL © 2004 Frédéric Mailhot Université de Sherbrooke Exemple de communication entre processus: additionneur 1-bit library IEEE; use IEEE.std_logic_1164.all; entity add_1_bit is port(In1, In2, C_in: in std_logic; Somme, C_out: out std_logic); end add_1_bit; architecture comp_add of add_1_bit is signal s1, s2, s3: std_logic; constant delai: Time:= 5 ns; begin HA1: process(In1, In2) begin s1 <= (In1 xor In2) after delai; s3 <= (In1 and In2) after delai; end process HA1; HA2: process(s1, C_in) begin Somme <= (s1 xor C_in) after delai; s2 <= (s1 and C_in) after delai; end process HA2; OR1: process(s2, s3) begin C_out <= (s2 or s3) after delai; end process OR1; end comp_add;

362 Le VHDL © 2004 Frédéric Mailhot Université de Sherbrooke Linstruction « wait » Il est possible de définir un « process » sans liste de dépendance. Chaque « process » est toujours exécuté au moins une fois, au début En ajoutant des énoncés « wait », il devient possible dindiquer que le « process » sera réveillé à un certain endroit, selon une certaine condition: wait for time wait on signal wait until condition

363 Le VHDL © 2004 Frédéric Mailhot Université de Sherbrooke Les attributs dans VHDL Il existe un certain nombre dattributs avec le VHDL, qui permettent dutiliser de linformation sur létat des signaux ou sur leur définition: Varevent: Changement sur Var Varactive: Assignation sur Var (peut être la même valeur Varlast_event: Retourne le temps depuis le dernier événement Varlast_value: Retourne la valeur précédente de Var

364 Le VHDL © 2004 Frédéric Mailhot Université de Sherbrooke Exemple de wait et dattributs: flip-flop library IEEE; use IEEE.std_logic_1164.all; entity dff is port(D, Clk: in std_logic; Q, QN: out std_logic); end dff; architecture comp_dff of dff is constant delai: Time:= 5 ns; begin One_ff: process begin wait until (Clkevent and Clk = 1); Q <= D after delai; QN <= not D after delai; end process One_ff; end comp_dff;

365 Le VHDL © 2004 Frédéric Mailhot Université de Sherbrooke Exemple de wait et dattributs: flip-flop asynchrone library IEEE; use IEEE.std_logic_1164.all; entity async_dff is port(D, Clk, S, R: in std_logic; Q, QN: out std_logic); end async_dff; architecture comp_adff of async_dff is constant delai: Time:= 5 ns; begin One_aff: process(R, S, Clk) begin if (R = 1) then Q <= 0 after delai; QN <= 1 after delai; elsif (S = 1) then Q <= 1 after delai; QN <= 0 after delai; elsif (Clkevent and Clk = 1) then Q <= D after delai; QN <= not D after delai; end if; end process One_aff; end comp_adff;

366 Le VHDL © 2004 Frédéric Mailhot Université de Sherbrooke Exemple de registre library IEEE; use IEEE.std_logic_1164.all; entity registre is port(D: in std_logic_vector (31 downto 0); Cl, enable, Clk : in std_logic; Q : out std_logic_vector (31 downto 0)); end registre; architecture comp_reg of registre is constant delai: Time:= 5 ns; begin Reg_proc: process(Cl, Clk) begin if (Cl = 1) then Q <= X after delai; elsif (Clkevent and Clk = 1) then if (enable = 1) then Q <= D after delai; end if; end process Reg_proc; end comp_reg;

367 Le VHDL © 2004 Frédéric Mailhot Université de Sherbrooke Génération dune horloge À laide du VHDL, il est facile de générer un signal dhorloge périodique: library IEEE; use IEEE.std_logic_1164.all; entity horloge is port(Clk : out std_logic); end horloge; architeture comp_horloge of horloge is begin proc_horloge: process Clk <= 0, 1 after 5 ns; wait for 10 ns; end process proc_horloge; end comp_horloge;

368 Le VHDL © 2004 Frédéric Mailhot Université de Sherbrooke Les process: ils peuvent ne pas faire ce que vous pensez… library IEEE; use IEEE.std_logic_1164.all; entity circuit is port(a, b: in std_logic; z: out std_logic); end circuit; architecture circ of circuit is signal s1, s2, s3, s4: std_logic; begin process(a, b) begin s1 <= not a; s2 <= not b; s3 <= not ( s1 and b); s4 <= not (s2 and a); z <= not (s3 and s4); end process; end circ; a b z s2 s1 s3 s4 library IEEE; use IEEE.std_logic_1164.all; entity circuit is port(a, b: in std_logic; z: out std_logic); end circuit; architecture circ of circuit is signal s1, s2, s3, s4: std_logic; begin s1 <= not a; s2 <= not b; s3 <= not ( s1 and b); s4 <= not (s2 and a); z <= not (s3 and s4); end circ;

369 Le VHDL © 2004 Frédéric Mailhot Université de Sherbrooke Les process: ils peuvent ne pas faire ce que vous pensez… a b z s2 s1 s3 s4 s1 s2 b a s3 z Temps (ns) s4 s1 s2 b a s3 z Temps (ns) s4

370 Le VHDL © 2004 Frédéric Mailhot Université de Sherbrooke Représentation hiérarchique On peut utiliser VHDL de façon hiérarchique et ainsi simplifier la description dune machine complexe.

371 Le VHDL © 2004 Frédéric Mailhot Université de Sherbrooke Exemple de représentation hiérarchique: un additionneur: portes XOR et AND library IEEE; use IEEE.std_logic_1164.all; entity one_xor is port(In1, In2 : in std_logic; Z: out std_logic); end one_xor; architecture comp_xor of one_xor is constant delai: Time:= 5 ns; begin z <= (In1 xor In2) after delai; end comp_xor; library IEEE; use IEEE.std_logic_1164.all; entity one_and is port(In1, In2 : in std_logic; Z: out std_logic); end one_and; architecture comp_and of one_and is constant delai: Time:= 5 ns; begin z <= (In1 and In2) after delai; end comp_and;

372 Le VHDL © 2004 Frédéric Mailhot Université de Sherbrooke Exemple de représentation hiérarchique: un additionneur: porte OU library IEEE; use IEEE.std_logic_1164.all; entity one_or is port(In1, In2 : in std_logic; Z: out std_logic); end one_or; architecture comp_or of one_or is constant delai: Time:= 5 ns; begin z <= (In1 or In2) after delai; end comp_or;

373 Le VHDL © 2004 Frédéric Mailhot Université de Sherbrooke Exemple de représentation hiérarchique: un additionneur: demi-additionneur library IEEE; use IEEE.std_logic_1164.all; entity one_half_adder is port(In1, In2 : in std_logic; sum, c_out: out std_logic); end one_half_adder; architecture comp_ha of one_half_adder is component xor_gate port (In_1, In2: in std_logic; z: out std_logic); end component; component and_gate port (In_1, In2: in std_logic; z: out std_logic); end component; for XOR1: xor_gate use entity work.one_xor(comp_xor); for AND1: and_gate use entity work.one_and(comp_and); begin XOR1:xor_gate port map(In1, In2, sum); AND1:and_gate port map(In1, In2, c_out); end comp_ha;

374 Le VHDL © 2004 Frédéric Mailhot Université de Sherbrooke Exemple de représentation hiérarchique: un additionneur: lensemble library IEEE; use IEEE.std_logic_1164.all; entity one_adder is port(In1, In2, C_in : in std_logic; sum, c_out: out std_logic); end one_adder; architecture comp_add of one_adder is component half_addr port (In_1, In2: in std_logic; sum, c_out: out std_logic); end component; component or_gate port (In_1, In2: in std_logic; z: out std_logic); end component; for HA1: half_addr use entity work.one_half_adder(comp_ha); for HA2: half_addr use entity work.one_half_adder(comp_ha); for OR1: or_gate use entity work.one_or(comp_or); signal s1, s2, s3: std_logic; begin HA1:half_addr port map(In1, In2, s1, s3); HA2:half_addr port map(s1, C_in, sum, s2); OR1:or_gate port map(s2, s3, c_out); end comp_add;

375 Gei 431 Architecture des ordinateurs II – Frédéric Mailhot La synthèse automatique de circuits Comment fait-on pour faire le design des processeurs et des circuits numériques en général? Ce qui suit donne un aperçu des différentes techniques utilisées à cette fin.

376 La synthèse automatisée de circuits © 2004 Frédéric Mailhot Université de Sherbrooke Quest-ce que la synthèse? Depuis maintenant plus de 15 ans, le design de circuit numériques complexes passe presque toujours par la synthèse automatisée: Les circuits sont trop complexes pour pouvoir en faire le design sans aide Le temps requis pour parvenir à la mise en marché (« time to market ») est capital, doù limportance dutiliser des méthodes rapides et qui garantissent latteinte des résultats escomptés de performance La méthodologie actuelle de synthèse de circuit permet de produire plus rapidement des circuits plus performants

377 La synthèse automatisée de circuits © 2004 Frédéric Mailhot Université de Sherbrooke Les étapes de la synthèse de circuits Synthèse de haut niveau Synthèse logique Synthèse physique Analyse syntaxique Scheduling Allocation des ressources Synthèse 2 niveaux Synthèse multi-niveaux Lien avec la technologie Placement Routage Restructuring Retiming Extraction de noyauxTechnology mapping Buffering Global: floorplan Local Global – Vdd, Vss, Bus Local

378 La synthèse automatisée de circuits © 2004 Frédéric Mailhot Université de Sherbrooke Les étapes de la synthèse de circuits Synthèse de haut niveau Synthèse logique Synthèse physique Analyse syntaxiqueScheduling Allocation des ressources Synthèse 2 niveauxSynthèse multi-niveaux Lien avec la technologie Placement Routage Restructuring Retiming Extraction de noyauxTechnology mapping Buffering Global: floorplan Local Global – Vdd, Vss, Bus Local

379 La synthèse automatisée de circuits © 2004 Frédéric Mailhot Université de Sherbrooke Synthèse de haut niveau À partir dun langage de description de matériel (VHDL, Verilog), on extrait un graphe qui représente la fonctionalité: Graphe de dépendance de données (data flow graph) Graphe de séquencement (sequencing graph)

380 La synthèse automatisée de circuits © 2004 Frédéric Mailhot Université de Sherbrooke Graphe de dépendance de données (data flow graph) Représente les liens entre les différents composants qui produisent un certain comportement. Ici, les nœuds représentent les opérations, et les arcs représentent les dépendances entre les opérations Exemple: Soit la portion de code suivante: xl = x + dx ul = u – ( 3 * x * u * dx) – ( 3 * y * dx) yl = y + u * dx c = xl < a

381 La synthèse automatisée de circuits © 2004 Frédéric Mailhot Université de Sherbrooke Graphe de dépendance de données (2) - + **** < + ** - 3 x u dx 3yu x a xl u dxy ul yl c xl = x + dx ul = u – ( 3 * x * u * dx) – ( 3 * y * dx) yl = y + u * dx c = xl < a

382 La synthèse automatisée de circuits © 2004 Frédéric Mailhot Université de Sherbrooke Graphe de dépendance de données (2) -+ ** * < + ** - 3 x u dx 3y x a xl u dxy ul yl c xl = x + dx ul = u – ( 3 * x * u * dx) – ( 3 * y * dx) yl = y + u * dx c = xl < a Optimisation possible

383 La synthèse automatisée de circuits © 2004 Frédéric Mailhot Université de Sherbrooke Graphe de sequencement (sequencing graph) Extension du graphe de dépendance de données Utile pour représenter à la fois la partie opérative et la partie contrôle dun circuit (data-path et control path) Ajouts au graphe de dépendance de données: Hiérarchie Commandes de contrôle de données (boucles et branchements) Graphe polaire, avec une source et un puit (source et sink)

384 La synthèse automatisée de circuits © 2004 Frédéric Mailhot Université de Sherbrooke Graphe de séquencement - + **** < + ** - NOP xl = x + dx ul = u – ( 3 * x * u * dx) – ( 3 * y * dx) yl = y + u * dx c = xl < a

385 La synthèse automatisée de circuits © 2004 Frédéric Mailhot Université de Sherbrooke Utilisation du graphe de séquencement Chaque nœud est soit: En attente dexécution En exécution Après lexécution On suppose quun nœud est exécuté lorsque tous ses fanins ont complété leur exécution On annote les nœuds avec des informations supplémentaires: Délai Surface

386 La synthèse automatisée de circuits © 2004 Frédéric Mailhot Université de Sherbrooke Transformation du HDL On lit dabord le HDL, et à laide dun analyseur syntaxique (parser), on crée le graphe correspondant Le graphe initial est transformé: Réduction de la hauteur des arbres Propagation des constantes Élimination de sous-expressions communes Élimination de code mort Réduction de la complexité des opérateurs Déplacement de code Expansion des boucles Expansion des conditions

387 La synthèse automatisée de circuits © 2004 Frédéric Mailhot Université de Sherbrooke Transformations: Réduction de la hauteur des arbres: x = a + b * c + d Devientx = (a + d) + (b * c) Propagation de constantes: a = 0; b = a + 1; c = 2 * b; devienta = 0; b = 1; c = 2;

388 La synthèse automatisée de circuits © 2004 Frédéric Mailhot Université de Sherbrooke Transformations: (2) Élimination de sous-expressions communes: a = x + y; b = a + 1; c = x + y; Devienta = x + y; b = a + 1; c = a; Élimination de code mort: a = x; b = x + 1; c = 2 * x; devient b = x + 1; c = 2 * x;

389 La synthèse automatisée de circuits © 2004 Frédéric Mailhot Université de Sherbrooke Transformations: (3) Réduction de la complexité dun opérateur: a = x^2; b = 3 * x; Devienta = x * x; t = x << 1; b = x + t; Déplacement de code : for (i = 1; i < a * b) {} devient t = a * b; for ( i = 1; i < t) {}

390 La synthèse automatisée de circuits © 2004 Frédéric Mailhot Université de Sherbrooke Transformations: (4) Expansion des boucles: x = 0; for (i = 1; i < 3; i++) {x = x + i;} Devientx = 0; x = x + 1; x = x + 2; x = x + 3; Expansion des conditions (variables logiques): y = a b; if (a) {x = b + d;} else {x = b d;} devient y = a b; x = y + d ( a + b);

391 La synthèse automatisée de circuits © 2004 Frédéric Mailhot Université de Sherbrooke Les ressources On peut séparer les ressources dun circuit en 3 classes: Les ressources fonctionnelles, qui transforment les données (e.g. additionneur, multiplieur) Les ressources de mémoires, quon utilise pour conserver les données (e.g. mémoire vive, registres) Les ressources dinterface (e.g. bus et ports dentrées/sorties)

392 La synthèse automatisée de circuits © 2004 Frédéric Mailhot Université de Sherbrooke Les contraintes Pour un circuit donné, il y aura typiquement des contraintes de surface et de délai Les contraintes de surface (et de délai, les 2 sont souvent corrélées) ont un impact sur le choix des ressources Les contraintes de délai proviennent souvent de la période de lhorloge projetée, ainsi que des temps darrivée des entrées et des temps requis des sorties. Elles ont un impact sur le séquencement des opérations dans le temps (scheduling)

393 La synthèse automatisée de circuits © 2004 Frédéric Mailhot Université de Sherbrooke Scheduling Étant donné un graphe de séquencement et un ensemble de contraintes, on doit: - décider quelle ressource utiliser pour chaque nœud - décider quand effectuer lopération (scheduling) - + **** < + ** - NOP

394 La synthèse automatisée de circuits © 2004 Frédéric Mailhot Université de Sherbrooke Scheduling (2) On peut procéder de 2 façons pour résoudre le problème de lallocation de ressource et du scheduling: Commencer par le scheduling, et enchaîner avec lallocation de données Procéder à linverse Puisque le facteur important est habituellement le délai, on commence souvent par le scheduling

395 La synthèse automatisée de circuits © 2004 Frédéric Mailhot Université de Sherbrooke Scheduling (3) On va établir les deux solutions extrêmes: Dès que possible Aussi tard que possible - + * * ** < + * * - NOP - + **** < + ** - T = 1 T = 2 T = 3 T = 4

396 La synthèse automatisée de circuits © 2004 Frédéric Mailhot Université de Sherbrooke Scheduling (4) À laide des 2 extrêmes de scheduling, on établit la « mobilité », i.e. lensemble des positions (dans le temps) possibles pour les nœuds Il sagit ensuite de trouver une des ces positions qui satisfait les contraintes de délai du système On utilise lalgorithme de Bellman-Ford pour établir la faisabilité du système (détecte les boucles dans le graphe) On utilise lalgorithme de Liao-Wong pour trouver une solution valable.

397 La synthèse automatisée de circuits © 2004 Frédéric Mailhot Université de Sherbrooke Allocation de ressources Soit à la suite du scheduling, ou de concert avec le scheduling, on doit décider des ressources (e.g. additionneurs, multiplieurs) qui sont requis On peut toujours réutiliser la même ressource pour toutes les opérations, à condition dintroduire des délais dans lexécution des opérations et dutiliser des multiplexeurs… Lorsque scheduling et allocation de ressources sont terminés, on produit une description logique du système, qui prend la forme dun ensemble déquations booléennes interreliées

398 La synthèse automatisée de circuits © 2004 Frédéric Mailhot Université de Sherbrooke Réseau Booléen On appelle « réseau Booléen » le système déquation produit: x = a + b; t = a b + ab; y = t c z = x + t; w = z + y;

399 La synthèse automatisée de circuits © 2004 Frédéric Mailhot Université de Sherbrooke Les étapes de la synthèse de circuits Synthèse de haut niveau Synthèse logique Synthèse physique Analyse syntaxiqueScheduling Allocation des ressources Synthèse 2 niveauxSynthèse multi-niveaux Lien avec la technologie Placement Routage Restructuring Retiming Extraction de noyauxTechnology mapping Buffering Global: floorplan Local Global – Vdd, Vss, Bus Local

400 La synthèse automatisée de circuits © 2004 Frédéric Mailhot Université de Sherbrooke Synthèse logique: 1ère étape: synthèse à 2 niveaux Les équations logiques produites par la synthèse de haut niveau sont souvent beaucoup plus complexes que nécessaires. La première étape est de simplifier chaque équation, qui apparaît à ce stade sous forme de somme de produits: On tente de limiter le nombre de « litéraux », i.e. le nombre de fois que les variables ou leur complément apparaissent dans les équations

401 La synthèse automatisée de circuits © 2004 Frédéric Mailhot Université de Sherbrooke Synthèse à 2 niveaux On représente le circuit par un ensemble de fonctions à n entrées et m sorties Par exemple: f: B 3 -> {0, 1, *} 2 f 1 = a b c + a b c + a b c + a b c + a b c f 2 = a b c + a b c c b a f1f1 f2f2 a b c Diagramme de Hasse

402 La synthèse automatisée de circuits © 2004 Frédéric Mailhot Université de Sherbrooke Synthèse à 2 niveaux: minterms Minterms de f 1 : a b c, a b c, a b c, a b c, a b c Minterms de f 2 : a b c, a b c c b a f1f1 f2f2

403 La synthèse automatisée de circuits © 2004 Frédéric Mailhot Université de Sherbrooke Cubes de f 1 : Tous les minterms de f1 + a b, b c, a c, a b Cubes de f 2 : Tous les minterms de f2 + b c Synthèse à 2 niveaux: cubes c b a f1f1 f2f2

404 La synthèse automatisée de circuits © 2004 Frédéric Mailhot Université de Sherbrooke En utilisant lencodage suivant: {0,1,*} pour les entrées inversées (0), directes (1) ou qui naparaissent pas (*) {0,1} pour les sorties qui ont une valeur VRAI ou DONT CARE (1) ou INDÉFINIES (0) On obtient les codes suivants pour lexemple ci-haut: : 00* 10 : 1*1 10 : *01 11 : 11* 10 Synthèse à 2 niveaux: implicants multi- sorties c b a f1f1 f2f2

405 La synthèse automatisée de circuits © 2004 Frédéric Mailhot Université de Sherbrooke Une couverture est un ensemble dimplicants qui couvrent tous les minterms dune fonction, sans intersecter les zéros (off-set) de celle-ci La couverture minimum est celle qui a la plus petite cardinalité (plus petit nombre dimplicants) Exemple: 3 couvertures possibles pour f 1 et f 2 : C 1 = 00* 10C 2 = 00* 10C 3 = 00* 10 *01 11 *01 11 * * * 10 1* * 10 Synthèse à 2 niveaux: couverture c b a f1f1 f2f2

406 La synthèse automatisée de circuits © 2004 Frédéric Mailhot Université de Sherbrooke Couverture qui est non-redondante, et minimum Note: la couverture minimum nest pas nécessairement celle qui a le coût le plus bas (tout dépend du coût associé à chacun des implicants). Toutefois, pour les besoins de loptimisation à 2 niveaux, il est habituel de confondre les deux (dit autrement, on suppose que le coût de chaque implicant est le même) Synthèse à 2 niveaux: couverture non- redondante c b a f1f1 f2f2

407 La synthèse automatisée de circuits © 2004 Frédéric Mailhot Université de Sherbrooke Couverture qui nest PAS non-redondante, et PAS minimum Synthèse à 2 niveaux: couverture non- redondante c b a f1f1 f2f2 c b a f1f1 f2f2 Couverture qui est non-redondante, mais PAS minimum

408 La synthèse automatisée de circuits © 2004 Frédéric Mailhot Université de Sherbrooke Un implicant est premier sil nest pas strictement contenu dans aucun autre implicant de la fonction considérée Dans lexemple plus haut, ab est premier, mais abc nest pas premier (ab abc) Synthèse à 2 niveaux: couverture première c b a f1f1 f2f2

409 La synthèse automatisée de circuits © 2004 Frédéric Mailhot Université de Sherbrooke Couverture première, mais PAS non-redondante ( nest pas nécessaire) Synthèse à 2 niveaux: couverture première, non-redondante c b a f1f1 f2f2 c b a f1f1 f2f2 Couverture qui nest PAS première, mais qui EST non-redondante (, et ne sont pas premiers)

410 La synthèse automatisée de circuits © 2004 Frédéric Mailhot Université de Sherbrooke Synthèse à 2 niveaux: définitions Couverture non-redondante: couverture dont on ne peut enlever aucun implicant sans modifier la fonction couverte Implicant premier: implicant qui nest contenu en entier dans aucun autre implicant Couverture première: couverture dont tous les implicants sont premiers Couverture minimale: couverture dont le nombre dimplicants est minimal

411 La synthèse automatisée de circuits © 2004 Frédéric Mailhot Université de Sherbrooke Synthèse à 2 niveaux: implicants essentiels Un implicant premier est essentiel sil couvre un minterm qui nest couvert par aucun autre implicant de la couverture de la fonction c b a f1f1 f2f2 : 00* 10est essentiel pour : *01 11est essentiel pour *01 -1 : 1*1 10 : 11* 10est essentiel pour