15 | | Cette augmentation du CPI dépend évidemment du ''taux de MISS'' (proportion de requêtes du processeur qui font MISS), mais dépend également du ''coût du MISS'' (nombre moyen de cycles de gel pour rapatrier la ligne de cache manquante en cas de gel). En cas de MISS sur un cache L1, cache de 1^er^ niveau, le nombre de cycles de gel peut être très élevé (plusieurs centaines de cycles), s'il faut aller chercher la ligne de cache dans la mémoire externe. Le cache L2, ou cache de 2^ème^ niveau, joue le rôle d'un "accélérateur", qui permet de limiter le coût du MISS. Dans tous les calculs de ce TD, nous allons raisonner sur des valeurs moyennes. |
| 15 | Cette augmentation du CPI dépend évidemment du ''taux de MISS'' (proportion de requêtes du processeur qui font MISS), mais dépend également du ''coût du MISS'' (nombre moyen de cycles de gel pour rapatrier la ligne de cache manquante en cas de gel). En cas de MISS sur un cache L1, cache de 1^er^ niveau, le nombre de cycles de gel peut être très élevé (plusieurs centaines de cycles), s'il faut aller chercher la ligne de cache dans la mémoire externe. Le cache L2, ou cache de 2^ème^ niveau, joue le rôle d'un "accélérateur", qui permet de limiter le coût du MISS. Dans tous les calculs de cette séance, nous allons raisonner sur des valeurs moyennes. |
63 | | * lorsqu'une instruction de lecture de donnée en mémoire est suivie par une instruction qui utilise la donnée lue par la première (on dit qu'il y a une dépendance de donnée entre les 2 instructions), la durée effective de l'instruction de lecture est de 2 cycles au lieu de 1 cycle.[[BR]] |
64 | | '''Question''': Calculez la valeur '''CPI0''' (correspondant à un système mémoire ''parfait'') en supposant que 50% des instructions de lecture de donnée sont en dépendance avec l'instruction suivante. |
65 | | |
66 | | {{{ |
67 | | #!protected |
68 | | Il faut faire une somme pondérée : |
69 | | |
70 | | CPI = (0.55 * 1) instructions entre registres \\ |
71 | | + (0.25 * 2) instructions de branchement \\ |
72 | | + (0.10 * ((0.5 * 1) + (0.5 * 2))) instructions de lecture de données \\ |
73 | | + (0.10 * 1) instructions d'écriture |
74 | | |
75 | | CPI = 1.3 cycle/instruction. |
76 | | |
77 | | Même avec un système mémoire ''parfait'', le processeur MIPS32 est "gelé" 23% du temps à cause des dépendances de données ou de contrôle. |
| 62 | * lorsqu'une instruction de lecture de donnée en mémoire est suivie par une instruction qui utilise la donnée lue par la première (on dit qu'il y a une dépendance de donnée entre les 2 instructions), la durée effective de l'instruction de lecture est de 2 cycles au lieu de 1 cycle. |
| 63 | |
| 64 | 1. Calculez la valeur '''CPI0''' (correspondant à un système mémoire ''parfait'') en supposant que 50% des instructions de lecture de donnée sont en dépendance avec l'instruction suivante ? |
| 65 | {{{#!protected |
| 66 | ''' |
| 67 | * Il faut faire une somme pondérée :\\ |
| 68 | {{{ |
| 69 | CPI = (0.55 * 1) → instructions entre registres |
| 70 | + (0.25 * 2) → instructions de branchement |
| 71 | + (0.10 * ((0.5 * 1) + (0.5 * 2))) → instructions de lecture de données |
| 72 | + (0.10 * 1) → instructions d'écriture |
| 73 | }}} |
| 74 | CPI = 1.3 cycle/instruction. |
| 75 | ''' |
| 76 | }}} |
| 77 | 1. Quel est le pourcentage de gel dans les conditions précédentes avec un système mémoire parfait. |
| 78 | {{{#!protected |
| 79 | ''' |
| 80 | * Même avec un système mémoire ''parfait'', le processeur MIPS32 est "gelé" (100-100/1.3) = 23% du temps à cause des dépendances de données ou de contrôle. |
| 81 | * Pour comprendre, en 100 cycles, si les instructions dure 1 cycles on exécute 100 instruction, mais là, parce que les instructions durent 1,3 cycles, alors le nombre d'instructions exécutées est 100/1,3 = 77 instructions environs, la différence est 23. |
| 82 | ''' |
97 | | '''Question''': Calculez la valeur de ''DCPI_ins'', en utilisant le taux de MISS défini dans l'énoncé, et le coût du MISS de 30 cycles. |
98 | | |
99 | | {{{ |
100 | | #!protected |
101 | | |
102 | | Toute instruction exécutée doit être lue dans le cache L1 d'instruction. Quatre instructions sur 100 font MISS et vont entraîner un gel du processeur pendant 32 cycles. |
103 | | |
104 | | Par conséquent : |
105 | | * DCPI_ins = 0.04 * 30 = 1.2 cycles. |
106 | | }}} |
107 | | |
108 | | '''Question''': Calculez la valeur de ''DCPI_data'', en utilisant le taux de MISS défini dans l'énoncé et le coût du MISS de 30 cycles. |
109 | | {{{ |
110 | | #!protected |
111 | | |
112 | | Seulement 10% des instructions exécutées sont des instructions de lecture, et 8% de ces instructions font MISS et vont entraîner un gel du processeur pendant 32 cycles. |
113 | | |
114 | | Par conséquent : |
115 | | * DCPI_data = 0.1 * 0.08 * 30 = 0.24 cycle. |
116 | | }}} |
117 | | |
118 | | '''Question''': Sachant que 10% des instructions sont des écritures, expliquez pourquoi les écritures n'entraînent pas d'augmentation directe du CPI, bien que toute écriture entraîne un accès au bus système (politique ''write through'') ? |
119 | | |
120 | | {{{ |
121 | | #!protected |
122 | | Puisqu'on dispose d'un tampon d'écritures postées, le processeur n'est que très rarement gelé lorsqu'il exécute une instruction d'écriture. Cette écriture sera effectuée plus tard par l'automate contrôleur du cache, lorsque le bus sera disponible, et tout se passe comme si les écritures étaient exécutées en 1 cycle. |
123 | | }}} |
124 | | |
125 | | '''Question''': Faut-il traiter comme un cas particulier les situations où le processeur émet simultanément (i.e. au même cycle) des requêtes d'instructions et de données qui font à la fois MISS sur le cache d'instructions et MISS sur le cache de données ? (cela est possible si l'on suppose un processeur pipeliné) |
126 | | |
127 | | {{{ |
128 | | #!protected |
129 | | Puisque que le bus système n'effectue qu'une seule transaction à la fois, le processeur est gelé pendant deux fois 32 cycles lorsque la même instruction fait MISS sur le cache d'instructions et fait également MISS sur le cache de données. |
130 | | }}} |
131 | | |
132 | | '''Question''': Quelle est finalement la valeur du nombre moyen de cycles par instruction ? |
133 | | |
134 | | {{{ |
135 | | #!protected |
136 | | Tous les couts de MISS doivent donc être cumulés. Par conséquent : |
| 102 | 1. Calculez la valeur de ''DCPI_ins'', en utilisant le taux de MISS défini dans l'énoncé, et le coût du MISS de 30 cycles. |
| 103 | {{{#!protected |
| 104 | ''' |
| 105 | * Toute instruction exécutée doit être lue dans le cache L1 d'instruction. Quatre instructions sur 100 font MISS et vont entraîner un gel du processeur pendant 32 cycles. |
| 106 | * Par conséquent : |
| 107 | * DCPI_ins = 0.04 * 30 = 1.2 cycles. |
| 108 | ''' |
| 109 | }}} |
| 110 | 1. Calculez la valeur de ''DCPI_data'', en utilisant le taux de MISS défini dans l'énoncé et le coût du MISS de 30 cycles. |
| 111 | {{{#!protected |
| 112 | ''' |
| 113 | * Seulement 10% des instructions exécutées sont des instructions de lecture, et 8% de ces instructions font MISS et vont entraîner un gel du processeur pendant 32 cycles. |
| 114 | * Par conséquent : |
| 115 | * DCPI_data = 0.1 * 0.08 * 30 = 0.24 cycle. |
| 116 | ''' |
| 117 | }}} |
| 118 | 1. Sachant que 10% des instructions sont des écritures, expliquez pourquoi les écritures n'entraînent pas d'augmentation directe du CPI, bien que toute écriture entraîne un accès au bus système (politique ''write through'') ? |
| 119 | {{{#!protected |
| 120 | ''' |
| 121 | * Puisqu'on dispose d'un tampon d'écritures postées, le processeur n'est que très rarement gelé lorsqu'il exécute une instruction d'écriture. Cette écriture sera effectuée plus tard par l'automate contrôleur du cache, lorsque le bus sera disponible, et tout se passe comme si les écritures étaient exécutées en 1 cycle. |
| 122 | ''' |
| 123 | }}} |
| 124 | 1. Faut-il traiter comme un cas particulier les situations où le processeur émet simultanément (i.e. au même cycle) des requêtes d'instructions et de données qui font à la fois MISS sur le cache d'instructions et MISS sur le cache de données ? (cela est possible si l'on suppose un processeur pipeliné) |
| 125 | {{{#!protected |
| 126 | ''' |
| 127 | * Puisque que le bus système n'effectue qu'une seule transaction à la fois, le processeur est gelé pendant deux fois 32 cycles lorsque la même instruction fait MISS sur le cache d'instructions et fait également MISS sur le cache de données. |
| 128 | ''' |
| 129 | }}} |
| 130 | 1. Quelle est finalement la valeur du nombre moyen de cycles par instruction ? |
| 131 | {{{#!protected |
| 132 | ''' |
| 133 | * Tous les couts de MISS doivent donc être cumulés. Par conséquent : |