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,

Slides:



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

Électronique de base du processeur
Le Concept du programme enregistré
Architecture de machines Le microprocesseur
Formation universitaire à .NET: Introduction à C#
Initiation à la programmation et algorithmique cours 2
GESTION DE PORTEFEUILLE chapitre n° 7
Concepts d’architectures avancées
Jacques Lonchamp IUT Nancy Charlemagne – DUT Informatique 1A
Performances 1 Évolution : Performance. Performances 2 Évolution : Mémoire.
Parallélisme d’instructions
Objectifs Nous allons concevoir une mise en œuvre contenant un noyau de jeu d’instructions. Nous verrons comment l’architecture de jeu d’instructions.
Introduction Par définition, dans un modèle à cycle unique, le cycle d’horloge doit avoir la même durée pour toutes les instructions. Le cycle d’horloge.
Le Concept du programme enregistré
Le jeu d ’instructions Introduction Un jeu d ’instruction classique
Architecture Systèmes
2.Les différentes architectures (Louis)
Exécution en ordre partiel Une fois les instructions renommées, les seules dépendances qui subsistent entre instructions registre-registre sont les dépendances.
Renommage et ILP Le compilateur mappe la mémoire sur les registres architecturaux. Les registres architecturaux étant peu nombreux, sont fortement réutilisés.
Chapitre 8 : L’architecture de base des ordinateurs
Architecture et technologie des ordinateurs II
Architecture de base d’un ordinateur
Methode de Tri efficace
Gestion des branchements
Architecture des Ordinateurs
IFT-2000: Structures de Données Introduction à lanalyse dalgorithmes Dominic Genest, 2009.
IFT-2000: Structures de Données Listes chaînées Dominic Genest, 2009.
Algorithmique et Programmation
Optimisation et parallélisation de code pour processeur à instructions SIMD multimedia François Ferrand.
LES SYSTEMES AUTOMATISES
Les pointeurs Modes d’adressage de variables. Définition d’un pointeur. Opérateurs de base. Opérations élémentaires. Pointeurs et tableaux. Pointeurs et.
Introduction Objectifs du cours Évaluation Références
Gei 431 Architecture des ordinateurs II – Frédéric Mailhot Systèmes Pipeline – opérations multicycles Nous avons vu jusquà maintenant comment faire un.
Hiérarchie de la mémoire
Gei 431 Architecture des ordinateurs II – Frédéric Mailhot Systèmes Pipeline Les systèmes modernes utilisent tous des architectures pipelines – Pourquoi?
Les multiprocesseurs Jusqu’à maintenant, nous avons parlé longuement des microprocesseurs. Nous allons maintenant étudier les multiprocesseurs, comment.
Systèmes Superscalaires et VLIW
Architecture des ordinateurs II GEI Frédéric Mailhot
Gei 431 Architecture des ordinateurs II – Frédéric Mailhot Et maintenant, où allons-nous? Après toutes les techniques vues jusquici: Que peut-on faire.
Gestion de Fichiers Tri Interne Efficace et Tri Externe.
Architecture et technologie des ordinateurs II
Les systèmes multiplateformes
Chap. 2 - Structure d’un ordinateur
Analyse d’algorithmes
L'Unité centrale (CPU) Le CPU doit être rapide (mesuré en temps de CPU) UNITE DE CONTROLE Générer les signaux de control/temps Contrôler le décodage/exécution.
Gei 431 Architecture des ordinateurs II – Frédéric Mailhot Synthèse logique: Quelques algorithmes et techniques La synthèse logique consiste en un très.
8INF856 Programmation sur architectures parallèles
Programmation linéaire en nombres entiers
INF3500 : Conception et implémentation de systèmes numériques Pierre Langlois Performance de circuits.
Les Machines RAM.
GF-11: Tri Interne Efficace et Tri Externe
INF8505: processeurs embarqués configurables Département de génie informatique et génie logiciel Conception de processeurs – partie 2 Approches traditionnelles.
Gei 431 Architecture des ordinateurs II – Frédéric Mailhot Étude de cas Maintenant qu’on a vu les pipelines, le superscalaire, le VLIW, la gestion des.
1 École des Mines de Saint-Etienne. 158, cours Fauriel Saint-Etienne Cedex 2. Tél Fax Jean-Jacques Girardot
Architecture et technologie des ordinateurs II
2005/2006 Structures de Données Introduction à la complexité des algorithmes.
Pour les boucles FOR on a fait intervenir la boucles TANT QUE équivalentes dont on connaît calculer le temps d’exécution. Toutes le procédures de comptage.
Patricia Renault UPMC 2005/2006
Applications Internet Cours 3 21 janvier 2010 Cours 3 21 janvier 2010.
Architecture et technologie des ordinateurs II
Chapitre 4 La représentation des nombres.
1.1: notions de bases de l’informatique
Vous présente en quelques réalisations un réel savoir-faire, le fruit de longues années d’expériences, aujourd’hui à votre service. Toutes les fonctionnalités.
Algorithmes parallèles
Architecture d’un ordinateur
Introduction à l’Informatique chap 3 Licence SPI Mme Delmotte.
L'exécution d'un programme nécessite l'utilisation des ressources de l'ordinateur : temps de calcul pour exécuter les opérations, et l'occupation de la.
ARCHITECTURE MATERIELLE D’UN SYSTEME A MICROPROCESSEUR
Vous présente en quelques réalisations un réel savoir-faire, le fruit de longues années d’expériences, aujourd’hui à votre service. Toutes les fonctionnalités.
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.
Transcription de la présentation:

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 s’exécuter en parallèles? Dans ce qui suit nous étudierons l’architecure 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

© 2001 Frédéric MailhotUniversité de Sherbrooke Systèmes superscalaires Architecture superscalaire: introduction Idée derrière l’architecture superscalaire: émission de plus d’une instruction par coup d’horloge, à partir de code compilé de façon traditionnelle Mécanismes sous-jacents:  Décodage parallèle  Gestion d’instructions multiples Émission d’instructions multiples Exécution parallèle des instructions Préservation de l’ordre des instructions  Préservation de l’ordre des exceptions Utilisation du scoreboard ou de la méthode de Tomasulo

© 2001 Frédéric MailhotUniversité de Sherbrooke Systèmes superscalaires Architecture superscalaire: Gestion d’instructions multiples Puisqu’il 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

© 2001 Frédéric MailhotUniversité de Sherbrooke Systèmes superscalaires Superscalaire: technique du scoreboard Origine: Control Data CDC 6600, en… 1963! Technique utilisée au départ pour maintenir un taux d’exécution de une instruction par coup d’horloge, en absence de problèmes de structure  Extension: utilisation de multiples instructions par coup d’horloge 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

© 2001 Frédéric MailhotUniversité de Sherbrooke Systèmes superscalaires Superscalaire: technique du scoreboard (2) Le scoreboard est un tableau interne qui contient toute l’information 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 d’exécution, ainsi que le statut de chacun des registres

© 2001 Frédéric MailhotUniversité de Sherbrooke Systèmes superscalaires Superscalaire: architecture pour la méthode du scoreboard

© 2001 Frédéric MailhotUniversité de Sherbrooke Systèmes superscalaires Superscalaire: technique du scoreboard (3) Pour chaque unité d’exécution, on doit connaître:  Si elle est en opération  L’opération qui y est effectuée  Le nom des registres de destination et des opérandes  Le nom des unités d’exé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

© 2001 Frédéric MailhotUniversité de Sherbrooke Systèmes superscalaires 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 d’exécution NomUtiliséOpF iF jF kQ jQ kR jR k ALU Mult1 Mult2 Add Div Statut des registres de résultats F0F2F4F6F8F10F12…F30 UE

© 2001 Frédéric MailhotUniversité de Sherbrooke Systèmes superscalaires 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 d’exécution NomUtiliséOpF iF jF kQ jQ kR jR k ALUouiLoadF6R2non Mult1non Mult2non Addnon Divnon Statut des registres de résultats F0F2F4F6F8F10F12…F30 UEALU

© 2001 Frédéric MailhotUniversité de Sherbrooke Systèmes superscalaires 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 d’exécution NomUtiliséOpF iF jF kQ jQ kR jR k ALUouiLoadF6R2non Mult1non Mult2non Addnon Divnon Statut des registres de résultats F0F2F4F6F8F10F12…F30 UEALU

© 2001 Frédéric MailhotUniversité de Sherbrooke Systèmes superscalaires 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 d’exécution NomUtiliséOpF iF jF kQ jQ kR jR k ALUnon Mult1non Mult2non Addnon Divnon Statut des registres de résultats F0F2F4F6F8F10F12…F30 UE

© 2001 Frédéric MailhotUniversité de Sherbrooke Systèmes superscalaires 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 d’exécution NomUtiliséOpF iF jF kQ jQ kR jR k ALUouiLoadF2R3non Mult1non Mult2non Addnon Divnon Statut des registres de résultats F0F2F4F6F8F10F12…F30 UEALU

© 2001 Frédéric MailhotUniversité de Sherbrooke Systèmes superscalaires 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 d’exécution NomUtiliséOpF iF jF kQ jQ kR jR k ALUouiLoadF2R3non Mult1ouiMulF0F2F4ALUnonoui Mult2non Addnon Divnon Statut des registres de résultats F0F2F4F6F8F10F12…F30 UEMult1ALU

© 2001 Frédéric MailhotUniversité de Sherbrooke Systèmes superscalaires 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 d’exécution NomUtiliséOpF iF jF kQ jQ kR jR k ALUouiLoadF2R3non Mult1ouiMulF0F2F4ALUnonoui Mult2non AddouiSubF8F6F2ALUouinon Divnon Statut des registres de résultats F0F2F4F6F8F10F12…F30 UEMult1ALUAdd

© 2001 Frédéric MailhotUniversité de Sherbrooke Systèmes superscalaires 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 d’exécution NomUtiliséOpF iF jF kQ jQ kR jR k ALUouiLoadF2R3non Mult1ouiMulF0F2F4ALUnonoui Mult2non AddouiSubF8F6F2ALUouinon DivouiDivF10F0F6Mult1nonoui Statut des registres de résultats F0F2F4F6F8F10F12…F30 UEMult1ALUAddDiv

© 2001 Frédéric MailhotUniversité de Sherbrooke Systèmes superscalaires 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 d’exé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

© 2001 Frédéric MailhotUniversité de Sherbrooke Systèmes superscalaires 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 d’exécution NomUtiliséOpF iF jF kQ jQ kR jR k ALUouiLoadF2R3non Mult1ouiMulF0F2F4ALUnonoui Mult2non AddouiSubF8F6F2ALUouinon DivouiDivF10F0F6Mult1nonoui Statut des registres de résultats F0F2F4F6F8F10F12…F30 UEMult1AddDiv

© 2001 Frédéric MailhotUniversité de Sherbrooke Systèmes superscalaires 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 d’exécution NomUtiliséOpF iF jF kQ jQ kR jR k ALUnon Mult1ouiMulF0F2F4non Mult2non AddouiSubF8F6F2non DivouiDivF10F0F6Mult1nonoui Statut des registres de résultats F0F2F4F6F8F10F12…F30 UEMult1AddDiv

© 2001 Frédéric MailhotUniversité de Sherbrooke Systèmes superscalaires 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 d’exécution NomUtiliséOpF iF jF kQ jQ kR jR k ALUnon Mult1ouiMulF0F2F4non Mult2non AddouiSubF8F6F2non DivouiDivF10F0F6Mult1nonoui Statut des registres de résultats F0F2F4F6F8F10F12…F30 UEMult1AddDiv

© 2001 Frédéric MailhotUniversité de Sherbrooke Systèmes superscalaires 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 d’exécution NomUtiliséOpF iF jF kQ jQ kR jR k ALUnon Mult1ouiMulF0F2F4non Mult2non AddouiAdddF6F8F2non DivouiDivF10F0F6Mult1nonoui Statut des registres de résultats F0F2F4F6F8F10F12…F30 UEMult1AddDiv

© 2001 Frédéric MailhotUniversité de Sherbrooke Systèmes superscalaires 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 d’exé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

© 2001 Frédéric MailhotUniversité de Sherbrooke Systèmes superscalaires 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 d’exécution NomUtiliséOpF iF jF kQ jQ kR jR k ALUnon Mult1ouiMulF0F2F4non Mult2non AddouiAdddF6F8F2non DivouiDivF10F0F6Mult1nonoui Statut des registres de résultats F0F2F4F6F8F10F12…F30 UEMult1AddDiv

© 2001 Frédéric MailhotUniversité de Sherbrooke Systèmes superscalaires 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 d’exécution NomUtiliséOpF iF jF kQ jQ kR jR k ALUnon Mult1non Mult2non AddouiAdddF6F8F2non DivouiDivF10F0F6oui Statut des registres de résultats F0F2F4F6F8F10F12…F30 UEAddDiv

© 2001 Frédéric MailhotUniversité de Sherbrooke Systèmes superscalaires 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 d’exécution NomUtiliséOpF iF jF kQ jQ kR jR k ALUnon Mult1non Mult2non AddouiAdddF6F8F2non DivouiDivF10F0F6non Statut des registres de résultats F0F2F4F6F8F10F12…F30 UEAddDiv

© 2001 Frédéric MailhotUniversité de Sherbrooke Systèmes superscalaires 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 d’exécution NomUtiliséOpF iF jF kQ jQ kR jR k ALUnon Mult1non Mult2non Addnon DivouiDivF10F0F6non Statut des registres de résultats F0F2F4F6F8F10F12…F30 UEDiv

© 2001 Frédéric MailhotUniversité de Sherbrooke Systèmes superscalaires 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 d’exécution NomUtiliséOpF iF jF kQ jQ kR jR k ALUnon Mult1non Mult2non Addnon DivouiDivF10F0F6non Statut des registres de résultats F0F2F4F6F8F10F12…F30 UEDiv

© 2001 Frédéric MailhotUniversité de Sherbrooke Systèmes superscalaires 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 d’exécution NomUtiliséOpF iF jF kQ jQ kR jR k ALUnon Mult1non Mult2non Addnon Divnon Statut des registres de résultats F0F2F4F6F8F10F12…F30 UE

© 2001 Frédéric MailhotUniversité de Sherbrooke Systèmes superscalaires 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 l’utilisation des mêmes registres à des fins différentes. La méthode de Tomasulo est une extension de la méthode du scoreboard Idée: Lorsqu’il y a de fausses dépendances de données parce qu’on réutilise les mêmes registres, on n’a qu’à « renommer » les registres (register renaming)

© 2001 Frédéric MailhotUniversité de Sherbrooke Systèmes superscalaires Superscalaire: méthode de Tomasulo (2) On utilise des étiquettes sur les données pour indiquer d’où elles doivent provenir lorsque le registre d’origine des opérandes n’est 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é d’exécution d’origine 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 d’exécution. Il peut y avoir une station de réservation par unité d’exécution, ou une par type d’unité d’exécution, ou même une seule pour toutes les unités d’exécution

© 2001 Frédéric MailhotUniversité de Sherbrooke Systèmes superscalaires Superscalaire: architecture pour la méthode de Tomasulo

© 2001 Frédéric MailhotUniversité de Sherbrooke Systèmes superscalaires Superscalaire: différences entre les méthodes de Tomasulo et scoreboard Tomasulo:  Pas de vérification des cas de WAW et/ou WAR (l’utilisation 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 d’exécution au même titre que les additions/multiplications/divisions

© 2001 Frédéric MailhotUniversité de Sherbrooke Systèmes superscalaires 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

© 2001 Frédéric MailhotUniversité de Sherbrooke Systèmes superscalaires 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

© 2001 Frédéric MailhotUniversité de Sherbrooke Systèmes superscalaires 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

© 2001 Frédéric MailhotUniversité de Sherbrooke Systèmes superscalaires 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

© 2001 Frédéric MailhotUniversité de Sherbrooke Systèmes superscalaires 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

© 2001 Frédéric MailhotUniversité de Sherbrooke Systèmes superscalaires 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

© 2001 Frédéric MailhotUniversité de Sherbrooke Systèmes superscalaires 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

© 2001 Frédéric MailhotUniversité de Sherbrooke Systèmes superscalaires 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

© 2001 Frédéric MailhotUniversité de Sherbrooke Systèmes superscalaires 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

© 2001 Frédéric MailhotUniversité de Sherbrooke Systèmes superscalaires 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

© 2001 Frédéric MailhotUniversité de Sherbrooke Systèmes superscalaires 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

© 2001 Frédéric MailhotUniversité de Sherbrooke Systèmes superscalaires 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

© 2001 Frédéric MailhotUniversité de Sherbrooke Systèmes superscalaires 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

© 2001 Frédéric MailhotUniversité de Sherbrooke Systèmes superscalaires 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

© 2001 Frédéric MailhotUniversité de Sherbrooke Systèmes superscalaires 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

© 2001 Frédéric MailhotUniversité de Sherbrooke Systèmes superscalaires Superscalaire: Exemple de la puissance de la méthode de Tomasulo Soit une portion de code où les éléments d’un 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

© 2001 Frédéric MailhotUniversité de Sherbrooke Systèmes superscalaires Superscalaire: Exemple de la puissance de la méthode de Tomasulo (2) Dans la boucle qu’on vient de voir, l’utilisation répétitive de F0, F4 et R1 fait qu’on ne peut exécuter qu’une itération à la fois si rien de spécial n’est fait On peut résoudre ce problème au niveau du compilateur, et faire ce qu’on appelle du « loop unrolling », c’est-à-dire utiliser différents registres pour éliminer les dépendances entre les itérations successives

© 2001 Frédéric MailhotUniversité de Sherbrooke Systèmes superscalaires 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 d’itération au moment de la compilation  Il y a assez de registres dans la machine pour contenir toutes les itérations qu’on désire exécuter en parallèle

© 2001 Frédéric MailhotUniversité de Sherbrooke Systèmes superscalaires 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 n’est plus nécessaire de connaître le nombre d’itérations lors de la compilation  Le nombre de registres de la machine n’est 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 n’existent pas (i.e., qu’ils sont prédits correctement)

© 2001 Frédéric MailhotUniversité de Sherbrooke Systèmes superscalaires 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

© 2001 Frédéric MailhotUniversité de Sherbrooke Systèmes superscalaires 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

© 2001 Frédéric MailhotUniversité de Sherbrooke Systèmes superscalaires 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

© 2001 Frédéric MailhotUniversité de Sherbrooke Systèmes superscalaires 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

© 2001 Frédéric MailhotUniversité de Sherbrooke Systèmes superscalaires 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

© 2001 Frédéric MailhotUniversité de Sherbrooke Systèmes superscalaires 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

© 2001 Frédéric MailhotUniversité de Sherbrooke Systèmes superscalaires 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

© 2001 Frédéric MailhotUniversité de Sherbrooke Systèmes superscalaires 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

© 2001 Frédéric MailhotUniversité de Sherbrooke Systèmes superscalaires 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 qu’un 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 qu’avec des « stalls »

© 2001 Frédéric MailhotUniversité de Sherbrooke Systèmes superscalaires Superscalaire: Que choisir – Tomasulo ou Scoreboard? Pour une machine assez simple, qui n’émet qu’une instruction par coup d’horloge, 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 d’horloge, où il est possible que l’utilisation des registres cause des problèmes de WAW, Tomasulo est probablement le meilleur choix

© 2001 Frédéric MailhotUniversité de Sherbrooke Systèmes superscalaires La quête de la performance: récapitulation Nous avons vu jusqu’ici que pour améliorer la performance des processeurs, on peut:  Utiliser le pipeline (instructions découpées en petits éléments qu’on peut exécuter en parallèle, amélioration de la période de l’horloge)  Utiliser plusieurs unités d’exécution en parallèle, qui ont possiblement des temps de latence différents (permet l’ajout 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 d’une instruction par coup d’horloge Scoreboard Tomasulo

© 2001 Frédéric MailhotUniversité de Sherbrooke Systèmes superscalaires La quête de la performance: récapitulation (2) Nous avons aussi vu qu’il existe d’autres facteurs qui influencent la performance: 1.Les branchements 2.L’accès à la mémoire (lecture/écriture) Pour la suite, nous verrons ce qu’on peut faire d’abord pour le premier facteur (les branchements), et ensuite pour l’accès à la mémoire