Changes between Version 9 and Version 10 of AS6-TME-B4


Ignore:
Timestamp:
Mar 20, 2022, 5:10:20 PM (3 years ago)
Author:
franck
Comment:

--

Legend:

Unmodified
Added
Removed
Modified
  • AS6-TME-B4

    v9 v10  
    2828==
    2929= A. Questions de cours
    30 
    3130
    3231
     
    5958* écriture de données : 10%
    6059
    61 Le processeur `MIPS32` est un processeur ''RISC'' à architecture ''pipe-line''. Il est donc capable de démarrer l'exécution d'une instruction à chaque cycle, ce qui correspond en principe à un CPI de 1 cycle/instruction. Malheureusement, même avec un système mémoire parfait (pas de MISS sur les caches), la valeur du CPI est supérieure à 1, car certaines instructions ont une durée supérieure
    62 à un cycle :
     60Le processeur `MIPS32` de la plateforme est un processeur ''RISC'' à architecture ''pipe-line''. Il est donc capable de démarrer l'exécution d'une instruction à chaque cycle, ce qui correspond en principe à un CPI de 1 cycle/instruction. Malheureusement, même avec un système mémoire parfait (pas de MISS sur les caches), la valeur du CPI est supérieure à 1, car certaines instructions ont une durée supérieure à un cycle :
    6361* lorsque le processeur exécute une instruction de branchement, la durée effective de l'instruction est de 2 cycles au lieu de 1 cycle, que le branchement réussisse ou non.
    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
     641. 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'''
    7067{{{
    7168CPI = (0.55 * 1)                       → instructions entre registres
     
    8178'''
    8279* 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.
    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.
    8481'''
    8582}}}
     
    9188
    9289
    93 Lorsqu'une requête de lecture du processeur fait MISS sur un des deux caches L1, le processeur est gelé. Le contrôleur du cache L1 doit alors effectuer une transaction sur le bus système pour accéder au cache L2 pour récupérer la ligne.
     90Lorsqu'une requête de lecture du processeur fait MISS sur l'un des deux caches L1 alors le processeur est gelé. Le contrôleur du cache L1 doit, dans ce cas, effectuer une transaction sur le bus système pour accéder au cache L2 afin de récupérer la ligne manquante.
    9491Le temps nécessaire à récupérer la ligne manquante définit le **coût d'un MISS**.
    9592Voyons qu'elles sont les étapes:
    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.
     931. 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)''
     942. Le cache L2 doit lire la ligne  → **20** cycles\\''(c'est un cache, il faut tenir compte qu'il peut aussi faire MISS)''
     953. 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)''
     964. 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
     98En 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).
     99On 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
     1011. 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.
    108105* Par conséquent :
    109106  * DCPI_ins = 0.04 * 30 = 1.2 cycles.
    110107'''
    111108}}}
    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.
     1091. 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.
    116113* Par conséquent :
    117114  * DCPI_data = 0.1 * 0.08 * 30 = 0.24 cycle.
     
    124121'''
    125122}}}
    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.
     1231. 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.
    130127'''
    131128}}}
     
    133130{{{#!protected
    134131'''
    135 * Tous les couts de MISS doivent donc être cumulés. Par conséquent :
     132* Tous les coûts de MISS doivent donc être cumulés. Par conséquent :
    136133* CPI = CPI0 + DCPI_ins + DCPI_data = 1.3 + 1.2 + 0.24 = 2.74 cycles/instruction.
    137134'''