1 / 53

Les aléas de données

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 autre. Regardons se qui se passe dans un programme réel. sub $2 ,$1,$3 # Registre $2 écrit par sub

jason
Download Presentation

Les aléas de données

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. 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 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. Exécution de la séquence précédente Valeur de $2 1 2 3 4 5 6 7 8 9 sub $2,$1,$3 and $12,$2,$5 or $13,$6,$2 add $14,$2,$2 sw $15,100($2) UAL R MD R MI UAL R MD R MI UAL R MD R MI UAL R MD R MI UAL R MD R MI

  3. Exécution de la séquence précédente 1 10 2 10 3 10 4 10 5 10 6 -20 7 -20 8 -20 9 -20 Valeur de $2 sub $2,$1,$3 and $12,$2,$5 or $13,$6,$2 add $14,$2,$2 sw $15,100($2) UAL R MD R MI UAL R MD R MI UAL R MD R MI UAL R MD R MI UAL R MD R MI 1 10 2 10 3 -20 4 -20 5 -20 6 -20 7 -20 8 -20 9 -20

  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 • s’il ne peut pas en trouver il insère des instructions dont l’indé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. Disparition des aléas de données • Insertion de nop : • solution simple, dégrade le temps 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 nop 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

  6. Insertion de suspension dans le pipeline B B B B B B B B B B B B UAL R MD R MI UAL R MD R MI UAL R MD R MI UAL R MD R MI sub $2,$1,$3 suspension suspension suspension and $12,$2,$5 or $13,$6,$2 add $14,$2,$2 sw $15,100($2) UAL R MD R MI MI MI MI

  7. Disparition des aléas de données • 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 $25,$5,$23 sub $2,$1,$3 and $12,$2,$5 or $13,$6,$2 add $14,$2,$2 sw $15,100($2) 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) 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. Traitement des aléas au niveau matériel • Conditions pour détecter un aléas de données • Création d’une unité de détection des aléas

  9. Le contrôle des aléas • Retour sur l’exécution d’une instruction lw $10,9($1) Nous allons suivre la valeur 10 dans les différents bancs de registres

  10. Exemple CC1 lw $10,9($1) Extraction Instruction 0 M 1 EI/DI EX/MEM DI/EX MEM/ER Registre lecture1 Registre lecture2 Registre écriture Donnée à écrire C P R.Adr Donnée lue 1 Donnée lue 2 Adresse Lecture Adresse écrire Donnée à écrire Mémoire I Donnée lue 0 M 1 1 M 0 E S 0 M 1

  11. Exemple CC2 sub $11,$2,$3 lw $10,9($1) Extraction Instruction Décodage Ins 0 M 1 EI/DI EX/MEM DI/EX MEM/ER Registre lecture1 Registre lecture2 Registre écriture Donnée à écrire C P R.Adr Donnée lue 1 Donnée lue 2 Adresse Lecture Adresse écrire Donnée à écrire Mémoire I Donnée lue 0 M 1 1 M 0 E S 10 0 M 1 EI/DI.RegistreLecture

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

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

  14. Exemple CC5 sub $11,$2,$3 lw $10,9($1) Mémoire Ecriture Résultat 0 M 1 EI/DI EX/MEM DI/EX MEM/ER Registre lecture1 Registre lecture2 Registre écriture Donnée à écrire C P R.Adr Donnée lue 1 Donnée lue 2 Adresse Lecture Adresse écrire Donnée à écrire Mémoire I Donnée lue 0 M 1 1 M 0 Si x=10 problème E S X 0 M 1 10 MEM/ER.RegistreEcriture

  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. Unité de détection des aléas • L’unité de détection d’alé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 lorsqu’elle détecte un aléas.

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

  18. L’unité de détection d’aléas and $4,$2,$5 sub $2,$1,$3 Unité détection aléas MEM/ER.EcrireReg EX/MEM.EcrireReg 1 1 DI/EX DI/EX.EcrireReg 10 000 1100 0 ER M EX Contrôle EX/MEM 0 M 1 EcritureEI/DI ER M MEM/ER DI/EX.RegDest 0 ER EI/DI 1 3 EcritureREG Mémoire Données $1 $3 2 Registres EcrtureCP Mémoire Instructions 1 M 0 CP 0 M 1 DI/EX.RegistreEcritutureRt DI/EX.RegistreEcritureRd EX/MEM.RegistreEcriture MEM/ER.RegistreEcriture

  19. L’unité de détection d’aléas or $8,$2,$6 and $4,$2,$5 sub $2,$1,$3 A MEM/ER.EcrireReg EX/MEM.EcrireReg 1 10 000 0 0 DI/EX DI/EX.EcrireReg 00 000 0000 1 ER M EX Contrôle EX/MEM 0 M 1 EcritureEI/DI ER M MEM/ER DI/EX.RegDest 0 ER EI/DI EcritureREG $1 $3 2 Mémoire Données $2 $5 4 Registres EcrtureCP Mémoire Instructions 1 M 0 CP 0 M 1 DI/EX.RegistreEcritutureRt DI/EX.RegistreEcritureRd EX/MEM.RegistreEcriture MEM/ER.RegistreEcriture

  20. L’unité de détection d’aléas or $8,$2,$6 and $4,$2,$5 sub $2,$1,$3 A MEM/ER.EcrireReg EX/MEM.EcrireReg 1 10 000 0 0 DI/EX DI/EX.EcrireReg 00 000 0000 1 ER M EX Contrôle EX/MEM 0 M 1 EcritureEI/DI ER M MEM/ER DI/EX.RegDest 0 ER EI/DI EcritureREG $1 $3 2 Mémoire Données Registres $2 $5 4 EcrtureCP Mémoire Instructions 1 M 0 CP 0 M 1 DI/EX.RegistreEcritutureRt Conditions d’aléas DI/EX.RegistreEcritureRd EX/MEM.RegistreEcriture MEM/ER.RegistreEcriture

  21. L’unité de détection d’aléas or $8,$2,$6 and $4,$2,$5 bulle sub $2,$1,$3 A Unité détection aléas MEM/ER.EcrireReg EX/MEM.EcrireReg 0 00 000 1 10 0 0 DI/EX DI/EX.EcrireReg 00 000 0000 1 ER M EX Contrôle EX/MEM 0 M 1 EcritureEI/DI ER M MEM/ER DI/EX.RegDest 0 ER EI/DI EcritureREG Bulle Mémoire Données $2 $5 4 Registres EcrtureCP Mémoire Instructions 1 M 0 CP 2 0 M 1 DI/EX.RegistreEcritutureRt DI/EX.RegistreEcritureRd EX/MEM.RegistreEcriture MEM/ER.RegistreEcriture

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

  23. L’unité de détection d’aléas or $8,$2,$6 and $4,$2,$5bulle bulle bulle Unité détection aléas MEM/ER.EcrireReg EX/MEM.EcrireReg 0 00 000 0 00 1 1 0 DI/EX DI/EX.EcrireReg 10 000 1100 0 ER M EX Contrôle EX/MEM 0 M 1 EcritureEI/DI ER M MEM/ER DI/EX.RegDest 0 ER EI/DI EcritureREG Bulle Mémoire Données $2 $5 4 Registres Bulle EcrtureCP Bulle Mémoire Instructions 1 M 0 CP 0 M 1 DI/EX.RegistreEcritutureRt DI/EX.RegistreEcritureRd EX/MEM.RegistreEcriture MEM/ER.RegistreEcriture

  24. L’unité de détection d’aléas and $9,$4,$2 or $8,$2,$6 and $4,$2,$5bulle bulle Unité détection aléas MEM/ER.EcrireReg EX/MEM.EcrireReg 1 10 000 0 00 1 1 0 DI/EX DI/EX.EcrireReg 10 000 1100 0 ER M EX Contrôle EX/MEM 0 M 1 EcritureEI/DI ER M MEM/ER DI/EX.RegDest 0 ER EI/DI EcritureREG Bulle Bulle Mémoire Données $2 $6 8 $2 $5 4 Registres EcrtureCP Mémoire Instructions 1 M 0 CP 0 M 1 DI/EX.RegistreEcritutureRt DI/EX.RegistreEcritureRd EX/MEM.RegistreEcriture MEM/ER.RegistreEcriture

  25. Réduire les aléas de données : l’envoi • L’idée est simple, les entrées de l’UAL peuvent être prises dans n’importe quels registres et non pas seulement dans le registre DI/EX. • Autrement dit, on utilise les résultats temporaires plutôt que d’attendre que les registres soient écrits. Cette technique s’appelle l’envoi ou dérivation.

  26. Réduire les aléas de données : l’envoi 1 10 x x 2 10 x x 3 10 x x 4 10 -20 x 5 10 x -20 6 -20 x x 7 -20 x x 8 -20 x x 9 -20 x x Valeur de $2 Valeur de EX/MEM Valeur de MEM/ER sub $2,$1,$3 and $12,$2,$5 or $13,$6,$2 add $14,$2,$2 sw $15,100($2) UAL R MD R MI UAL R MD R MI UAL R MD R MI UAL R MD R MI UAL R MD R MI

  27. Réduire les aléas de données : l’envoi 1 10 x x 2 10 x x 3 10 x x 4 10 -20 x 5 10 x -20 6 -20 x x 7 -20 x x 8 -20 x x 9 -20 x x Valeur de $2 Valeur de EX/MEM Valeur de MEM/ER sub $2,$1,$3 and $12,$2,$5 or $13,$6,$2 add $14,$2,$2 sw $15,100($2) UAL R MD R MI UAL R MD R MI UAL R MD R MI UAL R MD R MI UAL R MD R MI

  28. Réduire les aléas de données : l’envoi 1 10 x x 2 10 x x 3 10 x x 4 10 -20 x 5 10 x -20 6 -20 x x 7 -20 x x 8 -20 x x 9 -20 x x Valeur de $2 Valeur de EX/MEM Valeur de MEM/ER sub $2,$1,$3 and $12,$2,$5 or $13,$6,$2 add $14,$2,$2 sw $15,100($2) UAL R MD R MI UAL R MD R MI UAL R MD R MI UAL R MD R MI UAL R MD R MI

  29. Réduire les aléas de données : l’envoi 1 10 x x 2 10 x x 3 10 x x 4 10 -20 x 5 10 x -20 6 -20 x x 7 -20 x x 8 -20 x x 9 -20 x x Valeur de $2 Valeur de EX/MEM Valeur de MEM/ER sub $2,$1,$3 and $12,$2,$5 or $13,$6,$2 add $14,$2,$2 sw $15,100($2) UAL R MD R MI UAL R MD R MI UAL R MD R MI UAL R MD R MI UAL R MD R MI

  30. Réduire les aléas de données : l’envoi 1 10 x x 2 10 x x 3 10 x x 4 10 -20 x 5 -20 x -20 6 -20 x x 7 -20 x x 8 -20 x x 9 -20 x x Valeur de $2 Valeur de EX/MEM Valeur de MEM/ER sub $2,$1,$3 and $12,$2,$5 or $13,$6,$2 add $14,$2,$2 sw $15,100($2) UAL R MD R MI Dernier moment UAL R MD R MI UAL R MD R MI UAL R MD R MI UAL R MD R MI

  31. Réduire les aléas de données : l’envoi 1 10 x x 2 10 x x 3 10 x x 4 10 -20 x 5 -20 x -20 6 -20 x x 7 -20 x x 8 -20 x x 9 -20 x x Valeur de $2 Valeur de EX/MEM Valeur de MEM/ER sub $2,$1,$3 and $12,$2,$5 or $13,$6,$2 add $14,$2,$2 sw $15,100($2) UAL R MD R MI UAL R MD R MI UAL R MD R MI UAL R MD R MI UAL R MD R MI

  32. Réduire les aléas de données : l’envoi 1 10 x x 2 10 x x 3 10 x x 4 10 -20 x 5 -20 x -20 6 -20 x x 7 -20 x x 8 -20 x x 9 -20 x x Valeur de $2 Valeur de EX/MEM Valeur de MEM/ER sub $2,$1,$3 and $12,$2,$5 or $13,$6,$2 add $14,$2,$2 sw $15,100($2) UAL R MD R MI UAL R MD R MI Dernier moment UAL R MD R MI UAL R MD R MI UAL R MD R MI

  33. Réduire les aléas de données : l’envoi 1 10 x x 2 10 x x 3 10 x x 4 10 -20 x 5 -20 x -20 6 -20 x x 7 -20 x x 8 -20 x x 9 -20 x x Valeur de $2 Valeur de EX/MEM Valeur de MEM/ER sub $2,$1,$3 and $12,$2,$5 or $13,$6,$2 add $14,$2,$2 sw $15,100($2) UAL R MD R MI Attention UAL R MD R MI UAL R MD R MI UAL R MD R MI UAL R MD R MI

  34. Réduire les aléas de données : l’envoi 1 10 x x 2 10 x x 3 10 x x 4 10 -20 x 5 -20 x -20 6 -20 x x 7 -20 x x 8 -20 x x 9 -20 x x Valeur de $2 Valeur de EX/MEM Valeur de MEM/ER sub $2,$1,$3 and $12,$2,$5 or $13,$6,$2 add $14,$2,$2 sw $15,100($2) UAL R MD R MI UAL R MD R MI UAL R MD R MI UAL R MD R MI UAL R MD R MI

  35. Réduire les aléas de données : l’envoi 1 10 x x 2 10 x x 3 10 x x 4 10 -20 x 5 -20 x -20 6 -20 x x 7 -20 x x 8 -20 x x 9 -20 x x Valeur de $2 Valeur de EX/MEM Valeur de MEM/ER sub $2,$1,$3 and $12,$2,$5 or $13,$6,$2 add $14,$2,$2 sw $15,100($2) UAL R MD R MI UAL R MD R MI UAL R MD R MI Dernier moment UAL R MD R MI UAL R MD R MI

  36. Réduire les aléas de données : l’envoi 1 10 x x 2 10 x x 3 10 x x 4 10 -20 x 5 -20 x -20 6 -20 x x 7 -20 x x 8 -20 x x 9 -20 x x Valeur de $2 Valeur de EX/MEM Valeur de MEM/ER sub $2,$1,$3 and $12,$2,$5 or $13,$6,$2 add $14,$2,$2 sw $15,100($2) UAL R MD R MI UAL R MD R MI Bilan : Gain de 3 NOP UAL R MD R MI UAL R MD R MI UAL R MD R MI

  37. Réalisation matériel DI/EX EX/MEM MEM/ER M Mémoire Données M

  38. L ’envoi au niveau EX/MEM DI/EX EX/MEM MEM/ER M Mémoire Données M

  39. L ’envoi au niveau MEM/ER DI/EX EX/MEM MEM/ER M Mémoire Données M

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

  41. L'envoi pour les chargements lw $2,100($1) and $12,$2,$5 UAL R MD R MI UAL R MD R MI lw $2,100($1) and $12,$2,$5 MI DI EX M ER MI DI Nop EX M ER

  42. Erreurs fréquente lw $2,100($1) and $12,$2,$5 UAL R MD R MI UAL R MD R MI Attention lw $2,100($1) and $12,$2,$5 MI DI EX M ER MI DI Nop EX M ER

  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

  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

  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

  46. Exemple MI DI EX M ER MI DI Nop EX M ER MI Nop DI EX M ER Nop MI DI EX M ER 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

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

  48. Solutions • Toujours suspendre. • Du temps est perdu si le branchement ne doit pas s'effectuer. • Supposer que le branchement n’est 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. 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 s’appuie ou non sur le compilateur pour résoudre les dépendances des aléas afin d’assurer 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. Illusions et pièges • Piège : une absence de réflexion approfondie lors de la conception du jeu d’instructions 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.

More Related