64 | | * 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. |
65 | | |
66 | | 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 ? |
67 | | {{{#!protected |
68 | | ''' |
69 | | * Il faut faire une somme pondérée :\\ |
| 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. Notez que le compilateur le sait et il évite ces cas quand c'est possible. |
| 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 ? ''(Il faut faire une somme des durées pondérées par leur taux d'occurence)'' |
| 65 | {{{#!protected |
| 66 | ''' |
83 | | * 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. |
| 80 | * Pour comprendre, en 100 cycles, si les instructions dure 1 cycles alors 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 environ et la différence est 23. |
96 | | 1. Le cache L1 doit déclencher une lecture sur le bus système → 4 cycles |
97 | | 2. Le cache L2 doit lire la ligne (c'est un cache, il faut tenir compte qu'il peut aussi faire MISS) → 20 cycles |
98 | | 3. La ligne doit être transférée sur le bus entre le cache L2 et le cache L1 → 4 cycles |
99 | | 4. Le cache L1 doit mettre à jour la case recevant la ligne → 2 cycles |
100 | | |
101 | | En tenant compte des hypothèses précédentes, le coût moyen d'un MISS sur le cache L1 est donc de 30 cycles. |
102 | | On cherche à évaluer l'augmentation du CPI causée par les MISS sur le cache d'instructions. On note ''DCPI_ins'' cet accroissement. Puis à évaluer l'augmentation du CPI causée par les MISS sur le cache de données. On note ''DCPI_data'' cet accroissement. |
103 | | |
104 | | 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. |
105 | | {{{#!protected |
106 | | ''' |
107 | | * 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. |
| 93 | 1. Le cache L1 doit déclencher une lecture sur le bus système → disons : **4** cycles\\''(cela dépend du temps que met l'arbitre du bus pour autoriser la transaction)'' |
| 94 | 2. Le cache L2 doit lire la ligne → **20** cycles\\''(c'est un cache, il faut tenir compte qu'il peut aussi faire MISS)'' |
| 95 | 3. La ligne doit être transférée sur le bus entre le cache L2 et le cache L1 → **4** cycles\\''(cette durée dépend de la longueur de la ligne, plus elle est longue, plus le nombre de cycles est grand)'' |
| 96 | 4. Le cache L1 doit mettre à jour la case recevant la ligne → **2** cycles\\''(la mise à jour du répertoire et le dégel du processeur, c'est ce que l'on a observé dans le simulateur, dans le TP précédent)'' |
| 97 | |
| 98 | En tenant compte des hypothèses précédentes, le coût moyen d'un MISS sur le cache L1 est donc de **30** cycles (c'est un ordre de grandeur). |
| 99 | On cherche à évaluer l'augmentation du CPI causée par les MISS sur le cache d'instructions. On note **''DCPI_ins''** cet accroissement. Puis à évaluer l'augmentation du CPI causée par les MISS sur le cache de données. On note **''DCPI_data''** cet accroissement. |
| 100 | |
| 101 | 1. Calculez la valeur de ''DCPI_ins'', donc l'accroissement du CPI dû au cache instruction, en utilisant le taux de MISS défini dans l'énoncé (4%), et le coût du MISS (30 cycles).\\''Aide : 100% des instructions entraînent une lecture du cache instruction'' |
| 102 | {{{#!protected |
| 103 | ''' |
| 104 | * 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 30 cycles. |
112 | | 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. |
113 | | {{{#!protected |
114 | | ''' |
115 | | * 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. |
| 109 | 1. Calculez la valeur de ''DCPI_data'', donc l'accroissement du CPI dû au cache data, en utilisant le taux de MISS défini dans l'énoncé (8%) et le coût du MISS de 30 cycles.\\''Aide : seules 10% des instructions entraînent une lecture du cache data.'' |
| 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 30 cycles. |
126 | | 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é) |
127 | | {{{#!protected |
128 | | ''' |
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. |
| 123 | 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 ?\\''On suppose un processeur pipeliné'' |
| 124 | {{{#!protected |
| 125 | ''' |
| 126 | * Puisque que le bus système n'effectue qu'une seule transaction à la fois, le processeur est gelé pendant deux fois 30 cycles lorsque la même instruction fait MISS sur le cache d'instructions et fait également MISS sur le cache de données. |