wiki:SujetTD6

ALMO TD n°6 - Influence des mémoires cache sur les performances

Préambule

On cherche dans ce TD à évaluer l'influence des mémoires caches sur les performances du système. Pour évaluer la performance, on utilise comme mesure le nombre moyen de Cycles Par Instruction (CPI).

Dans 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).

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 1er 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.

Note : ces valeurs moyennes dépendent évidemment des programmes exécutés, et les valeurs proposées ci-dessous sont fournies à titre d'exemple.

Comme illustré ci-contre, on s'intéresse à nouveau à une plateforme matérielle comportant un processeur MIPS32, possédant deux caches caches L1 séparés, pour les instructions et pour les données. Le cache de données suit une politique d'écriture write-through (toute requête d'écriture provenant du processeur est enregistrée dans un tampon d'écritures postées, puis transmise vers la mémoire). Compte-tenu de la taille des caches L1 et des applications exécutées, on observe que le taux de MISS moyen est de 4% sur le cache L1 d'instructions et de 8% sur le cache L1 des données.

En 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.

1. Système mémoire parfait

On suppose que, pour le programme exécuté, on a mesuré les fréquences suivantes pour les différents types d'instruction exécutées par le processeur MIPS32 :

  • opérations entre registres : 55%
  • branchements : 25%
  • lecture de données : 10%
  • écriture de données : 10%

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 à un cycle :

  • 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.
  • 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.

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.

2. Estimation du coût du MISS

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. Le lancement de cette transaction par le contrôleur du cache L1 coûte 3 cycles.

Si le cache L2 contient effectivement la ligne de cache manquante (on dit qu'il y a HIT sur le cache L2), son temps de réponse est de 15 cycles. Si le cache L2 ne contient pas la ligne manquante (on dit qu'il y a MISS sur le cache L2), le cache L2 doit aller lire la ligne manquante dans la mémoire principale, ce qui introduit une latence supplémentaire de 400 cycles, car la mémoire externe est beaucoup plus lente. Pour le programme considéré, on observe que le taux de MISS sur le cache L2 est de 2%.

Enfin, lorsque le cache L1 a reçu les 16 octets de la ligne de cache manquante, le contrôleur du cache a besoin de deux cycles pour mettre à jour le cache L1.

Question: En tenant compte des hypothèses précédentes, calculez le coût moyen d'un MISS sur le cache L1. On rappelle que le coût du MISS est le nombre de cycles de gel du processeur.

3. Influence des MISS sur le cache L1 d'instructions

On cherche maintenant à évaluer l'augmentation du CPI causée par les MISS sur le cache d'instructions. On note DCPI_ins cet accroissement.

Question: Calculez la valeur de DCPI_ins, en utilisant le taux de MISS défini dans l'énoncé, et le coût du MISS calculé précédemment.

4. Influence des MISS sur le cache L1 de données

On cherche enfin à évaluer l'augmentation du CPI causée par les MISS sur le cache de données. On note DCPI_data cet accroissement.

Question: Calculez la valeur de DCPI_data, en utilisant le taux de MISS défini dans l'énoncé, et le coût du MISS calculé précédemment.

5. Calcul du CPI pour le système mémoire réel

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) ?

Question: Faut-il traiter comme un cas particulier les situations où le processeurs é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é)

Question: Quelle est finalement la valeur du nombre moyen de cycles par instruction ?

6. Calcul du CPI en l'absence de caches

Question: Calculez la valeur du CPI lorsqu'on désactive les caches L1. Que se passe-t-il si on désactive aussi le cache L2 ?

Last modified 7 years ago Last modified on Oct 21, 2016, 3:53:18 PM