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

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.

Présentations similaires


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

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) R U A L MI MD R R U A L MI MD R MI R U A L MD R MI R U A L MD R MI R U A L MD R

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

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 M 1 C R.Adr P Mémoire
M 1 EI/DI DI/EX EX/MEM MEM/ER Registre lecture1 lecture2 écriture Donnée à écrire C P R.Adr Donnée lue 1 lue 2 Adresse Lecture écrire Donnée à écrire Mémoire I Donnée lue M 1 1 M E S M 1 11

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

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

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

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

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 EcritureEI/DI M 1 ER M MEM/ER DI/EX.RegDest ER EI/DI EcritureREG EcrtureCP Registres Mémoire Données Mémoire Instructions CP 1 M 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,$ sub $2,$1,$3 Unité détection aléas MEM/ER.EcrireReg EX/MEM.EcrireReg 1 1 DI/EX 10 000 1100 DI/EX.EcrireReg ER M EX Contrôle EX/MEM EcritureEI/DI M 1 ER M MEM/ER DI/EX.RegDest ER EI/DI 1 3 EcritureREG Registres $1 $3 2 Mémoire Données EcrtureCP Mémoire Instructions CP 1 M 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,$ and $4,$2,$ sub $2,$1,$3 A MEM/ER.EcrireReg 1 10 000 EX/MEM.EcrireReg 0 0 1 00 000 0000 DI/EX DI/EX.EcrireReg ER M EX Contrôle EX/MEM EcritureEI/DI M 1 ER M MEM/ER DI/EX.RegDest ER EI/DI EcritureREG $1 $3 2 Mémoire Données EcrtureCP Registres $2 $5 4 Mémoire Instructions CP 1 M 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,$ and $4,$2,$ sub $2,$1,$3 A MEM/ER.EcrireReg 1 10 000 EX/MEM.EcrireReg 0 0 DI/EX 1 00 000 0000 DI/EX.EcrireReg ER M EX Contrôle EX/MEM EcritureEI/DI M 1 ER M MEM/ER DI/EX.RegDest ER EI/DI EcritureREG $1 $3 2 Mémoire Données EcrtureCP Registres $2 $5 4 Mémoire Instructions CP 1 M 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,$ and $4,$2,$ bulle sub $2,$1,$3 Unité détection aléas A MEM/ER.EcrireReg 00 000 EX/MEM.EcrireReg 1 10 0 0 DI/EX 1 00 000 0000 DI/EX.EcrireReg ER M EX Contrôle EX/MEM EcritureEI/DI M 1 ER M MEM/ER DI/EX.RegDest ER EI/DI EcritureREG Bulle Mémoire Données EcrtureCP Registres $2 $5 4 Mémoire Instructions CP 1 M 2 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,$ and $4,$2,$ bulle bulle sub $2,$1,$3 Unité détection aléas A MEM/ER.EcrireReg 00 000 EX/MEM.EcrireReg 00 0 0 00 000 0000 DI/EX 1 DI/EX.EcrireReg ER M EX Contrôle EX/MEM EcritureEI/DI M 1 ER M 1 MEM/ER DI/EX.RegDest ER EI/DI EcritureREG Bulle Bulle Mémoire Données EcrtureCP Registres $2 $5 4 Mémoire Instructions CP 1 M 2 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,$ and $4,$2,$ bulle bulle bulle Unité détection aléas MEM/ER.EcrireReg 00 000 EX/MEM.EcrireReg 00 1 1 10 000 1100 DI/EX DI/EX.EcrireReg ER M EX Contrôle EX/MEM EcritureEI/DI M 1 ER M MEM/ER DI/EX.RegDest ER EI/DI EcritureREG Registres $2 $5 4 Bulle Mémoire Données EcrtureCP Bulle Bulle Mémoire Instructions CP 1 M 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,$ or $8,$2,$ and $4,$2,$ bulle bulle Unité détection aléas MEM/ER.EcrireReg 1 10 000 EX/MEM.EcrireReg 00 1 1 10 000 1100 DI/EX DI/EX.EcrireReg ER M EX Contrôle EX/MEM EcritureEI/DI M 1 ER M MEM/ER DI/EX.RegDest ER EI/DI EcritureREG Bulle Bulle Registres $2 $6 8 $2 $5 4 Mémoire Données EcrtureCP Mémoire Instructions CP 1 M 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 2 3 4 -20 5 6 7 8 9 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) MI R U A L MD R MI R U A L MD R U A L MI R MD R R U A L MI MD R U A L MI R MD R

27 Réduire les aléas de données : l’envoi
1 10 x 2 3 4 -20 5 6 7 8 9 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) MI R U A L MD R MI R U A L MD R U A L MI R MD R R U A L MI MD R U A L MI R MD R

28 Réduire les aléas de données : l’envoi
1 10 x 2 3 4 -20 5 6 7 8 9 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) MI R U A L MD R MI R U A L MD R U A L MI R MD R R U A L MI MD R U A L MI R MD R

29 Réduire les aléas de données : l’envoi
1 10 x 2 3 4 -20 5 6 7 8 9 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) MI R U A L MD R MI R U A L MD R U A L MI R MD R R U A L MI MD R U A L MI R MD R

30 Réduire les aléas de données : l’envoi
1 10 x 2 3 4 -20 5 6 7 8 9 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) MI R U A L MD R Dernier moment U A L MI R MD R U A L MI R MD R MI R U A L MD R R U A L MI MD R

31 Réduire les aléas de données : l’envoi
1 10 x 2 3 4 -20 5 6 7 8 9 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) MI R U A L MD R MI R U A L MD R U A L MI R MD R R U A L MI MD R U A L MI R MD R

32 Réduire les aléas de données : l’envoi
1 10 x 2 3 4 -20 5 6 7 8 9 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) MI R U A L MD R U A L MI R MD R Dernier moment U A L MI R MD R MI R U A L MD R R U A L MI MD R

33 Réduire les aléas de données : l’envoi
1 10 x 2 10 x 3 10 x 4 10 -20 x 5 -20 x 6 -20 x 7 -20 x 8 -20 x 9 -20 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) MI R U A L MD R Attention MI R U A L MD R U A L MI R MD R MI R U A L MD R MI R U A L MD R

34 Réduire les aléas de données : l’envoi
1 10 x 2 3 4 -20 5 6 7 8 9 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) MI R U A L MD R MI R U A L MD R U A L MI R MD R R U A L MI MD R U A L MI R MD R

35 Réduire les aléas de données : l’envoi
1 10 x 2 3 4 -20 5 6 7 8 9 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) MI R U A L MD R MI R U A L MD R U A L MI R MD R Dernier moment R U A L MI MD R MI R U A L MD R

36 Réduire les aléas de données : l’envoi
1 10 x 2 3 4 -20 5 6 7 8 9 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) MI R U A L MD R U A L MI R MD R Bilan : Gain de 3 NOP U A L MI R MD R MI R U A L MD R R U A L MI MD R

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
lw $2,100($1) and $12,$2,$5 MI R U A L MD R R U A L MI MD R L’unité de détection des aléas doit provoquer une suspension pour cette combinaison. lw $2,100($1) Suspension and $12,$2,$5 U A L MI R MD R MI MI R MD U A L

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

42 Attention Erreurs fréquente lw $2,100($1) and $12,$2,$5 lw $2,100($1)
MI R U A L MD R U A L MI R MD R 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 MI DI EX M ER

44 Exemple lw $1,100($2) sub $4,$1,$5 add $6,$1,$7 Or $8,$1,$6 MI DI EX M
ER MI DI EX M ER No

45 Exemple : pipline avec envoi
lw $1,100($2) sub $4,$1,$5 add $6,$1,$7 Or $8,$1,$6 MI DI EX M ER

46 Exemple lw $1,100($2) sub $4,$1,$5 add $6,$1,$7 Or $8,$1,$6 MI DI EX M
ER ER M EX DI MI Nop

47 Les Aléas de Branchement
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. MI R MD U A L beq $1,$10,30 MI R U A L MD R MI R U A L MD R R U A L MI MD R U A L MI R MD

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.

51 Conclusion Chemin de données Chemin de données multicycle pipeliné
Plus lent Plus rapide Fréquence d’horloge chemin de données à un cycle Plus lent Plus rapide Débit d’instructions (1/CPI)

52 Résumé Le pipeline améliore le débit mais pas le temps par instruction : il faut toujours cinq cycles à une instruction d’un pipeline à cinq étages pour s’exé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 d’une 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 Développements récents
Machines superpipelinés Extrac inst Extrac inst Décod inst Exéc Mém don Mém don Mém don Ecrit resul Extrac inst Extrac inst Décod inst Exéc Mém don Mém don Mém don Ecrit resul Superscalaire Extraction inst Décodage instruc Exécution Mémoire données Ecriture résult Extraction inst Décodage instruc Exécution Mémoire données Ecriture résult


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

Présentations similaires


Annonces Google