Changes between Version 11 and Version 12 of AS6-TME-B4


Ignore:
Timestamp:
Mar 20, 2022, 6:54:32 PM (3 years ago)
Author:
franck
Comment:

--

Legend:

Unmodified
Added
Removed
Modified
  • AS6-TME-B4

    v11 v12  
    160160
    161161
    162 Le but de ce second TP sur les caches est de vérifier expérimentalement l'évolution de la performance du processeur (mesurée en CPI) en fonction de la taille des cache. Vous allez faire varier les capacités des caches L1 d'instructions et données, et vous allez mesurer la durée d'exécution d'une application logicielle un peu plus complexe que la précédente. La largeur des lignes des deux caches est fixée à 16 octets (soit 4 mots). Vous ferez donc varier la capacité des deux caches, en faisant varier le nombre de cases.
    163 
    164 Commencez par recopier [attachments:s5.tgz tp5] dans votre répertoire de travail.
     162Le but de ce second TP sur les caches est de vérifier expérimentalement l'évolution de la performance du processeur (mesurée en CPI) en fonction de la taille des caches. Vous allez faire varier les capacités des caches L1 instructions et données, et vous allez mesurer la durée d'exécution d'une application logicielle un peu plus complexe que celle du précédent TP. La largeur des lignes des deux caches est fixée à 16 octets (soit 4 mots). Vous ferez donc varier la capacité des deux caches en faisant varier uniquement le nombre de cases.
     163
     164Commencez par recopier [attachment:s5.tgz tp5] dans votre répertoire de travail, sont le contenu est :
    165165{{{
    166166s5
     
    178178}}}
    179179
    180 Ce répertoire s5 contient 1 répertoire, il y a tous les fichiers nécessaires à la génération du code binaire kernel.x, dont un fichier Makefile permettant de le générer automatiquement. Ces fichiers représentent une version minimaliste du système (vu au tp1), il n'y a presque rien, mais le but est d'analyser le comportement des caches, donc moins il y a de code à exécuter avant la fonction que vous allez analyser, mieux c'est.
    181 
    182 L'application logicielle proposée pour ce TP effectue un calcul de traitement d'image appelé ''transformation cosinus inverse'' (IDCT). Cette transformation est une variante de la ''transformée de Fourier'' à deux dimensions. L'application traite une image en découpant cette image en blocs de (8 * 8) pixels. Elle est écrite en langage C, et vous pouvez trouver son contenu dans le fichier `kinit.c`. Il n'est pas indispensable de comprendre en détail l'algorithme IDCT pour faire ce TP.
    183 
    184 Comme vous l'avez constaté au TP précédent, le simulateur `almo1.x` permet de faire varier la capacité des caches L1, grâce à deux arguments à passer sur la ligne de commande :
    185 * `-NICACHESET`, qui spécifie le nombre de cases du cache d'instructions,
    186 * `-NDCACHESET`, qui spécifie le nombre de cases du cache de données.
    187 
    188  ''Attention : les valeurs que l'on peut donner pour ces deux arguments doivent être des puissances de 2.''
    189 
    190 En utilisant l'argument `-STATS` sur la ligne de commande, vous pouvez obtenir les statistiques sur les taux de MISS et le CPI.
    191 
    192 Le simulateur `almo1.x` permet de rediriger la sortie texte vers un fichier plutôt que de l'afficher sur le terminal TTY, comme habituellement). Pour cela, avant de lancer la simulation, il faut entrer la commande :
     180Ce répertoire s5 contient 1 répertoire, il y a tous les fichiers nécessaires à la génération du code binaire `kernel.x`, dont un fichier `Makefile` permettant de le générer automatiquement. Comme pour le précédent TP, ces fichiers représentent une version minimaliste du système (vu au tp1), il n'y a presque rien, mais le but est d'analyser le comportement des caches, donc moins il y a de code à exécuter avant la fonction que vous allez analyser, mieux c'est.
     181
     182L'application logicielle proposée pour ce TP effectue un calcul de traitement d'image appelé ''transformation cosinus inverse'' (IDCT). Cette transformation est une variante de la ''transformée de Fourier'' à deux dimensions. L'application traite une image en découpant cette image en blocs de (8 * 8) pixels. Elle est écrite en langage C, et vous pouvez trouver son contenu dans le fichier `kinit.c`. Il n'est pas nécessaire de comprendre l'algorithme IDCT pour faire ce TP.
     183
     184Comme vous l'avez appris au TP précédent :
     185* le simulateur `almo1.x` permet de faire varier le nombre de cases des caches L1, grâce à deux arguments à passer sur la ligne de commande. On peut aussi faire varier la longueur des lignes mais ce ne sera pas le cas dans ce TP. ''Attention : les valeurs que l'on peut donner pour ces arguments doivent être des puissances de 2'' :
     186  * `-NICACHESET` spécifie le nombre de cases du cache d'instructions,
     187  * `-NDCACHESET` spécifie le nombre de cases du cache de données.
     188
     189* En outre, en utilisant l'argument `-STATS` pour le simulateur, vous pouvez obtenir les statistiques sur les taux de MISS des caches et le CPI. La commande `make cachestats NICACHESET=1 NDCACHESET=1` lance de simulateur avec les caches instructions et données de 1 case, et le simulateur génère le fichier `stats.txt` contenant les informations statistiques listées ci-après. Ces informations sont fabriqués à partir de compteurs dans la plateforme, relevés tous les 10 cycles qui caractérisent l'activité des caches.[[BR]]Chaque ligne de ce fichier de `stats.txt` contient 8 valeurs :[[BR]][[BR]]
     190  1. Le nombre de cycles simulés depuis le démarrage de la machine (incrément de 10 à chaque ligne),
     191  1. Le nombre d'instructions exécutées depuis le démarrage de la machine,
     192  1. Le nombre de MISS sur le cache d'instructions depuis le démarrage de la machine,
     193  1. Le nombre de lectures de données depuis le démarrage de la machine,
     194  1. Le nombre de MISS sur le cache de données depuis le démarrage de la machine,
     195  1. Le taux de MISS sur le cache d'instructions,
     196  1. Le taux de MISS sur le cache de données,
     197  1. Le CPI, qui est le nombre moyen de cycles par instruction.
     198
     199Une chose nouvelle sur le simulateur.
     200* Le simulateur `almo1.x` permet de rediriger la sortie texte vers un fichier plutôt que de l'afficher sur le terminal TTY, comme habituellement). Pour cela, avant de lancer la simulation avec `make`, il faut entrer la commande shell suivante :
    193201{{{#!bash
    194202$ export SOCLIB_TTY=FILES
    195203}}}
    196 
    197 Pour revenir à l'affichage dans une fenêtre TTY, taper la commande :
     204* Pour revenir à l'affichage dans une fenêtre TTY, taper la commande shell :
    198205{{{#!bash
    199206$ export SOCLIB_TTY=TTY
    200207}}}
    201 Si vous avez envie de vous challenger, vous pouvez modifier le fichier `Makefile` pour intégrer cette option pour pouvoir par exemple avoir par défaut une utilisation des fenêtre TTY et de manière optionnel, une utilisation des fichiers. Ce n'est pas difficile, mais ça vous oblige à lire le Makefile (il y a une ligne à ajouter et une à modifier, c'est tout). Par exemple:
     208Si vous avez envie de vous challenger, vous pouvez modifier le fichier `Makefile` pour intégrer cette option. Vous pourriez avoir par défaut une utilisation des fenêtres TTY et, de manière optionnel, une utilisation des fichiers. Ce n'est pas très difficile, mais ça vous oblige à lire le Makefile (il y a une ligne à ajouter et une à modifier, c'est tout).
     209* Vous auriez par exemple:
    202210{{{#!bash
    203211$ make exec                 → utilise xterms
     
    209217
    210218Vous allez compiler le code et lancez le simulateur avec des caches L1 (instructions et données) dont la capacité est d'une seule ligne de cache (une seule case) avec la génération des statistiques. Chaque cache a donc une capacité de 16 octets.
    211 
    212 POur rappel, les règles `cachetrace` et `cachestats` du Makefile lancent le simulateur en imposant les caractéristiques du cache :
    213 * -NICACHELEN : nombre de mots par case dans le cache instruction
    214 * -NDCACHELEN : nombre de mots par case dans le cache data
    215 * -NICACHESET : nombre de cases dans le cache instruction
    216 * -NDCACHESET : nombre de cases dans le cache data
    217 La commande `make cachestats NICACHESET=1 NDCACHESET=1` lance de simulateur avec les caches instructions et données de 1 case, et le simulateur génère le fichier `stats.txt`qui contient des informations statistiques. Plus précisément, le simulateur relève à intervalles
    218 réguliers (tous les 10 cycles) différents compteurs permettant de caractériser l'activité des caches. Chaque ligne de ce fichier de
    219 statistiques contient 8 valeurs :[[BR]]
    220 1. Le nombre de cycles simulés depuis le démarrage de la machine (incrément de 10 à chaque ligne),
    221 1. Le nombre d'instructions exécutées depuis le démarrage de la machine,
    222 1. Le nombre de MISS sur le cache d'instructions depuis le démarrage de la machine,
    223 1. Le nombre de lectures de données depuis le démarrage de la machine,
    224 1. Le nombre de MISS sur le cache de données depuis le démarrage de la machine,
    225 1. Le taux de MISS sur le cache d'instructions,
    226 1. Le taux de MISS sur le cache de données,
    227 1. Le CPI, qui est le nombre moyen de cycles par instruction.[[BR]][[BR]]
    228219
    229220* Lancez le simulateur avec des caches d'1 case