Concepts d’architectures avancées

Slides:



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

GEF 435 Principes des systèmes d’exploitation
La boucle for : init7.c et init71.c
Le Concept du programme enregistré
Architecture de machines Le microprocesseur
1 CNAM Vendredi 29 Novembre 2002 Bases de Données Avancées UV C Responsable : Mr Scholl PROTOCOLE A DEUX PHASES Meryem Guerrouani.
Initiation à la programmation et algorithmique cours 2
Algorithmique et Programmation
Hiver 2005Maj JGA Beaulieu & Capt MWP LeSauvage GEF 243B Programmation informatique appliquée Considération de temps.
GEF 435 Principes des systèmes dexploitation Communication Interprocessus (CIP) II (Tanenbaum 2.3)
Synchronisation des Processus
Objectif de l’exposé.
Aléas 1 Les aléas de données Jusquà présent toutes les instructions étaient indépendantes ; aucune dentre elles nutilisaient les résultats calculés par.
Parallélisme d’instructions
Les aléas de données Jusqu’à présent toutes les instructions étaient indépendantes ; aucune d’entre elles n’utilisaient les résultats calculés par une.
Le Concept du programme enregistré
Le jeu d ’instructions Introduction Un jeu d ’instruction classique
Mémoire & Processus Cours SE - SRC
Architecture Systèmes
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.
Système d’exploitation : Assembleur
Section VI Structures répétitives (suite)
CSI3525: Concepts des Langages de Programmation Notes # 11: Sous-Programmes ( Lire Chapitre 8 )
Chapitre 8 : L’architecture de base des ordinateurs
1 ARCHITECTURE DACCÈS la méthode générale modèle de données définitions module daccès / modules métiers construction des modèles les modules daccès, les.
Système d’exploitation : Assembleur
Cours 7 - Les pointeurs, l'allocation dynamique, les listes chaînées
Récursivité.
RESUMES Module II1 SOMMAIRE CYCLE 1 : Saisir – Afficher – Données
Atomicité Transactions Atomiques Recouvrement à Base de Journal
1 Threads et Lightweight Processes Chapitre 5 En français on utilise parfois flots ou fils pour threads. Votre manuel préfère le mot anglais thread : terminologie.
Gestion des branchements
Architecture des Ordinateurs
Algorithmique et Programmation
Etude de cas : buffer clavier
Test et débogage Tests unitaires. Gestion d’erreurs. Notion d’état, de pré-condition et de post-condition. Assertion. Traces de programme. Débogueur et.
8.1 URDL22005 Systèmes dexploitation Interblocages Modèle Système Caractérisation dinterblocage Méthodes pour Gérer les Interblocages Prévention des Interblocages.
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?
Systèmes Superscalaires et VLIW
Gei 431 Architecture des ordinateurs II – Frédéric Mailhot Et maintenant, où allons-nous? Après toutes les techniques vues jusquici: Que peut-on faire.
Chapitre XI Gestion des erreurs et exceptions. 2 La gestion des erreurs et exceptions De nombreux problèmes peuvent survenir pendant lexécution dun programme:
Gestion de Fichiers Tri Interne Efficace et Tri Externe.
Parallélisme des instructions
Parallélisme des instructions
Architecture et technologie des ordinateurs II
Chap. 2 - Structure d’un ordinateur
Synchronisation Classique
Répéter dans un programme avec une Instruction itérative
Exemple de gestion d'un buffer clavier en liste circulaire
Interactions entre Processus
Programmation Système et Réseau
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.
Chapitre 4 Interruptions
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,
Cours LCS N°4 Présenté par Mr: LALLALI
Les fichiers 1ère partie
Architecture et technologie des ordinateurs II
1. Spoon Christophe Delagarde, septembre 1998 I.U.T., Université de la Méditerrainée 2.
Patricia Renault UPMC 2005/2006
Pipeline 1 Amélioration des performances par la technique du pipeline.
Scripts et fonctions Instructions de contrôle
Algorithmique Boucles et Itérations
Introduction à l’Informatique chap 3 Licence SPI Mme Delmotte.
L ES INSTRUCTIONS DE L ECTURE, E CRITURE ET A FFECTATION Réalisé par : OUZEGGANE Redouane Département de Technologie Faculté de Technologie – Université.
Transcription de la présentation:

Concepts d’architectures avancées Architectures superscalaires Exécution dans le désordre VLIW( Very Long Instruction Word)

Plan Introduction – Pipeline Exécution Out Of Order Scoreboarding – détails Tomasulo - principes Processeurs Superscalaires Issue In Order vs. Out Of Order Spéculation – principes VLIW et Ordonnancement statique

Pipeline L’exécution du programme est jusqu’à 8 fois plus rapide. Tous les composants sont utilisés Inst. 1 2 3 4 5 6 7 8 9 10 11 12 13 LDR R1,R0,#30 IA IF SI DI AC MEM EX WB ADD R1,R1,#5 STR R1,R0,#30 ADD R0,R0,#1 ADD R3,R0,R2 BRn LOOP L’exécution du programme est jusqu’à 8 fois plus rapide. Le temps d’exécution d’une instruction est inchangé.

Quelques problèmes + solutions Aléas structurels: Augmenter les ressources Aléas de contrôle: Prédiction de branchement Aléas de données: Délai + Forwarding Latence mémoire: Hiérarchie de caches Instructions multi cycles: Délai Dans tous les cas on peut résoudre les problèmes par des délais  inefficace

Problème pipeline simple (DLX) En pratique, les délais sont inévitables DLX: Un délai bloque tout le pipeline le temps que l’aléa soit résolu Un seul chemin de données dans le processeur est limitant Idée: Processeur avec plusieurs chemins de données pour pouvoir exécuter plusieurs instructions indépendantes en même temps Problème: Comment déterminer si des instructions sont indépendantes ?

Types de Dépendances RAW (Read After Write): vraie dépendance. WAW (Write After Write): risque d’écriture dans le désordre (fausse dépendance). WAR (Write After Read): risque d’écriture avant lecture, i.e., avant qu’une donnée ait été utilisée (fausse dépendance). Pipeline simple: toutes les instructions sont exécutées dans l’ordre, on ne s’intéresse qu’aux dépendances RAW Si on décidait d’exécuter dans un autre ordre, il faudrait gérer les dépendances WAR et WAW pour être correct

Plan Exécution Out Of Order Introduction – Pipeline Scoreboarding – détails Tomasulo - principes Processeurs Superscalaires Issue In Order vs. Out Of Order Spéculation – principes VLIW et Ordonnancement statique

Scoreboarding Mécanisme pour permettre l’exécution d’instructions indépendantes dès que possible: attention aux WAR et WAW Pipeline avec plusieurs FU indépendantes (- aléas structurels) Les phases ID, EX et WB sont étoffées: ID devient Issue + Read Operands: Issue: Teste si l’instruction courante écrit dans le même registre qu’une instruction déjà dans le pipeline: Non: Pas de dépendance WAW, l’instruction avance si FU libre Oui: Dépendance WAW, instruction bloquée (IF bloqué .. ?) Mise en œuvre: Table retient pour chaque FU le registre destination de l’instruction en cours Cette information est mise à jour quand une instruction entre dans une FU et qu’une autre en sort (phases Issue et WB)

Scoreboarding: Issue In Order Read Operand FU1 op1 $1$2, $3 op2 $4$6, $2 op3 $1$2, $3 WAW Issue ……… à t = 3 Read Operand FU2 Busy Inst … Dest FU1 1 op1 … $1 FU2 op2 $4 op1 affecté à FU1, avance dans OR et FU1Dest est mis à $1 op2 affecté à FU2, avance dans OR et FU2Dest est mis à $4 op3 doit attendre que FU1r != $1 pour avancer dans OR (op3 doit aussi attendre qu’une des FU ne soit pas occupée)

Scoreboarding: Issue In Order Affecter les instructions aux bonnes FU le plus tôt possible Résolution des dépendances WAW Les instructions sortent de la phase Issue dans l’ordre On peut recouvrir les latences des instructions multicycles par d’autres instructions tant que les sorties sont indépendantes Pour issue dans le désordre, il faut un mécanisme compliqué de détection de toutes les dépendances dans cette phase (ex 2)

Scoreboarding: Read Operands Une instruction dans la phase RO s’exécute sur FU déterminée L’exécution se fait dans le désordre Pas d’erreur puisqu’on a garanti qu’il n’y a pas de WAW (pas besoin de se préoccuper de l’ordre d’écriture des registres les uns par rapport aux autres) Les opérandes sont lus dès qu’ils sont tous disponibles: Condition: Ne pas lire un opérande avant sa mise à jour. Remarque: Une seule instruction peut mettre un opérande à jour avant sa lecture (puisqu’on garantit pas de WAW dans le pipeline) Les dépendances RAW sont résolues dynamiquement Nécessité d’ajouter des colonnes: So1Rdy signifie: "So1 prêt et pas encore lu" Prod1 signifie: "FU qui va produire So1" (si vide, directement registre)

Scoreboarding: Read Operands FU1 op1 $1$2, $3 op2 $4$1, $2 op3 $1$2, $3 WAW Issue ……… Read Operand FU2 B Inst So1 So2 So1Rdy So2Rdy Prod1 Prod2 Dest FU1 1 op1 $2 $3 -- $1 FU2 t = 2 Pour remplir SoRdy, il existe une table non représentée qui trace pour chaque registre qui est son producteur Cette table permet aussi de tester si une instruction en Issue peut déclencher une erreur WAW Toute instruction qui fait Issue lit cette table et remplit SoRdy

Scoreboarding: Read Operands FU1 op1 $1$2, $3 op2 $4$1, $2 op3 $1$2, $3 WAW Issue ……… Read Operand FU2 B Inst So1 So2 So1Rdy So2Rdy Prod1 Prod2 Dest FU1 1 op1 $2 $3 -- $1 FU2 op2 $4 t = 3 La lecture des opérandes ne se fait que si So1Rdy ET So2Rdy A t=3, op1 a lu ses opérandes et op2 est en attente de So1: NOT(So1Rdy) Op1 s’exécute (10 cycles)

Scoreboarding: Write Result Lorsqu’une FU termine son exécution, attention aux WAR 10 cycles op1 $1$2, $3 op2 $4$1, $2 op3 $2$2, $3 Exemple: 5 cycles WAR 5 cycles Avec 3 FU, op3 commence son exécution à t=5 et finit à t=10 alors que op2 attend t=12 pour avoir $1 Op3 finit le calcul avant op2, op3 n’a pas le droit d’ écrire Pour qu’une instruction I puisse écrire son résultat: Aucune instruction J ayant passé Issue ne doit spécifier: So[i]Rdy(J) ET So[i](J) == Dest(I) Dans le cas contraire, J a l’un de ses opérandes prêt et ça ne peut pas être le résultat de I qui n’a pas encore écrit … I n’a pas le droit d’écrire

Scoreboarding: Write Result Read Operand FU1 op1 $1$2, $3 op2 $4$1, $2 op3 $1$2, $3 WAW Issue ……… Read Operand FU2 B Inst So1 So2 So1Rdy So2Rdy Prod1 Prod2 Dest FU1 1 op1 $2 $3 -- $1 FU2 op2 $4 t = 12 A t=12, op1 termine son exécution et passe dans Write La ligne FU2 va être modifiée puisque NOT(So1Rdy)

Scoreboarding: Write Result Read Operand FU1 op1 $1$2, $3 op2 $4$1, $2 op3 $1$2, $3 WAW Issue ……… Read Operand FU2 B Inst So1 So2 So1Rdy So2Rdy Prod1 Prod2 Dest FU1 op1 $2 $3 -- $1 FU2 1 op2 $4 t = 13 A t=13, op1 modifie la ligne 2 pour annoncer que $1 est prêt

Scoreboarding: Limites Dans ce modèle, les FU ne communiquent pas, pas de forwarding La gestion des producteurs/consommateurs est centralisée (tous les résultats sont explicitement écrits dans les registres) La phase Issue se fait dans l’ordre, toute dépendance WAW bloque la partie amont du processeur. op1 $1$2, $3 op2 $1$4, $2 op3 $5$1, $3 La phase WB résout les dépendances WAR en bloquant l’écriture: répercussion sur la lecture des opérandes suivants WAW Scoreboarding inefficace Il existe un mécanisme décentralisé, plus complexe, bien plus performant, où le forwarding est implicite et permet de résoudre directement les problèmes de dépendances WAR et WAW  Algorithme de Tomasulo

Plan Exécution Out Of Order Introduction – Pipeline Scoreboarding – détails Tomasulo - principes Processeurs Superscalaires Issue In Order vs. Out Of Order Spéculation – principes VLIW et Ordonnancement statique

Tomasulo : Principes Approche qui permet: Exécution dès que les opérandes sont prêts Renommage de registres supprime les dépendances WAR et WAW et permet de réordonner les instructions Les FU communiquent via le CDB (Common Data Bus) Pour chaque FU: 1 Station de Réservation joue le rôle de scoreboard local pour la FU et contient, en plus, les valeurs des opérandes L’écriture en phase WB se fait directement dans ces RS via le CDB L’information "où trouver l’opérande"  est calculée dynamiquement et est à jour dans chaque RS  renommage implicite op1 $1$2, $3 op2 $4$1, $2 op3 $1$2, $7 op4 $5$1, $2 op1 $1$2, $3 op3 $T$2, $7 op2 $4$1, $2 op4 $5$T, $2 WAR op3 $1$2, $3 Renommage  Correct

Tomasulo : Principes

Tomasulo : Principes Issue, prendre la tête du buffer d’instructions: Si aucune RS n’est disponible, aléa structurel, bloquer la partie amont Sinon, passer l’instruction à une RS: Si les opérandes sont disponibles, copier les valeurs dans la RS Sinon, copier les noms des FU productrices dans la RS (renommage) Execute: S’il manque des opérandes, espionner le CDB et récupérer les valeurs Dès que les opérandes sont prêts, exécuter Comportement spécial pour Load/Store (calcul @ puis exécution): Load peut s’exécuter immédiatement (sauf si dépendances) Store a besoin dune valeur a stocker qui vient des RS Si Load et Store à la même @, problèmes RAW, WAR, WAW à résoudre Write Result: Chaque FU écrit sur le CDB (risque d’aléa structurel) Stores écrivent en mémoire dans cette phase (dans l’ordre modulo l’@)

Tomasulo : Conclusion/Limites Beaucoup plus efficace que le scoreboarding mais cher: RS = Buffer Associatif à très haute fréquence CDB = Fils d’interconnexions coûteux de capacité limitée Problème des branchements non résolu  bloquer le pipeline en attendant IF de la bonne instruction (en espérant que le prédicteur de branchements soit bon) Les dépendances WAR sont résolues grâce à la copie des valeurs des opérandes dans les stations de réservation (en amont de EX) Il est aussi possible de résoudre ce problème en aval grâce à des buffers dédiés à la sauvegarde de la valeur courante d’un registre op1 $1$2, $3 op2 $4$1, $2 op3 $1$2, $7 op4 $5$1, $2 op1 $1$2, $3 op3 $T$2, $7 op2 $4$1, $2 op4 $5$T, $2 WAR op3 $1$2, $3 Renommage  Correct

Plan Processeurs Superscalaires Introduction – Pipeline Exécution Out Of Order Scoreboarding – détails Tomasulo - principes Processeurs Superscalaires Issue In Order vs. Out Of Order Spéculation – principes VLIW et Ordonnancement statique

Processeur Superscalaire L’exécution dans le désordre permet d’exploiter le parallélisme d’un programme, CDB limitant Pour le moment, processeurs avec 1 instruction terminée par cycle. Superscalaire de degré n: jusqu’à n instructions terminées par cycle (n ~ 4) Pour réaliser un processeur superscalaire, il faut: Pouvoir faire IF sur plusieurs instructions en même temps Pouvoir faire Issue sur plusieurs instructions en même temps Disposer de plusieurs unités de calcul en parallèle et exécuter en parallèle (Tomasulo)

Issue In Order vs. Out Of Order In Order: Dès qu’une instruction ne peut pas sortir de Issue, le Front End (partie amont) est bloqué Out Of Order: Si une instruction ne peut pas sortir de Issue et que la suivante le pourrait, Issue de la suivante Fenêtre d’instructions en attente d’Issue, résoudre dépendances

Problème Branch / Out Of Order On s’intéresse aux instructions qui s’exécutent après un branchement Issue In Order: Attendre le résultat de la comparaison, comparer avec le prédicteur puis Issue des instructions dépendantes  Correct mais inefficace Issue Out Of Order: Incorrect Alternative: Ne pas permettre à des instructions contrôle-dépendantes de dépasser un branch  très inefficace à cause de la fréquence des branch (boucles) Prédicteurs de branchement souvent efficaces (90%+ de bonnes prédiction)  utiliser intelligemment cette propriété

Solution: Exécution Spéculative Plutôt que de bloquer en amont sur un branch, on va exécuter spéculativement les instructions Instructions contrôle-dépendantes dont le branch n’est pas sûrement calculé sont exécutées quand même Elles n’ont pas le doit de faire Write Result tant que le caractère spéculatif n’est pas levé Ajout d’une nouvelle phase: Commit In Order Si la spéculation est fausse, on vide le pipeline Commit assure qu’aucune instruction ne modifie les registres si elle ne le devait pas Fonctionne sur plusieurs branchements à la suite Remarque: Exceptions coûteuses interdites en mode spéculatif, on préfère bloquer le pipeline.

Superscalaire dynamique Résumé

Plan VLIW et Ordonnancement statique Introduction – Pipeline Exécution Out Of Order Scoreboarding – détails Tomasulo - principes Processeurs Superscalaires Issue In Order vs. Out Of Order Spéculation – principes VLIW et Ordonnancement statique