Changes between Version 33 and Version 34 of SoclibCourseTp6
- Timestamp:
- Dec 27, 2013, 10:32:05 PM (11 years ago)
Legend:
- Unmodified
- Added
- Removed
- Modified
-
SoclibCourseTp6
v33 v34 106 106 Relancez la simulation en activant la génération des statistiques (avec une période de 100000 cycles) avec la commande suivante: 107 107 {{{ 108 $ ./simulator.x -IOCFILE path_to_images.raw -STATS 100000 108 $ ./simulator.x -IOCFILE path_to_images.raw -STATS 1000000 109 109 }}} 110 110 … … 113 113 = 4 Modification du composant !VciXcacheWrapper = 114 114 115 On a vu dans la section précédente que - lorsque la latence des transactions est importante - le processeur est souvent gelé en raison de requêtes d'écriture qui ne peuvent être satisfaites car le tampon d'écritures est plein. 116 On souhaite donc modifier le contrôleur de cache pour qu'il utilise 117 un tampon d'écritures plus évolués, permettant de ne pas attendre la réponse à une transaction d'écriture (n) pour envoyer la commande de la transaction (n+1). On souhaite également que les transactions de lecture - qui entraînent un gel du processeur - soient prioritaires par rapport aux transactions d'écriture (si les adresses sont différentes).115 Lorsque la latence des transactions est importante, le processeur est souvent gelé en raison de requêtes d'écriture qui ne peuvent être satisfaites car le tampon d'écritures est plein. Lorsque le tampon d'écriture est plein, le coût des miss augmente, si les écritures sont prioritaires par rapport aux lectures. 116 117 On souhaite donc modifier le contrôleur de cache pour qu'il utilise un tampon d'écritures plus évolué, permettant de ne pas attendre la réponse à une transaction d'écriture (n) pour envoyer la commande de la transaction (n+1). On souhaite également que les transactions de lecture - qui entraînent un gel du processeur - soient prioritaires par rapport aux transactions d'écriture, quand les adresses sont différentes. 118 118 119 L 'objetC++ [https://www.soclib.fr/trac/dev/browser/trunk/soclib/soclib/lib/multi_write_buffer/include multi_write_buffer] modélise un tampon d'écritures postées plus évolué, permettant de stocker plusieurs requêtes d'écriture indépendantes. Chacune de ces requêtes peut avoir une longueur supérieure à un flit.119 La classe C++ [https://www.soclib.fr/trac/dev/browser/trunk/soclib/soclib/lib/multi_write_buffer/include multi_write_buffer] modélise un tampon d'écritures postées plus évolué, permettant de stocker plusieurs requêtes d'écriture indépendantes. Chacune de ces requêtes peut avoir une longueur supérieure à un flit. 120 120 121 121 Il faut commencer par analyser le code du multi_write_buffer pour répondre aux questions suivantes: … … 133 133 '''Question''' : A quoi sert la méthode ''update()'' ? Pourquoi doit-elle être appelée à chaque cycle ? 134 134 135 L'archive '''soclib_tp6.tgz''' qui vous est fournie contient un répertoire '''vci_xcache_wrapper_new''', qui contient 136 lui_même les 3 fichiers '''vci_xcache_wrapper_new.h''', '''vci_xcache_wrapper_new.cpp''', et '''vci_xcache_wrapper_new.sd''', décrivant une version modifiée du contrôleur de cache L1. Certains fichiers sont incomplets, et 137 vous devez les compléter. 135 L'archive '''soclib_tp6.tgz''' qui vous est fournie contient un répertoire '''vci_xcache_wrapper_advanced''', qui contient lui_même les 3 fichiers '''vci_xcache_wrapper_advanced.cpp''', '''vci_xcache_wrapper_advanced.h''', et '''vci_xcache_wrapper_advanced.sd''', décrivant une version modifiée du contrôleur de cache L1. Le premier fichier est incomplet. 138 136 139 '''Question''' : En comparant les fichiers d'interface '''vci_xcache_wrapper.h''' et '''vci_xcache_wrapper_ new.h''', identifiez les modifications qui ont été introduites.137 '''Question''' : En comparant les fichiers d'interface '''vci_xcache_wrapper.h''' et '''vci_xcache_wrapper_advanced.h''', identifiez les modifications qui ont été introduites. 140 138 141 139 '''Question''' : Complêtez le fichier d'implémentation '''vci_xcache_wrapper_new.cpp''' pour que ce composant … … 149 147 150 148 '''Question''' : Modifiez les fichier '''tp6_top.cpp''' et '''tp6_top.desc''' décrivant l'architecture globale, pour instancier 151 le composant !VciXcacheWrapperNew à la place du composant !VciXcacheWrapper, et renommez ces fichiers '''tp6_top_ new.cpp''' et '''tp6_top_new.desc'''.149 le composant !VciXcacheWrapperNew à la place du composant !VciXcacheWrapper, et renommez ces fichiers '''tp6_top_advanced.cpp''' et '''tp6_top_advanced.desc'''. 152 150 153 Générez le prototype virtuel pour l'architecture ainsi modifiée avec la commande ci-dessous. L'argument ( -I vci_xcache_wrappe_new ) indique 154 à l'outil de compilation '''soclib-cc''' qu'il doit utiliser le répertoire local ''vci_xcache_wrapper_new''. 151 Générez le prototype virtuel pour l'architecture ainsi modifiée avec la commande ci-dessous. L'argument ( -I vci_xcache_wrapper_advanced ) indique à l'outil de compilation '''soclib-cc''' qu'il faut utiliser le répertoire local ''vci_xcache_wrapper_advanced''. 155 152 {{{ 156 153 $ soclib-cc -P -p tp6_top_new.desc -o simulator_new.x -I vci_xcache_wrapper_new … … 160 157 commencer un gros tampon contenant 8 lignes de 4 mots de 32 bits, et on activera l'affichage des statistiques : 161 158 {{{ 162 $ ./simulator_new.x -IOCFILE path_to_images.raw -WBUFW 4 -WBUFL 8 -STATS 100000 159 $ ./simulator_new.x -IOCFILE path_to_images.raw -WBUFW 4 -WBUFL 8 -STATS 1000000 163 160 }}} 164 161 165 '''Question''' : Combien faut_il de cycles pour afficher une image? Quel est le gain en performance apporté par l'utilisation ducomposant '''multi_write_buffer'''? Comment interprêtez-vous ce résultat ?162 '''Question''' : Combien faut_il de cycles pour charger et afficher une image en utilisant le composant '''multi_write_buffer'''? Comment interprêtez-vous ce résultat ? 166 163 167 164 '''Question''' : Est-il possible de diminuer la taille du tampon d'écriture postées sans dégrader trop fortement