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

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.

Présentations similaires


Présentation au sujet: "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."— Transcription de la présentation:

1 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 une autre. Regardons se qui se passe dans un programme réel. sub $2,$1,$3# Registre $2 écrit par sub and $12,$2,$5# 1er opérande ($2) dépend de sub or $13,$6,$2 # 2nd opérande ($2) dépend de sub add $14,$2,$2 # 1er ($2) & 2nd ($2) dépendent de sub sw $15,100($2)# index ($2) dépend de sub Les quatre dernières instructions sont toutes dépendantes du résultat que la première instruction écrit dans le registre $2.

2 Aléas 2 Exécution de la séquence précédente sub $2,$1,$3 and $12,$2,$5 or $13,$6,$2 add $14,$2,$2 sw $15,100($2) MI RMD UALUAL R MI RMD UALUAL R MI RMD UALUAL R MI RMD UALUAL R MI RMD UALUAL R Valeur de $

3 Aléas 3 Exécution de la séquence précédente sub $2,$1,$3 and $12,$2,$5 or $13,$6,$2 add $14,$2,$2 sw $15,100($2) MI RMD UALUAL R MI RMD UALUAL R MI RMD UALUAL R MI RMD UALUAL R MI RMD UALUAL R Valeur de $

4 Aléas 4 Les aléas de données Les dépendances de données sont appelées des aléas de données. Ils constituent une des raisons pour lesquelles les pipelines sont difficiles à concevoir au niveau logiciel et matériel. Pour résoudre ce problème, le compilateur introduit soit : –des instructions indépendantes –sil ne peut pas en trouver il insère des instructions dont lindépendance est assurée : des instructions nop (no opération). Cette solution pénalise les performances, puisque chaque opération nop utilise un cycle sans réaliser de travail utile.

5 Aléas 5 Disparition des aléas de données sub $2,$1,$3 and $12,$2,$5 or $13,$6,$2 add $14,$2,$2 sw $15,100($2) add $20,$20,$21 sw $29,100($25) add $25,$5,$23 sub $2,$1,$3 nop and $12,$2,$5 or $13,$6,$2 add $14,$2,$2 sw $15,100($2) add $20,$20,$21 sw $29,100($25) add $25,$5,$23 Insertion de nop : solution simple, dégrade le temps

6 Aléas 6 Insertion de suspension dans le pipeline MI RMD UALUAL R MI RMD UALUAL R MI RMD UALUAL R MI RMD UALUAL R MI RMD UALUAL R MI BBBB BBBB BBBB sub $2,$1,$3 suspension and $12,$2,$5 or $13,$6,$2 add $14,$2,$2 sw $15,100($2)

7 Aléas 7 Disparition des aléas de données sub $2,$1,$3 and $12,$2,$5 or $13,$6,$2 add $14,$2,$2 sw $15,100($2) add $20,$20,$21 sw $29,100($25) add $25,$5,$23 sub $2,$1,$3 add $20,$20,$21 sw $29,100($25) add $5,$25,$23 and $12,$2, $5 or $13,$6,$2 add $14,$2,$2 sw $15,100($2) Réordonnancement des taches : solution très difficile, donne les meilleurs performances sub $2,$1,$3 and $12,$2,$5 or $13,$6,$2 add $14,$2,$2 sw $15,100($2) add $20,$20,$21 sw $29,100($25) add $5,$25,$23 Recherche de 3 opérations indépendantes Attention à ne pas recréer des aléas

8 Aléas 8 Traitement des aléas au niveau matériel Conditions pour détecter un aléas de données Création dune unité de détection des aléas

9 Aléas 9 Le contrôle des aléas Retour sur lexécution dune instruction lw $10,9($1) Nous allons suivre la valeur 10 dans les différents bancs de registres

10 Aléas 10 Exemple CC1 Registre lecture1 Registre lecture2 Registre écriture Donnée à écrire 0M10M1 0M10M1 ESES 0M10M1 CPCP R.Adr Mémoire I Donnée lue 1 Donnée lue 2 Adresse Lecture Adresse écrire Donnée à écrire Donnée lue 1M01M0 EI/DI DI/EX EX/MEM MEM/ER Extraction Instruction lw $10,9($1)

11 Aléas 11 Exemple CC2 Registre lecture1 Registre lecture2 Registre écriture Donnée à écrire 0M10M1 0M10M1 ESES 0M10M1 CPCP R.Adr Mémoire I Donnée lue 1 Donnée lue 2 Adresse Lecture Adresse écrire Donnée à écrire Donnée lue 1M01M0 EI/DI DI/EX EX/MEM MEM/ER Extraction InstructionDécodage Ins sub $11,$2,$3lw $10,9($1) 10 EI/DI.RegistreLecture

12 Aléas 12 Exemple CC3 Registre lecture1 Registre lecture2 Registre écriture Donnée à écrire 0M10M1 0M10M1 ESES 0M10M1 CPCP R.Adr Mémoire I Donnée lue 1 Donnée lue 2 Adresse Lecture Adresse écrire Donnée à écrire Donnée lue 1M01M0 EI/DI DI/EX EX/MEM MEM/ER Décodage Ins Exécution sub $11,$2,$3lw $10,9($1) DI/EX.RegistreEcriture 10 X Si x=10 problèm e

13 Aléas 13 Exemple CC4 Registre lecture1 Registre lecture2 Registre écriture Donnée à écrire 0M10M1 0M10M1 ESES 0M10M1 CPCP R.Adr Mémoire I Donnée lue 1 Donnée lue 2 Adresse Lecture Adresse écrire Donnée à écrire Donnée lue 1M01M0 EI/DI DI/EX EX/MEM MEM/ER Exécution Mémoire sub $11,$2,$3lw $10,9($1) EX/MEM.RegistreEcriture 10 X Si x=10 problèm e

14 Aléas 14 Exemple CC5 Registre lecture1 Registre lecture2 Registre écriture Donnée à écrire 0M10M1 0M10M1 ESES 0M10M1 CPCP R.Adr Mémoire I Donnée lue 1 Donnée lue 2 Adresse Lecture Adresse écrire Donnée à écrire Donnée lue 1M01M0 EI/DI DI/EX EX/MEM MEM/ER MémoireEcriture Résultat sub $11,$2,$3lw $10,9($1) MEM/ER.RegistreEcriture 10 X Si x=10 problèm e

15 Aléas 15 Le contrôle pour les aléas de données : les suspensions Conditions pour détecter un aléas de données : 1a- EI/DI.RegistreLecture1 = DI/EX.RegistreEcriture 2a- EI/DI.RegistreLecture1 = EX/MEM.RegistreEcriture 3a- EI/DI.RegistreLecture1 = MEM/ER.RegistreEcriture 1b- EI/DI.RegistreLectur2 = DI/EX.RegistreEcriture 2b- EI/DI.RegistreLecture2 = EX/MEM.RegistreEcriture 3b- EI/DI.RegistreLecture2 = MEM/ER.RegistreEcriture Exemple : sub $2,$1,$3 and $12,$2,$5 EI/DI.RegistreLecture1 = DI/EX.RegistreEcriture=2 sub $2,$1,$3 Or $i,$j,$k and $12,$2,$5 EI/DI.RegistreLecture1 = EX/MEM.RegistreEcriture=2

16 Aléas 16 Unité de détection des aléas Lunité de détection daléas stoppe lécriture dans le CP et le registre pipeline EI/DI et choisit des 0 pour les valeurs de contrôle dans le registre pipeline DI/EX lorsquelle détecte un aléas.

17 Aléas 17 Lunité de détection daléas Mémoire Instructions CP Registres 0M10M1 Mémoire Données 1M01M0 Unité détection aléas Contrôle 0M10M1 ER M EX ER M ER EcritureREG 0 DI/EX.RegDest DI/EX.EcrireReg EX/MEM.EcrireReg MEM/ER.EcrireReg EcritureEI/DI EcrtureCP EI/DI DI/EX EX/MEM MEM/ER DI/EX.RegistreEcritutureRt DI/EX.RegistreEcritureRd EX/MEM.RegistreEcriture MEM/ER.RegistreEcriture

18 Aléas 18 Lunité de détection daléas Mémoire Instructions CP Registres 0M10M1 Mémoire Données 1M01M0 Unité détection aléas Contrôle 0M10M1 ER M EX ER M ER EcritureREG 0 DI/EX.RegDest DI/EX.EcrireReg EX/MEM.EcrireReg MEM/ER.EcrireReg EcritureEI/DI EcrtureCP EI/DI DI/EX EX/MEM MEM/ER DI/EX.RegistreEcritutureRt DI/EX.RegistreEcritureRd EX/MEM.RegistreEcriture MEM/ER.RegistreEcriture and $4,$2,$5 sub $2,$1,$ $1 $

19 Aléas 19 Lunité de détection daléas Mémoire Instructions CP Registres 0M10M1 Mémoire Données 1M01M0 Contrôle 0M10M1 ER M EX ER M ER EcritureREG 0 DI/EX.RegDest DI/EX.EcrireReg EX/MEM.EcrireReg MEM/ER.EcrireReg EcritureEI/DI EcrtureCP EI/DI DI/EX EX/MEM MEM/ER DI/EX.RegistreEcritutureRt DI/EX.RegistreEcritureRd EX/MEM.RegistreEcriture MEM/ER.RegistreEcriture or $8,$2,$6 and $4,$2,$5 sub $2,$1,$ $2 $ $1 $3 2 A

20 Aléas 20 Mémoire Instructions CP Registres 0M10M1 Contrôle 0M10M1 ER M EX EcritureREG 0 DI/EX.RegDest DI/EX.EcrireReg EcritureEI/DI EcrtureCP EI/DI DI/EX DI/EX.RegistreEcritutureRt DI/EX.RegistreEcritureRd $2 $ $1 $3 2 Lunité de détection daléas Mémoire Données 1M01M0 ER M ER EX/MEM.EcrireReg MEM/ER.EcrireReg EX/MEM MEM/ER EX/MEM.RegistreEcriture MEM/ER.RegistreEcriture or $8,$2,$6 and $4,$2,$5 sub $2,$1,$3 A Conditions daléas

21 Aléas 21 Lunité de détection daléas Mémoire Instructions CP Registres 0M10M1 Mémoire Données 1M01M0 Unité détection aléas Contrôle 0M10M1 ER M EX ER M ER EcritureREG 0 DI/EX.RegDest DI/EX.EcrireReg EX/MEM.EcrireReg MEM/ER.EcrireReg EcritureEI/DI EcrtureCP EI/DI DI/EX EX/MEM MEM/ER DI/EX.RegistreEcritutureRt DI/EX.RegistreEcritureRd EX/MEM.RegistreEcriture MEM/ER.RegistreEcriture or $8,$2,$6 and $4,$2,$5 bullesub $2,$1,$ $2 $ A Bulle

22 Aléas 22 Lunité de détection daléas Mémoire Instructions CP Registres 0M10M1 Mémoire Données 1M01M0 Unité détection aléas Contrôle 0M10M1 ER M EX ER M ER EcritureREG 0 DI/EX.RegDest DI/EX.EcrireReg EX/MEM.EcrireReg MEM/ER.EcrireReg EcritureEI/DI EcrtureCP EI/DI DI/EX EX/MEM MEM/ER DI/EX.RegistreEcritutureRt DI/EX.RegistreEcritureRd EX/MEM.RegistreEcriture MEM/ER.RegistreEcriture or $8,$2,$6 and $4,$2,$5 bulle bulle sub $2,$1,$ $2 $ A 1 Bulle

23 Aléas 23 Lunité de détection daléas Mémoire Instructions CP Registres 0M10M1 Mémoire Données 1M01M0 Unité détection aléas Contrôle 0M10M1 ER M EX ER M ER EcritureREG 0 DI/EX.RegDest DI/EX.EcrireReg EX/MEM.EcrireReg MEM/ER.EcrireReg EcritureEI/DI EcrtureCP EI/DI DI/EX EX/MEM MEM/ER DI/EX.RegistreEcritutureRt DI/EX.RegistreEcritureRd EX/MEM.RegistreEcriture MEM/ER.RegistreEcriture or $8,$2,$6 and $4,$2,$5 bulle bulle bulle $2 $ Bulle

24 Aléas 24 Lunité de détection daléas Mémoire Instructions CP Registres 0M10M1 Mémoire Données 1M01M0 Unité détection aléas Contrôle 0M10M1 ER M EX ER M ER EcritureREG 0 DI/EX.RegDest DI/EX.EcrireReg EX/MEM.EcrireReg MEM/ER.EcrireReg EcritureEI/DI EcrtureCP EI/DI DI/EX EX/MEM MEM/ER DI/EX.RegistreEcritutureRt DI/EX.RegistreEcritureRd EX/MEM.RegistreEcriture MEM/ER.RegistreEcriture and $9,$4,$2 or $8,$2,$6 and $4,$2,$5 bulle bulle $2 $ $2 $5 4 Bulle

25 Aléas 25 Réduire les aléas de données : lenvoi Lidée est simple, les entrées de lUAL peuvent être prises dans nimporte quels registres et non pas seulement dans le registre DI/EX. Autrement dit, on utilise les résultats temporaires plutôt que dattendre que les registres soient écrits. Cette technique sappelle lenvoi ou dérivation.

26 Aléas 26 Réduire les aléas de données : lenvoi Valeur de $2 Valeur de EX/MEM Valeur de MEM/ER 1 10 x 2 10 x 3 10 x x 5 10 x x x x x sub $2,$1,$3 and $12,$2,$5 or $13,$6,$2 add $14,$2,$2 sw $15,100($2) MI RMD UALUAL R MI RMD UALUAL R MI RMD UALUAL R MI RMD UALUAL R MI RMD UALUAL R

27 Aléas 27 Réduire les aléas de données : lenvoi Valeur de $2 Valeur de EX/MEM Valeur de MEM/ER 1 10 x 2 10 x 3 10 x x 5 10 x x x x x sub $2,$1,$3 and $12,$2,$5 or $13,$6,$2 add $14,$2,$2 sw $15,100($2) MI RMD UALUAL R MI RMD UALUAL R MI RMD UALUAL R MI RMD UALUAL R MI RMD UALUAL R

28 Aléas 28 Réduire les aléas de données : lenvoi Valeur de $2 Valeur de EX/MEM Valeur de MEM/ER 1 10 x 2 10 x 3 10 x x 5 10 x x x x x sub $2,$1,$3 and $12,$2,$5 or $13,$6,$2 add $14,$2,$2 sw $15,100($2) MI RMD UALUAL R MI RMD UALUAL R MI RMD UALUAL R MI RMD UALUAL R MI RMD UALUAL R

29 Aléas 29 Réduire les aléas de données : lenvoi Valeur de $2 Valeur de EX/MEM Valeur de MEM/ER 1 10 x 2 10 x 3 10 x x 5 10 x x x x x sub $2,$1,$3 and $12,$2,$5 or $13,$6,$2 add $14,$2,$2 sw $15,100($2) MI RMD UALUAL R MI RMD UALUAL R MI RMD UALUAL R MI RMD UALUAL R MI RMD UALUAL R

30 Aléas 30 Réduire les aléas de données : lenvoi Valeur de $2 Valeur de EX/MEM Valeur de MEM/ER 1 10 x 2 10 x 3 10 x x x x x x x sub $2,$1,$3 and $12,$2,$5 or $13,$6,$2 add $14,$2,$2 sw $15,100($2) MI RMD UALUAL R MI RMD UALUAL R MI RMD UALUAL R MI RMD UALUAL R MI RMD UALUAL R Dernier moment

31 Aléas 31 Réduire les aléas de données : lenvoi Valeur de $2 Valeur de EX/MEM Valeur de MEM/ER 1 10 x 2 10 x 3 10 x x x x x x x sub $2,$1,$3 and $12,$2,$5 or $13,$6,$2 add $14,$2,$2 sw $15,100($2) MI RMD UALUAL R MI RMD UALUAL R MI RMD UALUAL R MI RMD UALUAL R MI RMD UALUAL R

32 Aléas 32 Réduire les aléas de données : lenvoi Valeur de $2 Valeur de EX/MEM Valeur de MEM/ER 1 10 x 2 10 x 3 10 x x x x x x x sub $2,$1,$3 and $12,$2,$5 or $13,$6,$2 add $14,$2,$2 sw $15,100($2) MI RMD UALUAL R MI RMD UALUAL R MI RMD UALUAL R MI RMD UALUAL R MI RMD UALUAL R Dernier moment

33 Aléas 33 Réduire les aléas de données : lenvoi Valeur de $2 Valeur de EX/MEM Valeur de MEM/ER 1 10 x 2 10 x 3 10 x x x x x x x sub $2,$1,$3 and $12,$2,$5 or $13,$6,$2 add $14,$2,$2 sw $15,100($2) MI RMD UALUAL R MI RMD UALUAL R MI RMD UALUAL R MI RMD UALUAL R MI RMD UALUAL R Attention

34 Aléas 34 Réduire les aléas de données : lenvoi Valeur de $2 Valeur de EX/MEM Valeur de MEM/ER 1 10 x 2 10 x 3 10 x x x x x x x sub $2,$1,$3 and $12,$2,$5 or $13,$6,$2 add $14,$2,$2 sw $15,100($2) MI RMD UALUAL R MI RMD UALUAL R MI RMD UALUAL R MI RMD UALUAL R MI RMD UALUAL R

35 Aléas 35 Réduire les aléas de données : lenvoi Valeur de $2 Valeur de EX/MEM Valeur de MEM/ER 1 10 x 2 10 x 3 10 x x x x x x x sub $2,$1,$3 and $12,$2,$5 or $13,$6,$2 add $14,$2,$2 sw $15,100($2) MI RMD UALUAL R MI RMD UALUAL R MI RMD UALUAL R MI RMD UALUAL R MI RMD UALUAL R Dernier moment

36 Aléas 36 Réduire les aléas de données : lenvoi Valeur de $2 Valeur de EX/MEM Valeur de MEM/ER 1 10 x 2 10 x 3 10 x x x x x x x sub $2,$1,$3 and $12,$2,$5 or $13,$6,$2 add $14,$2,$2 sw $15,100($2) MI RMD UALUAL R MI RMD UALUAL R MI RMD UALUAL R MI RMD UALUAL R MI RMD UALUAL R Bilan : Gain de 3 NOP Bilan : Gain de 3 NOP

37 Aléas 37 Réalisation matériel Mémoire Données Mémoire Données M M M M DI/EXEX/MEMMEM/ER

38 Aléas 38 L envoi au niveau EX/MEM Mémoire Données Mémoire Données M M M M DI/EXEX/MEMMEM/ER

39 Aléas 39 L envoi au niveau MEM/ER Mémoire Données Mémoire Données M M M M DI/EXEX/MEMMEM/ER

40 Aléas 40 L'envoi pour les chargements lw $2,100($1) and $12,$2,$5 MI RMD UALUAL R MI RMD UALUAL R Lunité de détection des aléas doit provoquer une suspension pour cette combinaison. lw $2,100($1) Suspension and $12,$2,$5 MI RMD UALUAL R MI RMD UALUAL R MI

41 Aléas 41 L'envoi pour les chargements lw $2,100($1) and $12,$2,$5 MI RMD UALUAL R MI RMD UALUAL R lw $2,100($1) and $12,$2,$5 MIDI EX M ER MIDI Nop EX M ER

42 Aléas 42 Erreurs fréquente lw $2,100($1) and $12,$2,$5 MI RMD UALUAL R MI RMD UALUAL R lw $2,100($1) and $12,$2,$5 MIDI EX M ER MIDI Nop EX M ER Attention

43 Aléas 43 Exemple : Pipeline ss envois lw $1,100($2) sub $4,$1,$5 add $6,$1,$7 Or $8,$1,$6 lw $1,100($2) sub $4,$1,$5 add $6,$1,$7 Or $8,$1,$6 MIDIEXMER MIDIEXMER MIDIEXMER MIDIEXMER

44 Aléas 44 Exemple lw $1,100($2) sub $4,$1,$5 add $6,$1,$7 Or $8,$1,$6 lw $1,100($2) sub $4,$1,$5 add $6,$1,$7 Or $8,$1,$6 MIDIEXMER MIDIEXMER MIDIEXMER MIDIEXMER MIDIEXMER MIDINo EXMER MINo DIEXMER No MIDINo EXMER

45 Aléas 45 Exemple : pipline avec envoi lw $1,100($2) sub $4,$1,$5 add $6,$1,$7 Or $8,$1,$6 lw $1,100($2) sub $4,$1,$5 add $6,$1,$7 Or $8,$1,$6 MIDIEXMER MIDIEXMER MIDIEXMER MIDIEXMER

46 Aléas 46 Exemple lw $1,100($2) sub $4,$1,$5 add $6,$1,$7 Or $8,$1,$6 lw $1,100($2) sub $4,$1,$5 add $6,$1,$7 Or $8,$1,$6 MIDIEXMER MIDIEXMER MIDIEXMER MIDIEXMER MEXDIMINop ERMEXDINopMI ERMEXNopDIMI ERMEXDIMI

47 Aléas 47 Les Aléas de Branchement Lors dune instruction de branchement, la décision concernant un branchement éventuel ne survient quà létage MEM du pipeline. Ce délai pour déterminer linstruction correcte à extraire est appelé un aléas de contrôle ou aléas de branchement. MI R MD UALUAL R beq $1,$10,30 MI R MD UALUAL R MI R MD UALUAL R MI R MD UALUAL R MI R MD UALUAL

48 Aléas 48 Solutions Toujours suspendre. –Du temps est perdu si le branchement ne doit pas s'effectuer. Supposer que le branchement nest pas effectué. – Si le branchement est effectué, les instructions extraites et décodées seront laissées de côté en remplaçant simplement les signaux de contrôle originaux des étages EI, DI et EX par des 0.

49 Aléas 49 Relation compilateur/matériel Un autre exemple de compromis entre compilateurs et complexité du matériel, les premiers processeurs MIPS évitaient que le matériel suspende le pipeline en imposant au logiciel une instruction indépendante du chargement après celui-ci. Que le matériel sappuie ou non sur le compilateur pour résoudre les dépendances des aléas afin dassurer une exécution correcte, le compilateur doit comprendre le pipeline pour obtenir les meilleurs performances. Sinon, des suspensions inattendues réduiront les performances du code compilé.

50 Aléas 50 Illusions et pièges Piège : une absence de réflexion approfondie lors de la conception du jeu dinstructions peut avoir un impact défavorable sur le pipeline. Illusion : accroître la profondeur du pipeline améliore toujours les performances. Illusion : la technique du pipeline est simple.

51 Aléas 51 Conclusion Chemin de données multicycle Chemin de données pipeliné chemin de données à un cycle Plus lentPlus rapide Débit dinstructions (1/CPI) Fréquence dhorloge Plus lent Plus rapide

52 Aléas 52 Résumé Le pipeline améliore le débit mais pas le temps par instruction : il faut toujours cinq cycles à une instruction dun pipeline à cinq étages pour sexécuter. Les dépendances de données et de contrôle dans les programmes imposent une limite supérieure au gain que peut générer le pipeline car le processeur doit parfois attendre la fin dune instruction pour que les dépendances soit résolues. On peut élever cette limite, mais pas léliminer, en réduisant les aléas de contrôle par des optimisations, et les aléas de données par un ordonnancement des instructions par le compilateur.

53 Aléas 53 Développements récents Machines superpipelinés Extrac inst Extrac inst Décod inst ExécMém don Mém don Mém don Ecrit resul Extrac inst Extrac inst Décod inst ExécMém don Mém don Mém don Ecrit resul Superscalaire Extraction inst Décodage instruc ExécutionMémoire données Ecriture résult Extraction inst Décodage instruc ExécutionMémoire données Ecriture résult


Télécharger ppt "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."

Présentations similaires


Annonces Google