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.

Slides:



Advertisements
Présentations similaires
Échanger, sʼexprimer en ligne
Advertisements

17 B. Goossens D. Defour17 B. Goossens D. Defour Prédiction des retours Le prédicteur adresse une pile (mémoire à 2 ports)
Le Concept du programme enregistré
Architecture de machines Le microprocesseur
Initiation à la programmation et algorithmique cours 2
ARCHITECTURE INTERNE d’un MICROPROCESSEUR
Introduction à l’Algorithmique
Concepts d’architectures avancées
Synchronisation des processus père - fils
Algorithmique Résume.
Jacques Lonchamp IUT Nancy Charlemagne – DUT Informatique 1A
C.
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 jeu d ’instructions Introduction Un jeu d ’instruction classique
Renommage et ILP Le compilateur mappe la mémoire sur les registres architecturaux. Les registres architecturaux étant peu nombreux, sont fortement réutilisés.
Les pointeurs Manipulation d'adresses et de ce qui est contenu dans ces adresses Très important, fondamental même en C mauvaise réputation : 'dur à comprendre',
Tableaux Certains problèmes nécessitent beaucoup de variables du même type. Exemple : relevé de températures matin et soir dans 10 villes pour 10 jours.
Chap. 1 Structures séquentielles : listes linéaires
Introduction : Compilation et Traduction
Section VIII Modularité Partie II
L’enregistrement T.D.I en Belgique
Module 13 : Implémentation de la protection contre les sinistres
Cette présentation se passera en trois parties. Première partie : -Avantages et objectifs dexpédiweb*. Deuxième partie : -Utilisation du logiciel de prise.
Points importants de la semaine Les commentaires. Les variables. Les instructions conditionnelles. Les instructions itératives (les boucles).
Points importants de la semaine Les fonctions. La portée. La passage par copie. Les tableaux.
Mémoire cache ou antémémoire
Structures de données linéaires
Récursivité.
Transaction Ensemble d'opérations de modification de données annulées ou validées en bloc. Une Transaction vérifie les caractéristiques suivantes ( ACID.
Architecture et technologie des ordinateurs II
Architecture de base d’un ordinateur
Section XI Traitement de fichiers
Les piles Djamal Rebaïne.
RESUMES Module II1 SOMMAIRE CYCLE 1 : Saisir – Afficher – Données
Système d’exploitation
LE MICROPROCESSEUR 8086/8088 Architecture externe du 8086
Architecture des Ordinateurs
Algorithmique et Programmation
Hiérarchie de la mémoire
Module 51 Module 5 - Synchronisation de Processus (ou threads, ou fils ou tâches) Module 5 - Synchronisation de Processus (ou threads, ou fils ou tâches)
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.
Parallélisme des instructions
Architecture et technologie des ordinateurs II
Chapitre 3 Interblocages 3.1. Ressources
INSTRUCTIONS COMPLEMENTAIRES ROLE DES DIFFERENTS ELEMENTS
Leçon 1 : notion dobjet IUP Génie Informatique Besançon Méthode et Outils pour la Programmation Françoise Greffier Université de Franche-Comté.
EPID-CPI-ISAIP Philippe Bancquart - mise à jour 24/02/ page 1 Gestion des transactions SQLServer.
Animateur : Med HAIJOUBI
Traitements Donne accès  Aux bordereaux de remises en banque  Aux remises d'espèces en banque  Calcul des commissions de CB  À la gestion des écritures.
1 Notations Asymptotiques Et Complexité Notations asymptotiques : 0 et  Complexité des algorithmes Exemples de calcul de complexité.
Le langage C Rappel Pointeurs & Allocation de mémoire.
Les Pointeurs et les Tableaux Statiques et Tableaux Dynamiques
LA POUSSEE D’ARCHIMEDE.
Menu Structure : Divisions Diffusion Nationale TOULOUSE – Décembre 2008 Structure et Services « STS » Menu Structures : Divisions.
Les virus informatiques
Traiter simultanément les bits
Module 4 : Résolution de noms
Tutorat en bio-informatique
Les Machines RAM.
Programmation Système et Réseau
Interprétation/Génération de code pour le langage Z minimal Pr ZEGOUR DJAMEL EDDINE Ecole Supérieure d’Informatique (ESI)
CSI 3525, Implémentation des sous-programmes, page 1 Implémentation des sous-programmes L’environnement dans les langages structurés en bloc La structure.
1 1 Huitième journée Quelques algorithmes. 2 Définition Description des tâches pour que celles-ci soient aisément programmables Différent d’une méthode.
Présentation upex sur la CMR
Architecture et technologie des ordinateurs II
8PRO107 Éléments de programmation Les tableaux. Étude de cas 1 Description du problème : Lire une liste d’entiers et l’afficher d’abord dans le même ordre.
Scripts et fonctions Instructions de contrôle
ALLOCATION DU CPU et GESTION DES TRAVAUX.
Gestion des Tâches Les Processus. Un système multitâches La carte mère comporte Le Processeur (calcul et attente) Les jeux de composants spécialisés (entrées-sorties.
1 UNIX AVANCE Yves PAGNOTTE – Janvier – LES PROCESSUS SOUS UNIX.
Transcription de la présentation:

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 LAE. L'ordre d'exécution est l'ordre partiel induit par ces dépendances. Une instruction ne peut démarrer son exécution tant que ses sources ne sont pas prêtes.

Exécution en ordre partiel Les sources d'une instruction registre-registre ADD RR0, RR1, RR2 sont produites par les instructions registre-registre antérieures les plus récentes ayant RR1 et RR2 pour destination. Ces instructions peuvent être: -> terminées, -> en cours de calcul, -> pas encore démarrées.

Source prête ou en attente Si l'instruction produisant la source est terminée, celle-ci se trouve dans le banc de registres de renommage. Si l'instruction est en cours de calcul, la source se trouve dans le pipeline de l'opérateur. Si l'instruction n'est pas démarrée, la source sera produite c cycles après le démarrage par un opérateur de latence c (les chargements de la mémoire ont une latence variable).

Etat des sources en registre Après son renommage, une instruction ADD RR0, RR1, RR2 lit l'état des registres RR1 et RR2: -> registre plein: la source est prête, -> registre vide: la source n'est pas prête. Une source constante est toujours prête. L'instruction est dirigée vers son opérateur où elle est rangée dans une table jusqu'à ce que ses deux sources soient prêtes.

Envoi d'étiquette Dans sa station d'attente, l'instruction attend, pour chaque source non prête, un signal indiquant que sa valeur est établie. L'opérateur qui produit la valeur de RR1 envoie l'étiquette RR1 à toutes les stations d'attente. Celles qui attendent RR1 peuvent marquer leur source prête.

Le réveil des instructions O(2*f*u)

Réveil et démarrage Quand ses deux sources sont prêtes, l'instruction est candidate au démarrage. A chaque cycle (pour un opérateur pipeliné), l'opérateur choisit une instruction candidate parmi celles de sa table de stations d'attente. L'instruction élue lit ses deux sources dans le banc de registres de renommage et entre dans le pipeline de l'opérateur.

La surface du banc de registre O(f*(3u)²)

Envoi de valeur Dans le cas suivant: ADD RR0, RR1, RR2 (1) ADD RR3, RR0, RR1 (2) la valeur de la source RR0 peut être envoyée à l'instruction (2) par l'additionneur. L'instruction (2) et l'instruction (1) partagent le même opérateur (ADD). L'instruction (2) a une dépendance LAE avec l'instruction (1). La latence de l'opérateur est de 1 cycle car il est pipeliné.

Envoi de valeur Dans ces conditions, l'instruction (2) démarre 1 cycle après l'instruction (1) si son autre source RR1 est prête. Elle lit RR1 et RR0 dans le banc de registres de renommage (donc une valeur incorrecte pour RR0) et avant d'entrer dans l'opérateur, la nouvelle valeur de RR0, envoyée par l'opérateur, remplace celle lue du banc de registres.

Envoi de valeur

Sauts prédits et exécution spéculative Les instructions qui suivent un saut prédit sont exécutées spéculativement. Si la prédiction de saut est incorrecte, pour chaque instruction qui suit le saut il faut: -> défaire le renommage de sa destination, -> restaurer le contenu antérieur de cette destination, -> pour une écriture en mémoire (STORE), annuler l'écriture.

Sauts prédits et renommage spéculatif // calculer R0 = 2*|R1-R2| SUBR0, R1, R2// RR0 = RR1 - RR2 BGER0, e// if (RR0>=0) goto e SUBR0, R2, R1// RR3 = RR2 - RR1 e:ADDR0, R0, R0// RR4 = RRx + RRx Si le saut est pris, RRx = RR0, sinon RRx = RR3. Le renommage dépend du saut. On renomme selon la prédiction. (RR0 si prédit pris, RR3 sinon)

Sauts prédits et terminaison spéculative // calculer R0 = 2*|R1-R2| SUBR0, R1, R2// RR0 = RR1 - RR2 BGER0, e// if (RR0>=0) goto e SUBR0, R2, R1// RR3 = RR2 - RR1 e:ADDR0, R0, R0// RR4 = RRx + RRx En supposant le saut prédit non pris, la soustraction dans RR3 peut se terminer avant le saut. Le résultat est écrit spéculativement dans RR3. Si le saut est pris, il faut restaurer RR3.

Correction à la validation On peut corriger les effets d'un saut mal prédit à sa validation. Quand le saut est validé, les instructions qui le précèdent sont toutes validées. Les instructions qui le suivent sont toutes annulées. Il n'y a donc plus de renommage en cours: les registres détiennent tous une seule valeur qui est leur contenu après le saut.

Correction à la validation: PIII Tant qu'une instruction n'est pas validée, son calcul reste spéculatif. Le résultat est conservé dans le registre de renommage pointé par la table RAT. A sa validation, une instruction écrit son résultat dans sa destination architecturale. Pour annuler les instructions qui suivent un saut mal prédit, on vide la table RAT. Les résultats validés sont dans le banc architectural.

Correction à la validation: P4 Tant qu'une instruction n'est pas validée, son calcul reste spéculatif. Le résultat est conservé dans le registre de renommage. A sa validation, le numéro de registre de renommage est copié dans RATD. Pour annuler les instructions qui suivent un saut mal prédit, on vide la table RATS. Les résultats validés sont ceux pointés par RATD dans le banc des registres de renommage.

Correction à la terminaison Corriger dès la terminaison d'un saut permet de reprendre une exécution correcte plus tôt. Quand un saut se termine, des instructions qui le précède peuvent ne pas être validées. Ces instructions doivent être conservées alors que toutes celles qui suivent le saut doivent être annulées. Quand les registres de renommage sont alloués et libérés en file, on peut aisément distinguer la tranche des registres à annuler de celle à conserver.

Correction à la terminaison // calculer R3 = 2*|R1-R2| SUBR3, R1, R2// RR3 = RR1 - RR2 BGER3, e// if (RR3>=0) goto e SUBR3, R2, R1// RR4 = RR2 - RR1 e:ADDR3, R3, R3// RR5 = RRx + RRx Le saut est prédit non pris mais est pris. L'instruction SUBR3, R1, R2 n'est pas validée. Il faut annuler RR4 et RR5, mais conserver RR3. On vide RAT (ou RATS) de la tranche commençant en RR4.

Correction à la terminaison: checkpointing Quand les registres de renommage ne sont pas alloués et libérés en file (cas du p4), on ne peut pas distinguer les registres à annuler de ceux à conserver. Il est nécessaire de conserver une copie de la table RATS propre à chaque saut prédit (la table RATD n'est plus utile). A chaque saut prédit, une nouvelle table est allouée, initialisée avec l'état de la table courante. Lors d'une correction, on redémarre en récupérant la table RATS allouée au saut.

Accès mémoire et spéculation Les accès mémoire peuvent être effectués spéculativement (et en ordre des dépendances LAE). Les chargements postérieurs à un saut mal prédit peuvent être poursuivis. Cela sert de préchargement du cache. Les rangements doivent être annulés. Les rangements étant conservés en ordre dans un store buffer, il suffit d'annuler la tranche des STORE postérieurs au saut. L'annulation peut intervenir dès que le saut mal prédit se termine.

Chargements mémoire spéculatifs Un chargement mémoire peut être effectué spéculativement en passant avant un rangement dont l'adresse est en cours de calcul. Si l'adresse calculée révèle un conflit avec le chargement, celui-ci doit être repris (effet identique à la correction d'un saut mal prédit). On peut reprendre le chargement après la validation du rangement ou plus précocement dès que l'adresse est établie. Un checkpointing est nécessaire lors de chaque chargement.