Changes between Version 4 and Version 5 of AS6-TME-B4


Ignore:
Timestamp:
Mar 19, 2022, 4:50:17 PM (2 years ago)
Author:
franck
Comment:

--

Legend:

Unmodified
Added
Removed
Modified
  • AS6-TME-B4

    v4 v5  
    55{{{#!protected
    66
    7 [[Image(img/hard_almo1_mono.png, align=right,width=250)]]
     7[[Image(htdocs:img/hard_almo1_mono.png, align=right,width=250)]]
    88
    99Les caches L1 ont pour but d'améliorer les performances en réduisant le nombre de cycles nécessaires pour accéder à la mémoire à la fois pour les instruction que pour le données. Le tampon d'écriture, présent dans le cache mais qui n'est pas un cache, permet aussi de réduire la latence des écritures de données (elle est même nulle la plupart du temps).
     
    1313Dans un système mémoire ''parfait'', le taux de ''HIT'' est de 100% sur le cache d'instructions comme sur le cache de données : c'est-à-dire que toutes les requêtes de lecture du processeur vers la mémoire sont satisfaites immédiatement. Mais dans un système mémoire ''réel'', la capacité de stockage limitée des caches (cache d'instructions et cache de données) a pour effet de dégrader la performance : certaines requêtes de lecture font ''MISS'' (échec de cache), et le processeur est gelé pendant plusieurs cycles en attendant que la ligne de cache manquante soit lue en mémoire par le contrôleur du cache. Ces cycles de gel du processeur augmentent évidemment la valeur du nombre moyen de cycles par instruction (CPI).
    1414
    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.
     15Cette 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.
    1616
    1717''Note : ces valeurs moyennes dépendent évidemment des programmes exécutés, et les valeurs proposées ci-dessous sont fournies à titre d'exemple.''
     
    2020
    2121En cas de MISS sur un cache L1, le contrôleur du cache L1 s'adresse au cache L2, par l'intermédiaire d'un bus système de largeur 32 bits. On suppose que le processeur, les 2 caches L1, la ROM de démarrage, le bus système et le cache L2 sont intégrés sur la même puce, et fonctionnent à la même fréquence d'horloge. La largeur d'une ligne de cache est de 16 octets (soit 4 mots de 32 bits). En cas de MISS sur le cache L2, le contrôleur du cache L2 doit chercher la ligne de cache manquante dans la mémoire principale, qui est une mémoire externe à la puce.
     22
     23
    2224
    2325
     
    4042==
    4143= B. Influence des mémoires cache sur les performances
    42 
    43 
    44 
    4544
    4645
     
    6160à un cycle :
    6261* 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.
    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
     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 ?
     65{{{#!protected
     66'''
     67* Il faut faire une somme pondérée :\\
     68{{{
     69CPI = (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}}}
     771. 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'''
    7883}}}
    7984
     
    95100On 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.
    96101
    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 :
     1021. 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}}}
     1101. 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}}}
     1181. 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}}}
     1241. 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}}}
     1301. 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 :
    137134* CPI = CPI0 + DCPI_ins + DCPI_data = 1.3 + 1.2 + 0.24 = 2.74 cycles/instruction.
    138 }}}
    139 
    140 {{{#!html
    141 <h1><font size=+3> Partie TP</font></h1>
    142 }}}
    143 
    144 {{{#!html
    145 <h1><font size=+2> A) Étude du taux de miss en fonction du programme exécuté </font></h1>
     135'''
    146136}}}
    147137